Compare commits
539 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72d9a46156 | ||
|
|
683a85ecc0 | ||
|
|
89047fd66d | ||
|
|
8ca27a4480 | ||
|
|
77d2d84e05 | ||
|
|
3bde4285eb | ||
|
|
15efbfb244 | ||
|
|
55a57db958 | ||
|
|
91f624c900 | ||
|
|
d753489e49 | ||
|
|
36dd7c82db | ||
|
|
b00db74216 | ||
|
|
cf9f85eb2a | ||
|
|
bfa8414289 | ||
|
|
58dc9c9544 | ||
|
|
ba95ce18a8 | ||
|
|
ac10c40f31 | ||
|
|
de8b40c80f | ||
|
|
60fe69728d | ||
|
|
557607e842 | ||
|
|
40ac9de728 | ||
|
|
a725cd1946 | ||
|
|
b648706756 | ||
|
|
20f2e9fc6d | ||
|
|
858ced0a53 | ||
|
|
c9ca8f777f | ||
|
|
0d0be31527 | ||
|
|
96305a088c | ||
|
|
22e30b44b9 | ||
|
|
48d0e2fa5f | ||
|
|
0489291815 | ||
|
|
7a412500e1 | ||
|
|
dffaa72a88 | ||
|
|
152d61f906 | ||
|
|
b44ded5fc9 | ||
|
|
99d77cc843 | ||
|
|
bc385eec2d | ||
|
|
2c6b9403b3 | ||
|
|
89cdc59fe5 | ||
|
|
3e04e1ccea | ||
|
|
25f491a65f | ||
|
|
7fdde157e0 | ||
|
|
27f30a449a | ||
|
|
dc66a0cd66 | ||
|
|
f302ecd1e2 | ||
|
|
1afc2a227a | ||
|
|
ab594d1dfe | ||
|
|
647d32f506 | ||
|
|
1bc109b42c | ||
|
|
6e02e2a6b3 | ||
|
|
3372baad6c | ||
|
|
e9b3e3877a | ||
|
|
c84c5fbae7 | ||
|
|
2e7ab91f48 | ||
|
|
92c41c003a | ||
|
|
53688cdcdc | ||
|
|
70f864ea8b | ||
|
|
5dd94e551a | ||
|
|
afc1ed9897 | ||
|
|
df7562f98d | ||
|
|
1c7e799164 | ||
|
|
107a3f99f4 | ||
|
|
7e3cf4b4ad | ||
|
|
afdb23ff57 | ||
|
|
0ce64f8c33 | ||
|
|
2cd6ccb85c | ||
|
|
3dcf5374c2 | ||
|
|
1c7d5f3f64 | ||
|
|
bb0cb0a866 | ||
|
|
362dc29057 | ||
|
|
8af0218e4c | ||
|
|
09af9968b5 | ||
|
|
7d0b819c5a | ||
|
|
4bbb7eded3 | ||
|
|
72ea9e5522 | ||
|
|
743e5d947d | ||
|
|
f257853906 | ||
|
|
32983d3829 | ||
|
|
bdef33e88d | ||
|
|
a4a4194586 | ||
|
|
e36c538dc0 | ||
|
|
982a218bf2 | ||
|
|
f7aeca4c7c | ||
|
|
4b81bc864f | ||
|
|
a52cc62c04 | ||
|
|
81f69bff9e | ||
|
|
d9b2aa1880 | ||
|
|
3bddd986a0 | ||
|
|
d00712d817 | ||
|
|
d756fdbebf | ||
|
|
b2f2c74605 | ||
|
|
1407cd71b5 | ||
|
|
3dd3a7238d | ||
|
|
afc834ae4b | ||
|
|
357f190ce3 | ||
|
|
ab92762320 | ||
|
|
04942c8477 | ||
|
|
9c60f51e0d | ||
|
|
956ae2ac46 | ||
|
|
f2ed813337 | ||
|
|
7d9a7d1a3c | ||
|
|
2f67b6fb47 | ||
|
|
7444dde93e | ||
|
|
e62fad7bc6 | ||
|
|
2c6bad2501 | ||
|
|
6952bb2eca | ||
|
|
610972dbde | ||
|
|
926049055a | ||
|
|
db5f6b60df | ||
|
|
7be7b9d9fd | ||
|
|
366855c4cc | ||
|
|
e950beeeab | ||
|
|
5515b39f6c | ||
|
|
f5d0599e4d | ||
|
|
8fd7914f0f | ||
|
|
24ef98eb01 | ||
|
|
b3dd6cf001 | ||
|
|
6d4b474cb1 | ||
|
|
0a8876a3ae | ||
|
|
9a83a48331 | ||
|
|
7ed50b90bd | ||
|
|
b6fd5d7282 | ||
|
|
33243e7176 | ||
|
|
e8439679a5 | ||
|
|
06124dbbd5 | ||
|
|
857940f402 | ||
|
|
bcb04924ff | ||
|
|
2b6aeb9ebc | ||
|
|
648e4538fb | ||
|
|
cd4b3777da | ||
|
|
4acf506b7e | ||
|
|
543ca348bc | ||
|
|
03375412f1 | ||
|
|
0c7a9b6827 | ||
|
|
c54bc3c176 | ||
|
|
90973bedf4 | ||
|
|
757f70162e | ||
|
|
3047410b35 | ||
|
|
9d0d4c5eae | ||
|
|
cab5b4d601 | ||
|
|
517b6e25d9 | ||
|
|
94d394c29e | ||
|
|
a52099d175 | ||
|
|
f1cb7b862d | ||
|
|
0863e5d379 | ||
|
|
55dcd25df1 | ||
|
|
f3155ea180 | ||
|
|
2c5162671c | ||
|
|
fc8aeb5a66 | ||
|
|
995cf503eb | ||
|
|
0e49c11a4c | ||
|
|
0367c37b0a | ||
|
|
e0b9fe5e5d | ||
|
|
a4726e683b | ||
|
|
3b10e93efe | ||
|
|
02b07c1b5b | ||
|
|
5e54751bd4 | ||
|
|
34f1dc238d | ||
|
|
3c0f4bdf35 | ||
|
|
a68d370ad0 | ||
|
|
debb27ed30 | ||
|
|
97fbb857fb | ||
|
|
93f13ffc8e | ||
|
|
4d9dc93d46 | ||
|
|
22cd4c5d16 | ||
|
|
6883994b22 | ||
|
|
852a312753 | ||
|
|
afea0baaa8 | ||
|
|
2c477660a0 | ||
|
|
16a1cd3c9d | ||
|
|
db23dd2e01 | ||
|
|
eaa1ded5ba | ||
|
|
393e14196a | ||
|
|
8b005307ea | ||
|
|
c915ac0e72 | ||
|
|
1752bb896e | ||
|
|
9c8fa026f3 | ||
|
|
e93db6324a | ||
|
|
a10708bffa | ||
|
|
e65a7a142f | ||
|
|
72e0b2d470 | ||
|
|
43fb0f36a7 | ||
|
|
cf3533221b | ||
|
|
de522ebe14 | ||
|
|
2ace891dde | ||
|
|
e212d9f991 | ||
|
|
739f3f84d0 | ||
|
|
5e206c86be | ||
|
|
1ab37011ea | ||
|
|
b6e02f63cd | ||
|
|
60e10d4efa | ||
|
|
95ba7e43b1 | ||
|
|
9e5a2e5b17 | ||
|
|
dbbc416095 | ||
|
|
a479ad357c | ||
|
|
b1c12abb7c | ||
|
|
17d1a1d7bd | ||
|
|
ba50156a83 | ||
|
|
eb83ab41c0 | ||
|
|
4e6a917dab | ||
|
|
8c4f0d4589 | ||
|
|
3f7738204e | ||
|
|
e251a9b9fe | ||
|
|
01d43b9683 | ||
|
|
4d4a0c89a8 | ||
|
|
0a5524e9c8 | ||
|
|
c8fb5746b3 | ||
|
|
bbcc132978 | ||
|
|
d3e4f84285 | ||
|
|
62c470cf75 | ||
|
|
8ab31d3765 | ||
|
|
55fe1cf0a8 | ||
|
|
00cff51ff7 | ||
|
|
d6bc4a7aa1 | ||
|
|
4e57d12aea | ||
|
|
4a2d99c43f | ||
|
|
217c27df86 | ||
|
|
e6dcd438b4 | ||
|
|
de2b0224d6 | ||
|
|
3f8a72eb88 | ||
|
|
0387176e8c | ||
|
|
aa34e332f4 | ||
|
|
d13999d689 | ||
|
|
22c4e92728 | ||
|
|
df8128c0b1 | ||
|
|
ec534a3704 | ||
|
|
366d4cd3e2 | ||
|
|
4841926df1 | ||
|
|
f2f7bdc5a9 | ||
|
|
fd811eb325 | ||
|
|
915d352505 | ||
|
|
1d1024c57a | ||
|
|
73df6e0347 | ||
|
|
e6d62c5a7b | ||
|
|
470e48c0a5 | ||
|
|
9235f72a2e | ||
|
|
9fe6da79b2 | ||
|
|
1858437eb1 | ||
|
|
c3ba0dcd32 | ||
|
|
70f4b13089 | ||
|
|
cc57a4b671 | ||
|
|
6902700458 | ||
|
|
b772041547 | ||
|
|
79174c1a19 | ||
|
|
898850027a | ||
|
|
0d272b1fb0 | ||
|
|
7993a9eb90 | ||
|
|
42d419970d | ||
|
|
ad49268d8b | ||
|
|
76c345396a | ||
|
|
5690ef1ebc | ||
|
|
5616404b4d | ||
|
|
f92137f6c2 | ||
|
|
ca3373ba4e | ||
|
|
4e6115b414 | ||
|
|
ddf47051c9 | ||
|
|
d45478510c | ||
|
|
2641f89349 | ||
|
|
9d46d03c37 | ||
|
|
25b6de88a9 | ||
|
|
a24046e46a | ||
|
|
7e803ff9a9 | ||
|
|
246cead2b1 | ||
|
|
214f7f06bb | ||
|
|
6878f73a9f | ||
|
|
336b45b6f7 | ||
|
|
2a0b62d26d | ||
|
|
653ec0cbb0 | ||
|
|
120ab3f0a3 | ||
|
|
8bcbbbc1a3 | ||
|
|
13a75abc91 | ||
|
|
eace740c63 | ||
|
|
cb3a54de00 | ||
|
|
5fbc77795d | ||
|
|
ce4feae731 | ||
|
|
08f00d4990 | ||
|
|
6951f7e74a | ||
|
|
2b4d63b1bb | ||
|
|
8cbb961493 | ||
|
|
64c795938d | ||
|
|
67df681a48 | ||
|
|
9285bcf8bb | ||
|
|
b9b23a4b54 | ||
|
|
2f6371b085 | ||
|
|
2a5c3475a7 | ||
|
|
8a2698a5db | ||
|
|
f6919a171a | ||
|
|
82ebf67456 | ||
|
|
a60c8b2ee8 | ||
|
|
0a2b8ccfb6 | ||
|
|
698094b787 | ||
|
|
b57e111ea8 | ||
|
|
aa6bf2b54e | ||
|
|
454910d295 | ||
|
|
d44e620769 | ||
|
|
ac14adfd3e | ||
|
|
928d30ee1e | ||
|
|
3dd9b0f347 | ||
|
|
c57dd083c5 | ||
|
|
2a1d6c5406 | ||
|
|
112e9f69bd | ||
|
|
d50e537888 | ||
|
|
86d14d30fa | ||
|
|
710d3689d3 | ||
|
|
3fee011369 | ||
|
|
7cd4b8ba4f | ||
|
|
31132de18b | ||
|
|
c6cb271f6f | ||
|
|
b7c4afd20c | ||
|
|
70395d200a | ||
|
|
562a5f66fc | ||
|
|
b2f8003602 | ||
|
|
b7b36973f7 | ||
|
|
f7d5f597f3 | ||
|
|
79c7712241 | ||
|
|
8f5f3985f4 | ||
|
|
ef30f36f55 | ||
|
|
4198497237 | ||
|
|
9b1612574e | ||
|
|
ca8a218144 | ||
|
|
db9c2913cf | ||
|
|
286674c2bb | ||
|
|
7c259185bc | ||
|
|
79ffbf95db | ||
|
|
6e347e4221 | ||
|
|
28ccb14166 | ||
|
|
389315e000 | ||
|
|
af00464f5b | ||
|
|
f522b3df91 | ||
|
|
168db6891f | ||
|
|
4a77548672 | ||
|
|
e9ec4a3b84 | ||
|
|
375b2bb284 | ||
|
|
b922277896 | ||
|
|
8f6f810dbd | ||
|
|
8f0c433e05 | ||
|
|
e332e3c248 | ||
|
|
2f90c38604 | ||
|
|
fa33d12bd7 | ||
|
|
86ab496fd6 | ||
|
|
ca0cb6fd42 | ||
|
|
be52779bbc | ||
|
|
23b64794a4 | ||
|
|
d5fed29df3 | ||
|
|
644bc985e7 | ||
|
|
5c1dc31131 | ||
|
|
31fae1caa6 | ||
|
|
9bc85ac511 | ||
|
|
69d6dc22b9 | ||
|
|
c4f81fc1a7 | ||
|
|
9a866766e0 | ||
|
|
eb7153acee | ||
|
|
f3d98da329 | ||
|
|
aac1c50a77 | ||
|
|
0619a27916 | ||
|
|
49ba56493f | ||
|
|
bf0dae8cc3 | ||
|
|
fbf77afde1 | ||
|
|
5159caa9ff | ||
|
|
5aef35f0b7 | ||
|
|
4db2843e7b | ||
|
|
a390e57dff | ||
|
|
8d70587814 | ||
|
|
6f3775de9d | ||
|
|
5a0a3050ae | ||
|
|
cbbf141846 | ||
|
|
43c2b00cf8 | ||
|
|
046ccd49ca | ||
|
|
e7df6f5c0e | ||
|
|
c67110835c | ||
|
|
4c97b847e7 | ||
|
|
cfa4f0fe0b | ||
|
|
9672343360 | ||
|
|
80fdfe54c4 | ||
|
|
7fcbe87591 | ||
|
|
e401ba9e25 | ||
|
|
35db61f1b4 | ||
|
|
6c72545fc8 | ||
|
|
70385ca670 | ||
|
|
a8e72d39f7 | ||
|
|
0bf54b3ff6 | ||
|
|
db657c2a62 | ||
|
|
01964f3926 | ||
|
|
bfd6bb0fda | ||
|
|
3fc70996e2 | ||
|
|
cb0874f15a | ||
|
|
9239e37b45 | ||
|
|
57d80932a4 | ||
|
|
8569970fbe | ||
|
|
713e9ad5f4 | ||
|
|
59e229d962 | ||
|
|
3c5f09cda2 | ||
|
|
e42aa2530d | ||
|
|
1fd298ac9c | ||
|
|
1a73f52541 | ||
|
|
27e458f884 | ||
|
|
ba3e2a9371 | ||
|
|
831e8f8583 | ||
|
|
0ff390ed80 | ||
|
|
e3b8495431 | ||
|
|
da10ba3fea | ||
|
|
cc7de853b4 | ||
|
|
23d8235197 | ||
|
|
37e3d60ade | ||
|
|
83a3426dd5 | ||
|
|
a2549192ca | ||
|
|
9d3a1cab6e | ||
|
|
06f8d8f0a3 | ||
|
|
fa66b79e2d | ||
|
|
81312f5a93 | ||
|
|
ad84901f39 | ||
|
|
d2385a0e52 | ||
|
|
39285fc2d0 | ||
|
|
6e491c1466 | ||
|
|
84152aa663 | ||
|
|
600fc65c2f | ||
|
|
40e2733424 | ||
|
|
bceb02d760 | ||
|
|
aaaaf2681a | ||
|
|
3c3ef9bba0 | ||
|
|
338f3a981f | ||
|
|
a86ae9fa50 | ||
|
|
a3c4e8a1bc | ||
|
|
6a7c18e8db | ||
|
|
672b7a4c3d | ||
|
|
bf3fee4481 | ||
|
|
a3c8d1d732 | ||
|
|
bb03d8c49a | ||
|
|
fbd5abe3b6 | ||
|
|
5ac390abe9 | ||
|
|
766cae2299 | ||
|
|
d9828fdc6a | ||
|
|
4114ce4a04 | ||
|
|
6090630260 | ||
|
|
259cfeae17 | ||
|
|
ebe15c4711 | ||
|
|
75a740a110 | ||
|
|
0c085c4f74 | ||
|
|
1d819e79db | ||
|
|
515b79dcf0 | ||
|
|
269e12abb4 | ||
|
|
cf5be6ff5a | ||
|
|
f140adbc9d | ||
|
|
6c31406bb0 | ||
|
|
b6e8626908 | ||
|
|
64a3a4915a | ||
|
|
fd71f24d46 | ||
|
|
65b5c6753f | ||
|
|
7408bbce37 | ||
|
|
0f58978c9f | ||
|
|
01ca3fd6b2 | ||
|
|
26c366156b | ||
|
|
9d8f7b081d | ||
|
|
9d8ebb795d | ||
|
|
8be98e4cb8 | ||
|
|
3c229c9950 | ||
|
|
f2263faf7d | ||
|
|
39c7cf3e66 | ||
|
|
5ee24e5c09 | ||
|
|
a34fdc2068 | ||
|
|
2c2cd893b8 | ||
|
|
a43b0548ed | ||
|
|
93e95f56f4 | ||
|
|
cb0673b1ec | ||
|
|
cd018db945 | ||
|
|
50fe67b99b | ||
|
|
1dba82aae5 | ||
|
|
17c6d64750 | ||
|
|
b4c04efa23 | ||
|
|
152dd74abf | ||
|
|
0985f7f609 | ||
|
|
aecf9329bd | ||
|
|
b2384605e7 | ||
|
|
57ab5ab604 | ||
|
|
e493a20301 | ||
|
|
0bd5ed937c | ||
|
|
6a9b3bc64e | ||
|
|
4c1ef3e6a5 | ||
|
|
2ea250f954 | ||
|
|
5d810980f8 | ||
|
|
d51b4e27cc | ||
|
|
c01c555309 | ||
|
|
ce2e66d9b0 | ||
|
|
9550acd61e | ||
|
|
d95b5daa6d | ||
|
|
56d571c0f0 | ||
|
|
dc9a19b9c7 | ||
|
|
88a2c7715a | ||
|
|
2fa8cb1b73 | ||
|
|
5f8a66fdb9 | ||
|
|
57320a94f9 | ||
|
|
89f045d624 | ||
|
|
1a77dea7ed | ||
|
|
532a7b90f3 | ||
|
|
4e8c200349 | ||
|
|
d063d59a91 | ||
|
|
90429b787c | ||
|
|
7a2ef04ec3 | ||
|
|
76a9ea8d3d | ||
|
|
0a05a2d060 | ||
|
|
a7e2ee3b0c | ||
|
|
40efa90dd5 | ||
|
|
4ca0a22bfc | ||
|
|
20a943b193 | ||
|
|
552df8737d | ||
|
|
860f622d79 | ||
|
|
e76bf5707a | ||
|
|
bf37a72f59 | ||
|
|
840ad75830 | ||
|
|
4c7dd7228f | ||
|
|
46a51addad | ||
|
|
0a5fe37025 | ||
|
|
00bb403497 | ||
|
|
11afa8140c | ||
|
|
850396e9da | ||
|
|
5ee75be49e | ||
|
|
879116a20c | ||
|
|
e509b1f488 | ||
|
|
468ff7037f | ||
|
|
df23504ccf | ||
|
|
66e3cb8eda | ||
|
|
6ddd2389dc | ||
|
|
402efb8c50 | ||
|
|
7b6eae0ce4 | ||
|
|
26ce9725ce | ||
|
|
ebfaa18f12 | ||
|
|
cc81d41a05 | ||
|
|
212176ee5c | ||
|
|
a63ec05e41 | ||
|
|
0dcb527bf3 | ||
|
|
54710f17fc | ||
|
|
e58a6593c0 | ||
|
|
62132570e1 | ||
|
|
9f0b8ba2f8 | ||
|
|
adbe0fbcd1 | ||
|
|
7896242f57 | ||
|
|
4a6722b9e9 | ||
|
|
7c9fb5228b | ||
|
|
81805b01cc |
@@ -118,12 +118,3 @@ autoAdmin: true
|
|||||||
|
|
||||||
# Clustering
|
# Clustering
|
||||||
#clusterLimit: 1
|
#clusterLimit: 1
|
||||||
|
|
||||||
# Summaly proxy
|
|
||||||
#summalyProxy: "http://example.com"
|
|
||||||
|
|
||||||
# User recommendation
|
|
||||||
#user_recommendation:
|
|
||||||
# external: true
|
|
||||||
# engine: http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}
|
|
||||||
# timeout: 300000
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -17,3 +17,4 @@ api-docs.json
|
|||||||
/mongo
|
/mongo
|
||||||
/elasticsearch
|
/elasticsearch
|
||||||
*.code-workspace
|
*.code-workspace
|
||||||
|
yarn.lock
|
||||||
|
|||||||
15
Dockerfile
15
Dockerfile
@@ -1,26 +1,27 @@
|
|||||||
FROM alpine:3.8 AS base
|
FROM node:11-alpine AS base
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
RUN apk add --no-cache nodejs nodejs-npm zlib
|
|
||||||
RUN npm i -g npm@latest
|
RUN npm i -g npm@latest
|
||||||
|
|
||||||
WORKDIR /misskey
|
WORKDIR /misskey
|
||||||
|
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
|
|
||||||
|
RUN unlink /usr/bin/free
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
gcc \
|
|
||||||
g++ \
|
|
||||||
libc-dev \
|
|
||||||
python \
|
|
||||||
autoconf \
|
autoconf \
|
||||||
automake \
|
automake \
|
||||||
file \
|
file \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
libc-dev \
|
||||||
|
libtool \
|
||||||
make \
|
make \
|
||||||
nasm \
|
nasm \
|
||||||
pkgconfig \
|
pkgconfig \
|
||||||
libtool \
|
procps \
|
||||||
|
python \
|
||||||
zlib-dev
|
zlib-dev
|
||||||
RUN npm i -g node-gyp
|
RUN npm i -g node-gyp
|
||||||
|
|
||||||
|
|||||||
22
README.md
22
README.md
@@ -73,46 +73,50 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
<table><tr>
|
<table><tr>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=Zeh1u6l_Vmgoy8A1eT1Sltea-_SZSq8t8uOWDRZRh94%3D" alt="weep"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
||||||
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
|
||||||
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
||||||
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||||
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
|
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<table><tr>
|
<table><tr>
|
||||||
|
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
|
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
|
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
|
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
||||||
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
|
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
|
||||||
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
|
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
|
||||||
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
|
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
|
||||||
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
||||||
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||||
|
</tr></table>
|
||||||
|
<table><tr>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
||||||
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
||||||
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
|
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<table><tr>
|
|
||||||
</tr><tr>
|
|
||||||
</tr></table>
|
|
||||||
|
|
||||||
**Last updated:** Wed, 31 Oct 2018 23:21:06 UTC
|
**Last updated:** Tue, 27 Nov 2018 06:24:05 UTC
|
||||||
<!-- PATREON_END -->
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
const mongo = require('mongodb');
|
|
||||||
const bcrypt = require('bcryptjs');
|
|
||||||
const User = require('../built/models/user').default;
|
|
||||||
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
|
|
||||||
const user = args[0];
|
|
||||||
|
|
||||||
const q = user.startsWith('@') ? {
|
|
||||||
username: user.split('@')[1],
|
|
||||||
host: user.split('@')[2] || null
|
|
||||||
} : { _id: new mongo.ObjectID(user) };
|
|
||||||
|
|
||||||
console.log(`Resetting password for ${user}...`);
|
|
||||||
|
|
||||||
const passwd = 'yo';
|
|
||||||
|
|
||||||
// Generate hash of password
|
|
||||||
const hash = bcrypt.hashSync(passwd);
|
|
||||||
|
|
||||||
User.update(q, {
|
|
||||||
$set: {
|
|
||||||
password: hash
|
|
||||||
}
|
|
||||||
}).then(() => {
|
|
||||||
console.log(`Password of ${user} is now '${passwd}'`);
|
|
||||||
}, e => {
|
|
||||||
console.error(e);
|
|
||||||
});
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
const mongo = require('mongodb');
|
|
||||||
const User = require('../built/models/user').default;
|
|
||||||
|
|
||||||
const args = process.argv.slice(2);
|
|
||||||
|
|
||||||
const user = args[0];
|
|
||||||
|
|
||||||
const q = user.startsWith('@') ? {
|
|
||||||
username: user.split('@')[1],
|
|
||||||
host: user.split('@')[2] || null
|
|
||||||
} : { _id: new mongo.ObjectID(user) };
|
|
||||||
|
|
||||||
console.log(`Suspending ${user}...`);
|
|
||||||
|
|
||||||
User.update(q, {
|
|
||||||
$set: {
|
|
||||||
isSuspended: true
|
|
||||||
}
|
|
||||||
}).then(() => {
|
|
||||||
console.log(`Suspended ${user}`);
|
|
||||||
}, e => {
|
|
||||||
console.error(e);
|
|
||||||
});
|
|
||||||
22
docs/backup.fr.md
Normal file
22
docs/backup.fr.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
Comment faire une sauvegarde de votre Misskey ?
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Assurez-vous d'avoir installé **mongodb-tools**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Dans votre terminal :
|
||||||
|
``` shell
|
||||||
|
$ mongodump --archive=db-backup -u <VotreNomdUtilisateur> -p <VotreMotDePasse>
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour plus de détails, merci de consulter [la documentation de mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/).
|
||||||
|
|
||||||
|
Restauration
|
||||||
|
-------
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
$ mongorestore --archive=db-backup
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour plus de détails, merci de consulter [la documentation de mongorestore](https://docs.mongodb.com/manual/reference/program/mongorestore/).
|
||||||
@@ -10,7 +10,7 @@ In your shell:
|
|||||||
$ mongodump --archive=db-backup -u <YourUserName> -p <YourPassword>
|
$ mongodump --archive=db-backup -u <YourUserName> -p <YourPassword>
|
||||||
```
|
```
|
||||||
|
|
||||||
For details, plese see [mongodump docs](https://docs.mongodb.com/manual/reference/program/mongodump/).
|
For details, please see [mongodump docs](https://docs.mongodb.com/manual/reference/program/mongodump/).
|
||||||
|
|
||||||
Restore
|
Restore
|
||||||
-------
|
-------
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ This guide describes how to install and setup Misskey with Docker.
|
|||||||
2. `cd misskey` Move to misskey directory.
|
2. `cd misskey` Move to misskey directory.
|
||||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag.
|
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag.
|
||||||
|
|
||||||
*2.* Make configuration files
|
*2.* Configure Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
|
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
|
||||||
@@ -31,12 +31,12 @@ Build misskey with the following:
|
|||||||
|
|
||||||
*5.* That is it.
|
*5.* That is it.
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Well done! Now, you have an environment that run to Misskey.
|
Well done! Now you have an environment to run Misskey.
|
||||||
|
|
||||||
### Launch normally
|
### Launch normally
|
||||||
Just `docker-compose up -d`. GLHF!
|
Just `docker-compose up -d`. GLHF!
|
||||||
|
|
||||||
### Way to Update to latest version of your Misskey
|
### How to update your Misskey server to the latest version
|
||||||
1. `git fetch`
|
1. `git fetch`
|
||||||
2. `git stash`
|
2. `git stash`
|
||||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
@@ -45,9 +45,9 @@ Just `docker-compose up -d`. GLHF!
|
|||||||
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
6. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||||
7. `docker-compose stop && docker-compose up -d`
|
7. `docker-compose stop && docker-compose up -d`
|
||||||
|
|
||||||
### Way to execute cli command:
|
### How to execute [cli commands](manage.en.md):
|
||||||
`docker-compose run --rm web node cli/mark-admin @example`
|
`docker-compose run --rm web node cli/mark-admin @example`
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
If you have any questions or troubles, feel free to contact us!
|
If you have any questions or trouble, feel free to contact us!
|
||||||
|
|||||||
@@ -8,28 +8,11 @@ coming soon
|
|||||||
node cli/mark-admin (User-ID or Username)
|
node cli/mark-admin (User-ID or Username)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Mark as 'verified' user
|
|
||||||
``` shell
|
|
||||||
node cli/mark-verified (User-ID or Username)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Suspend users
|
|
||||||
``` shell
|
|
||||||
node cli/suspend (User-ID or Username)
|
|
||||||
```
|
|
||||||
e.g.
|
e.g.
|
||||||
``` shell
|
``` shell
|
||||||
# Use id
|
# By id
|
||||||
node cli/suspend 57d01a501fdf2d07be417afe
|
node cli/mark-admin 57d01a501fdf2d07be417afe
|
||||||
|
|
||||||
# Use username
|
# By username
|
||||||
node cli/suspend @syuilo
|
node cli/suspend @syuilo
|
||||||
|
|
||||||
# Use username (remote)
|
|
||||||
node cli/suspend @syuilo@misskey.xyz
|
|
||||||
```
|
|
||||||
|
|
||||||
## Reset password
|
|
||||||
``` shell
|
|
||||||
node cli/reset-password (User-ID or Username)
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -8,28 +8,11 @@ coming soon
|
|||||||
node cli/mark-admin (ユーザーID または ユーザー名)
|
node cli/mark-admin (ユーザーID または ユーザー名)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 'verified'ユーザーを設定する
|
|
||||||
``` shell
|
|
||||||
node cli/mark-verified (ユーザーID または ユーザー名)
|
|
||||||
```
|
|
||||||
|
|
||||||
## ユーザーを凍結する
|
|
||||||
``` shell
|
|
||||||
node cli/suspend (ユーザーID または ユーザー名)
|
|
||||||
```
|
|
||||||
例:
|
例:
|
||||||
``` shell
|
``` shell
|
||||||
# ユーザーID
|
# ユーザーID
|
||||||
node cli/suspend 57d01a501fdf2d07be417afe
|
node cli/mark-admin 57d01a501fdf2d07be417afe
|
||||||
|
|
||||||
# ユーザー名
|
# ユーザー名
|
||||||
node cli/suspend @syuilo
|
node cli/mark-admin @syuilo
|
||||||
|
|
||||||
# ユーザー名 (リモート)
|
|
||||||
node cli/suspend @syuilo@misskey.xyz
|
|
||||||
```
|
|
||||||
|
|
||||||
## ユーザーのパスワードをリセットする
|
|
||||||
``` shell
|
|
||||||
node cli/reset-password (ユーザーID または ユーザー名)
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ This guide describes how to install and setup Misskey.
|
|||||||
|
|
||||||
*1.* Create Misskey user
|
*1.* Create Misskey user
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Running misskey on root is not a good idea so we create a user for that.
|
Running misskey as root is not a good idea so we create a user for that.
|
||||||
In debian for exemple :
|
In debian for exemple :
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -32,7 +32,7 @@ Please install and setup these softwares:
|
|||||||
|
|
||||||
*3.* Setup MongoDB
|
*3.* Setup MongoDB
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
In root :
|
As root:
|
||||||
1. `mongo` Go to the mongo shell
|
1. `mongo` Go to the mongo shell
|
||||||
2. `use misskey` Use the misskey database
|
2. `use misskey` Use the misskey database
|
||||||
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||||
@@ -47,17 +47,17 @@ In root :
|
|||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
||||||
5. `npm install` Install misskey dependencies.
|
5. `npm install` Install misskey dependencies.
|
||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
*(optional)* Generate VAPID keys
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
If you want to enable ServiceWorker, you need to generate VAPID keys:
|
If you want to enable ServiceWorker, you need to generate VAPID keys:
|
||||||
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
Unless you have set your global node_modules location elsewhere, you need to run this as root.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
npm install web-push -g
|
npm install web-push -g
|
||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
*5.* Make configuration file
|
*5.* Configure Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
2. Edit `default.yml`
|
2. Edit `default.yml`
|
||||||
@@ -114,7 +114,7 @@ WantedBy=multi-user.target
|
|||||||
|
|
||||||
You can check if the service is running with `systemctl status misskey`.
|
You can check if the service is running with `systemctl status misskey`.
|
||||||
|
|
||||||
### Way to Update to latest version of your Misskey
|
### How to update your Misskey server to the latest version
|
||||||
1. `git fetch`
|
1. `git fetch`
|
||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
|
|||||||
126
docs/setup.fr.md
Normal file
126
docs/setup.fr.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
Guide d'installation et de configuration de Misskey
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
Nous vous remerçions de l'intrêt que vous manifestez pour l'installation de votre propre instance Misskey !
|
||||||
|
Ce guide décrit les étapes à suivre afin d'installer et de configurer une instance Misskey.
|
||||||
|
|
||||||
|
[La version en japonnais est également disponible sur - 日本語版もあります](./setup.ja.md)
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
*1.* Création de l'utilisateur Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Lancer misskey en tant qu'utilisateur est une mauvaise idée, nous avons besoin de créer un utilisateur dédié.
|
||||||
|
Sur Debian, à titre d'exemple :
|
||||||
|
|
||||||
|
```
|
||||||
|
adduser --disabled-password --disabled-login misskey
|
||||||
|
```
|
||||||
|
|
||||||
|
*2.* Installation des dépendances
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Installez les paquets suivants :
|
||||||
|
|
||||||
|
#### Dépendences :package:
|
||||||
|
* **[Node.js](https://nodejs.org/en/)** >= 10.0.0
|
||||||
|
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
|
||||||
|
|
||||||
|
##### Optionnels
|
||||||
|
* [Redis](https://redis.io/)
|
||||||
|
* Redis est optionnel mais nous vous recommandons vivement de l'installer
|
||||||
|
* [Elasticsearch](https://www.elastic.co/) - requis pour pouvoir activer la fonctionnalité de recherche
|
||||||
|
|
||||||
|
*3.* Paramètrage de MongoDB
|
||||||
|
----------------------------------------------------------------
|
||||||
|
En mode root :
|
||||||
|
1. `mongo` Accédez au shell de mango
|
||||||
|
2. `use misskey` Utilisez la base de données misskey
|
||||||
|
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||||
|
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
|
||||||
|
5. `exit` Vous avez terminé !
|
||||||
|
|
||||||
|
*4.* Installation de Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `su - misskey` Basculez vers l'utilisateur misskey.
|
||||||
|
2. `git clone -b master git://github.com/syuilo/misskey.git` Clonez la branche master du dépôt misskey.
|
||||||
|
3. `cd misskey` Accédez au dossier misskey.
|
||||||
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
||||||
|
5. `npm install` Installez les dépendances de misskey.
|
||||||
|
|
||||||
|
*(optionnel)* Génération des clés VAPID
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID :
|
||||||
|
Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root.
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
npm install web-push -g
|
||||||
|
web-push generate-vapid-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
*5.* Création du fichier de configuration
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
||||||
|
2. Editez le fichier `default.yml`
|
||||||
|
|
||||||
|
*6.* Construction de Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Construisez Misskey comme ceci :
|
||||||
|
|
||||||
|
`npm run build`
|
||||||
|
|
||||||
|
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential`, `python`.
|
||||||
|
|
||||||
|
Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
|
||||||
|
|
||||||
|
1. `npm install -g node-gyp`
|
||||||
|
2. `node-gyp configure`
|
||||||
|
3. `node-gyp build`
|
||||||
|
4. `npm run build`
|
||||||
|
|
||||||
|
*7.* C'est tout.
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Excellent ! Maintenant, vous avez un environnement prêt pour lancer Misskey
|
||||||
|
|
||||||
|
### Lancement conventionnel
|
||||||
|
Lancez tout simplement `npm start`. Bonne chance et amusez-vous bien !
|
||||||
|
|
||||||
|
### Démarrage avec systemd
|
||||||
|
|
||||||
|
1. Créez une service systemd sur : `/etc/systemd/system/misskey.service`
|
||||||
|
2. Editez-le puis copiez et coller ceci dans le fichier :
|
||||||
|
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Misskey daemon
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=misskey
|
||||||
|
ExecStart=/usr/bin/npm start
|
||||||
|
WorkingDirectory=/home/misskey/misskey
|
||||||
|
TimeoutSec=60
|
||||||
|
StandardOutput=syslog
|
||||||
|
StandardError=syslog
|
||||||
|
SyslogIdentifier=misskey
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
3. `systemctl daemon-reload ; systemctl enable misskey` Redémarre systemd et active le service misskey.
|
||||||
|
4. `systemctl start misskey` Démarre le service misskey.
|
||||||
|
|
||||||
|
Vous pouvez vérifier si le service a démarré en utilisant la commande `systemctl status misskey`.
|
||||||
|
|
||||||
|
### Méthode de mise à jour vers la plus récente version de Misskey
|
||||||
|
1. `git fetch`
|
||||||
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
|
3. `npm install`
|
||||||
|
4. `npm run build`
|
||||||
|
5. Consultez [ChangeLog](../CHANGELOG.md) pour les information de migration.
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Si vous rencontrez des difficultés ou avez d'autres questions, n'hésitez pas à nous contacter !
|
||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "Schließen"
|
close: "Schließen"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "Verstanden!"
|
got-it: "Verstanden!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Anpassung-Tipps"
|
title: "Anpassung-Tipps"
|
||||||
@@ -43,13 +44,13 @@ common:
|
|||||||
unknown: "Unbekannt"
|
unknown: "Unbekannt"
|
||||||
future: "Zukunft"
|
future: "Zukunft"
|
||||||
just_now: "Gerade eben"
|
just_now: "Gerade eben"
|
||||||
seconds_ago: "vor {0} Sekunde{0:n}"
|
seconds_ago: "vor {} Sekunde(n)"
|
||||||
minutes_ago: "vor {0} Minuten"
|
minutes_ago: "vor {} Minute(n)"
|
||||||
hours_ago: "vor {0} Stunden"
|
hours_ago: "vor {} Stunde(n)"
|
||||||
days_ago: "vor {0} Tag{0:en}"
|
days_ago: "vor {} Tag(en)"
|
||||||
weeks_ago: "vor {0} Woche{0:n}"
|
weeks_ago: "vor {} Woche(n)"
|
||||||
months_ago: "vor {0} Monat{0:en}"
|
months_ago: "vor {} Monat(en)"
|
||||||
years_ago: "vor {} Jahr{0:en}"
|
years_ago: "vor {} Jahr(en)"
|
||||||
month-and-day: "{day}/{month}"
|
month-and-day: "{day}/{month}"
|
||||||
trash: "Papierkorb"
|
trash: "Papierkorb"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "Direkt"
|
specified: "Direkt"
|
||||||
specified-desc: "Nur für bestimmte Benutzer posten"
|
specified-desc: "Nur für bestimmte Benutzer posten"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Was machst du gerade?"
|
a: "Was machst du gerade?"
|
||||||
b: "Was ist so passiert?"
|
b: "Was ist so passiert?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'Erneut versuchen'
|
retry: 'Erneut versuchen'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Diese Abstimmung löschen"
|
destroy: "Diese Abstimmung löschen"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Wähle eine Reaktion aus"
|
choose-reaction: "Wähle eine Reaktion aus"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Benutzername"
|
username: "Benutzername"
|
||||||
password: "Passwort"
|
password: "Passwort"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "Oder"
|
or: "Oder"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Warten"
|
waiting: "Warten"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direkt"
|
specified: "Direkt"
|
||||||
specified-desc: "Poste nur für bestimmte Benutzer"
|
specified-desc: "Poste nur für bestimmte Benutzer"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Laden"
|
fetching: "Laden"
|
||||||
no-broadcasts: "Keine Broadcasts"
|
no-broadcasts: "Keine Broadcasts"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Folge ich"
|
|
||||||
follow: "Folgen"
|
|
||||||
request-pending: "Ausstehend"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "Follower-Anfragen"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "Dieser Post ist privat"
|
private: "Dieser Post ist privat"
|
||||||
deleted: "Dieser Beitrag wurde entfernt"
|
deleted: "Dieser Beitrag wurde entfernt"
|
||||||
reposted-by: "Repostet von {}"
|
|
||||||
location: "Ort"
|
location: "Ort"
|
||||||
renote: "Anmerkung"
|
renote: "Anmerkung"
|
||||||
add-reaction: "Reaktion hinzufügen"
|
add-reaction: "Reaktion hinzufügen"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Eine Abstimmung erstellen"
|
create-poll: "Eine Abstimmung erstellen"
|
||||||
text-remain: "{} Zeichen verbleibend"
|
text-remain: "{} Zeichen verbleibend"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "Sichtbarkeit"
|
visibility: "Sichtbarkeit"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Zitieren..."
|
quote: "Zitieren..."
|
||||||
cancel: "Abbrechen"
|
cancel: "Abbrechen"
|
||||||
renote: "Anmerkung"
|
renote: "Anmerkung"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Weitersagen..."
|
reposting: "Weitersagen..."
|
||||||
success: "Weitergesagt!"
|
success: "Weitergesagt!"
|
||||||
failure: "Weitersagen fehlgeschlagen"
|
failure: "Weitersagen fehlgeschlagen"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Mitteilungen"
|
notification: "Mitteilungen"
|
||||||
apps: "In App öffnen"
|
apps: "In App öffnen"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "Sicherheit"
|
security: "Sicherheit"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Automatische Pop-out Fenster"
|
auto-popout: "Automatische Pop-out Fenster"
|
||||||
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
|
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
|
||||||
advanced: "Erweiterte Einstellungen"
|
advanced: "Erweiterte Einstellungen"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Karte anzeigen"
|
show-maps: "Karte anzeigen"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "Neuste Version:"
|
latest-version: "Neuste Version:"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ common:
|
|||||||
reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to other’s post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”."
|
reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to other’s post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”."
|
||||||
ui: "Interface"
|
ui: "Interface"
|
||||||
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
|
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
|
||||||
drive: "Misskey Drive"
|
drive: "Drive"
|
||||||
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
|
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
|
||||||
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!"
|
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
@@ -26,10 +26,11 @@ common:
|
|||||||
close: "Close"
|
close: "Close"
|
||||||
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||||
load-more: "Load more"
|
load-more: "Load more"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "Got it!"
|
got-it: "Got it!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Customization tips"
|
title: "Customization tips"
|
||||||
paragraph: "<p>Home customization allows you to add/delete, drag and drop and rearrange widgets.</p><p>You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets.</p><p>To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header.</p><p>To finish the customization, click \"Finish\" on the upper right.</p>"
|
paragraph: "<p>Home customization allows you to add/delete, drag and drop and rearrange widgets.</p><p>You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets.</p><p>To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header.</p><p>To finish the customization, click \"Done\" on the upper right.</p>"
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "File uploaded!"
|
file-uploaded: "File uploaded!"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Post to specified users only"
|
specified-desc: "Post to specified users only"
|
||||||
private: "Private"
|
private: "Private"
|
||||||
|
local-public: "Public (Only local)"
|
||||||
|
local-home: "Home (Only local)"
|
||||||
|
local-followers: "Followers (Only local)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "What are you doing?"
|
a: "What are you doing?"
|
||||||
b: "What's happening?"
|
b: "What's happening?"
|
||||||
@@ -116,10 +120,11 @@ common:
|
|||||||
reduce-motion: "Reduce motion in UI"
|
reduce-motion: "Reduce motion in UI"
|
||||||
this-setting-is-this-device-only: "Only for this device"
|
this-setting-is-this-device-only: "Only for this device"
|
||||||
use-os-default-emojis: "Use the OS default Emojis"
|
use-os-default-emojis: "Use the OS default Emojis"
|
||||||
do-not-use-in-production: 'As this is for development, do not use this in production.'
|
do-not-use-in-production: 'This is a development build. Do not use in production.'
|
||||||
is-remote-user: "This user information is copied."
|
is-remote-user: "This user information is copied."
|
||||||
is-remote-post: "This post information is a copy."
|
is-remote-post: "This post information is a copy."
|
||||||
view-on-remote: "View it on remote"
|
view-on-remote: "View it on remote"
|
||||||
|
renoted-by: "Renoted by {user}"
|
||||||
error:
|
error:
|
||||||
title: 'Something happened :('
|
title: 'Something happened :('
|
||||||
retry: 'Retry'
|
retry: 'Retry'
|
||||||
@@ -204,7 +209,7 @@ common/views/components/games/reversi/reversi.index.vue:
|
|||||||
invitations: "You’ve got an invitation!"
|
invitations: "You’ve got an invitation!"
|
||||||
my-games: "My game"
|
my-games: "My game"
|
||||||
all-games: "All games"
|
all-games: "All games"
|
||||||
enter-username: "Enter a username"
|
enter-username: "Please enter username"
|
||||||
game-state:
|
game-state:
|
||||||
ended: "Finished"
|
ended: "Finished"
|
||||||
playing: "In Progress"
|
playing: "In Progress"
|
||||||
@@ -215,7 +220,7 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
black-or-white: "Black/White"
|
black-or-white: "Black/White"
|
||||||
black-is: "Black is {}"
|
black-is: "Black is {}"
|
||||||
rules: "Rules"
|
rules: "Rules"
|
||||||
is-llotheo: "The lesser side wins"
|
is-llotheo: "The lesser one wins(Llotheo)"
|
||||||
looped-map: "Looped map"
|
looped-map: "Looped map"
|
||||||
can-put-everywhere: "Can put everywhere"
|
can-put-everywhere: "Can put everywhere"
|
||||||
settings-of-the-bot: "Bot settings"
|
settings-of-the-bot: "Bot settings"
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Discard the poll"
|
destroy: "Discard the poll"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Send a reaction"
|
choose-reaction: "Send a reaction"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "Custom Emoji"
|
||||||
|
people: "People"
|
||||||
|
animals-and-nature: "Animals & Nature"
|
||||||
|
food-and-drink: "Food & drink"
|
||||||
|
activity: "Activity"
|
||||||
|
travel-and-places: "Travel & Places"
|
||||||
|
objects: "Objects"
|
||||||
|
symbols: "Symbols"
|
||||||
|
flags: "Flags"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Username"
|
username: "Username"
|
||||||
password: "Password"
|
password: "Password"
|
||||||
@@ -352,7 +367,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Sign in"
|
signin: "Sign in"
|
||||||
or: "Or"
|
or: "Or"
|
||||||
signin-with-twitter: "Log in with Twitter"
|
signin-with-twitter: "Log in with Twitter"
|
||||||
signin-with-github: "Log in with GitHub"
|
signin-with-github: "Sign in with GitHub"
|
||||||
|
signin-with-discord: "Sign in with Discord"
|
||||||
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
login-failed: "Log in failed. Make sure you have entered your correct username and password."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "Invitation code"
|
invitation-code: "Invitation code"
|
||||||
@@ -396,7 +412,14 @@ common/views/components/github-setting.vue:
|
|||||||
connected-to: "You are connected to this GitHub account"
|
connected-to: "You are connected to this GitHub account"
|
||||||
detail: "More..."
|
detail: "More..."
|
||||||
reconnect: "Reconnect"
|
reconnect: "Reconnect"
|
||||||
connect: "Connect to GitHub"
|
connect: "Link your GitHub account"
|
||||||
|
disconnect: "Disconnect"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "Once you connect your Discord account to your Misskey account, you will be able to see information about your Discord account on your profile, and you will be able to sign-in using Discord."
|
||||||
|
connected-to: "You are connected to this Discord account"
|
||||||
|
detail: "Details…"
|
||||||
|
reconnect: "Reconnect"
|
||||||
|
connect: "Link your Discord account"
|
||||||
disconnect: "Disconnect"
|
disconnect: "Disconnect"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Waiting"
|
waiting: "Waiting"
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Post to specified users only"
|
specified-desc: "Post to specified users only"
|
||||||
private: "Private"
|
private: "Private"
|
||||||
|
local-public: "Local (Public)"
|
||||||
|
local-public-desc: "Do not publish to remote"
|
||||||
|
local-home: "Home (Only local)"
|
||||||
|
local-followers: "Followers (Only local)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{} users mentioned"
|
count: "{} users mentioned"
|
||||||
empty: "No popular hashtag trends"
|
empty: "No popular hashtag trends"
|
||||||
@@ -419,20 +446,24 @@ common/views/components/profile-editor.vue:
|
|||||||
location: "Location"
|
location: "Location"
|
||||||
description: "About me"
|
description: "About me"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
avatar: "Avatar"
|
avatar: "Icon"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
is-cat: "This account is a Cat"
|
is-cat: "This account is a Cat"
|
||||||
is-bot: "This account is a Bot"
|
is-bot: "This account is a Bot"
|
||||||
is-locked: "Follower requests require approval"
|
is-locked: "Follower requests require approval"
|
||||||
careful-bot: "Follower requests from bots require approval"
|
careful-bot: "Follower requests from bots require approval"
|
||||||
advanced: "Advanced"
|
advanced: "Other"
|
||||||
privacy: "Privacy"
|
privacy: "Privacy"
|
||||||
save: "Update profile"
|
save: "Save"
|
||||||
saved: "Profile updated successfully"
|
saved: "Profile updated successfully"
|
||||||
uploading: "Uploading"
|
uploading: "Uploading"
|
||||||
upload-failed: "Failed to upload"
|
upload-failed: "Failed to upload"
|
||||||
|
email: "Email settings"
|
||||||
|
email-address: "Email Address"
|
||||||
|
email-verified: "Your email has been verified."
|
||||||
|
email-not-verified: "Email address is not confirmed. Please check your inbox."
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Checking"
|
||||||
no-broadcasts: "No announcements"
|
no-broadcasts: "No announcements"
|
||||||
have-a-nice-day: "Have a nice day!"
|
have-a-nice-day: "Have a nice day!"
|
||||||
next: "Next"
|
next: "Next"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Following"
|
|
||||||
follow: "Follow"
|
|
||||||
request-pending: "Pending follow request"
|
|
||||||
follow-processing: "Processing follow"
|
|
||||||
follow-request: "Follow request"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{}'s followers"
|
followers: "{}'s followers"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "Post is private"
|
private: "Post is private"
|
||||||
deleted: "Post has been removed"
|
deleted: "Post has been removed"
|
||||||
reposted-by: "Reposted by {}"
|
|
||||||
location: "Location"
|
location: "Location"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Reposted by {}"
|
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "Add a reaction"
|
add-reaction: "Add a reaction"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Create a poll"
|
create-poll: "Create a poll"
|
||||||
text-remain: "{} characters remaining"
|
text-remain: "{} characters remaining"
|
||||||
recent-tags: "Recent"
|
recent-tags: "Recent"
|
||||||
|
local-only-message: "This post will only be published locally"
|
||||||
click-to-tagging: "Click to tagging"
|
click-to-tagging: "Click to tagging"
|
||||||
visibility: "Visibility"
|
visibility: "Visibility"
|
||||||
geolocation-alert: "Your device does not provide location services."
|
geolocation-alert: "Your device does not provide location services."
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Quote..."
|
quote: "Quote..."
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
renote: "Repost"
|
renote: "Repost"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Reposting..."
|
reposting: "Reposting..."
|
||||||
success: "Reposted!"
|
success: "Reposted!"
|
||||||
failure: "Failed to Repost"
|
failure: "Failed to Repost"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profile"
|
profile: "Profile"
|
||||||
notification: "Notification"
|
notification: "Notification"
|
||||||
apps: "Apps"
|
apps: "Apps"
|
||||||
|
tags: "Hashtags"
|
||||||
mute-and-block: "Mute / Block"
|
mute-and-block: "Mute / Block"
|
||||||
blocking: "Blocking"
|
blocking: "Blocking"
|
||||||
security: "Security"
|
security: "Security"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "Post visibility"
|
note-visibility: "Post visibility"
|
||||||
default-note-visibility: "Default visibility"
|
default-note-visibility: "Default visibility"
|
||||||
remember-note-visibility: "Remember post visibility"
|
remember-note-visibility: "Remember post visibility"
|
||||||
|
web-search-engine: "Web search engine"
|
||||||
|
web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Auto pop-out window"
|
auto-popout: "Auto pop-out window"
|
||||||
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
|
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
|
||||||
advanced: "Advanced settings"
|
advanced: "Advanced settings"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "Show renoted posts of mine in timelines"
|
show-renoted-my-notes: "Show renoted posts of mine in timelines"
|
||||||
show-local-renotes: "Show renoted local posts in timelines"
|
show-local-renotes: "Show renoted local posts in timelines"
|
||||||
show-maps: "Display a map to show the location"
|
show-maps: "Display a map to show the location"
|
||||||
|
remain-deleted-note: "Continue to show deleted posts"
|
||||||
deck-column-align: "Deck column alignment"
|
deck-column-align: "Deck column alignment"
|
||||||
deck-column-align-center: "Center"
|
deck-column-align-center: "Center"
|
||||||
deck-column-align-left: "Left"
|
deck-column-align-left: "Left"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "Blocking"
|
block: "Blocking"
|
||||||
no-muted-users: "No muted users"
|
no-muted-users: "No muted users"
|
||||||
no-blocked-users: "No blocked users"
|
no-blocked-users: "No blocked users"
|
||||||
|
word-mute: "Word mute"
|
||||||
|
muted-words: "Muted keywords"
|
||||||
|
muted-words-description: "Separating with spaces results in AND specifications, and delimiting with line breaks results in OR specifications"
|
||||||
|
save: "Save"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "Change password"
|
reset: "Change password"
|
||||||
enter-current-password: "Enter the current password"
|
enter-current-password: "Enter the current password"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
instance: "Instance"
|
instance: "Instance"
|
||||||
emoji: "Emoji"
|
emoji: "Emoji"
|
||||||
|
moderators: "Moderators"
|
||||||
users: "Users"
|
users: "Users"
|
||||||
update: "Update"
|
federation: "Federation"
|
||||||
announcements: "Announcements"
|
announcements: "Announcements"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
back-to-misskey: "Back to Misskey"
|
back-to-misskey: "Back to Misskey"
|
||||||
@@ -939,26 +973,46 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Settings of connecting to Twitter"
|
twitter-integration-config: "Settings of connecting to Twitter"
|
||||||
twitter-integration-info: "The callback URL is set on /api/tw/cb."
|
twitter-integration-info: "The callback URL is set on {url}."
|
||||||
enable-twitter-integration: "Enable connection to Twitter"
|
enable-twitter-integration: "Enable connection to Twitter"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer Secret"
|
twitter-integration-consumer-secret: "Consumer Secret"
|
||||||
github-integration-config: "Setting of connecting to GitHub"
|
github-integration-config: "Setting of connecting to GitHub"
|
||||||
github-integration-info: "The callback URL is set on /api/gh/cb."
|
github-integration-info: "The callback URL is set on {url}."
|
||||||
enable-github-integration: "Enable connection to GitHub"
|
enable-github-integration: "Enable connection to GitHub"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Setting of Discord Integration"
|
||||||
|
discord-integration-info: "The callback URL is set on {url}."
|
||||||
|
enable-discord-integration: "Enable Discord connection"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "Proxy account"
|
proxy-account-config: "Proxy account"
|
||||||
proxy-account-info: "Proxy account can follow a remote user to deliver activities if no one in this instance follow him or her. When you add a remote user who is followed by nobody in this instance to your list, in order to get his or her data, proxy account follow him or her instead of your following."
|
proxy-account-info: "Proxy account can follow a remote user to deliver activities if no one in this instance follow him or her. When you add a remote user who is followed by nobody in this instance to your list, in order to get his or her data, proxy account follow him or her instead of your following."
|
||||||
proxy-account-username: "Proxy account user name"
|
proxy-account-username: "Proxy account user name"
|
||||||
proxy-account-username-desc: "Specify the user name of the account that is used as a proxy."
|
proxy-account-username-desc: "Specify the user name of the account that is used as a proxy."
|
||||||
proxy-account-warn: "You must make an account having this username before this action."
|
proxy-account-warn: "You must make an account having this username before this action."
|
||||||
max-note-text-length: "Maximum numbers of post characters"
|
max-note-text-length: "Maximum numbers of post characters"
|
||||||
disable-registration: "Stop user registration"
|
disable-registration: "Disable new user registration"
|
||||||
disable-local-timeline: "Make Local Timeline disabled"
|
disable-local-timeline: "Disable the Local Timeline"
|
||||||
invite: "Invite"
|
invite: "Invite"
|
||||||
save: "Save"
|
save: "Save"
|
||||||
saved: "Saved"
|
saved: "Saved"
|
||||||
|
user-recommendation-config: "Recommended users"
|
||||||
|
enable-external-user-recommendation: "Enable to external user recommendation"
|
||||||
|
external-user-recommendation-engine: "Engine"
|
||||||
|
external-user-recommendation-engine-desc: "Example : https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "Timeout"
|
||||||
|
external-user-recommendation-timeout-desc: "Number of milliseconds (ex. 300,000)"
|
||||||
|
email-config: "Email server settings"
|
||||||
|
email-config-info: "Used to confirm email and password reset etc."
|
||||||
|
enable-email: "Enable email delivery"
|
||||||
|
email: "Email Address"
|
||||||
|
smtp-use-ssl: "Use SSL for SMTP server"
|
||||||
|
smtp-host: "SMTP Host"
|
||||||
|
smtp-port: "SMTP Port"
|
||||||
|
smtp-user: "SMTP User"
|
||||||
|
smtp-pass: "SMTP Password"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "Chart"
|
title: "Chart"
|
||||||
per-day: "per Day"
|
per-day: "per Day"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "Response time"
|
network-time: "Response time"
|
||||||
network-usage: "Traffic"
|
network-usage: "Traffic"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "Suspend a user"
|
operation: "Operations"
|
||||||
|
username-or-userid: "Username or user ID"
|
||||||
|
user-not-found: "User not found"
|
||||||
|
lookup: "Look up"
|
||||||
|
reset-password: "Reset password"
|
||||||
|
password-updated: "The password is now \"{password}\""
|
||||||
suspend: "Suspend"
|
suspend: "Suspend"
|
||||||
suspended: "Successfully suspended."
|
suspended: "Successfully suspended."
|
||||||
unsuspend-user: "Unsuspend users"
|
|
||||||
unsuspend: "Unsuspend"
|
unsuspend: "Unsuspend"
|
||||||
unsuspended: "The user has successfully unsuspended."
|
unsuspended: "The user has successfully unsuspended."
|
||||||
verify-user: "User account verification settings"
|
|
||||||
verify: "Verify account"
|
verify: "Verify account"
|
||||||
verified: "The account is now being verified"
|
verified: "The account is now being verified"
|
||||||
unverify-user: "User account unverification settings"
|
|
||||||
unverify: "Unverify account"
|
unverify: "Unverify account"
|
||||||
unverified: "The account is now being unverified"
|
unverified: "The account is now being unverified"
|
||||||
|
users:
|
||||||
|
title: "Users"
|
||||||
|
sort:
|
||||||
|
title: "Sort"
|
||||||
|
createdAtAsc: "Date Registered (Ascending)"
|
||||||
|
createdAtDesc: "Date Registered (Descending)"
|
||||||
|
updatedAtAsc: "Last Updated (Ascending)"
|
||||||
|
updatedAtDesc: "Last Updated (Descending)"
|
||||||
|
origin:
|
||||||
|
title: "Origin"
|
||||||
|
combined: "Local + Remote"
|
||||||
|
local: "Local"
|
||||||
|
remote: "Remote"
|
||||||
|
createdAt: "Created at"
|
||||||
|
updatedAt: "Updated at"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "Register Moderator"
|
||||||
|
add: "Register"
|
||||||
|
added: "Registered a Moderator."
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "Add emoji"
|
title: "Add emoji"
|
||||||
@@ -1014,7 +1090,7 @@ admin/views/emoji.vue:
|
|||||||
remove: "Remove"
|
remove: "Remove"
|
||||||
updated: "Updated"
|
updated: "Updated"
|
||||||
remove-emoji:
|
remove-emoji:
|
||||||
are-you-sure: "Delete \"%1$s\"?"
|
are-you-sure: "Delete \"$1\"?"
|
||||||
removed: "Deleted"
|
removed: "Deleted"
|
||||||
admin/views/announcements.vue:
|
admin/views/announcements.vue:
|
||||||
announcements: "Announcements"
|
announcements: "Announcements"
|
||||||
@@ -1025,7 +1101,7 @@ admin/views/announcements.vue:
|
|||||||
text: "Content"
|
text: "Content"
|
||||||
saved: "Saved"
|
saved: "Saved"
|
||||||
_remove:
|
_remove:
|
||||||
are-you-sure: "Delete \"%1$s\"?"
|
are-you-sure: "Delete \"$1\"?"
|
||||||
removed: "Deleted"
|
removed: "Deleted"
|
||||||
admin/views/hashtags.vue:
|
admin/views/hashtags.vue:
|
||||||
hided-tags: "Hidden Tags"
|
hided-tags: "Hidden Tags"
|
||||||
@@ -1161,11 +1237,11 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "The content is NSFW"
|
sensitive: "The content is NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Following"
|
following: "Following"
|
||||||
follow: "Follow"
|
follow: "Follow"
|
||||||
request-pending: "Pending follow request"
|
request-pending: "Pending"
|
||||||
follow-processing: "Processing follow"
|
follow-processing: "Processing"
|
||||||
follow-request: "Follow request"
|
follow-request: "Follow request"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Let's follow them"
|
title: "Let's follow them"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "See more"
|
refresh: "See more"
|
||||||
close: "Close"
|
close: "Close"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
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-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Reply"
|
reply: "Reply"
|
||||||
reaction: "Reaction"
|
reaction: "Reaction"
|
||||||
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"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "Post visibility"
|
note-visibility: "Post visibility"
|
||||||
default-note-visibility: "Default visibility"
|
default-note-visibility: "Default visibility"
|
||||||
remember-note-visibility: "Remember post visibility"
|
remember-note-visibility: "Remember post visibility"
|
||||||
|
web-search-engine: "Web search engine"
|
||||||
|
web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
disable-via-mobile: "Don't mark the post as 'from mobile'"
|
||||||
load-raw-images: "Show attached images in original quality"
|
load-raw-images: "Show attached images in original quality"
|
||||||
load-remote-media: "Show media from a remote server"
|
load-remote-media: "Show media from a remote server"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "Connect to your GitHub account"
|
github-connect: "Connect to your GitHub account"
|
||||||
github-reconnect: "Reconnect"
|
github-reconnect: "Reconnect"
|
||||||
github-disconnect: "Disconnect"
|
github-disconnect: "Disconnect"
|
||||||
|
discord: "Discord Integration"
|
||||||
|
discord-connect: "Connect to your Discord account"
|
||||||
|
discord-reconnect: "Reconnect"
|
||||||
|
discord-disconnect: "Disconnect"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "Current version:"
|
version: "Current version:"
|
||||||
latest-version: "Latest version:"
|
latest-version: "Latest version:"
|
||||||
@@ -1393,7 +1473,7 @@ deck:
|
|||||||
deck/deck.tl-column.vue:
|
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: "Option"
|
edit: "Options"
|
||||||
deck/deck.user-column.vue:
|
deck/deck.user-column.vue:
|
||||||
posts: "Posts"
|
posts: "Posts"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "Cerrar"
|
close: "Cerrar"
|
||||||
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "¡Listo!"
|
got-it: "¡Listo!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Consejos de personalización"
|
title: "Consejos de personalización"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "¿Qué haces?"
|
a: "¿Qué haces?"
|
||||||
b: "¿Qué está pasando?"
|
b: "¿Qué está pasando?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Cancelar la encuesta"
|
destroy: "Cancelar la encuesta"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Escoge una reacción"
|
choose-reaction: "Escoge una reacción"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Usuario"
|
username: "Usuario"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "O"
|
or: "O"
|
||||||
signin-with-twitter: "Ingresar con Twitter"
|
signin-with-twitter: "Ingresar con Twitter"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "Código de invitación"
|
invitation-code: "Código de invitación"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Un momento"
|
waiting: "Un momento"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Directo"
|
specified: "Directo"
|
||||||
specified-desc: "Publica solo para los seguidores que quieras"
|
specified-desc: "Publica solo para los seguidores que quieras"
|
||||||
private: "Privada"
|
private: "Privada"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Recuperando"
|
fetching: "Recuperando"
|
||||||
no-broadcasts: "Sin emisión"
|
no-broadcasts: "Sin emisión"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
||||||
click-to-show: "Click para mostrar"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Siguiendo"
|
|
||||||
follow: "Sigue"
|
|
||||||
request-pending: "Pendiente de aprobación"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "Solicitud de seguir"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} seguidores"
|
followers: "{} seguidores"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "Esta publicación es privada"
|
private: "Esta publicación es privada"
|
||||||
deleted: "Esta publicación ha sido removida"
|
deleted: "Esta publicación ha sido removida"
|
||||||
reposted-by: "Republicado por {}"
|
|
||||||
location: "Localización"
|
location: "Localización"
|
||||||
renote: "Republicar"
|
renote: "Republicar"
|
||||||
add-reaction: "Agregar una reacción"
|
add-reaction: "Agregar una reacción"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Crea una encuesta"
|
create-poll: "Crea una encuesta"
|
||||||
text-remain: "quedan {} caracteres"
|
text-remain: "quedan {} caracteres"
|
||||||
recent-tags: "Reciente"
|
recent-tags: "Reciente"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "Click para etiquetar"
|
click-to-tagging: "Click para etiquetar"
|
||||||
visibility: "Visibilidad"
|
visibility: "Visibilidad"
|
||||||
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Cita..."
|
quote: "Cita..."
|
||||||
cancel: "Cancelar"
|
cancel: "Cancelar"
|
||||||
renote: "Volver a publicar"
|
renote: "Volver a publicar"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Publicando de nuevo..."
|
reposting: "Publicando de nuevo..."
|
||||||
success: "¡Publicado!"
|
success: "¡Publicado!"
|
||||||
failure: "La publicación ha fallado"
|
failure: "La publicación ha fallado"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
notification: "Notificación"
|
notification: "Notificación"
|
||||||
apps: "Aplicaciones"
|
apps: "Aplicaciones"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "Seguridad"
|
security: "Seguridad"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Ventana emergente automática"
|
auto-popout: "Ventana emergente automática"
|
||||||
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
|
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
|
||||||
advanced: "Configuración avanzada"
|
advanced: "Configuración avanzada"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
@@ -4,29 +4,30 @@ meta:
|
|||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "Une ⭐ du fédiverse"
|
misskey: "Une ⭐ du fédiverse"
|
||||||
about-title: "Une ⭐ du fédivers."
|
about-title: "Une ⭐ du fédiverse."
|
||||||
about: "Merci d’avoir choisis Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre et fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), elle est connectée mutuellement avec d’autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, un court instant, loin de l’agitation de la ville et plonger dans un Internet d’un nouveau genre ?"
|
about: "Merci d’avoir choisis Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre et fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), elle est connectée mutuellement avec d’autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, un court instant, loin de l’agitation de la ville et plonger dans un Internet d’un nouveau genre ?"
|
||||||
intro:
|
intro:
|
||||||
title: "C’est quoi Misskey ?"
|
title: "C’est quoi Misskey ?"
|
||||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
about: "Misskey est un <b>réseau social de Microblogage</b> open source. Il offre une interface utilisateur riche et hautement personnalisable, une variété de réactions aux publications et un lecteur pour la gestion centralisée de fichiers. De plus, comme il est possible de se connecter au reste du du Fédiverse, vous pouvez interagir avec d'autres plateformes fédérées. Par exemple, si vous publiez quelque chose, la note sera transmise non seulement aux utilisateurs de Misskey, mais aussi à d'autres plateformes de réseaux sociaux dans le Fédiverse. Imaginez que vous puissiez transmettre des ondes radio d'une planète vers l'autre."
|
||||||
features: "Options"
|
features: "Options"
|
||||||
rich-contents: "Notes"
|
rich-contents: "Notes"
|
||||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
rich-contents-desc: "Partagez vos idées, les événements et les sujets qui vous tiennent à cœur ainsi que tout autre chose que vous souhaitez partager avec les autres. Si vous le désirez, vous pouvez décorer vos messages en utilisant une syntaxe différente ou en y joignant des sondages et des fichiers, tels que les photos ou les vidéos que vous aimez."
|
||||||
reaction: "Réactions"
|
reaction: "Réactions"
|
||||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
reaction-desc: "Une manière simple d'exprimer vos émotions. Misskey peut attacher diverses réactions aux publications des autres utilisateurs. Si vous goûtez aux réactions sur Misskey une fois, vous ne pourrez plus être en mesure de retourner vers une autre plateforme de réseaux sociaux n'offrant que des \"J'aime\"."
|
||||||
ui: "Interface utilisateur"
|
ui: "Interface utilisateur"
|
||||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
outro: "Découvrez vous-même les fonctionnalités de Misskey. Étant donné que Misskey est un réseaux social fédéré, vous pouvez essayer d’autres instances afin de trouver vos ami·e·s si la présente instance ne vous correspond pas. Bonne chance et amusez-vous bien !"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Veuillez désactiver votre bloqueur de publicités"
|
detected: "Veuillez désactiver votre bloqueur de publicités"
|
||||||
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
|
warning: "<strong>Misskey n’utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
|
||||||
application-authorization: "Permissions de l'application"
|
application-authorization: "Autorisations de l’application"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis."
|
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis."
|
||||||
load-more: "Charger plus"
|
load-more: "Charger plus"
|
||||||
got-it: "J'ai compris !"
|
enter-password: "パスワードを入力してください"
|
||||||
|
got-it: "J’ai compris !"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Conseils de personnalisation"
|
title: "Conseils de personnalisation"
|
||||||
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
@@ -44,8 +45,8 @@ common:
|
|||||||
future: "à l’instant"
|
future: "à l’instant"
|
||||||
just_now: "à l'instant"
|
just_now: "à l'instant"
|
||||||
seconds_ago: "Il y a {} seconde·s"
|
seconds_ago: "Il y a {} seconde·s"
|
||||||
minutes_ago: "Il y a {} minute·s"
|
minutes_ago: "Il y a {} min"
|
||||||
hours_ago: "Il y a {} heure·s"
|
hours_ago: "Il y a {} h"
|
||||||
days_ago: "Il y a {} jours"
|
days_ago: "Il y a {} jours"
|
||||||
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"
|
||||||
@@ -71,7 +72,7 @@ common:
|
|||||||
friday: "Vendredi"
|
friday: "Vendredi"
|
||||||
saturday: "Samedi"
|
saturday: "Samedi"
|
||||||
reactions:
|
reactions:
|
||||||
like: "J'aime"
|
like: "Bien"
|
||||||
love: "Adore"
|
love: "Adore"
|
||||||
laugh: "Rire"
|
laugh: "Rire"
|
||||||
hmm: "Hmm … ?"
|
hmm: "Hmm … ?"
|
||||||
@@ -85,11 +86,14 @@ common:
|
|||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Principal"
|
home: "Principal"
|
||||||
home-desc: "Publier sur le fil principal uniquement"
|
home-desc: "Publier sur le fil principal uniquement"
|
||||||
followers: "Abonnés·es"
|
followers: "Abonné·e·s"
|
||||||
followers-desc: "Publier à vos abonnés·es uniquement"
|
followers-desc: "Publier à vos abonné·e·s uniquement"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Publier uniquement aux utilisateurs·rices mentionnés·es"
|
specified-desc: "Publier uniquement aux utilisateurs·rices mentionnés·es"
|
||||||
private: "Privé"
|
private: "Privé"
|
||||||
|
local-public: "Local (Public)"
|
||||||
|
local-home: "Accueil (local uniquement)"
|
||||||
|
local-followers: "Local (Abonnés)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Que faites-vous maintenant ?"
|
a: "Que faites-vous maintenant ?"
|
||||||
b: "Quoi de neuf ?"
|
b: "Quoi de neuf ?"
|
||||||
@@ -99,7 +103,7 @@ common:
|
|||||||
f: "En attente de vos écrits"
|
f: "En attente de vos écrits"
|
||||||
search: "Recherche"
|
search: "Recherche"
|
||||||
delete: "Supprimer"
|
delete: "Supprimer"
|
||||||
loading: "Chargement"
|
loading: "Chargement en cours …"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
update-available-title: "Mise à jour disponible"
|
update-available-title: "Mise à jour disponible"
|
||||||
update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour."
|
update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour."
|
||||||
@@ -117,9 +121,10 @@ common:
|
|||||||
this-setting-is-this-device-only: "Uniquement sur cet appareil"
|
this-setting-is-this-device-only: "Uniquement sur cet appareil"
|
||||||
use-os-default-emojis: "Utiliser les émojis standards du système"
|
use-os-default-emojis: "Utiliser les émojis standards du système"
|
||||||
do-not-use-in-production: 'Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production.'
|
do-not-use-in-production: 'Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production.'
|
||||||
is-remote-user: "Ces informations utilisateur ont été copiées."
|
is-remote-user: "Ces informations appartiennent à un·e utilisateur·rice distant·e."
|
||||||
is-remote-post: "Ceci est une publication distante"
|
is-remote-post: "Ceci est une publication distante."
|
||||||
view-on-remote: "Consulter le profil complet"
|
view-on-remote: " Consulter le profil complet"
|
||||||
|
renoted-by: "Renoté par {user}"
|
||||||
error:
|
error:
|
||||||
title: 'Une erreur est survenue'
|
title: 'Une erreur est survenue'
|
||||||
retry: 'Réessayer'
|
retry: 'Réessayer'
|
||||||
@@ -151,22 +156,22 @@ common:
|
|||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
users: "Utilisateur·rice·s"
|
users: "Utilisateur·rice·s"
|
||||||
polls: "Sondages"
|
polls: "Sondages"
|
||||||
post-form: "Formulaire de publication"
|
post-form: "Champs de publication"
|
||||||
server: "Info sur le serveur"
|
server: "Info sur le serveur"
|
||||||
donation: "Dons"
|
donation: "Dons"
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Conseils"
|
tips: "Conseils"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
dev: "Échec lors de la création de l’application. Veuillez réessayer."
|
dev: "Échec lors de la création de l’application. Veuillez réessayer."
|
||||||
ai-chan-kawaii: "Ai-Chan est mignone !"
|
ai-chan-kawaii: "Ai-Chan est mignonne !"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte ?"
|
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte ?"
|
||||||
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
||||||
account-read: "Afficher les informations du compte :"
|
account-read: "Afficher les informations du compte."
|
||||||
account-write: "Modifications des informations du compte :"
|
account-write: "Modifications des informations du compte."
|
||||||
note-write: "Publier."
|
note-write: "Publier."
|
||||||
like-write: "Réagir aux publications."
|
like-write: "Réagir aux publications."
|
||||||
following-write: "S'abonner et se désabonner."
|
following-write: "Suivre des comptes et se désabonner."
|
||||||
drive-read: "Lire votre Drive"
|
drive-read: "Lire votre Drive"
|
||||||
drive-write: "Téléverser/supprimer des fichiers dans votre Drive."
|
drive-write: "Téléverser/supprimer des fichiers dans votre Drive."
|
||||||
notification-read: "Lire vos notifications."
|
notification-read: "Lire vos notifications."
|
||||||
@@ -175,13 +180,13 @@ auth/views/form.vue:
|
|||||||
accept: "Autoriser l’accès"
|
accept: "Autoriser l’accès"
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
denied: "L'autorisation de l'application a été refusée."
|
denied: "L’autorisation de l’application a été refusée."
|
||||||
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
denied-paragraph: "Cette application ne va pas accéder à votre compte."
|
||||||
already-authorized: "Cette application est déjà autorisée"
|
already-authorized: "Cette application est déjà autorisée."
|
||||||
allowed: "Permissions autorisées de l’application."
|
allowed: "Permissions autorisées de l’application."
|
||||||
callback-url: "Retour vers l'application"
|
callback-url: "Retour vers l’application."
|
||||||
please-go-back: "Veillez retourner à l'application."
|
please-go-back: "Veillez retourner à l'application."
|
||||||
error: "La session n'existe pas."
|
error: "La session n’existe pas."
|
||||||
sign-in: "Veuillez vous connecter"
|
sign-in: "Veuillez vous connecter"
|
||||||
common/views/components/games/reversi/reversi.vue:
|
common/views/components/games/reversi/reversi.vue:
|
||||||
matching:
|
matching:
|
||||||
@@ -198,7 +203,7 @@ common/views/components/games/reversi/reversi.index.vue:
|
|||||||
sub-title: "Jouer à Reversi avec vos ami·e·s !"
|
sub-title: "Jouer à Reversi avec vos ami·e·s !"
|
||||||
invite: "Inviter"
|
invite: "Inviter"
|
||||||
rule: "Comment jouer ?"
|
rule: "Comment jouer ?"
|
||||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
rule-desc: "Reversi est un jeu qui se joue sur un tablier et dans lequel les joueurs placent des pions sur ce dernier, à tour de rôle avec l'adversaire. Le but du jeu est d'avoir plus de pions de sa couleur que l'adversaire à la fin de la partie, celle-ci s'achevant lorsque aucun des deux joueurs ne peut plus jouer de coup légal, généralement lorsque les 64 cases sont occupées."
|
||||||
mode-invite: "Inviter"
|
mode-invite: "Inviter"
|
||||||
mode-invite-desc: "Inviter un·e joueur·se."
|
mode-invite-desc: "Inviter un·e joueur·se."
|
||||||
invitations: "Vous avez reçu une invitation !"
|
invitations: "Vous avez reçu une invitation !"
|
||||||
@@ -229,7 +234,7 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "Échec de connexion au serveur"
|
title: "Échec de connexion au serveur"
|
||||||
description: "Il se peut qu’il y est un problème avec votre connexion internet, ou le serveur est hors-ligne ou en maintenance. Veuillez {réessayer} plus tard."
|
description: "Il se peut qu’il y est un problème avec votre connexion internet, ou le serveur est hors-ligne ou en maintenance. Veuillez {réessayer} plus tard."
|
||||||
thanks: "On vous remercie d'utiliser Misskey."
|
thanks: "On vous remercie d’avoir choisi d’utiliser Misskey."
|
||||||
troubleshoot: "Dépanner"
|
troubleshoot: "Dépanner"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
title: "Dépannage"
|
title: "Dépannage"
|
||||||
@@ -254,8 +259,8 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "Contenu sensible"
|
sensitive: "Contenu sensible"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
light-theme: "Thème durant le mode clair"
|
light-theme: "Thème en mode jour"
|
||||||
dark-theme: "Thème durant le mode sombre"
|
dark-theme: "Thème en mode nuit"
|
||||||
light-themes: "Thème clair"
|
light-themes: "Thème clair"
|
||||||
dark-themes: "Thème sombre"
|
dark-themes: "Thème sombre"
|
||||||
install-a-theme: "Installer un thème"
|
install-a-theme: "Installer un thème"
|
||||||
@@ -297,7 +302,7 @@ common/views/components/messaging.vue:
|
|||||||
no-history: "Pas d'historique"
|
no-history: "Pas d'historique"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "Pas de conversations"
|
empty: "Pas de conversations"
|
||||||
no-history: "Il n'y a pas plus d'historique"
|
no-history: "Aucun historique"
|
||||||
resize-form: "Faites glisser pour redimensionner"
|
resize-form: "Faites glisser pour redimensionner"
|
||||||
new-message: "Nouveau message"
|
new-message: "Nouveau message"
|
||||||
only-one-file-attached: "Un seul fichier peut être joint au message"
|
only-one-file-attached: "Un seul fichier peut être joint au message"
|
||||||
@@ -344,16 +349,27 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Annuler ce sondage"
|
destroy: "Annuler ce sondage"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Choisissez votre réaction"
|
choose-reaction: "Choisissez votre réaction"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "Émoji personnalisé"
|
||||||
|
people: "Personnes"
|
||||||
|
animals-and-nature: "Animaux et nature"
|
||||||
|
food-and-drink: "Nourriture et boisson"
|
||||||
|
activity: "Activités"
|
||||||
|
travel-and-places: "Lieux et voyages"
|
||||||
|
objects: "Objets"
|
||||||
|
symbols: "Symboles"
|
||||||
|
flags: "Drapeaux"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Nom d'utilisateur·rice"
|
username: "Nom d'utilisateur·rice"
|
||||||
password: "Mot de passe"
|
password: "Mot de passe"
|
||||||
token: "Token"
|
token: "Jeton"
|
||||||
signing-in: "Connexion…"
|
signing-in: "Connexion…"
|
||||||
signin: "Se connecter"
|
signin: "Se connecter"
|
||||||
or: "Ou"
|
or: "Ou"
|
||||||
signin-with-twitter: "Se connecter via Twitter"
|
signin-with-twitter: "Se connecter via Twitter"
|
||||||
signin-with-github: "Se connecter avec GitHub"
|
signin-with-github: "Se connecter avec GitHub"
|
||||||
login-failed: "Échec d'authentification. Veuillez vérifier que votre nom d'utilisateur et mot de passe sont corrects."
|
signin-with-discord: "Se connecter avec Discord"
|
||||||
|
login-failed: "Échec d’authentification. Veuillez vérifier que votre nom d’utilisateur et mot de passe sont corrects."
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "Code d’invitation"
|
invitation-code: "Code d’invitation"
|
||||||
invitation-info: "Si vous n’avez pas de code d’invitation, contactez un·e <a href=\"{}\">administrateur·rice</a>."
|
invitation-info: "Si vous n’avez pas de code d’invitation, contactez un·e <a href=\"{}\">administrateur·rice</a>."
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "Reconnecter"
|
reconnect: "Reconnecter"
|
||||||
connect: "Se connecter avec GitHub"
|
connect: "Se connecter avec GitHub"
|
||||||
disconnect: "Déconnecter"
|
disconnect: "Déconnecter"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "Si vous liez votre compte Discord à votre compte Misskey, vous serez en mesure de voir votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Discord."
|
||||||
|
connected-to: "Vous êtes connecté à votre compte Discord"
|
||||||
|
detail: "Détails …"
|
||||||
|
reconnect: "Reconnecter"
|
||||||
|
connect: "Lier votre compte Discord"
|
||||||
|
disconnect: "Déconnecter"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Veuillez patienter"
|
waiting: "Veuillez patienter"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Publier uniquement aux utilisateurs·rices mentionné·e·s"
|
specified-desc: "Publier uniquement aux utilisateurs·rices mentionné·e·s"
|
||||||
private: "Privé"
|
private: "Privé"
|
||||||
|
local-public: "Local (Public)"
|
||||||
|
local-public-desc: "Ne pas publier pour les distants"
|
||||||
|
local-home: "Accueil (local uniquement)"
|
||||||
|
local-followers: "Local (Abonnés)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{} utilisateurs·rices mentionnés·es"
|
count: "{} utilisateurs·rices mentionnés·es"
|
||||||
empty: "Aucune tendance"
|
empty: "Aucune tendance"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "Profil mis à jour avec succès"
|
saved: "Profil mis à jour avec succès"
|
||||||
uploading: "En cours d'envoi …"
|
uploading: "En cours d'envoi …"
|
||||||
upload-failed: "Échec de l'envoi"
|
upload-failed: "Échec de l'envoi"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Récupération"
|
fetching: "Récupération"
|
||||||
no-broadcasts: "Aucune annonce"
|
no-broadcasts: "Aucune annonce"
|
||||||
@@ -438,9 +469,9 @@ common/views/widgets/broadcast.vue:
|
|||||||
next: "Suivant"
|
next: "Suivant"
|
||||||
common/views/widgets/calendar.vue:
|
common/views/widgets/calendar.vue:
|
||||||
year: "Année {}"
|
year: "Année {}"
|
||||||
month: "{},"
|
month: "Mois {}"
|
||||||
day: "Jour {}"
|
day: "{}"
|
||||||
today: "Aujourd'hui :"
|
today: "Aujourd’hui :"
|
||||||
this-month: "Ce mois-ci :"
|
this-month: "Ce mois-ci :"
|
||||||
this-year: "Cette année :"
|
this-year: "Cette année :"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
@@ -483,26 +514,26 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
|
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
|
||||||
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
|
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
|
||||||
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
|
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
|
||||||
tips-line23: "Mayu est mignone avec ses sourcils."
|
tips-line23: "Mayu est mignonne avec ses sourcils."
|
||||||
tips-line24: "Misskey a vu le jour en 2014"
|
tips-line24: "Misskey est fonctionnel depuis 2014"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Connecté·e en tant que {}"
|
signed-in-as: "Connecté·e en tant que {}"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
follow: "Suivre"
|
follow: "Suivre"
|
||||||
request-pending: "Demande d'abonnement en attente"
|
request-pending: "Demande d’abonnement en attente"
|
||||||
follow-processing: "En cours d’abonnement"
|
follow-processing: "Demande en attente"
|
||||||
follow-request: "Demande d'abonnement"
|
follow-request: "Demande d’abonnement"
|
||||||
desktop:
|
desktop:
|
||||||
banner-crop-title: "Découpez la partie qui apparaitra comme bannière"
|
banner-crop-title: "Découpez la partie qui apparaitra comme bannière"
|
||||||
banner: "Bannière"
|
banner: "Bannière"
|
||||||
uploading-banner: "Téléversement d'une nouvelle bannière"
|
uploading-banner: "Téléversement d'une nouvelle bannière"
|
||||||
banner-updated: "La bannière est mise à jour"
|
banner-updated: "Mise à jour de la bannière avec succès"
|
||||||
choose-banner: "Choisir une bannière"
|
choose-banner: "Choisir une bannière"
|
||||||
avatar-crop-title: "Découpez la partie qui apparaitra comme avatar"
|
avatar-crop-title: "Découpez la partie qui apparaitra comme avatar"
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
uploading-avatar: "Téléversement du nouvel avatar"
|
uploading-avatar: "Téléversement du nouvel avatar"
|
||||||
avatar-updated: "L'avatar est mis à jour"
|
avatar-updated: "Mise à jour de l’avatar avec succès"
|
||||||
choose-avatar: "Choisir un avatar"
|
choose-avatar: "Choisir un avatar"
|
||||||
invalid-filetype: "Ce format de fichier n’est pas pris en charge"
|
invalid-filetype: "Ce format de fichier n’est pas pris en charge"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
@@ -514,9 +545,9 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Activité"
|
title: "Activité"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{year} / {month}"
|
title: "{month} / {year}"
|
||||||
prev: "Mois dernier"
|
prev: "Mois précédent"
|
||||||
next: "Mois prochain"
|
next: "Mois suivant"
|
||||||
go: "Cliquez pour naviguer"
|
go: "Cliquez pour naviguer"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
chosen-files: "{count} fichier·s sélectionné·s"
|
chosen-files: "{count} fichier·s sélectionné·s"
|
||||||
@@ -542,7 +573,7 @@ desktop/views/components/drive.file.vue:
|
|||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
mark-as-sensitive: "Marquer comme sensible"
|
mark-as-sensitive: "Marquer comme sensible"
|
||||||
unmark-as-sensitive: "Ne pas marquer comme sensible"
|
unmark-as-sensitive: "Ne pas marquer comme sensible"
|
||||||
copy-url: "Copier l'URL"
|
copy-url: "Copier l’URL"
|
||||||
download: "Télécharger"
|
download: "Télécharger"
|
||||||
else-files: "Autres..."
|
else-files: "Autres..."
|
||||||
set-as-avatar: "Utiliser en tant qu'avatar"
|
set-as-avatar: "Utiliser en tant qu'avatar"
|
||||||
@@ -588,22 +619,16 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Le contenu est NSFW"
|
sensitive: "Le contenu est NSFW"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Abonné·e"
|
|
||||||
follow: "Suivre"
|
|
||||||
request-pending: "En attente d'approbation"
|
|
||||||
follow-processing: "Continuer l’abonnement"
|
|
||||||
follow-request: "Demande d'abonnement"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} abonné·e·s"
|
followers: "{} abonné·e·s"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
empty: "Il semble que vous n'avez pas encore d'abonné·e·s."
|
empty: "Il semble que vous n’avez pas encore d’abonné·e·s."
|
||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "Suit {}"
|
following: "Suit {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "Vous ne suivez aucun compte."
|
empty: "Vous ne suivez aucun compte."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "Utilisateurs recommandés :"
|
title: "Utilisateurs·rices recommandé·e·s :"
|
||||||
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
||||||
fetching: "Chargement"
|
fetching: "Chargement"
|
||||||
refresh: "Plus"
|
refresh: "Plus"
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.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"
|
||||||
reposted-by: "Republié par {}"
|
|
||||||
location: "Géolocalisation"
|
location: "Géolocalisation"
|
||||||
renote: "Republier"
|
renote: "Republier"
|
||||||
add-reaction: "Ajouter votre reaction"
|
add-reaction: "Ajouter votre reaction"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "Partagé par {}"
|
|
||||||
reply: "Répondre"
|
reply: "Répondre"
|
||||||
renote: "Partager"
|
renote: "Partager"
|
||||||
add-reaction: "Ajouter votre réaction"
|
add-reaction: "Ajouter votre réaction"
|
||||||
@@ -640,7 +663,7 @@ desktop/views/components/notes.vue:
|
|||||||
error: "Échec du chargement."
|
error: "Échec du chargement."
|
||||||
retry: "Réessayer"
|
retry: "Réessayer"
|
||||||
desktop/views/components/notifications.vue:
|
desktop/views/components/notifications.vue:
|
||||||
empty: "Pas de notifications"
|
empty: "Aucune de notification !"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+Ajouter un utilisateur"
|
add-visible-user: "+Ajouter un utilisateur"
|
||||||
attach-location-information: "Attacher des informations de localisation"
|
attach-location-information: "Attacher des informations de localisation"
|
||||||
@@ -654,7 +677,7 @@ desktop/views/components/post-form.vue:
|
|||||||
replied: "Répondu !"
|
replied: "Répondu !"
|
||||||
reposted: "Reposté !"
|
reposted: "Reposté !"
|
||||||
note-failed: "La note à échoué"
|
note-failed: "La note à échoué"
|
||||||
reply-failed: "La réponse à échoué"
|
reply-failed: "La réponse a échoué"
|
||||||
renote-failed: "Échec lors de la republication"
|
renote-failed: "Échec lors de la republication"
|
||||||
posting: "Publication …"
|
posting: "Publication …"
|
||||||
attach-media-from-local: "Joindre un média depuis votre appareil"
|
attach-media-from-local: "Joindre un média depuis votre appareil"
|
||||||
@@ -662,8 +685,9 @@ desktop/views/components/post-form.vue:
|
|||||||
attach-cancel: "Annuler le fichier attaché"
|
attach-cancel: "Annuler le fichier attaché"
|
||||||
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: "{} caractères restants"
|
||||||
recent-tags: "Récent"
|
recent-tags: "Récent"
|
||||||
|
local-only-message: "Ce message sera publié uniquement sur le fil local"
|
||||||
click-to-tagging: "Cliquer pour tagguer"
|
click-to-tagging: "Cliquer pour tagguer"
|
||||||
visibility: "Visibilité"
|
visibility: "Visibilité"
|
||||||
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Citer..."
|
quote: "Citer..."
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
renote: "Republier"
|
renote: "Republier"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Republication en cours …"
|
reposting: "Republication en cours …"
|
||||||
success: "Republié !"
|
success: "Republié !"
|
||||||
failure: "La renote a échoué"
|
failure: "La renote a échoué"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Notification"
|
notification: "Notification"
|
||||||
apps: "Applications"
|
apps: "Applications"
|
||||||
|
tags: "Hashtags"
|
||||||
mute-and-block: "Silencé·e·s / Bloqué·e·s"
|
mute-and-block: "Silencé·e·s / Bloqué·e·s"
|
||||||
blocking: "En cours de blocage"
|
blocking: "En cours de blocage"
|
||||||
security: "Sécurité"
|
security: "Sécurité"
|
||||||
@@ -702,7 +728,7 @@ desktop/views/components/settings.vue:
|
|||||||
password: "Mot de Passe"
|
password: "Mot de Passe"
|
||||||
2fa: "Vérification en deux étapes"
|
2fa: "Vérification en deux étapes"
|
||||||
other: "Autres"
|
other: "Autres"
|
||||||
license: "License"
|
license: "Licence"
|
||||||
theme: "Thèmes"
|
theme: "Thèmes"
|
||||||
behaviour: "Comportement"
|
behaviour: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
@@ -710,11 +736,13 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "Visibilité de la publication"
|
note-visibility: "Visibilité de la publication"
|
||||||
default-note-visibility: "Visibilité par défaut"
|
default-note-visibility: "Visibilité par défaut"
|
||||||
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
|
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Fenêtre contextuelle automatique"
|
auto-popout: "Fenêtre contextuelle automatique"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "Paramètres avancés"
|
advanced: "Paramètres avancés"
|
||||||
api-via-stream: "Requête API via le flux"
|
api-via-stream: "Requête API via le flux"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "Lorsque ce paramètre est activé, une demande d'API est effectuée via une connexion WebSocket (pour une meilleure performance). Lorsqu'il est désactivé, l'API de récupération native est utilisée. Ce paramètre n'est valide que sur cet appareil."
|
||||||
deck-nav: "デッキ内ナビゲーション"
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
deck-default: "Utiliser le Deck comme IU par défaut"
|
deck-default: "Utiliser le Deck comme IU par défaut"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "Afficher mes republications dans les fils"
|
show-renoted-my-notes: "Afficher mes republications dans les fils"
|
||||||
show-local-renotes: "Afficher les partages locaux sur les fils"
|
show-local-renotes: "Afficher les partages locaux sur les fils"
|
||||||
show-maps: "Afficher la carte"
|
show-maps: "Afficher la carte"
|
||||||
|
remain-deleted-note: "Continuer à afficher les messages supprimés"
|
||||||
deck-column-align: "Alignement des colonnes du Deck"
|
deck-column-align: "Alignement des colonnes du Deck"
|
||||||
deck-column-align-center: "Centrer"
|
deck-column-align-center: "Centrer"
|
||||||
deck-column-align-left: "À gauche"
|
deck-column-align-left: "À gauche"
|
||||||
@@ -753,23 +782,23 @@ desktop/views/components/settings.vue:
|
|||||||
language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
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: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que d’autres données (y compris les paramètres de configuration). Après le nettoyage, vous devez recharger la page."
|
||||||
cache-cleared: "Cache nettoyé"
|
cache-cleared: "Cache nettoyé"
|
||||||
cache-cleared-desc: "Veuillez recharger la page."
|
cache-cleared-desc: "Veuillez recharger la page."
|
||||||
auto-watch: "Montre automatique"
|
auto-watch: "Montre automatique"
|
||||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
auto-watch-desc: "Recevez automatiquement les notifications de publications, réponses et réactions."
|
||||||
about: "À propose de Misskey"
|
about: "À propose de Misskey"
|
||||||
operator: "L'admin de cette instance"
|
operator: "L'admin de cette instance"
|
||||||
update: "Mise à jour de Misskey"
|
update: "Mise à jour de Misskey"
|
||||||
version: "Version :"
|
version: "Version :"
|
||||||
latest-version: "Dernière version :"
|
latest-version: "Dernière version :"
|
||||||
update-checking: "Recherche de mises à jour"
|
update-checking: "Vérification des mises à jour en cours …"
|
||||||
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: "Reporter les mises à jour (non recommandé)"
|
prevent-update: "Reporter les mises à jour (non recommandé)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "Même si ce paramètre est activé, la mise à jour pourrait être appliquée. Ce paramètre n'est valide que sur cet appareil."
|
||||||
no-updates: "Aucune mise à jour disponible"
|
no-updates: "Aucune mise à jour disponible"
|
||||||
no-updates-desc: "Votre Misskey est à jour."
|
no-updates-desc: "Votre client Misskey est à jour."
|
||||||
update-available: "Nouvelle version disponible !"
|
update-available: "Nouvelle version disponible !"
|
||||||
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
||||||
advanced-settings: "Réglages avancés"
|
advanced-settings: "Réglages avancés"
|
||||||
@@ -788,23 +817,23 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
intro: "Si vous configurez la vérication en deux étapes vous aurez non seulement besoin de votre mot de passe mais aussi un appareil déjà pré-enregistré(tel que votre smartphone) ce qui ameliora grandement la sécurité de votre compte."
|
intro: "Si vous configurez la vérication en deux étapes vous aurez non seulement besoin de votre mot de passe mais aussi un appareil déjà pré-enregistré(tel que votre smartphone) ce qui ameliora grandement la sécurité de votre compte."
|
||||||
detail: "Voir les détails..."
|
detail: "Voir les détails..."
|
||||||
url: "https://www.google.com/landing/2step/"
|
url: "https://www.google.com/landing/2step/"
|
||||||
caution: "Activer la vérification en deux étapes vient aussi avec des contraintes, si vous perdez votre appareil ou ne pouvez tout simplement plus y accèder vous ne serez plus en mesure de vous connecter à Misskey."
|
caution: "Activer la vérification en deux étapes vient aussi avec des contraintes, si vous perdez votre appareil ou ne pouvez tout simplement plus y accéder vous ne serez plus en mesure de vous connecter à Misskey."
|
||||||
register: "Enregistrer un appareil"
|
register: "Enregistrer un appareil"
|
||||||
already-registered: "Cette étape à déjà été complétée"
|
already-registered: "Cette étape à déjà été complétée"
|
||||||
unregister: "Désactiver"
|
unregister: "Désactiver"
|
||||||
unregistered: "La vérication en deux étapes a été desactivée"
|
unregistered: "L'authentification à deux facteurs a été désactivée."
|
||||||
enter-password: "Entrez un mot de passe"
|
enter-password: "Entrez un mot de passe"
|
||||||
authenticator: "Tout d'abord vous devez installer Google Authenticator sur votre appareil"
|
authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil :"
|
||||||
howtoinstall: "Comment installer"
|
howtoinstall: "Comment installer"
|
||||||
scan: "Ensuite scannez le QR code afficher sur votre écran:"
|
scan: "Ensuite scannez le QR code afficher sur votre écran:"
|
||||||
done: "Veuillez entrer le token qui s'affiche sur votre appareil:"
|
done: "Veuillez entrer le token qui s'affiche sur votre appareil:"
|
||||||
submit: "Envoyer"
|
submit: "Envoyer"
|
||||||
success: "L'operation a été complétée avec succès!"
|
success: "Sauvegarde des paramètres avec succès !"
|
||||||
failed: "L'operation a échoué. Veuillez vous assurer que le token a été entrer correctement."
|
failed: "L’opération a échoué. Veuillez vous assurer que le jeton a été saisi correctement."
|
||||||
info: "À partir de maintenant, à chaque fois que vous vous connecter entrez votre mot de passe ainsi que le token généré sur votre appareil."
|
info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil."
|
||||||
common/views/components/api-settings.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "Pour accéder à l'API, définissez ce jeton comme la clé de \"i\" dans les paramètres de requête."
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte."
|
||||||
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
|
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
|
||||||
regenerate-token: "Régénérer le jeton"
|
regenerate-token: "Régénérer le jeton"
|
||||||
token: "Jeton :"
|
token: "Jeton :"
|
||||||
@@ -813,7 +842,7 @@ common/views/components/api-settings.vue:
|
|||||||
title: 'Console API'
|
title: 'Console API'
|
||||||
endpoint: 'Point de terminaison'
|
endpoint: 'Point de terminaison'
|
||||||
parameter: 'Paramètres'
|
parameter: 'Paramètres'
|
||||||
credential-info: "「i」パラメータは自動で付与されます。"
|
credential-info: "Le paramètre \"i\" est requis dans la console."
|
||||||
send: 'Envoyer'
|
send: 'Envoyer'
|
||||||
sending: 'Envoi en cours'
|
sending: 'Envoi en cours'
|
||||||
response: 'Résultat'
|
response: 'Résultat'
|
||||||
@@ -824,11 +853,15 @@ common/views/components/drive-settings.vue:
|
|||||||
in-use: "utilisé"
|
in-use: "utilisé"
|
||||||
stats: "Statistiques"
|
stats: "Statistiques"
|
||||||
common/views/components/mute-and-block.vue:
|
common/views/components/mute-and-block.vue:
|
||||||
mute-and-block: "Silencer / Bloquer"
|
mute-and-block: "Silencés / Bloqués"
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
block: "En cours blocage"
|
block: "En cours blocage"
|
||||||
no-muted-users: "Aucun utilisateur·rice n’est mis·e en sourdine"
|
no-muted-users: "Aucun utilisateur·rice n’est mis·e en sourdine"
|
||||||
no-blocked-users: "Aucun utilisateur·rice n’est bloqué·e"
|
no-blocked-users: "Aucun utilisateur·rice n’est bloqué·e"
|
||||||
|
word-mute: "Filtre de mots"
|
||||||
|
muted-words: "Mots masqués"
|
||||||
|
muted-words-description: "Description des mots mis en sourdine"
|
||||||
|
save: "Enregistrer"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "Modifier le mot de passe"
|
reset: "Modifier le mot de passe"
|
||||||
enter-current-password: "Entrez votre mot de passe actuel"
|
enter-current-password: "Entrez votre mot de passe actuel"
|
||||||
@@ -880,7 +913,7 @@ desktop/views/components/ui.header.search.vue:
|
|||||||
placeholder: "Chercher"
|
placeholder: "Chercher"
|
||||||
desktop/views/components/received-follow-requests-window.vue:
|
desktop/views/components/received-follow-requests-window.vue:
|
||||||
title: "Demandes de suivi"
|
title: "Demandes de suivi"
|
||||||
accept: "Approuver"
|
accept: "Accepter"
|
||||||
reject: "Refuser"
|
reject: "Refuser"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "Listes de l'utilisateur"
|
title: "Listes de l'utilisateur"
|
||||||
@@ -897,14 +930,15 @@ desktop/views/components/users-list.vue:
|
|||||||
desktop/views/components/users-list-item.vue:
|
desktop/views/components/users-list-item.vue:
|
||||||
followed: "vous suit"
|
followed: "vous suit"
|
||||||
desktop/views/components/window.vue:
|
desktop/views/components/window.vue:
|
||||||
popout: "ポップアウト"
|
popout: "Fenêtre contextuelle"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
admin/views/index.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "Tableau de bord"
|
dashboard: "Tableau de bord"
|
||||||
instance: "Instance"
|
instance: "Instance"
|
||||||
emoji: "Emoji"
|
emoji: "Émoji"
|
||||||
|
moderators: "Modérateurs"
|
||||||
users: "Utilisateur·rice·s"
|
users: "Utilisateur·rice·s"
|
||||||
update: "Mise à jour"
|
federation: "Fédération"
|
||||||
announcements: "Annonces"
|
announcements: "Annonces"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
back-to-misskey: "Retour vers Misskey"
|
back-to-misskey: "Retour vers Misskey"
|
||||||
@@ -939,26 +973,46 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "Clé reCAPTCHA du site"
|
recaptcha-site-key: "Clé reCAPTCHA du site"
|
||||||
recaptcha-secret-key: "Clé secrète reCAPTCHA"
|
recaptcha-secret-key: "Clé secrète reCAPTCHA"
|
||||||
twitter-integration-config: "Paramètres de connexion à Twitter"
|
twitter-integration-config: "Paramètres de connexion à Twitter"
|
||||||
twitter-integration-info: "L’URL callback est définit sur /api/tw/cb"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Activer la connection à Twitter"
|
enable-twitter-integration: "Activer la connection à Twitter"
|
||||||
twitter-integration-consumer-key: "Clé du consommateur"
|
twitter-integration-consumer-key: "Clé du consommateur"
|
||||||
twitter-integration-consumer-secret: "Secret du consommateur"
|
twitter-integration-consumer-secret: "Secret du consommateur"
|
||||||
github-integration-config: "Paramètres d’authentification GitHub"
|
github-integration-config: "Paramètres d’authentification GitHub"
|
||||||
github-integration-info: "L’URL callback est définit sur /api/gh/cb"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "Activer l’authentification avec Github"
|
enable-github-integration: "Activer l’authentification avec Github"
|
||||||
github-integration-client-id: "ID client"
|
github-integration-client-id: "ID client"
|
||||||
github-integration-client-secret: "Secret client"
|
github-integration-client-secret: "Secret client"
|
||||||
|
discord-integration-config: "Paramètres d’authentification Discord"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Activer l’authentification avec Discord"
|
||||||
|
discord-integration-client-id: "ID client"
|
||||||
|
discord-integration-client-secret: "Secret client"
|
||||||
proxy-account-config: "Compte proxy"
|
proxy-account-config: "Compte proxy"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "Nom d’utilisateur du compte proxy"
|
proxy-account-username: "Nom d’utilisateur du compte proxy"
|
||||||
proxy-account-username-desc: "Spécifiez le nom d’utilisateur du compte utilisé comme proxy."
|
proxy-account-username-desc: "Spécifiez le nom d’utilisateur du compte utilisé comme proxy."
|
||||||
proxy-account-warn: "Avant d’entammer cette action, vous devez au préalable avoir créé un compte avec ce nom d’utilisateur."
|
proxy-account-warn: "Avant d’entamer cette action, vous devez au préalable avoir créé un compte avec ce nom d’utilisateur."
|
||||||
max-note-text-length: "Nombre maximal de caractères pour les messages"
|
max-note-text-length: "Nombre maximal de caractères pour les messages"
|
||||||
disable-registration: "Désactiver les inscriptions"
|
disable-registration: "Désactiver les inscriptions"
|
||||||
disable-local-timeline: "Désactiver l’heure locale"
|
disable-local-timeline: "Désactiver le fil local"
|
||||||
invite: "Inviter"
|
invite: "Inviter"
|
||||||
save: "Sauvegarder"
|
save: "Sauvegarder"
|
||||||
saved: "Enregistré"
|
saved: "Enregistré"
|
||||||
|
user-recommendation-config: "Utilisateur·rice·s"
|
||||||
|
enable-external-user-recommendation: "Activer la recommandation des utilisateur·trice·s distant·e·s"
|
||||||
|
external-user-recommendation-engine: "Moteur"
|
||||||
|
external-user-recommendation-engine-desc: "Exemple : https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "Délai d’expiration"
|
||||||
|
external-user-recommendation-timeout-desc: "En millisecondes (par exemple : 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "Graph"
|
title: "Graph"
|
||||||
per-day: "par jour"
|
per-day: "par jour"
|
||||||
@@ -971,32 +1025,54 @@ admin/views/charts.vue:
|
|||||||
charts:
|
charts:
|
||||||
federation-instances: "Nombre d’instances : augmentation/diminution"
|
federation-instances: "Nombre d’instances : augmentation/diminution"
|
||||||
federation-instances-total: "Nombre total d’instances"
|
federation-instances-total: "Nombre total d’instances"
|
||||||
notes: "投稿の増減 (統合)"
|
notes: "Nombre de publications : augmentation/diminution (combinés)"
|
||||||
local-notes: "投稿の増減 (ローカル)"
|
local-notes: "Nombre des publications : augmentation/diminution (Local)"
|
||||||
remote-notes: "投稿の増減 (リモート)"
|
remote-notes: "Nombre de publications : augmentation/diminution (distants)"
|
||||||
notes-total: "Total des publications"
|
notes-total: "Total des publications"
|
||||||
users: "Nombre d’utilisateur·rice·s : augmentation/diminution"
|
users: "Nombre d’utilisateur·rice·s : augmentation/diminution"
|
||||||
users-total: "Nombre total des utilisateur·rice·s"
|
users-total: "Nombre total des utilisateur·rice·s"
|
||||||
drive: "ドライブ使用量の増減"
|
drive: "Capacité utilisée comme stockage : augmentation/diminution"
|
||||||
drive-total: "Utilisation totale du lecteur"
|
drive-total: "Utilisation totale du lecteur"
|
||||||
drive-files: "ドライブのファイル数の増減"
|
drive-files: "Le nombre de fichiers sur l'espace de stockage : augmentation/diminution"
|
||||||
drive-files-total: "Nombre total de fichiers sur le lecteur"
|
drive-files-total: "Nombre total de fichiers sur le lecteur"
|
||||||
network-requests: "Requêtes"
|
network-requests: "Requêtes"
|
||||||
network-time: "Temps de réponse"
|
network-time: "Temps de réponse"
|
||||||
network-usage: "Traffic"
|
network-usage: "Traffic"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "Suspendre un·e utilisateur·rice"
|
operation: "Actions"
|
||||||
|
username-or-userid: "Nom d’utilisateur·rice ou ID utilisateur"
|
||||||
|
user-not-found: "Utilisateur·rice non trouvé·e"
|
||||||
|
lookup: "Recherche"
|
||||||
|
reset-password: "Réinitialiser mot de passe"
|
||||||
|
password-updated: "Le mot de passe est « {password} »"
|
||||||
suspend: "Suspendre"
|
suspend: "Suspendre"
|
||||||
suspended: "Suspendu·e avec succès."
|
suspended: "Suspendu·e avec succès."
|
||||||
unsuspend-user: "Lever la suspension d’utilisateur·rice·s"
|
|
||||||
unsuspend: "Suspension levée"
|
unsuspend: "Suspension levée"
|
||||||
unsuspended: "La suspension de l’utilisateur·rice a été levée avec succès"
|
unsuspended: "La suspension de l’utilisateur·rice a été levée avec succès"
|
||||||
verify-user: "Paramètres de vérification du compte utilisateur"
|
|
||||||
verify: "Vérification du compte"
|
verify: "Vérification du compte"
|
||||||
verified: "Le compte a été vérifié"
|
verified: "Le compte a été vérifié"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "Ôter la vérification du compte"
|
unverify: "Ôter la vérification du compte"
|
||||||
unverified: "Ce compte n'est plus vérifié"
|
unverified: "Ce compte n'est plus vérifié"
|
||||||
|
users:
|
||||||
|
title: "Utilisateur·rice·s"
|
||||||
|
sort:
|
||||||
|
title: "Trier par"
|
||||||
|
createdAtAsc: "Date d’inscription (Ascendant)"
|
||||||
|
createdAtDesc: "Date d’inscription (Descendant)"
|
||||||
|
updatedAtAsc: "Mis à jour récemment (Ascendant)"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "Origine"
|
||||||
|
combined: "Locaux + distants"
|
||||||
|
local: "Locaux"
|
||||||
|
remote: "Distants"
|
||||||
|
createdAt: "Créé le"
|
||||||
|
updatedAt: "Mis à jour le"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "Ajout d’un modérateur"
|
||||||
|
add: "Ajouter"
|
||||||
|
added: "Ajouté en tant que modérateur"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "Ajouter un émoji"
|
title: "Ajouter un émoji"
|
||||||
@@ -1061,17 +1137,17 @@ desktop/views/pages/share.vue:
|
|||||||
desktop/views/pages/tag.vue:
|
desktop/views/pages/tag.vue:
|
||||||
no-posts-found: "Aucune publication contenant « {q} » n’a été trouvée."
|
no-posts-found: "Aucune publication contenant « {q} » n’a été trouvée."
|
||||||
desktop/views/pages/user-list.users.vue:
|
desktop/views/pages/user-list.users.vue:
|
||||||
users: "Utilisateurs"
|
users: "Utilisateurs·rices"
|
||||||
add-user: "Ajouter un utilisateur"
|
add-user: "Ajouter un utilisateur"
|
||||||
username: "Nom d'utilisateur"
|
username: "Nom d'utilisateur"
|
||||||
desktop/views/pages/user/user.followers-you-know.vue:
|
desktop/views/pages/user/user.followers-you-know.vue:
|
||||||
title: "Abonné·e·s que vous connaissez"
|
title: "Abonné·e·s que vous connaissez"
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
no-users: "Pas d'utilisateurs"
|
no-users: "Aucun abonné connu"
|
||||||
desktop/views/pages/user/user.friends.vue:
|
desktop/views/pages/user/user.friends.vue:
|
||||||
title: "Mentions fréquentes"
|
title: "Mentions fréquentes"
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
no-users: "Pas d'utilisateurs"
|
no-users: "Aucune mention fréquente"
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "Photos"
|
title: "Photos"
|
||||||
loading: "Chargement en cours"
|
loading: "Chargement en cours"
|
||||||
@@ -1079,8 +1155,8 @@ desktop/views/pages/user/user.photos.vue:
|
|||||||
desktop/views/pages/user/user.profile.vue:
|
desktop/views/pages/user/user.profile.vue:
|
||||||
follows-you: "Vous suit"
|
follows-you: "Vous suit"
|
||||||
stalk: "Traquer"
|
stalk: "Traquer"
|
||||||
stalking: "ストーキングしています"
|
stalking: "Entrain de poursuivre"
|
||||||
unstalk: "ストーク解除"
|
unstalk: "Cesser la poursuite"
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
muted: "Muting"
|
muted: "Muting"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
@@ -1095,9 +1171,9 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
followers: "Abonné·e·s"
|
followers: "Abonné·e·s"
|
||||||
is-bot: "Ce compte est un Bot"
|
is-bot: "Ce compte est un Bot"
|
||||||
years-old: "{age} ans"
|
years-old: "{age} ans"
|
||||||
year: "Année"
|
year: "/"
|
||||||
month: "/"
|
month: "/"
|
||||||
day: "-"
|
day: "/"
|
||||||
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"
|
||||||
@@ -1123,14 +1199,14 @@ desktop/views/widgets/trends.vue:
|
|||||||
refresh: "Afficher d'autres"
|
refresh: "Afficher d'autres"
|
||||||
nothing: "Rien"
|
nothing: "Rien"
|
||||||
desktop/views/widgets/users.vue:
|
desktop/views/widgets/users.vue:
|
||||||
title: "Utilisateurs"
|
title: "Utilisateurs·rices"
|
||||||
refresh: "Afficher d'autres"
|
refresh: "Afficher d'autres"
|
||||||
no-one: "Personne"
|
no-one: "Personne"
|
||||||
mobile/views/components/drive.vue:
|
mobile/views/components/drive.vue:
|
||||||
used: "utilisé"
|
used: "utilisé"
|
||||||
folder-count: "Dossier(s)"
|
folder-count: "Dossier·s"
|
||||||
count-separator: ", "
|
count-separator: ", "
|
||||||
file-count: "Fichiers(s)"
|
file-count: "Fichier·s"
|
||||||
nothing-in-drive: "Rien"
|
nothing-in-drive: "Rien"
|
||||||
folder-is-empty: "Ce dossier est vide"
|
folder-is-empty: "Ce dossier est vide"
|
||||||
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
|
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
|
||||||
@@ -1139,7 +1215,7 @@ mobile/views/components/drive.vue:
|
|||||||
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
|
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
|
||||||
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
|
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
|
||||||
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
url-prompt: "URL du fichier que vous souhaitez téléverser"
|
||||||
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
|
uploading: "Envoi demandé. Le téléversement pourrait prendre un certain temps avant de s'achever."
|
||||||
mobile/views/components/drive-file-chooser.vue:
|
mobile/views/components/drive-file-chooser.vue:
|
||||||
select-file: "Choisissez un fichier"
|
select-file: "Choisissez un fichier"
|
||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
@@ -1161,27 +1237,25 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "Le contenu est NSFW"
|
sensitive: "Le contenu est NSFW"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Abonné·e"
|
following: "Abonné·e"
|
||||||
follow: "Suivre"
|
follow: " Suivre"
|
||||||
request-pending: "En attente d'approbation"
|
request-pending: "Demande en attente"
|
||||||
follow-processing: "En cours d’abonnement"
|
follow-processing: "En cours d’abonnement"
|
||||||
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 à"
|
||||||
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
empty: "Impossible de trouver des utilisateurs·trices à recommander."
|
||||||
fetching: "Chargement"
|
fetching: "Chargement"
|
||||||
refresh: "Voir plus"
|
refresh: "Voir plus"
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "Republié par {}"
|
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
location: "Géolocalisation"
|
location: "Géolocalisation"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Répondre"
|
reply: "Répondre"
|
||||||
reaction: "Réaction"
|
reaction: "Réaction"
|
||||||
reposted-by: "Republié par {}"
|
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
location: "Lieu"
|
location: "Lieu"
|
||||||
@@ -1194,7 +1268,7 @@ mobile/views/components/note-sub.vue:
|
|||||||
bot: "bot"
|
bot: "bot"
|
||||||
cat: "chat"
|
cat: "chat"
|
||||||
mobile/views/components/notifications.vue:
|
mobile/views/components/notifications.vue:
|
||||||
empty: "Pas de notifications"
|
empty: "Aucune de notification !"
|
||||||
mobile/views/components/post-form.vue:
|
mobile/views/components/post-form.vue:
|
||||||
add-visible-user: "Ajouter un utilisateur"
|
add-visible-user: "Ajouter un utilisateur"
|
||||||
submit: "Publier"
|
submit: "Publier"
|
||||||
@@ -1219,7 +1293,7 @@ mobile/views/components/ui.header.vue:
|
|||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
follow-requests: "Demandes d'abonnement"
|
follow-requests: "Demandes d’abonnement"
|
||||||
search: "Rechercher"
|
search: "Rechercher"
|
||||||
favorites: "Favoris"
|
favorites: "Favoris"
|
||||||
user-lists: "Listes"
|
user-lists: "Listes"
|
||||||
@@ -1228,9 +1302,9 @@ mobile/views/components/ui.nav.vue:
|
|||||||
darkmode: "Mode nuit"
|
darkmode: "Mode nuit"
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
admin: "Admin"
|
admin: "Admin"
|
||||||
about: "À propose de Misskey"
|
about: "À propos de Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment"
|
no-notes: "Il semble que cet·te utilisateur·rice n’a rien publié pour le moment."
|
||||||
no-notes-with-media: "Aucune notes avec des médias"
|
no-notes-with-media: "Aucune notes avec des médias"
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "Tout"
|
all: "Tout"
|
||||||
@@ -1267,16 +1341,16 @@ mobile/views/pages/widgets/activity.vue:
|
|||||||
mobile/views/pages/share.vue:
|
mobile/views/pages/share.vue:
|
||||||
share-with: "Partager avec {name}"
|
share-with: "Partager avec {name}"
|
||||||
mobile/views/pages/received-follow-requests.vue:
|
mobile/views/pages/received-follow-requests.vue:
|
||||||
title: "Demandes d'abonnement"
|
title: "Demandes d’abonnement"
|
||||||
accept: "Approuver"
|
accept: "Accepter"
|
||||||
reject: "Refuser"
|
reject: "Refuser"
|
||||||
mobile/views/pages/note.vue:
|
mobile/views/pages/note.vue:
|
||||||
title: "Post"
|
title: "Post"
|
||||||
prev: "Note précedante"
|
prev: "Note précédente"
|
||||||
next: "Note suivante"
|
next: "Note suivante"
|
||||||
mobile/views/pages/notifications.vue:
|
mobile/views/pages/notifications.vue:
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
|
read-all: "Êtes-vous sûr de vouloir marquer l’ensemble des notifications comme étant lues ?"
|
||||||
mobile/views/pages/games/reversi.vue:
|
mobile/views/pages/games/reversi.vue:
|
||||||
reversi: "Reversi"
|
reversi: "Reversi"
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
@@ -1290,7 +1364,7 @@ mobile/views/pages/settings.vue:
|
|||||||
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
|
||||||
recommended: "Recommandé"
|
recommended: "Recommandé"
|
||||||
auto: "Automatique"
|
auto: "Automatique"
|
||||||
specify-language: "Spécifier la langue"
|
specify-language: "Sélectionnez votre langue"
|
||||||
design: "Affichage et design"
|
design: "Affichage et design"
|
||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||||
@@ -1298,7 +1372,7 @@ mobile/views/pages/settings.vue:
|
|||||||
contrasted-acct: "Nom d’utilisateur contrasté"
|
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
show-reply-target: "Afficher les réponses"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications"
|
show-my-renotes: "Afficher mes partages"
|
||||||
show-renoted-my-notes: "Afficher mes publications partagées"
|
show-renoted-my-notes: "Afficher mes publications partagées"
|
||||||
show-local-renotes: "Afficher les publications partagées localement"
|
show-local-renotes: "Afficher les publications partagées localement"
|
||||||
post-style: "Style de la publication"
|
post-style: "Style de la publication"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "Visibilité de la publication"
|
note-visibility: "Visibilité de la publication"
|
||||||
default-note-visibility: "Visibilité par défaut"
|
default-note-visibility: "Visibilité par défaut"
|
||||||
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
|
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
|
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
|
||||||
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"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "Se connecter à votre compte GitHub"
|
github-connect: "Se connecter à votre compte GitHub"
|
||||||
github-reconnect: "Reconnecter"
|
github-reconnect: "Reconnecter"
|
||||||
github-disconnect: "Déconnecter"
|
github-disconnect: "Déconnecter"
|
||||||
|
discord: "Intégration avec Discord"
|
||||||
|
discord-connect: "Connecter votre compte Discord"
|
||||||
|
discord-reconnect: "Reconnecter"
|
||||||
|
discord-disconnect: "Déconnecter"
|
||||||
update: "Mise à jour de Misskey"
|
update: "Mise à jour de Misskey"
|
||||||
version: "Version :"
|
version: "Version :"
|
||||||
latest-version: "Dernière version :"
|
latest-version: "Dernière version :"
|
||||||
@@ -1346,7 +1426,7 @@ mobile/views/pages/user.vue:
|
|||||||
notes: "Notes"
|
notes: "Notes"
|
||||||
overview: "Aperçu"
|
overview: "Aperçu"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
media: "Media"
|
media: "Média"
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
@@ -1359,13 +1439,13 @@ mobile/views/pages/user/home.vue:
|
|||||||
activity: "Activité"
|
activity: "Activité"
|
||||||
keywords: "Mot clés"
|
keywords: "Mot clés"
|
||||||
domains: "Domaines"
|
domains: "Domaines"
|
||||||
frequently-replied-users: "Utilisateurs qui interagissent souvent"
|
frequently-replied-users: "Utilisateurs·rices mentionné·e·s souvent"
|
||||||
followers-you-know: "Abonné·e·s que vous connaissez"
|
followers-you-know: "Abonné·e·s que vous connaissez"
|
||||||
last-used-at: "Dernière connexion il y a"
|
last-used-at: "Dernière connexion il y a"
|
||||||
mobile/views/pages/user/home.followers-you-know.vue:
|
mobile/views/pages/user/home.followers-you-know.vue:
|
||||||
no-users: "Pas d'utilisateurs"
|
no-users: "Aucun utilisateur·rice connu·e"
|
||||||
mobile/views/pages/user/home.friends.vue:
|
mobile/views/pages/user/home.friends.vue:
|
||||||
no-users: "Pass d'utilisateurs"
|
no-users: "Aucun utilisateur·rice connu·e"
|
||||||
mobile/views/pages/user/home.notes.vue:
|
mobile/views/pages/user/home.notes.vue:
|
||||||
no-notes: "Pas de notes"
|
no-notes: "Pas de notes"
|
||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
@@ -1417,7 +1497,7 @@ docs:
|
|||||||
require-permission: "Ce point de communication nécessite la permission {permission}."
|
require-permission: "Ce point de communication nécessite la permission {permission}."
|
||||||
has-limit: "Il y’a un taux limite."
|
has-limit: "Il y’a un taux limite."
|
||||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
min-interval-limit: "Vous ne pourrez pas effectuer une nouvelle requête si {interval} millisecondes ne se sont pas écoulées depuis la dernière demande."
|
||||||
show-src: "Vous pouvez voir le code source ce point de communication."
|
show-src: "Vous pouvez voir le code source ce point de communication."
|
||||||
show-src-link: "Consulter le code sur GitHub"
|
show-src-link: "Consulter le code sur GitHub"
|
||||||
generated: "Ce document est généré à partir de la définition de l’API."
|
generated: "Ce document est généré à partir de la définition de l’API."
|
||||||
@@ -1443,7 +1523,7 @@ dev/views/new-app.vue:
|
|||||||
callback-url-desc: "Vous pouvez définir l’URL de redirection lorsque l’utilisateur s’est authentifié via formulaire d’authentification."
|
callback-url-desc: "Vous pouvez définir l’URL de redirection lorsque l’utilisateur s’est authentifié via formulaire d’authentification."
|
||||||
authority: "Autorisations "
|
authority: "Autorisations "
|
||||||
authority-desc: "Sont accessibles via l’API, uniquement les fonctionnalités demandées ici."
|
authority-desc: "Sont accessibles via l’API, uniquement les fonctionnalités demandées ici."
|
||||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
authority-warning: "Vous pouvez le changer même après avoir créé l'application, mais si vous attribuez une nouvelle permission, toutes les clés utilisateur associées seront dès lors invalides."
|
||||||
account-read: "Afficher les informations du compte"
|
account-read: "Afficher les informations du compte"
|
||||||
account-write: "Modifications des informations du compte"
|
account-write: "Modifications des informations du compte"
|
||||||
note-write: "Publications."
|
note-write: "Publications."
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
|
|
||||||
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL'];
|
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL', 'zh-CN', 'ko-KR'];
|
||||||
|
|
||||||
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||||
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));
|
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "日本語"
|
lang: "In Italiano"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of the fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of the fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
intro:
|
intro:
|
||||||
title: "Misskeyって?"
|
title: "Misskeyって?"
|
||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
|
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
@@ -96,6 +97,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
|
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
@@ -130,6 +134,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
|
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
@@ -399,6 +404,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
|
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
@@ -450,6 +456,14 @@ common/views/components/github-setting.vue:
|
|||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
|
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
|
|
||||||
@@ -462,6 +476,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
|
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
@@ -486,6 +504,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
|
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
@@ -668,13 +690,6 @@ desktop/views/components/media-video.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
|
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
|
|
||||||
@@ -715,13 +730,11 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
|
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -759,6 +772,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -779,6 +793,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -797,6 +812,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -813,6 +829,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -841,6 +859,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -1041,8 +1060,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -1079,15 +1099,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -1099,6 +1124,22 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
|
||||||
|
smtp-secure-info: "STARTTLS使用時はオフにします。"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
|
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
@@ -1127,18 +1168,41 @@ admin/views/charts.vue:
|
|||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
|
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
@@ -1336,7 +1400,7 @@ mobile/views/components/media-video.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
|
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1351,7 +1415,6 @@ mobile/views/components/friends-maker.vue:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
|
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1359,7 +1422,6 @@ mobile/views/components/note.vue:
|
|||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1519,6 +1581,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1530,6 +1594,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "さいなら"
|
close: "さいなら"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "ほい"
|
got-it: "ほい"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "今から言うユーザー以外に見せんとってや"
|
specified-desc: "今から言うユーザー以外に見せんとってや"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今なにしてん?"
|
a: "今なにしてん?"
|
||||||
b: "何かあったんか?"
|
b: "何かあったんか?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "ちゃんとした情報見せてや!"
|
view-on-remote: "ちゃんとした情報見せてや!"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が起こったわ'
|
title: '問題が起こったわ'
|
||||||
retry: 'もっぺん'
|
retry: 'もっぺん'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートをほかそ"
|
destroy: "アンケートをほかそ"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクション、どれにするんや?"
|
choose-reaction: "リアクション、どれにするんや?"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "それか"
|
or: "それか"
|
||||||
signin-with-twitter: "Twitterでサインイン"
|
signin-with-twitter: "Twitterでサインイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。"
|
login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待っとる"
|
waiting: "待っとる"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "今から言うユーザー以外に見せんとってや"
|
specified-desc: "今から言うユーザー以外に見せんとってや"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "流行は自分で作るんや"
|
empty: "流行は自分で作るんや"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存したで"
|
saved: "プロフィールを保存したで"
|
||||||
uploading: "アップロードしとります"
|
uploading: "アップロードしとります"
|
||||||
upload-failed: "これアップロードでけへんわ"
|
upload-failed: "これアップロードでけへんわ"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "見てみるわ…"
|
fetching: "見てみるわ…"
|
||||||
no-broadcasts: "お知らせはあらへんで"
|
no-broadcasts: "お知らせはあらへんで"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "ちょっと見せられへんわ"
|
sensitive: "ちょっと見せられへんわ"
|
||||||
click-to-show: "クリックして見せるで"
|
click-to-show: "クリックして見せるで"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォローしとる"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォローの許し待っとる"
|
|
||||||
follow-processing: "今フォロー処理やっとる‥"
|
|
||||||
follow-request: "フォロー許してくれや!言うてみる"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は見せられへんわ"
|
private: "この投稿は見せられへんわ"
|
||||||
deleted: "この投稿なんか無くなってもうたわ"
|
deleted: "この投稿なんか無くなってもうたわ"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "ここおるで:"
|
location: "ここおるで:"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返す"
|
reply: "返す"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近のタグ"
|
recent-tags: "最近のタグ"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "取ってくる……"
|
quote: "取ってくる……"
|
||||||
cancel: "やめとくわ"
|
cancel: "やめとくわ"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "やっとります..."
|
reposting: "やっとります..."
|
||||||
success: "Renoteしたで!"
|
success: "Renoteしたで!"
|
||||||
failure: "Renoteでけへん"
|
failure: "Renoteでけへん"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "もとからの公開範囲"
|
default-note-visibility: "もとからの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
|
||||||
advanced: "もっと設定"
|
advanced: "もっと設定"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや"
|
show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや"
|
||||||
show-local-renotes: "ローカル投稿のRenoteも見たいんや"
|
show-local-renotes: "ローカル投稿のRenoteも見たいんや"
|
||||||
show-maps: "地図勝手にバァーって開いてくれ"
|
show-maps: "地図勝手にバァーって開いてくれ"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "真ん中"
|
deck-column-align-center: "真ん中"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしとるユーザーはおらんで"
|
no-muted-users: "ミュートしとるユーザーはおらんで"
|
||||||
no-blocked-users: "ブロックしとるユーザーはおらんで"
|
no-blocked-users: "ブロックしとるユーザーはおらんで"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワード変える"
|
reset: "パスワード変える"
|
||||||
enter-current-password: "今のパスワードを入れてや"
|
enter-current-password: "今のパスワードを入れてや"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "知っといてや"
|
announcements: "知っといてや"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,12 +1237,12 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "ちょっと見せられへんわ"
|
sensitive: "ちょっと見せられへんわ"
|
||||||
click-to-show: "押してみ、見せたるわ"
|
click-to-show: "押してみ、見せたるわ"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォローしとる"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォローの許し待っとる"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "今フォロー処理やっとる‥"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "フォロー許してくれや!言うてみる"
|
follow-request: "フォロー申請"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "おもろそうやな"
|
title: "おもろそうやな"
|
||||||
empty: "おすすめのユーザーはおらん。"
|
empty: "おすすめのユーザーはおらん。"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっとあるやろ!"
|
refresh: "もっとあるやろ!"
|
||||||
close: "さいなら"
|
close: "さいなら"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は見せられへんわ"
|
private: "この投稿は見せられへんわ"
|
||||||
deleted: "この投稿なんか無くなってもうたわ"
|
deleted: "この投稿なんか無くなってもうたわ"
|
||||||
location: "ここおるで:"
|
location: "ここおるで:"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返す"
|
reply: "返す"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は見せられへんわ"
|
private: "この投稿は見せられへんわ"
|
||||||
deleted: "この投稿なんか無くなってもうたわ"
|
deleted: "この投稿なんか無くなってもうたわ"
|
||||||
location: "ここおるで:"
|
location: "ここおるで:"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "もとからの公開範囲"
|
default-note-visibility: "もとからの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ"
|
disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ"
|
||||||
load-raw-images: "添付された画像もべっぴんさんのままにしといてな"
|
load-raw-images: "添付された画像もべっぴんさんのままにしといてな"
|
||||||
load-remote-media: "東京とか、リモートサーバーのメディアも見せてや"
|
load-remote-media: "東京とか、リモートサーバーのメディアも見せてや"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "あんたのMisskeyいつのや?"
|
update: "あんたのMisskeyいつのや?"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "いっちゃん新しいやつ:"
|
latest-version: "いっちゃん新しいやつ:"
|
||||||
|
|||||||
2294
locales/ko-KR.yml
2294
locales/ko-KR.yml
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Deze peiling vernietigen"
|
destroy: "Deze peiling vernietigen"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Kies een reactie"
|
choose-reaction: "Kies een reactie"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Gebruikersnaam"
|
username: "Gebruikersnaam"
|
||||||
password: "Wachtwoord"
|
password: "Wachtwoord"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Bezig met wachten"
|
waiting: "Bezig met wachten"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Bezig met ophalen"
|
fetching: "Bezig met ophalen"
|
||||||
no-broadcasts: "Geen uitzendingen"
|
no-broadcasts: "Geen uitzendingen"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "Volgen"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "Volgers van {}"
|
followers: "Volgers van {}"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "(dit bericht is privé)"
|
private: "(dit bericht is privé)"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "Locatie"
|
location: "Locatie"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Peiling creëren"
|
create-poll: "Peiling creëren"
|
||||||
text-remain: "{} resterende tekens"
|
text-remain: "{} resterende tekens"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Citeren..."
|
quote: "Citeren..."
|
||||||
cancel: "Annuleren"
|
cancel: "Annuleren"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Bezig met herplaatsen..."
|
reposting: "Bezig met herplaatsen..."
|
||||||
success: "Hergeplaatst!"
|
success: "Hergeplaatst!"
|
||||||
failure: "Renote mislukt"
|
failure: "Renote mislukt"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profiel"
|
profile: "Profiel"
|
||||||
notification: "Melding"
|
notification: "Melding"
|
||||||
apps: "Apps"
|
apps: "Apps"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "Beveiliging"
|
security: "Beveiliging"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Venster automatisch uitvouwen"
|
auto-popout: "Venster automatisch uitvouwen"
|
||||||
auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser."
|
auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser."
|
||||||
advanced: "Geavanceerde instellingen"
|
advanced: "Geavanceerde instellingen"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
|
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Kaart tonen"
|
show-maps: "Kaart tonen"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,9 +1237,9 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "Volgen"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "Renote door {}"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Beantwoorden"
|
reply: "Beantwoorden"
|
||||||
reaction: "Reactie"
|
reaction: "Reactie"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "Zonder 'mobiele berichten'"
|
disable-via-mobile: "Zonder 'mobiele berichten'"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey-update"
|
update: "Misskey-update"
|
||||||
version: "Huidige versie:"
|
version: "Huidige versie:"
|
||||||
latest-version: "Nieuwste versie:"
|
latest-version: "Nieuwste versie:"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
meta:
|
meta:
|
||||||
lang: "norsk"
|
lang: "Norsk Bokmål"
|
||||||
divider: ""
|
divider: ""
|
||||||
common:
|
common:
|
||||||
misskey: "En ⭐ av fediverse"
|
misskey: "En ⭐ av fediverse"
|
||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "Lukk"
|
close: "Lukk"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "Skjønner!"
|
got-it: "Skjønner!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Brukernavn"
|
username: "Brukernavn"
|
||||||
password: "Passord"
|
password: "Passord"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "Eller"
|
or: "Eller"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Venter"
|
waiting: "Venter"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direkte"
|
specified: "Direkte"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Henter"
|
fetching: "Henter"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "Innholdet er NSFW"
|
sensitive: "Innholdet er NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Følger"
|
|
||||||
follow: "Følg"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "Lokasjon"
|
location: "Lokasjon"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "Nylig"
|
recent-tags: "Nylig"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "Synlighet"
|
visibility: "Synlighet"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "Avbryt"
|
cancel: "Avbryt"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "Notifikasjon"
|
notification: "Notifikasjon"
|
||||||
apps: "Apper"
|
apps: "Apper"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "Avanserte innstillinger"
|
advanced: "Avanserte innstillinger"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,9 +1237,9 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "Innholdet er NSFW"
|
sensitive: "Innholdet er NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Følger"
|
following: "フォロー中"
|
||||||
follow: "Følg"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォロー申請"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "Se mer"
|
refresh: "Se mer"
|
||||||
close: "Lukk"
|
close: "Lukk"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "Lokasjon"
|
location: "Lokasjon"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Svar"
|
reply: "Svar"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "Lokasjon"
|
location: "Lokasjon"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ common:
|
|||||||
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?"
|
||||||
intro:
|
intro:
|
||||||
title: "Misskeyって?"
|
title: "Czym jest Misskey?"
|
||||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
features: "特徴"
|
features: "特徴"
|
||||||
rich-contents: "投稿"
|
rich-contents: "投稿"
|
||||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
reaction: "リアクション"
|
reaction: "Reakcje"
|
||||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
ui: "インターフェース"
|
ui: "Interfejs"
|
||||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "Rozumiem!"
|
got-it: "Rozumiem!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Wskazówki o dostosowywaniu"
|
title: "Wskazówki o dostosowywaniu"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Co robisz?"
|
a: "Co robisz?"
|
||||||
b: "Co się wydarzyło?"
|
b: "Co się wydarzyło?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -188,8 +193,8 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
waiting-for: "Oczekiwanie na {}"
|
waiting-for: "Oczekiwanie na {}"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
common/views/components/games/reversi/reversi.game.vue:
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
surrender: "投了"
|
surrender: "Poddaj się"
|
||||||
surrendered: "投了により"
|
surrendered: "Przez poddanie się"
|
||||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
looped-map: "ループマップ"
|
looped-map: "ループマップ"
|
||||||
can-put-everywhere: "どこでも置けるモード"
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
@@ -289,8 +294,8 @@ common/views/components/theme.vue:
|
|||||||
import-by-code: "またはコードをペースト"
|
import-by-code: "またはコードをペースト"
|
||||||
theme-name-required: "テーマ名は必須です。"
|
theme-name-required: "テーマ名は必須です。"
|
||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "Ukryj"
|
||||||
show: "もっと見る"
|
show: "Pokaż więcej"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Znajdź użytkownika"
|
search-user: "Znajdź użytkownika"
|
||||||
you: "Ty"
|
you: "Ty"
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "Usuń tę ankietę"
|
destroy: "Usuń tę ankietę"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Wybierz reakcję"
|
choose-reaction: "Wybierz reakcję"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "Ludzie"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Nazwa użytkownika"
|
username: "Nazwa użytkownika"
|
||||||
password: "Hasło"
|
password: "Hasło"
|
||||||
@@ -352,7 +367,8 @@ common/views/components/signin.vue:
|
|||||||
signin: "Zaloguj"
|
signin: "Zaloguj"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "Zaloguj się za pomocą GitHuba"
|
||||||
|
signin-with-discord: "Zaloguj się za pomocą Discorda"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "Oczekiwanie"
|
waiting: "Oczekiwanie"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Bezpośredni"
|
specified: "Bezpośredni"
|
||||||
specified-desc: "Tylko dla określonych użytkowników"
|
specified-desc: "Tylko dla określonych użytkowników"
|
||||||
private: "Prywatny"
|
private: "Prywatny"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Sprawdzanie"
|
fetching: "Sprawdzanie"
|
||||||
no-broadcasts: "Brak transmisji"
|
no-broadcasts: "Brak transmisji"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "Śledzisz"
|
|
||||||
follow: "Śledź"
|
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "Poproś o śledzenie"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
reposted-by: "Udostępniono przez {}"
|
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
renote: "Udostępnienie"
|
renote: "Udostępnienie"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "Dodaj reakcję"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "Utwórz ankietę"
|
create-poll: "Utwórz ankietę"
|
||||||
text-remain: "pozostałe znaki: {}"
|
text-remain: "pozostałe znaki: {}"
|
||||||
recent-tags: "Ostatnie"
|
recent-tags: "Ostatnie"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "Naciśnij aby oznaczyć"
|
click-to-tagging: "Naciśnij aby oznaczyć"
|
||||||
visibility: "Widoczność"
|
visibility: "Widoczność"
|
||||||
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
|
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Cytuj…"
|
quote: "Cytuj…"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
renote: "Udostępnij"
|
renote: "Udostępnij"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "Udostępnianie…"
|
reposting: "Udostępnianie…"
|
||||||
success: "Udostępniono!"
|
success: "Udostępniono!"
|
||||||
failure: "Nie udało się udostępnić"
|
failure: "Nie udało się udostępnić"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Powiadomienia"
|
notification: "Powiadomienia"
|
||||||
apps: "Aplikacje"
|
apps: "Aplikacje"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "Bezpieczeństwo"
|
security: "Bezpieczeństwo"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Automatycznie pojawiające się okna"
|
auto-popout: "Automatycznie pojawiające się okna"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "Ustawienia zaawansowane"
|
advanced: "Ustawienia zaawansowane"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Automatycznie pokazuj mapę"
|
show-maps: "Automatycznie pokazuj mapę"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,9 +936,10 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "Ogłoszenia"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
admin/views/dashboard.vue:
|
admin/views/dashboard.vue:
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1017,7 +1093,7 @@ admin/views/emoji.vue:
|
|||||||
are-you-sure: "「$1」を削除しますか?"
|
are-you-sure: "「$1」を削除しますか?"
|
||||||
removed: "削除しました"
|
removed: "削除しました"
|
||||||
admin/views/announcements.vue:
|
admin/views/announcements.vue:
|
||||||
announcements: "お知らせ"
|
announcements: "Ogłoszenia"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
remove: "削除"
|
remove: "削除"
|
||||||
add: "追加"
|
add: "追加"
|
||||||
@@ -1037,10 +1113,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Zaloguj się"
|
signin-button: "Zaloguj się"
|
||||||
signup-button: "Zarejestruj się"
|
signup-button: "Zarejestruj się"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
announcements: "お知らせ"
|
announcements: "Ogłoszenia"
|
||||||
photos: "最近の画像"
|
photos: "Ostatnie obrazy"
|
||||||
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
||||||
info: "情報"
|
info: "Informacje"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Dysk Misskey"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
@@ -1094,7 +1170,7 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
is-bot: "To konto jest botem"
|
is-bot: "To konto jest botem"
|
||||||
years-old: "{age}歳"
|
years-old: "{age} lat"
|
||||||
year: "年"
|
year: "年"
|
||||||
month: "月"
|
month: "月"
|
||||||
day: "日"
|
day: "日"
|
||||||
@@ -1161,10 +1237,10 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "To jest zawartość NSFW"
|
sensitive: "To jest zawartość NSFW"
|
||||||
click-to-show: "Naciśnij aby wyświetlić"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "Śledzisz"
|
following: "フォロー中"
|
||||||
follow: "Śledź"
|
follow: "Śledź"
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "フォロー処理中"
|
||||||
follow-request: "Poproś o śledzenie"
|
follow-request: "Poproś o śledzenie"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "Więcej"
|
refresh: "Więcej"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "Udostępniono przez {}"
|
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "Odpowiedz"
|
reply: "Odpowiedz"
|
||||||
reaction: "Reakcja"
|
reaction: "Reakcja"
|
||||||
reposted-by: "Udostępniono przez {}"
|
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||||
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
||||||
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Aktualizacja Misskey"
|
update: "Aktualizacja Misskey"
|
||||||
version: "Wersja:"
|
version: "Wersja:"
|
||||||
latest-version: "Najnowsza wersja:"
|
latest-version: "Najnowsza wersja:"
|
||||||
@@ -1352,7 +1432,7 @@ mobile/views/pages/user.vue:
|
|||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
unblock: "ブロック解除"
|
unblock: "ブロック解除"
|
||||||
years-old: "{age}歳"
|
years-old: "{age} lat"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Ostatnie wpisy"
|
recent-notes: "Ostatnie wpisy"
|
||||||
images: "Zdjęcia"
|
images: "Zdjęcia"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ common:
|
|||||||
close: "Fechar"
|
close: "Fechar"
|
||||||
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "Entendi!"
|
got-it: "Entendi!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Dicas de personalização"
|
title: "Dicas de personalização"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "O que está fazendo?"
|
a: "O que está fazendo?"
|
||||||
b: "O que está acontecendo?"
|
b: "O que está acontecendo?"
|
||||||
@@ -120,6 +124,7 @@ common:
|
|||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: '問題が発生しました'
|
||||||
retry: 'やり直す'
|
retry: 'やり直す'
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Atualizar Misskey"
|
update: "Atualizar Misskey"
|
||||||
version: "Versão atual;"
|
version: "Versão atual;"
|
||||||
latest-version: "Última versão:"
|
latest-version: "Última versão:"
|
||||||
|
|||||||
@@ -7,61 +7,62 @@ common:
|
|||||||
about-title: "Мы — ⭐ fediverse"
|
about-title: "Мы — ⭐ fediverse"
|
||||||
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
|
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
|
||||||
intro:
|
intro:
|
||||||
title: "Misskeyって?"
|
title: "Что такое Misskey?"
|
||||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
about: "Misskey - это <b>децентрализованный сервис микроблогинга</b> с открытым исходным кодом. Он имеет такие функции, как: навороченный, полностью настраиваемый пользовательский интерфейс, множество реакций на посты, бесплатное хранилище файлов с интегрированной системой управления и ещё куча передовых фишек. А ещё сетевая система под названием “Fediverse” позволяет нам общаться с пользователями других социальных сетей. Например, если ты что-нибудь запостишь, то твой пост будет отослан не только в Misskey, но ещё и mastodon. Просто представь, что планета посылает микроволны на другую планету для коммуникации."
|
||||||
features: "特徴"
|
features: "Особенности"
|
||||||
rich-contents: "投稿"
|
rich-contents: "Посты"
|
||||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
rich-contents-desc: "Просто выложи свою идею, актуальные темы и всё, что тебе хочется показать миру. Ты можешь декорировать свои слова, прикреплять свои любимые картинки, отправлять файлы с фильмами и создать голосование - это те вещи, которые ты можешь сделать с помощью Misskey!"
|
||||||
reaction: "リアクション"
|
reaction: "Реакции"
|
||||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
reaction-desc: "Самый лёгкий способ выразить свои эмоции. Misskey позволяет добавлять различные виды реакций к постам других людей. Эмоциональный опыт из Misskey никогда не появится в других социальных сетях, позволяющих только жать “лайки”."
|
||||||
ui: "インターフェース"
|
ui: "Интерфейс"
|
||||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
ui-desc: "Нет такого интерфейса, понравившегося всем. Поэтому у Misskey имеется пользовательский интерфейс, широко настраиваемый под ваши вкусы. Создай себе уникальную домашнюю страницу редактируя, подстраивая оформление ленты и размещая виджеты, которые тоже можно кастомизировать."
|
||||||
drive: "ドライブ"
|
drive: "Хранилище файлов"
|
||||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
drive-desc: "Хотите запостить картинку, которую уже отправляли ранее? Хочется сортировать, переименовать и создать папку для ваших выложенных файлов? Тогда Misskey Drive - это лучшее решение для вас. Очень лёгкий способ делиться своими файлами онлайн."
|
||||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
outro: "Попробуйте будущие, уникальные для Misskey функции своими глазами! Если чувствуете, что это не в вашем вкусе, то попробуйте другие инстанции, ведь Misskey - это децентрализованная социальная сеть, так что ты можешь с лёгкостью найти себе товарищей. И наконец, GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "Пожалуйста, отключите блокировщик рекламы."
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "Некоторые функции перестанут быть доступными или будут работать неправильно, если включена блокировка рекламы. <strong>В Misskey нет рекламы</strong>."
|
||||||
application-authorization: "アプリの連携"
|
application-authorization: "Авторизация приложений"
|
||||||
close: "閉じる"
|
close: "Закрыть"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность."
|
||||||
load-more: "もっと読み込む"
|
load-more: "Загрузить больше"
|
||||||
|
enter-password: "パスワードを入力してください"
|
||||||
got-it: "わかった"
|
got-it: "わかった"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされました"
|
file-uploaded: "Файл отправлен!"
|
||||||
message-from: "{}さんからメッセージ:"
|
message-from: "Сообщение от {}:"
|
||||||
reversi-invited: "対局への招待があります"
|
reversi-invited: "Приглашён в игру"
|
||||||
reversi-invited-by: "{}さんから"
|
reversi-invited-by: "Был приглашён {}:"
|
||||||
notified-by: "{}さんから"
|
notified-by: "{}さんから"
|
||||||
reply-from: "{}さんから返信:"
|
reply-from: "Ответ от {}:"
|
||||||
quoted-by: "{}さんが引用:"
|
quoted-by: "Цитировано {}:"
|
||||||
time:
|
time:
|
||||||
unknown: "なぞのじかん"
|
unknown: "неизвестно"
|
||||||
future: "未来"
|
future: "сейчас"
|
||||||
just_now: "たった今"
|
just_now: "сейчас"
|
||||||
seconds_ago: "{}秒前"
|
seconds_ago: "{} секунд назад"
|
||||||
minutes_ago: "{}分前"
|
minutes_ago: "{} минут назад"
|
||||||
hours_ago: "{}時間前"
|
hours_ago: "{} часов назад"
|
||||||
days_ago: "{}日前"
|
days_ago: "{} дней назад"
|
||||||
weeks_ago: "{}週間前"
|
weeks_ago: "{} недель назад"
|
||||||
months_ago: "{}ヶ月前"
|
months_ago: "{} месяцев назад"
|
||||||
years_ago: "{}年前"
|
years_ago: "{} лет назад"
|
||||||
month-and-day: "{month}月 {day}日"
|
month-and-day: "{day}.{month}"
|
||||||
trash: "ゴミ箱"
|
trash: "Мусорное ведро"
|
||||||
drive: "ドライブ"
|
drive: "Drive"
|
||||||
messaging: "トーク"
|
messaging: "Чат"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "日"
|
sunday: "Вс"
|
||||||
monday: "月"
|
monday: "Пн"
|
||||||
tuesday: "火"
|
tuesday: "Вт"
|
||||||
wednesday: "水"
|
wednesday: "Ср"
|
||||||
thursday: "木"
|
thursday: "Чт"
|
||||||
friday: "金"
|
friday: "Пт"
|
||||||
saturday: "土"
|
saturday: "Сб"
|
||||||
weekday:
|
weekday:
|
||||||
sunday: "日曜日"
|
sunday: "日曜日"
|
||||||
monday: "月曜日"
|
monday: "月曜日"
|
||||||
@@ -90,6 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@@ -108,59 +112,60 @@ common:
|
|||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "Отключить анимированный текст в постах"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "Всегда показывать NSFW контент"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
show-via: "viaを表示する"
|
show-via: "показать через"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "Уменьшить движение в интерфейсе"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "Только для этого устройства"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "Использовать стандартные Emoji из ОС"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'Эта сборка для разработчиков. Не используйте в продакшне.'
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
|
renoted-by: "{user}がRenote"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: 'Что-то пошло не так :('
|
||||||
retry: 'やり直す'
|
retry: 'Повторить'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "Ничья"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "Ваш ход"
|
||||||
opponent-turn: "相手のターンです"
|
opponent-turn: "Ход оппонента"
|
||||||
turn-of: "{name}のターンです"
|
turn-of: "Ход {name}"
|
||||||
past-turn-of: "{name}のターン"
|
past-turn-of: "Ход {name}"
|
||||||
won: "{name}の勝ち"
|
won: "{name} победил"
|
||||||
black: "黒"
|
black: "Чёрный"
|
||||||
white: "白"
|
white: "Белый"
|
||||||
total: "合計"
|
total: "Всего"
|
||||||
this-turn: "{count}ターン目"
|
this-turn: "Ход {count}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "アナログ時計"
|
analog-clock: "Аналоговые часы"
|
||||||
profile: "プロフィール"
|
profile: "Профиль"
|
||||||
calendar: "カレンダー"
|
calendar: "Календарь"
|
||||||
timemachine: "カレンダー(タイムマシン)"
|
timemachine: "Календарь (машина времени)"
|
||||||
activity: "アクティビティ"
|
activity: "Активность"
|
||||||
rss: "RSSリーダー"
|
rss: "Ридер RSS"
|
||||||
memo: "付箋"
|
memo: "Заметка"
|
||||||
trends: "トレンド"
|
trends: "Популярное"
|
||||||
photo-stream: "フォトストリーム"
|
photo-stream: "Фотопоток"
|
||||||
posts-monitor: "投稿チャート"
|
posts-monitor: "投稿チャート"
|
||||||
slideshow: "スライドショー"
|
slideshow: "Слайдшоу"
|
||||||
version: "バージョン"
|
version: "Версия"
|
||||||
broadcast: "ブロードキャスト"
|
broadcast: "ブロードキャスト"
|
||||||
notifications: "通知"
|
notifications: "Уведомления"
|
||||||
users: "おすすめユーザー"
|
users: "Рекомендованные пользователи"
|
||||||
polls: "アンケート"
|
polls: "Голосования"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "Информация о сервере"
|
||||||
donation: "寄付のお願い"
|
donation: "寄付のお願い"
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "Хэштеги"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз."
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "Ai-chan kawaii!"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報を操作する。"
|
||||||
@@ -206,28 +211,28 @@ common/views/components/games/reversi/reversi.index.vue:
|
|||||||
all-games: "みんなの対局"
|
all-games: "みんなの対局"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してください"
|
||||||
game-state:
|
game-state:
|
||||||
ended: "終了"
|
ended: "Завершено"
|
||||||
playing: "進行中"
|
playing: "В процессе"
|
||||||
common/views/components/games/reversi/reversi.room.vue:
|
common/views/components/games/reversi/reversi.room.vue:
|
||||||
settings-of-the-game: "ゲームの設定"
|
settings-of-the-game: "Настройки игры"
|
||||||
choose-map: "マップを選択"
|
choose-map: "マップを選択"
|
||||||
random: "ランダム"
|
random: "Случайно"
|
||||||
black-or-white: "先手/後手"
|
black-or-white: "Чёрные/Белые"
|
||||||
black-is: "{}が黒"
|
black-is: "{} ходит чёрными"
|
||||||
rules: "ルール"
|
rules: "Правила"
|
||||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
looped-map: "ループマップ"
|
looped-map: "ループマップ"
|
||||||
can-put-everywhere: "どこでも置けるモード"
|
can-put-everywhere: "どこでも置けるモード"
|
||||||
settings-of-the-bot: "Botの設定"
|
settings-of-the-bot: "Настройки бота"
|
||||||
this-game-is-started-soon: "ゲームは数秒後に開始されます"
|
this-game-is-started-soon: "Игра вот-вот начнётся"
|
||||||
waiting-for-other: "相手の準備が完了するのを待っています"
|
waiting-for-other: "Ожидание оппонента"
|
||||||
waiting-for-me: "あなたの準備が完了するのを待っています"
|
waiting-for-me: "あなたの準備が完了するのを待っています"
|
||||||
waiting-for-both: "準備中"
|
waiting-for-both: "準備中"
|
||||||
cancel: "キャンセル"
|
cancel: "Отмена"
|
||||||
ready: "準備完了"
|
ready: "Готов"
|
||||||
cancel-ready: "準備続行"
|
cancel-ready: "準備続行"
|
||||||
common/views/components/connect-failed.vue:
|
common/views/components/connect-failed.vue:
|
||||||
title: "サーバーに接続できません"
|
title: "Невозможно подключиться к серверу"
|
||||||
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
|
||||||
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
|
||||||
troubleshoot: "トラブルシュート"
|
troubleshoot: "トラブルシュート"
|
||||||
@@ -344,6 +349,16 @@ common/views/components/poll-editor.vue:
|
|||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートを破棄"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
|
common/views/components/emoji-picker.vue:
|
||||||
|
custom-emoji: "カスタム絵文字"
|
||||||
|
people: "人"
|
||||||
|
animals-and-nature: "動物&自然"
|
||||||
|
food-and-drink: "食べ物&飲み物"
|
||||||
|
activity: "アクティビティ"
|
||||||
|
travel-and-places: "場所"
|
||||||
|
objects: "物"
|
||||||
|
symbols: "記号"
|
||||||
|
flags: "旗"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
@@ -353,6 +368,7 @@ common/views/components/signin.vue:
|
|||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでログイン"
|
||||||
signin-with-github: "GitHubでログイン"
|
signin-with-github: "GitHubでログイン"
|
||||||
|
signin-with-discord: "Discordでログイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
@@ -398,6 +414,13 @@ common/views/components/github-setting.vue:
|
|||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
common/views/components/discord-setting.vue:
|
||||||
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
|
detail: "詳細..."
|
||||||
|
reconnect: "再接続する"
|
||||||
|
connect: "Discordと接続する"
|
||||||
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待機中"
|
waiting: "待機中"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@@ -409,6 +432,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
local-public: "公開 (ローカルのみ)"
|
||||||
|
local-public-desc: "リモートへは公開しない"
|
||||||
|
local-home: "ホーム (ローカルのみ)"
|
||||||
|
local-followers: "フォロワー (ローカルのみ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
@@ -431,6 +458,10 @@ common/views/components/profile-editor.vue:
|
|||||||
saved: "プロフィールを保存しました"
|
saved: "プロフィールを保存しました"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
|
email: "メール設定"
|
||||||
|
email-address: "メールアドレス"
|
||||||
|
email-verified: "メールアドレスが確認されました"
|
||||||
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@@ -588,12 +619,6 @@ desktop/views/components/media-image.vue:
|
|||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
desktop/views/components/follow-button.vue:
|
|
||||||
following: "フォロー中"
|
|
||||||
follow: "フォロー"
|
|
||||||
request-pending: "フォロー許可待ち"
|
|
||||||
follow-processing: "フォロー処理中"
|
|
||||||
follow-request: "フォロー申請"
|
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} のフォロワー"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
@@ -624,12 +649,10 @@ desktop/views/components/messaging-window.vue:
|
|||||||
desktop/views/components/note-detail.vue:
|
desktop/views/components/note-detail.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "リアクション"
|
||||||
@@ -664,6 +687,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近"
|
||||||
|
local-only-message: "この投稿はローカルにのみ公開されます"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
||||||
@@ -681,6 +705,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
renote-home: "Renote (Home)"
|
||||||
reposting: "しています..."
|
reposting: "しています..."
|
||||||
success: "Renoteしました!"
|
success: "Renoteしました!"
|
||||||
failure: "Renoteに失敗しました"
|
failure: "Renoteに失敗しました"
|
||||||
@@ -695,6 +720,7 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
notification: "通知"
|
notification: "通知"
|
||||||
apps: "アプリ"
|
apps: "アプリ"
|
||||||
|
tags: "ハッシュタグ"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "ミュート/ブロック"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "セキュリティ"
|
security: "セキュリティ"
|
||||||
@@ -710,6 +736,8 @@ desktop/views/components/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@@ -737,6 +765,7 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの位置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
@@ -829,6 +858,10 @@ common/views/components/mute-and-block.vue:
|
|||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "ミュートしているユーザーはいません"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "ブロックしているユーザーはいません"
|
||||||
|
word-mute: "ワードミュート"
|
||||||
|
muted-words: "ミュートされたキーワード"
|
||||||
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@@ -903,8 +936,9 @@ admin/views/index.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
instance: "インスタンス"
|
instance: "インスタンス"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "カスタム絵文字"
|
||||||
|
moderators: "モデレーター"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
federation: "連合"
|
||||||
announcements: "お知らせ"
|
announcements: "お知らせ"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
@@ -939,15 +973,20 @@ admin/views/instance.vue:
|
|||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を有効にする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
|
discord-integration-config: "Discord連携の設定"
|
||||||
|
discord-integration-info: "コールバックURLは {url} に設定します。"
|
||||||
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
|
discord-integration-client-id: "Client ID"
|
||||||
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
@@ -959,6 +998,21 @@ admin/views/instance.vue:
|
|||||||
invite: "招待"
|
invite: "招待"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存しました"
|
||||||
|
user-recommendation-config: "おすすめユーザー"
|
||||||
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
|
external-user-recommendation-engine: "エンジン"
|
||||||
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
|
email-config: "メールサーバーの設定"
|
||||||
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
||||||
|
enable-email: "メール配信を有効にする"
|
||||||
|
email: "メールアドレス"
|
||||||
|
smtp-use-ssl: "SMTPサーバーはSSLを使用"
|
||||||
|
smtp-host: "SMTPホスト"
|
||||||
|
smtp-port: "SMTPポート"
|
||||||
|
smtp-user: "SMTPユーザー"
|
||||||
|
smtp-pass: "SMTPパスワード"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@@ -985,18 +1039,40 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
operation: "操作"
|
||||||
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
user-not-found: "ユーザーが見つかりません"
|
||||||
|
lookup: "照会"
|
||||||
|
reset-password: "パスワードをリセット"
|
||||||
|
password-updated: "パスワードは現在「{password}」です"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除しました"
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしました"
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
|
users:
|
||||||
|
title: "ユーザー"
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "登録日時が古い順"
|
||||||
|
createdAtDesc: "登録日時が新しい順"
|
||||||
|
updatedAtAsc: "更新日時が古い順"
|
||||||
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
createdAt: "登録日時"
|
||||||
|
updatedAt: "更新日時"
|
||||||
|
admin/views/moderators.vue:
|
||||||
|
add-moderator:
|
||||||
|
title: "モデレーターの登録"
|
||||||
|
add: "登録"
|
||||||
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
@@ -1161,7 +1237,7 @@ mobile/views/components/media-image.vue:
|
|||||||
mobile/views/components/media-video.vue:
|
mobile/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
mobile/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
@@ -1174,14 +1250,12 @@ mobile/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
mobile/views/components/note.vue:
|
mobile/views/components/note.vue:
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
mobile/views/components/note-detail.vue:
|
mobile/views/components/note-detail.vue:
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
reaction: "リアクション"
|
reaction: "リアクション"
|
||||||
reposted-by: "{}がRenote"
|
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
location: "位置情報"
|
location: "位置情報"
|
||||||
@@ -1313,6 +1387,8 @@ mobile/views/pages/settings.vue:
|
|||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
|
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@@ -1324,6 +1400,10 @@ mobile/views/pages/settings.vue:
|
|||||||
github-connect: "GitHubアカウントに接続する"
|
github-connect: "GitHubアカウントに接続する"
|
||||||
github-reconnect: "再接続する"
|
github-reconnect: "再接続する"
|
||||||
github-disconnect: "切断する"
|
github-disconnect: "切断する"
|
||||||
|
discord: "Discord連携"
|
||||||
|
discord-connect: "Discordアカウントに接続する"
|
||||||
|
discord-reconnect: "再接続する"
|
||||||
|
discord-disconnect: "切断する"
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
|||||||
2452
locales/zh-CN.yml
2452
locales/zh-CN.yml
File diff suppressed because it is too large
Load Diff
56
package.json
56
package.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "10.49.0",
|
"version": "10.59.2",
|
||||||
"clientVersion": "2.0.11740",
|
"clientVersion": "2.0.12277",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -46,14 +46,15 @@
|
|||||||
"@types/is-root": "1.0.0",
|
"@types/is-root": "1.0.0",
|
||||||
"@types/is-url": "1.2.28",
|
"@types/is-url": "1.2.28",
|
||||||
"@types/js-yaml": "3.11.2",
|
"@types/js-yaml": "3.11.2",
|
||||||
"@types/koa": "2.0.46",
|
"@types/katex": "0.5.0",
|
||||||
|
"@types/koa": "2.0.47",
|
||||||
"@types/koa-bodyparser": "5.0.1",
|
"@types/koa-bodyparser": "5.0.1",
|
||||||
"@types/koa-compress": "2.0.8",
|
"@types/koa-compress": "2.0.8",
|
||||||
"@types/koa-favicon": "2.0.19",
|
"@types/koa-favicon": "2.0.19",
|
||||||
"@types/koa-logger": "3.1.1",
|
"@types/koa-logger": "3.1.1",
|
||||||
"@types/koa-mount": "3.0.1",
|
"@types/koa-mount": "3.0.1",
|
||||||
"@types/koa-multer": "1.0.0",
|
"@types/koa-multer": "1.0.0",
|
||||||
"@types/koa-router": "7.0.33",
|
"@types/koa-router": "7.0.35",
|
||||||
"@types/koa-send": "4.1.1",
|
"@types/koa-send": "4.1.1",
|
||||||
"@types/koa-views": "2.0.3",
|
"@types/koa-views": "2.0.3",
|
||||||
"@types/koa__cors": "2.2.3",
|
"@types/koa__cors": "2.2.3",
|
||||||
@@ -62,13 +63,15 @@
|
|||||||
"@types/mocha": "5.2.5",
|
"@types/mocha": "5.2.5",
|
||||||
"@types/mongodb": "3.1.14",
|
"@types/mongodb": "3.1.14",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.12.2",
|
"@types/node": "10.12.10",
|
||||||
|
"@types/nodemailer": "4.6.5",
|
||||||
"@types/oauth": "0.9.1",
|
"@types/oauth": "0.9.1",
|
||||||
|
"@types/parsimmon": "1.10.0",
|
||||||
"@types/portscanner": "2.1.0",
|
"@types/portscanner": "2.1.0",
|
||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.3.0",
|
"@types/qrcode": "1.3.0",
|
||||||
"@types/ratelimiter": "2.1.28",
|
"@types/ratelimiter": "2.1.28",
|
||||||
"@types/redis": "2.8.7",
|
"@types/redis": "2.8.8",
|
||||||
"@types/request": "2.48.1",
|
"@types/request": "2.48.1",
|
||||||
"@types/request-promise-native": "1.0.15",
|
"@types/request-promise-native": "1.0.15",
|
||||||
"@types/rimraf": "2.0.2",
|
"@types/rimraf": "2.0.2",
|
||||||
@@ -76,17 +79,17 @@
|
|||||||
"@types/sharp": "0.21.0",
|
"@types/sharp": "0.21.0",
|
||||||
"@types/showdown": "1.7.5",
|
"@types/showdown": "1.7.5",
|
||||||
"@types/speakeasy": "2.0.3",
|
"@types/speakeasy": "2.0.3",
|
||||||
"@types/systeminformation": "3.23.0",
|
"@types/systeminformation": "3.23.1",
|
||||||
"@types/tinycolor2": "1.4.1",
|
"@types/tinycolor2": "1.4.1",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.4",
|
"@types/uuid": "3.4.4",
|
||||||
"@types/webpack": "4.4.18",
|
"@types/webpack": "4.4.19",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.40",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.1",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"apexcharts": "2.2.0",
|
"apexcharts": "2.2.3",
|
||||||
"autobind-decorator": "2.2.1",
|
"autobind-decorator": "2.3.1",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
@@ -107,7 +110,7 @@
|
|||||||
"diskusage": "0.2.5",
|
"diskusage": "0.2.5",
|
||||||
"double-ended-queue": "2.1.0-0",
|
"double-ended-queue": "2.1.0-0",
|
||||||
"elasticsearch": "15.2.0",
|
"elasticsearch": "15.2.0",
|
||||||
"emojilib": "2.3.0",
|
"emojilib": "2.4.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "5.8.0",
|
"eslint": "5.8.0",
|
||||||
"eslint-plugin-vue": "4.7.1",
|
"eslint-plugin-vue": "4.7.1",
|
||||||
@@ -140,7 +143,8 @@
|
|||||||
"jsdom": "13.0.0",
|
"jsdom": "13.0.0",
|
||||||
"json5": "2.1.0",
|
"json5": "2.1.0",
|
||||||
"json5-loader": "1.0.1",
|
"json5-loader": "1.0.1",
|
||||||
"koa": "2.6.1",
|
"katex": "0.10.0",
|
||||||
|
"koa": "2.6.2",
|
||||||
"koa-bodyparser": "4.2.1",
|
"koa-bodyparser": "4.2.1",
|
||||||
"koa-compress": "3.0.0",
|
"koa-compress": "3.0.0",
|
||||||
"koa-favicon": "2.0.1",
|
"koa-favicon": "2.0.1",
|
||||||
@@ -158,16 +162,18 @@
|
|||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
"moment": "2.22.2",
|
"moment": "2.22.2",
|
||||||
"mongodb": "3.1.8",
|
"mongodb": "3.1.9",
|
||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.11.1",
|
"nan": "2.11.1",
|
||||||
"nested-property": "0.0.7",
|
"nested-property": "0.0.7",
|
||||||
|
"nodemailer": "4.7.0",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"object-assign-deep": "0.4.0",
|
"object-assign-deep": "0.4.0",
|
||||||
"on-build-webpack": "0.1.0",
|
"on-build-webpack": "0.1.0",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "5.1.0",
|
"parse5": "5.1.0",
|
||||||
|
"parsimmon": "1.12.0",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"postcss-loader": "3.0.0",
|
"postcss-loader": "3.0.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
@@ -176,6 +182,7 @@
|
|||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
"punycode": "2.1.1",
|
"punycode": "2.1.1",
|
||||||
"qrcode": "1.3.2",
|
"qrcode": "1.3.2",
|
||||||
|
"randomcolor": "0.5.3",
|
||||||
"ratelimiter": "3.2.0",
|
"ratelimiter": "3.2.0",
|
||||||
"recaptcha-promise": "0.1.3",
|
"recaptcha-promise": "0.1.3",
|
||||||
"reconnecting-websocket": "4.1.10",
|
"reconnecting-websocket": "4.1.10",
|
||||||
@@ -188,7 +195,7 @@
|
|||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"seedrandom": "2.4.4",
|
"seedrandom": "2.4.4",
|
||||||
"sharp": "0.21.0",
|
"sharp": "0.21.0",
|
||||||
"showdown": "1.8.7",
|
"showdown": "1.9.0",
|
||||||
"showdown-highlightjs-extension": "0.1.2",
|
"showdown-highlightjs-extension": "0.1.2",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"stringz": "1.0.0",
|
"stringz": "1.0.0",
|
||||||
@@ -196,16 +203,17 @@
|
|||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"summaly": "2.2.0",
|
"summaly": "2.2.0",
|
||||||
"systeminformation": "3.47.0",
|
"systeminformation": "3.51.3",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
|
"terser-webpack-plugin": "1.1.0",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tinycolor2": "1.4.1",
|
"tinycolor2": "1.4.1",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
"ts-loader": "5.3.0",
|
"ts-loader": "5.3.1",
|
||||||
"ts-node": "7.0.1",
|
"ts-node": "7.0.1",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "3.1.6",
|
"typescript": "3.1.6",
|
||||||
"typescript-eslint-parser": "20.1.1",
|
"typescript-eslint-parser": "21.0.1",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.1.2",
|
"url-loader": "1.1.2",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
@@ -214,24 +222,24 @@
|
|||||||
"vue-color": "2.7.0",
|
"vue-color": "2.7.0",
|
||||||
"vue-content-loading": "1.5.3",
|
"vue-content-loading": "1.5.3",
|
||||||
"vue-cropperjs": "2.2.2",
|
"vue-cropperjs": "2.2.2",
|
||||||
"vue-i18n": "8.3.1",
|
"vue-i18n": "8.3.2",
|
||||||
"vue-js-modal": "1.3.26",
|
"vue-js-modal": "1.3.26",
|
||||||
"vue-loader": "15.4.2",
|
"vue-loader": "15.4.2",
|
||||||
"vue-router": "3.0.1",
|
"vue-marquee-text-component": "1.1.0",
|
||||||
|
"vue-router": "3.0.2",
|
||||||
"vue-style-loader": "4.1.2",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-svg-inline-loader": "1.2.1",
|
"vue-svg-inline-loader": "1.2.2",
|
||||||
"vue-sweetalert2": "1.5.7",
|
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
"vuewordcloud": "18.7.11",
|
"vuewordcloud": "18.7.11",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.3",
|
"web-push": "3.3.3",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.7.0",
|
||||||
"webpack": "4.25.1",
|
"webpack": "4.26.0",
|
||||||
"webpack-cli": "3.1.2",
|
"webpack-cli": "3.1.2",
|
||||||
"websocket": "1.0.28",
|
"websocket": "1.0.28",
|
||||||
"ws": "6.1.0",
|
"ws": "6.1.2",
|
||||||
"xev": "2.0.1"
|
"xev": "2.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<ui-textarea v-model="announcement.text">
|
<ui-textarea v-model="announcement.text">
|
||||||
<span>{{ $t('text') }}</span>
|
<span>{{ $t('text') }}</span>
|
||||||
</ui-textarea>
|
</ui-textarea>
|
||||||
<ui-horizon-group>
|
<ui-horizon-group class="fit-bottom">
|
||||||
<ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button>
|
<ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button>
|
||||||
<ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button>
|
<ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
@@ -41,22 +41,22 @@ export default Vue.extend({
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
add() {
|
add() {
|
||||||
this.announcements.push({
|
this.announcements.unshift({
|
||||||
title: '',
|
title: '',
|
||||||
text: ''
|
text: ''
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
remove(i) {
|
remove(i) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title),
|
text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title),
|
||||||
showCancelButton: true
|
showCancelButton: true
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (!res.value) return;
|
if (!res) return;
|
||||||
this.announcements = this.announcements.filter((_, j) => j !== i);
|
this.announcements = this.announcements.filter((_, j) => j !== i);
|
||||||
this.save(true);
|
this.save(true);
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('_remove.removed')
|
text: this.$t('_remove.removed')
|
||||||
});
|
});
|
||||||
@@ -68,13 +68,13 @@ export default Vue.extend({
|
|||||||
broadcasts: this.announcements
|
broadcasts: this.announcements
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('saved')
|
text: this.$t('saved')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,17 +3,17 @@
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><fa icon="exchange-alt"/> In/Out</th>
|
<th><fa :icon="faExchangeAlt"/> In/Out</th>
|
||||||
|
<th><fa :icon="faBolt"/> Activity</th>
|
||||||
<th><fa icon="server"/> Host</th>
|
<th><fa icon="server"/> Host</th>
|
||||||
<th><fa icon="bolt"/> Activity</th>
|
|
||||||
<th><fa icon="user"/> Actor</th>
|
<th><fa icon="user"/> Actor</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="log in logs" :key="log.id">
|
<tr v-for="log in logs" :key="log.id">
|
||||||
<td :class="log.direction">{{ log.direction == 'in' ? '<' : '>' }} {{ log.direction }}</td>
|
<td :class="log.direction">{{ log.direction == 'in' ? '<' : '>' }} {{ log.direction }}</td>
|
||||||
<td>{{ log.host }}</td>
|
|
||||||
<td>{{ log.activity }}</td>
|
<td>{{ log.activity }}</td>
|
||||||
|
<td>{{ log.host }}</td>
|
||||||
<td>@{{ log.actor }}</td>
|
<td>@{{ log.actor }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -23,12 +23,14 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { faBolt, faExchangeAlt } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
logs: [],
|
logs: [],
|
||||||
connection: null
|
connection: null,
|
||||||
|
faBolt, faExchangeAlt
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -8,13 +8,19 @@
|
|||||||
<p>{{ $t('@.ai-chan-kawaii') }}</p>
|
<p>{{ $t('@.ai-chan-kawaii') }}</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<marquee-text v-if="instances.length > 0" class="instances" :repeat="10" :duration="60">
|
||||||
|
<span v-for="instance in instances" class="instance">
|
||||||
|
<b :style="{ background: instance.bg }">{{ instance.host }}</b>{{ instance.notesCount | number }} / {{ instance.usersCount | number }}
|
||||||
|
</span>
|
||||||
|
</marquee-text>
|
||||||
|
|
||||||
<div v-if="stats" class="stats">
|
<div v-if="stats" class="stats">
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<div><fa icon="user"/></div>
|
<div><fa icon="user"/></div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('accounts') }}</span>
|
<span>{{ $t('accounts') }}</span>
|
||||||
<b class="primary">{{ stats.originalUsersCount | number }}</b>
|
<b>{{ stats.originalUsersCount | number }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -27,7 +33,7 @@
|
|||||||
<div><fa icon="pencil-alt"/></div>
|
<div><fa icon="pencil-alt"/></div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('notes') }}</span>
|
<span>{{ $t('notes') }}</span>
|
||||||
<b class="primary">{{ stats.originalNotesCount | number }}</b>
|
<b>{{ stats.originalNotesCount | number }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -37,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<div><fa icon="database"/></div>
|
<div><fa :icon="faDatabase"/></div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('drive') }}</span>
|
<span>{{ $t('drive') }}</span>
|
||||||
<b>{{ stats.driveUsageLocal | bytes }}</b>
|
<b>{{ stats.driveUsageLocal | bytes }}</b>
|
||||||
@@ -83,42 +89,68 @@ import i18n from '../../i18n';
|
|||||||
import XCpuMemory from "./cpu-memory.vue";
|
import XCpuMemory from "./cpu-memory.vue";
|
||||||
import XCharts from "./charts.vue";
|
import XCharts from "./charts.vue";
|
||||||
import XApLog from "./ap-log.vue";
|
import XApLog from "./ap-log.vue";
|
||||||
|
import { faDatabase } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import MarqueeText from 'vue-marquee-text-component';
|
||||||
|
import randomColor from 'randomcolor';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('admin/views/dashboard.vue'),
|
i18n: i18n('admin/views/dashboard.vue'),
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
XCpuMemory,
|
XCpuMemory,
|
||||||
XCharts,
|
XCharts,
|
||||||
XApLog
|
XApLog,
|
||||||
|
MarqueeText
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
stats: null,
|
stats: null,
|
||||||
connection: null,
|
connection: null,
|
||||||
meta: null
|
meta: null,
|
||||||
|
instances: [],
|
||||||
|
clock: null,
|
||||||
|
faDatabase
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.connection = this.$root.stream.useSharedConnection('serverStats');
|
this.connection = this.$root.stream.useSharedConnection('serverStats');
|
||||||
|
|
||||||
|
this.updateStats();
|
||||||
|
this.clock = setInterval(this.updateStats, 1000);
|
||||||
|
|
||||||
this.$root.getMeta().then(meta => {
|
this.$root.getMeta().then(meta => {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$root.api('stats').then(stats => {
|
this.$root.api('instances', {
|
||||||
this.stats = stats;
|
sort: '+notes'
|
||||||
|
}).then(instances => {
|
||||||
|
instances.forEach(i => {
|
||||||
|
i.bg = randomColor({
|
||||||
|
seed: i.host,
|
||||||
|
luminosity: 'dark'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.instances = instances;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.connection.dispose();
|
this.connection.dispose();
|
||||||
|
clearInterval(this.clock);
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
setChartSrc(src) {
|
setChartSrc(src) {
|
||||||
this.$refs.charts.setSrc(src);
|
this.$refs.charts.setSrc(src);
|
||||||
|
},
|
||||||
|
|
||||||
|
updateStats() {
|
||||||
|
this.$root.api('stats', {}, false, true).then(stats => {
|
||||||
|
this.stats = stats;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -133,7 +165,6 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> header
|
> header
|
||||||
display flex
|
display flex
|
||||||
margin-bottom 16px
|
|
||||||
padding-bottom 16px
|
padding-bottom 16px
|
||||||
border-bottom solid 1px var(--adminDashboardHeaderBorder)
|
border-bottom solid 1px var(--adminDashboardHeaderBorder)
|
||||||
color var(--adminDashboardHeaderFg)
|
color var(--adminDashboardHeaderFg)
|
||||||
@@ -158,6 +189,20 @@ export default Vue.extend({
|
|||||||
margin-left auto
|
margin-left auto
|
||||||
margin-right 0
|
margin-right 0
|
||||||
|
|
||||||
|
> .instances
|
||||||
|
padding 16px
|
||||||
|
color var(--adminDashboardHeaderFg)
|
||||||
|
font-size 13px
|
||||||
|
|
||||||
|
>>> .instance
|
||||||
|
margin 0 10px
|
||||||
|
|
||||||
|
> b
|
||||||
|
padding 2px 6px
|
||||||
|
margin-right 4px
|
||||||
|
border-radius 4px
|
||||||
|
color #fff
|
||||||
|
|
||||||
> .stats
|
> .stats
|
||||||
display flex
|
display flex
|
||||||
justify-content space-between
|
justify-content space-between
|
||||||
@@ -198,9 +243,6 @@ export default Vue.extend({
|
|||||||
> b
|
> b
|
||||||
display block
|
display block
|
||||||
|
|
||||||
&.primary
|
|
||||||
color var(--primary)
|
|
||||||
|
|
||||||
> div:last-child
|
> div:last-child
|
||||||
display flex
|
display flex
|
||||||
padding 6px 16px
|
padding 6px 16px
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</ui-card>
|
</ui-card>
|
||||||
|
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title"><fa :icon="['far', 'grin']"/> {{ $t('emojis.title') }}</div>
|
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
|
||||||
<section v-for="emoji in emojis">
|
<section v-for="emoji in emojis">
|
||||||
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
|
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
|
||||||
<ui-horizon-group inputs>
|
<ui-horizon-group inputs>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<i slot="icon"><fa icon="link"/></i>
|
<i slot="icon"><fa icon="link"/></i>
|
||||||
<span>{{ $t('add-emoji.url') }}</span>
|
<span>{{ $t('add-emoji.url') }}</span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-horizon-group>
|
<ui-horizon-group class="fit-bottom">
|
||||||
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
|
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
|
||||||
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
|
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
@@ -50,6 +50,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
|
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('admin/views/emoji.vue'),
|
i18n: i18n('admin/views/emoji.vue'),
|
||||||
@@ -58,7 +59,8 @@ export default Vue.extend({
|
|||||||
name: '',
|
name: '',
|
||||||
url: '',
|
url: '',
|
||||||
aliases: '',
|
aliases: '',
|
||||||
emojis: []
|
emojis: [],
|
||||||
|
faGrin
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -73,13 +75,13 @@ export default Vue.extend({
|
|||||||
url: this.url,
|
url: this.url,
|
||||||
aliases: this.aliases.split(' ').filter(x => x.length > 0)
|
aliases: this.aliases.split(' ').filter(x => x.length > 0)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('add-emoji.added')
|
text: this.$t('add-emoji.added')
|
||||||
});
|
});
|
||||||
this.fetchEmojis();
|
this.fetchEmojis();
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
@@ -101,12 +103,12 @@ export default Vue.extend({
|
|||||||
url: emoji.url,
|
url: emoji.url,
|
||||||
aliases: emoji.aliases.split(' ').filter(x => x.length > 0)
|
aliases: emoji.aliases.split(' ').filter(x => x.length > 0)
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('updated')
|
text: this.$t('updated')
|
||||||
});
|
});
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
@@ -114,23 +116,23 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
removeEmoji(emoji) {
|
removeEmoji(emoji) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name),
|
text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name),
|
||||||
showCancelButton: true
|
showCancelButton: true
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (!res.value) return;
|
if (!res) return;
|
||||||
|
|
||||||
this.$root.api('admin/emoji/remove', {
|
this.$root.api('admin/emoji/remove', {
|
||||||
id: emoji.id
|
id: emoji.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('remove-emoji.removed')
|
text: this.$t('remove-emoji.removed')
|
||||||
});
|
});
|
||||||
this.fetchEmojis();
|
this.fetchEmojis();
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,30 +20,34 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
|
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
|
||||||
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
|
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
|
||||||
|
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
|
||||||
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
|
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
|
||||||
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="['far', 'grin']" fixed-width/>{{ $t('emoji') }}</li>
|
<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> -->
|
||||||
|
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
|
||||||
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
||||||
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
||||||
|
|
||||||
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
|
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
|
||||||
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">{{ $t('update') }}</li> -->
|
|
||||||
</ul>
|
</ul>
|
||||||
<div class="back-to-misskey">
|
<div class="back-to-misskey">
|
||||||
<a href="/"><fa icon="arrow-left"/> {{ $t('back-to-misskey') }}</a>
|
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="version">
|
<div class="version">
|
||||||
<small>Misskey {{ version }}</small>
|
<small>Misskey {{ version }}</small>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<main>
|
<main>
|
||||||
|
<div class="page">
|
||||||
<div v-if="page == 'dashboard'"><x-dashboard/></div>
|
<div v-if="page == 'dashboard'"><x-dashboard/></div>
|
||||||
<div v-if="page == 'instance'"><x-instance/></div>
|
<div v-if="page == 'instance'"><x-instance/></div>
|
||||||
|
<div v-if="page == 'moderators'"><x-moderators/></div>
|
||||||
<div v-if="page == 'users'"><x-users/></div>
|
<div v-if="page == 'users'"><x-users/></div>
|
||||||
<div v-if="page == 'emoji'"><x-emoji/></div>
|
<div v-if="page == 'emoji'"><x-emoji/></div>
|
||||||
<div v-if="page == 'announcements'"><x-announcements/></div>
|
<div v-if="page == 'announcements'"><x-announcements/></div>
|
||||||
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
||||||
<div v-if="page == 'drive'"></div>
|
<div v-if="page == 'drive'"></div>
|
||||||
<div v-if="page == 'update'"></div>
|
<div v-if="page == 'update'"></div>
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -54,10 +58,13 @@ import i18n from '../../i18n';
|
|||||||
import { version } from '../../config';
|
import { version } from '../../config';
|
||||||
import XDashboard from "./dashboard.vue";
|
import XDashboard from "./dashboard.vue";
|
||||||
import XInstance from "./instance.vue";
|
import XInstance from "./instance.vue";
|
||||||
|
import XModerators from "./moderators.vue";
|
||||||
import XEmoji from "./emoji.vue";
|
import XEmoji from "./emoji.vue";
|
||||||
import XAnnouncements from "./announcements.vue";
|
import XAnnouncements from "./announcements.vue";
|
||||||
import XHashtags from "./hashtags.vue";
|
import XHashtags from "./hashtags.vue";
|
||||||
import XUsers from "./users.vue";
|
import XUsers from "./users.vue";
|
||||||
|
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
// Detect the user agent
|
// Detect the user agent
|
||||||
const ua = navigator.userAgent.toLowerCase();
|
const ua = navigator.userAgent.toLowerCase();
|
||||||
@@ -68,6 +75,7 @@ export default Vue.extend({
|
|||||||
components: {
|
components: {
|
||||||
XDashboard,
|
XDashboard,
|
||||||
XInstance,
|
XInstance,
|
||||||
|
XModerators,
|
||||||
XEmoji,
|
XEmoji,
|
||||||
XAnnouncements,
|
XAnnouncements,
|
||||||
XHashtags,
|
XHashtags,
|
||||||
@@ -81,7 +89,11 @@ export default Vue.extend({
|
|||||||
page: 'dashboard',
|
page: 'dashboard',
|
||||||
version,
|
version,
|
||||||
isMobile,
|
isMobile,
|
||||||
navOpend: !isMobile
|
navOpend: !isMobile,
|
||||||
|
faGrin,
|
||||||
|
faArrowLeft,
|
||||||
|
faHeadset,
|
||||||
|
faShareAlt
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -92,7 +104,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus">
|
<style lang="stylus" scoped>
|
||||||
.mk-admin
|
.mk-admin
|
||||||
$headerHeight = 48px
|
$headerHeight = 48px
|
||||||
|
|
||||||
@@ -253,7 +265,9 @@ export default Vue.extend({
|
|||||||
> main
|
> main
|
||||||
width 100%
|
width 100%
|
||||||
padding 0 0 0 250px
|
padding 0 0 0 250px
|
||||||
max-width 1300px
|
|
||||||
|
> .page
|
||||||
|
max-width 1150px
|
||||||
|
|
||||||
&.isMobile
|
&.isMobile
|
||||||
> main
|
> main
|
||||||
|
|||||||
@@ -10,13 +10,17 @@
|
|||||||
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section class="fit-bottom">
|
<section class="fit-bottom">
|
||||||
<header><fa icon="headset"/> {{ $t('maintainer-config') }}</header>
|
<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header>
|
||||||
<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input>
|
<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input>
|
||||||
<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>{{ $t('maintainer-email') }}</ui-input>
|
<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="farEnvelope"/></i>{{ $t('maintainer-email') }}</ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section class="fit-top fit-bottom">
|
<section class="fit-top fit-bottom">
|
||||||
<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input>
|
<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
|
||||||
|
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
|
||||||
|
</section>
|
||||||
<section class="fit-bottom">
|
<section class="fit-bottom">
|
||||||
<header><fa icon="cloud"/> {{ $t('drive-config') }}</header>
|
<header><fa icon="cloud"/> {{ $t('drive-config') }}</header>
|
||||||
<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch>
|
<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch>
|
||||||
@@ -24,23 +28,41 @@
|
|||||||
<ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('remote-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
|
<ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('remote-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section class="fit-bottom">
|
<section class="fit-bottom">
|
||||||
<header><fa icon="shield-alt"/> {{ $t('recaptcha-config') }}</header>
|
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
|
||||||
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
|
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
|
||||||
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
|
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
|
||||||
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
|
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
|
||||||
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
|
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header><fa icon="ghost"/> {{ $t('proxy-account-config') }}</header>
|
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
|
||||||
<ui-info>{{ $t('proxy-account-info') }}</ui-info>
|
<ui-info>{{ $t('proxy-account-info') }}</ui-info>
|
||||||
<ui-input v-model="proxyAccount"><span slot="prefix">@</span>{{ $t('proxy-account-username') }}<span slot="desc">{{ $t('proxy-account-username-desc') }}</span></ui-input>
|
<ui-input v-model="proxyAccount"><span slot="prefix">@</span>{{ $t('proxy-account-username') }}<span slot="desc">{{ $t('proxy-account-username-desc') }}</span></ui-input>
|
||||||
<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info>
|
<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
|
<header><fa :icon="farEnvelope"/> {{ $t('email-config') }}</header>
|
||||||
|
<ui-switch v-model="enableEmail">{{ $t('enable-email') }}<span slot="desc">{{ $t('email-config-info') }}</span></ui-switch>
|
||||||
|
<ui-input v-model="email" type="email" :disabled="!enableEmail">{{ $t('email') }}</ui-input>
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-input v-model="smtpHost" :disabled="!enableEmail">{{ $t('smtp-host') }}</ui-input>
|
||||||
|
<ui-input v-model="smtpPort" type="number" :disabled="!enableEmail">{{ $t('smtp-port') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input>
|
||||||
|
<ui-input v-model="smtpPass" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
|
<header>summaly Proxy</header>
|
||||||
|
<ui-input v-model="summalyProxy">URL</ui-input>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<header><fa :icon="faUserPlus"/> {{ $t('user-recommendation-config') }}</header>
|
||||||
|
<ui-switch v-model="enableExternalUserRecommendation">{{ $t('enable-external-user-recommendation') }}</ui-switch>
|
||||||
|
<ui-input v-model="externalUserRecommendationEngine" :disabled="!enableExternalUserRecommendation">{{ $t('external-user-recommendation-engine') }}<span slot="desc">{{ $t('external-user-recommendation-engine-desc') }}</span></ui-input>
|
||||||
|
<ui-input v-model="externalUserRecommendationTimeout" type="number" :disabled="!enableExternalUserRecommendation">{{ $t('external-user-recommendation-timeout') }}<span slot="suffix">ms</span><span slot="desc">{{ $t('external-user-recommendation-timeout-desc') }}</span></ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
@@ -59,7 +81,7 @@
|
|||||||
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
|
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
|
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
|
||||||
<ui-info>{{ $t('twitter-integration-info') }}</ui-info>
|
<ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info>
|
||||||
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
|
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
|
||||||
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
|
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
@@ -70,25 +92,40 @@
|
|||||||
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
|
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
|
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
|
||||||
<ui-info>{{ $t('github-integration-info') }}</ui-info>
|
<ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info>
|
||||||
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
|
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
|
||||||
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
|
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
|
||||||
|
<section>
|
||||||
|
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
|
||||||
|
<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info>
|
||||||
|
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
|
||||||
|
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
|
||||||
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
import { host } from '../../config';
|
import { url, host } from '../../config';
|
||||||
import { toUnicode } from 'punycode';
|
import { toUnicode } from 'punycode';
|
||||||
|
import { faHeadset, faShieldAlt, faGhost, faUserPlus } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('admin/views/instance.vue'),
|
i18n: i18n('admin/views/instance.vue'),
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
url,
|
||||||
host: toUnicode(host),
|
host: toUnicode(host),
|
||||||
maintainerName: null,
|
maintainerName: null,
|
||||||
maintainerEmail: null,
|
maintainerEmail: null,
|
||||||
@@ -111,8 +148,23 @@ export default Vue.extend({
|
|||||||
enableGithubIntegration: false,
|
enableGithubIntegration: false,
|
||||||
githubClientId: null,
|
githubClientId: null,
|
||||||
githubClientSecret: null,
|
githubClientSecret: null,
|
||||||
|
enableDiscordIntegration: false,
|
||||||
|
discordClientId: null,
|
||||||
|
discordClientSecret: null,
|
||||||
proxyAccount: null,
|
proxyAccount: null,
|
||||||
inviteCode: null,
|
inviteCode: null,
|
||||||
|
enableExternalUserRecommendation: false,
|
||||||
|
externalUserRecommendationEngine: null,
|
||||||
|
externalUserRecommendationTimeout: null,
|
||||||
|
summalyProxy: null,
|
||||||
|
enableEmail: false,
|
||||||
|
email: null,
|
||||||
|
smtpSecure: false,
|
||||||
|
smtpHost: null,
|
||||||
|
smtpPort: null,
|
||||||
|
smtpUser: null,
|
||||||
|
smtpPass: null,
|
||||||
|
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -138,6 +190,20 @@ export default Vue.extend({
|
|||||||
this.enableGithubIntegration = meta.enableGithubIntegration;
|
this.enableGithubIntegration = meta.enableGithubIntegration;
|
||||||
this.githubClientId = meta.githubClientId;
|
this.githubClientId = meta.githubClientId;
|
||||||
this.githubClientSecret = meta.githubClientSecret;
|
this.githubClientSecret = meta.githubClientSecret;
|
||||||
|
this.enableDiscordIntegration = meta.enableDiscordIntegration;
|
||||||
|
this.discordClientId = meta.discordClientId;
|
||||||
|
this.discordClientSecret = meta.discordClientSecret;
|
||||||
|
this.enableExternalUserRecommendation = meta.enableExternalUserRecommendation;
|
||||||
|
this.externalUserRecommendationEngine = meta.externalUserRecommendationEngine;
|
||||||
|
this.externalUserRecommendationTimeout = meta.externalUserRecommendationTimeout;
|
||||||
|
this.summalyProxy = meta.summalyProxy;
|
||||||
|
this.enableEmail = meta.enableEmail;
|
||||||
|
this.email = meta.email;
|
||||||
|
this.smtpSecure = meta.smtpSecure;
|
||||||
|
this.smtpHost = meta.smtpHost;
|
||||||
|
this.smtpPort = meta.smtpPort;
|
||||||
|
this.smtpUser = meta.smtpUser;
|
||||||
|
this.smtpPass = meta.smtpPass;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -146,7 +212,7 @@ export default Vue.extend({
|
|||||||
this.$root.api('admin/invite').then(x => {
|
this.$root.api('admin/invite').then(x => {
|
||||||
this.inviteCode = x.code;
|
this.inviteCode = x.code;
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
@@ -177,13 +243,27 @@ export default Vue.extend({
|
|||||||
enableGithubIntegration: this.enableGithubIntegration,
|
enableGithubIntegration: this.enableGithubIntegration,
|
||||||
githubClientId: this.githubClientId,
|
githubClientId: this.githubClientId,
|
||||||
githubClientSecret: this.githubClientSecret,
|
githubClientSecret: this.githubClientSecret,
|
||||||
|
enableDiscordIntegration: this.enableDiscordIntegration,
|
||||||
|
discordClientId: this.discordClientId,
|
||||||
|
discordClientSecret: this.discordClientSecret,
|
||||||
|
enableExternalUserRecommendation: this.enableExternalUserRecommendation,
|
||||||
|
externalUserRecommendationEngine: this.externalUserRecommendationEngine,
|
||||||
|
externalUserRecommendationTimeout: parseInt(this.externalUserRecommendationTimeout, 10),
|
||||||
|
summalyProxy: this.summalyProxy,
|
||||||
|
enableEmail: this.enableEmail,
|
||||||
|
email: this.email,
|
||||||
|
smtpSecure: this.smtpSecure,
|
||||||
|
smtpHost: this.smtpHost,
|
||||||
|
smtpPort: parseInt(this.smtpPort, 10),
|
||||||
|
smtpUser: this.smtpUser,
|
||||||
|
smtpPass: this.smtpPass
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('saved')
|
text: this.$t('saved')
|
||||||
});
|
});
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: e
|
text: e
|
||||||
});
|
});
|
||||||
|
|||||||
61
src/client/app/admin/views/moderators.vue
Normal file
61
src/client/app/admin/views/moderators.vue
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<div class="jnhmugbb">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa icon="plus"/> {{ $t('add-moderator.title') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input v-model="username" type="text">
|
||||||
|
<span slot="prefix">@</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import parseAcct from "../../../../misc/acct/parse";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/moderators.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
username: '',
|
||||||
|
adding: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async add() {
|
||||||
|
this.adding = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.username));
|
||||||
|
await this.$root.api('admin/moderators/add', { userId: user.id });
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('add-moderator.added')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.adding = false;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.jnhmugbb
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,42 +1,63 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
|
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title">{{ $t('verify-user') }}</div>
|
<div slot="title"><fa :icon="faTerminal"/> {{ $t('operation') }}</div>
|
||||||
<section class="fit-top">
|
<section class="fit-top">
|
||||||
<ui-input v-model="verifyUsername" type="text">
|
<ui-input v-model="target" type="text">
|
||||||
<span slot="prefix">@</span>
|
<span>{{ $t('username-or-userid') }}</span>
|
||||||
</ui-input>
|
|
||||||
<ui-button @click="verifyUser" :disabled="verifying">{{ $t('verify') }}</ui-button>
|
|
||||||
</section>
|
|
||||||
</ui-card>
|
|
||||||
|
|
||||||
<ui-card>
|
|
||||||
<div slot="title">{{ $t('unverify-user') }}</div>
|
|
||||||
<section class="fit-top">
|
|
||||||
<ui-input v-model="unverifyUsername" type="text">
|
|
||||||
<span slot="prefix">@</span>
|
|
||||||
</ui-input>
|
</ui-input>
|
||||||
|
<ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button>
|
||||||
|
<ui-horizon-group>
|
||||||
|
<ui-button @click="verifyUser" :disabled="verifying"><fa :icon="faCertificate"/> {{ $t('verify') }}</ui-button>
|
||||||
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
|
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
|
||||||
</section>
|
</ui-horizon-group>
|
||||||
</ui-card>
|
<ui-horizon-group>
|
||||||
|
<ui-button @click="suspendUser" :disabled="suspending"><fa :icon="faSnowflake"/> {{ $t('suspend') }}</ui-button>
|
||||||
<ui-card>
|
|
||||||
<div slot="title">{{ $t('suspend-user') }}</div>
|
|
||||||
<section class="fit-top">
|
|
||||||
<ui-input v-model="suspendUsername" type="text">
|
|
||||||
<span slot="prefix">@</span>
|
|
||||||
</ui-input>
|
|
||||||
<ui-button @click="suspendUser" :disabled="suspending">{{ $t('suspend') }}</ui-button>
|
|
||||||
</section>
|
|
||||||
</ui-card>
|
|
||||||
|
|
||||||
<ui-card>
|
|
||||||
<div slot="title">{{ $t('unsuspend-user') }}</div>
|
|
||||||
<section class="fit-top">
|
|
||||||
<ui-input v-model="unsuspendUsername" type="text">
|
|
||||||
<span slot="prefix">@</span>
|
|
||||||
</ui-input>
|
|
||||||
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
|
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-button @click="showUser"><fa :icon="faSearch"/> {{ $t('lookup') }}</ui-button>
|
||||||
|
<ui-textarea v-if="user" :value="user | json5" readonly tall style="margin-top:16px;"></ui-textarea>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="faUsers"/> {{ $t('users.title') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-select v-model="sort">
|
||||||
|
<span slot="label">{{ $t('users.sort.title') }}</span>
|
||||||
|
<option value="-createdAt">{{ $t('users.sort.createdAtAsc') }}</option>
|
||||||
|
<option value="+createdAt">{{ $t('users.sort.createdAtDesc') }}</option>
|
||||||
|
<option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option>
|
||||||
|
<option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option>
|
||||||
|
</ui-select>
|
||||||
|
<ui-select v-model="origin">
|
||||||
|
<span slot="label">{{ $t('users.origin.title') }}</span>
|
||||||
|
<option value="combined">{{ $t('users.origin.combined') }}</option>
|
||||||
|
<option value="local">{{ $t('users.origin.local') }}</option>
|
||||||
|
<option value="remote">{{ $t('users.origin.remote') }}</option>
|
||||||
|
</ui-select>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<div class="kofvwchc" v-for="user in users">
|
||||||
|
<div>
|
||||||
|
<a :href="user | userPage(null, true)">
|
||||||
|
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<header>
|
||||||
|
<b>{{ user | userName }}</b>
|
||||||
|
<span class="username">@{{ user | acct }}</span>
|
||||||
|
</header>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,34 +67,101 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
import parseAcct from "../../../../misc/acct/parse";
|
import parseAcct from "../../../../misc/acct/parse";
|
||||||
|
import { faCertificate, faUsers, faTerminal, faSearch, faKey } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('admin/views/users.vue'),
|
i18n: i18n('admin/views/users.vue'),
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
verifyUsername: null,
|
user: null,
|
||||||
|
target: null,
|
||||||
verifying: false,
|
verifying: false,
|
||||||
unverifyUsername: null,
|
|
||||||
unverifying: false,
|
unverifying: false,
|
||||||
suspendUsername: null,
|
|
||||||
suspending: false,
|
suspending: false,
|
||||||
unsuspendUsername: null,
|
unsuspending: false,
|
||||||
unsuspending: false
|
sort: '+createdAt',
|
||||||
|
origin: 'combined',
|
||||||
|
limit: 10,
|
||||||
|
offset: 0,
|
||||||
|
users: [],
|
||||||
|
existMore: false,
|
||||||
|
faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
sort() {
|
||||||
|
this.users = [];
|
||||||
|
this.offset = 0;
|
||||||
|
this.fetchUsers();
|
||||||
|
},
|
||||||
|
|
||||||
|
origin() {
|
||||||
|
this.users = [];
|
||||||
|
this.offset = 0;
|
||||||
|
this.fetchUsers();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.fetchUsers();
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
async fetchUser() {
|
||||||
|
try {
|
||||||
|
return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target });
|
||||||
|
} catch (e) {
|
||||||
|
if (e == 'user not found') {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: this.$t('user-not-found')
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async showUser() {
|
||||||
|
const user = await this.fetchUser();
|
||||||
|
this.$root.api('admin/show-user', { userId: user.id }).then(info => {
|
||||||
|
this.user = info;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
async resetPassword() {
|
||||||
|
const user = await this.fetchUser();
|
||||||
|
this.$root.api('admin/reset-password', { userId: user.id }).then(res => {
|
||||||
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('password-updated', { password: res.password })
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
async verifyUser() {
|
async verifyUser() {
|
||||||
this.verifying = true;
|
this.verifying = true;
|
||||||
|
|
||||||
const process = async () => {
|
const process = async () => {
|
||||||
const user = await this.$root.os.api('users/show', parseAcct(this.verifyUsername));
|
const user = await this.fetchUser();
|
||||||
await this.$root.os.api('admin/verify-user', { userId: user.id });
|
await this.$root.api('admin/verify-user', { userId: user.id });
|
||||||
//this.$root.os.apis.dialog({ text: this.$t('verified') });
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('verified')
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
await process().catch(e => {
|
await process().catch(e => {
|
||||||
//this.$root.os.apis.dialog({ text: `Failed: ${e}` });
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.verifying = false;
|
this.verifying = false;
|
||||||
@@ -83,13 +171,19 @@ export default Vue.extend({
|
|||||||
this.unverifying = true;
|
this.unverifying = true;
|
||||||
|
|
||||||
const process = async () => {
|
const process = async () => {
|
||||||
const user = await this.$root.os.api('users/show', parseAcct(this.unverifyUsername));
|
const user = await this.fetchUser();
|
||||||
await this.$root.os.api('admin/unverify-user', { userId: user.id });
|
await this.$root.api('admin/unverify-user', { userId: user.id });
|
||||||
//this.$root.os.apis.dialog({ text: this.$t('unverified') });
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('unverified')
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
await process().catch(e => {
|
await process().catch(e => {
|
||||||
//this.$root.os.apis.dialog({ text: `Failed: ${e}` });
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.unverifying = false;
|
this.unverifying = false;
|
||||||
@@ -99,13 +193,19 @@ export default Vue.extend({
|
|||||||
this.suspending = true;
|
this.suspending = true;
|
||||||
|
|
||||||
const process = async () => {
|
const process = async () => {
|
||||||
const user = await this.$root.os.api('users/show', parseAcct(this.suspendUsername));
|
const user = await this.fetchUser();
|
||||||
await this.$root.os.api('admin/suspend-user', { userId: user.id });
|
await this.$root.api('admin/suspend-user', { userId: user.id });
|
||||||
//this.$root.os.apis.dialog({ text: this.$t('suspended') });
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('suspended')
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
await process().catch(e => {
|
await process().catch(e => {
|
||||||
//this.$root.os.apis.dialog({ text: `Failed: ${e}` });
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.suspending = false;
|
this.suspending = false;
|
||||||
@@ -115,16 +215,40 @@ export default Vue.extend({
|
|||||||
this.unsuspending = true;
|
this.unsuspending = true;
|
||||||
|
|
||||||
const process = async () => {
|
const process = async () => {
|
||||||
const user = await this.$root.os.api('users/show', parseAcct(this.unsuspendUsername));
|
const user = await this.fetchUser();
|
||||||
await this.$root.os.api('admin/unsuspend-user', { userId: user.id });
|
await this.$root.api('admin/unsuspend-user', { userId: user.id });
|
||||||
//this.$root.os.apis.dialog({ text: this.$t('unsuspended') });
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('unsuspended')
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
await process().catch(e => {
|
await process().catch(e => {
|
||||||
//this.$root.os.apis.dialog({ text: `Failed: ${e}` });
|
this.$root.alert({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.unsuspending = false;
|
this.unsuspending = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
fetchUsers() {
|
||||||
|
this.$root.api('users', {
|
||||||
|
origin: this.origin,
|
||||||
|
sort: this.sort,
|
||||||
|
offset: this.offset,
|
||||||
|
limit: this.limit + 1
|
||||||
|
}).then(users => {
|
||||||
|
if (users.length == this.limit + 1) {
|
||||||
|
users.pop();
|
||||||
|
this.existMore = true;
|
||||||
|
} else {
|
||||||
|
this.existMore = false;
|
||||||
|
}
|
||||||
|
this.users = this.users.concat(users);
|
||||||
|
this.offset += this.limit;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -135,4 +259,24 @@ export default Vue.extend({
|
|||||||
@media (min-width 500px)
|
@media (min-width 500px)
|
||||||
padding 16px
|
padding 16px
|
||||||
|
|
||||||
|
.kofvwchc
|
||||||
|
display flex
|
||||||
|
padding 16px 0
|
||||||
|
border-top solid 1px var(--faceDivider)
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
> a
|
||||||
|
> .avatar
|
||||||
|
width 64px
|
||||||
|
height 64px
|
||||||
|
|
||||||
|
> div:last-child
|
||||||
|
flex 1
|
||||||
|
padding-left 16px
|
||||||
|
|
||||||
|
> header
|
||||||
|
> .username
|
||||||
|
margin-left 8px
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -123,29 +123,3 @@ pre
|
|||||||
|
|
||||||
[data-icon]
|
[data-icon]
|
||||||
display inline-block
|
display inline-block
|
||||||
|
|
||||||
.swal2-container
|
|
||||||
z-index 10000 !important
|
|
||||||
|
|
||||||
&.swal2-shown
|
|
||||||
background-color rgba(0, 0, 0, 0.5) !important
|
|
||||||
|
|
||||||
.swal2-popup
|
|
||||||
background var(--face) !important
|
|
||||||
|
|
||||||
.swal2-content
|
|
||||||
color var(--text) !important
|
|
||||||
|
|
||||||
.swal2-confirm
|
|
||||||
background-color var(--primary) !important
|
|
||||||
border-left-color var(--primary) !important
|
|
||||||
border-right-color var(--primary) !important
|
|
||||||
color var(--primaryForeground) !important
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background-image none !important
|
|
||||||
background-color var(--primaryDarken5) !important
|
|
||||||
|
|
||||||
&:active
|
|
||||||
background-image none !important
|
|
||||||
background-color var(--primaryDarken5) !important
|
|
||||||
|
|||||||
@@ -9,14 +9,11 @@ import './style.styl';
|
|||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
import * as config from '../config';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
*/
|
*/
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = `${config.name} | %i18n:common.application-authorization%`;
|
|
||||||
|
|
||||||
// Init router
|
// Init router
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
mode: 'history',
|
mode: 'history',
|
||||||
|
|||||||
@@ -41,8 +41,12 @@
|
|||||||
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
|
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
|
||||||
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
|
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
|
||||||
if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin';
|
if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin';
|
||||||
|
if (`${url.pathname}/`.startsWith('/test/')) app = 'test';
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
// Script version
|
||||||
|
const ver = localStorage.getItem('v') || VERSION;
|
||||||
|
|
||||||
//#region Detect the user language
|
//#region Detect the user language
|
||||||
let lang = null;
|
let lang = null;
|
||||||
|
|
||||||
@@ -66,11 +70,14 @@
|
|||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
let locale = localStorage.getItem('locale');
|
let locale = localStorage.getItem('locale');
|
||||||
if (locale == null) {
|
const localeKey = localStorage.getItem('localeKey');
|
||||||
const locale = await fetch(`/assets/locales/${lang}.json`)
|
|
||||||
|
if (locale == null || localeKey != `${ver}.${lang}`) {
|
||||||
|
const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`)
|
||||||
.then(response => response.json());
|
.then(response => response.json());
|
||||||
|
|
||||||
localStorage.setItem('locale', JSON.stringify(locale));
|
localStorage.setItem('locale', JSON.stringify(locale));
|
||||||
|
localStorage.setItem('localeKey', `${ver}.${lang}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Detect the user agent
|
// Detect the user agent
|
||||||
@@ -98,9 +105,6 @@
|
|||||||
app = isMobile ? 'mobile' : 'desktop';
|
app = isMobile ? 'mobile' : 'desktop';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script version
|
|
||||||
const ver = localStorage.getItem('v') || VERSION;
|
|
||||||
|
|
||||||
// Get salt query
|
// Get salt query
|
||||||
const salt = localStorage.getItem('salt')
|
const salt = localStorage.getItem('salt')
|
||||||
? `?salt=${localStorage.getItem('salt')}`
|
? `?salt=${localStorage.getItem('salt')}`
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export default function<T extends object>(data: {
|
|||||||
|
|
||||||
this.bakeProps();
|
this.bakeProps();
|
||||||
|
|
||||||
(this as any).api('i/update_widget', {
|
this.$root.api('i/update_widget', {
|
||||||
id: this.id,
|
id: this.id,
|
||||||
data: this.props
|
data: this.props
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default async function($root: any, force = false, silent = false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
$root.$dialog({
|
$root.alert({
|
||||||
title: $root.$t('@.update-available-title'),
|
title: $root.$t('@.update-available-title'),
|
||||||
text: $root.$t('@.update-available', { newer, current })
|
text: $root.$t('@.update-available', { newer, current })
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,12 +4,9 @@ export default ($root: any) => {
|
|||||||
require('fuckadblock');
|
require('fuckadblock');
|
||||||
|
|
||||||
function adBlockDetected() {
|
function adBlockDetected() {
|
||||||
$root.$dialog({
|
$root.alert({
|
||||||
title: $root.$t('@.adblock.detected'),
|
title: $root.$t('@.adblock.detected'),
|
||||||
text: $root.$t('@.adblock.warning'),
|
text: $root.$t('@.adblock.warning')
|
||||||
actins: [{
|
|
||||||
text: 'OK'
|
|
||||||
}]
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const faces = [
|
|||||||
'(=^・・^=)',
|
'(=^・・^=)',
|
||||||
'v(\'ω\')v',
|
'v(\'ω\')v',
|
||||||
'🐡( \'-\' 🐡 )フグパンチ!!!!',
|
'🐡( \'-\' 🐡 )フグパンチ!!!!',
|
||||||
'🖕(´・_・`)🖕',
|
'✌️(´・_・`)✌️',
|
||||||
'(。>﹏<。)',
|
'(。>﹏<。)',
|
||||||
'(Δ・x・Δ)'
|
'(Δ・x・Δ)'
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import parse from '../../../../mfm/parse';
|
import parse from '../../../../mfm/parse';
|
||||||
import { sum } from '../../../../prelude/array';
|
import { sum, unique } from '../../../../prelude/array';
|
||||||
import shouldMuteNote from './should-mute-note';
|
import shouldMuteNote from './should-mute-note';
|
||||||
import MkNoteMenu from '../views/components/note-menu.vue';
|
import MkNoteMenu from '../views/components/note-menu.vue';
|
||||||
import MkReactionPicker from '../views/components/reaction-picker.vue';
|
import MkReactionPicker from '../views/components/reaction-picker.vue';
|
||||||
import Ok from '../views/components/ok.vue';
|
|
||||||
|
|
||||||
function focus(el, fn) {
|
function focus(el, fn) {
|
||||||
const target = fn(el);
|
const target = fn(el);
|
||||||
@@ -79,9 +78,10 @@ export default (opts: Opts = {}) => ({
|
|||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
if (this.appearNote.text) {
|
if (this.appearNote.text) {
|
||||||
const ast = parse(this.appearNote.text);
|
const ast = parse(this.appearNote.text);
|
||||||
return ast
|
// TODO: 再帰的にURL要素がないか調べる
|
||||||
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
|
return unique(ast
|
||||||
.map(t => t.url);
|
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.props.silent))
|
||||||
|
.map(t => t.props.url));
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,10 @@ export default (opts: Opts = {}) => ({
|
|||||||
this.$root.api('notes/favorites/create', {
|
this.$root.api('notes/favorites/create', {
|
||||||
noteId: this.appearNote.id
|
noteId: this.appearNote.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$root.new(Ok);
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
splash: true
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export default function(me, settings, note) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isMyNote && note.text && settings.mutedWords.some(q => !q.some(word => !note.text.includes(word)))) {
|
if (!isMyNote && note.text && settings.mutedWords.some(q => q.length > 0 && !q.some(word => !note.text.includes(word)))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
197
src/client/app/common/views/components/alert.vue
Normal file
197
src/client/app/common/views/components/alert.vue
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<template>
|
||||||
|
<div class="felqjxyj" :class="{ splash }">
|
||||||
|
<div class="bg" ref="bg" @click="onBgClick"></div>
|
||||||
|
<div class="main" ref="main">
|
||||||
|
<div class="icon" :class="type"><fa :icon="icon"/></div>
|
||||||
|
<header v-if="title" v-html="title"></header>
|
||||||
|
<div class="body" v-if="text" v-html="text"></div>
|
||||||
|
<ui-horizon-group no-grow class="buttons fit-bottom" v-if="!splash">
|
||||||
|
<ui-button @click="ok" primary autofocus>OK</ui-button>
|
||||||
|
<ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as anime from 'animejs';
|
||||||
|
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: 'info'
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
|
showCancelButton: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
splash: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
icon(): any {
|
||||||
|
switch (this.type) {
|
||||||
|
case 'success': return 'check';
|
||||||
|
case 'error': return faTimesCircle;
|
||||||
|
case 'warning': return 'exclamation-triangle';
|
||||||
|
case 'info': return 'info-circle';
|
||||||
|
case 'question': return faQuestionCircle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
(this.$refs.bg as any).style.pointerEvents = 'auto';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.bg,
|
||||||
|
opacity: 1,
|
||||||
|
duration: 100,
|
||||||
|
easing: 'linear'
|
||||||
|
});
|
||||||
|
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.main,
|
||||||
|
opacity: 1,
|
||||||
|
scale: [1.2, 1],
|
||||||
|
duration: 300,
|
||||||
|
easing: [0, 0.5, 0.5, 1]
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.splash) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.close();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
ok() {
|
||||||
|
this.$emit('ok');
|
||||||
|
this.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
cancel() {
|
||||||
|
this.$emit('cancel');
|
||||||
|
this.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
close() {
|
||||||
|
(this.$refs.bg as any).style.pointerEvents = 'none';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.bg,
|
||||||
|
opacity: 0,
|
||||||
|
duration: 300,
|
||||||
|
easing: 'linear'
|
||||||
|
});
|
||||||
|
|
||||||
|
(this.$refs.main as any).style.pointerEvents = 'none';
|
||||||
|
anime({
|
||||||
|
targets: this.$refs.main,
|
||||||
|
opacity: 0,
|
||||||
|
scale: 0.8,
|
||||||
|
duration: 300,
|
||||||
|
easing: [0, 0.5, 0.5, 1],
|
||||||
|
complete: () => this.destroyDom()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
onBgClick() {
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.felqjxyj
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
justify-content center
|
||||||
|
position fixed
|
||||||
|
z-index 30000
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
&.splash
|
||||||
|
&, *
|
||||||
|
pointer-events none !important
|
||||||
|
|
||||||
|
> .main
|
||||||
|
min-width 0
|
||||||
|
width initial
|
||||||
|
|
||||||
|
> .bg
|
||||||
|
display block
|
||||||
|
position fixed
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
background rgba(#000, 0.7)
|
||||||
|
opacity 0
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
> .main
|
||||||
|
display block
|
||||||
|
position fixed
|
||||||
|
margin auto
|
||||||
|
padding 32px
|
||||||
|
min-width 320px
|
||||||
|
max-width 480px
|
||||||
|
width calc(100% - 32px)
|
||||||
|
text-align center
|
||||||
|
background var(--face)
|
||||||
|
border-radius 8px
|
||||||
|
color var(--faceText)
|
||||||
|
opacity 0
|
||||||
|
|
||||||
|
> .icon
|
||||||
|
font-size 32px
|
||||||
|
|
||||||
|
&.success
|
||||||
|
color #37ec92
|
||||||
|
|
||||||
|
&.error
|
||||||
|
color #ec4137
|
||||||
|
|
||||||
|
&.warning
|
||||||
|
color #ecb637
|
||||||
|
|
||||||
|
> *
|
||||||
|
display block
|
||||||
|
margin 0 auto
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin 16px 0 8px 0
|
||||||
|
font-weight bold
|
||||||
|
font-size 20px
|
||||||
|
|
||||||
|
& + .body
|
||||||
|
margin-top 8px
|
||||||
|
|
||||||
|
> .body
|
||||||
|
margin 16px 0
|
||||||
|
|
||||||
|
> .buttons
|
||||||
|
margin-top 16px
|
||||||
|
|
||||||
|
</style>
|
||||||
64
src/client/app/common/views/components/discord-setting.vue
Normal file
64
src/client/app/common/views/components/discord-setting.vue
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<template>
|
||||||
|
<div class="mk-discord-setting">
|
||||||
|
<p>{{ $t('description') }}</p>
|
||||||
|
<p class="account" v-if="$store.state.i.discord" :title="`Discord ID: ${$store.state.i.discord.id}`">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
|
||||||
|
<p>
|
||||||
|
<a :href="`${apiUrl}/connect/discord`" target="_blank" @click.prevent="connect">{{ $store.state.i.discord ? this.$t('reconnect') : this.$t('connect') }}</a>
|
||||||
|
<span v-if="$store.state.i.discord"> or </span>
|
||||||
|
<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
|
||||||
|
</p>
|
||||||
|
<p class="id" v-if="$store.state.i.discord">Discord ID: {{ $store.state.i.discord.id }}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import { apiUrl } from '../../../config';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/discord-setting.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: null,
|
||||||
|
apiUrl
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$watch('$store.state.i', () => {
|
||||||
|
if (this.$store.state.i.discord && this.form)
|
||||||
|
this.form.close();
|
||||||
|
}, {
|
||||||
|
deep: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
connect() {
|
||||||
|
this.form = window.open(apiUrl + '/connect/discord',
|
||||||
|
'discord_connect_window',
|
||||||
|
'height=570, width=520');
|
||||||
|
},
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
window.open(apiUrl + '/disconnect/discord',
|
||||||
|
'discord_disconnect_window',
|
||||||
|
'height=570, width=520');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.mk-discord-setting
|
||||||
|
.account
|
||||||
|
border solid 1px #e1e8ed
|
||||||
|
border-radius 4px
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
a
|
||||||
|
font-weight bold
|
||||||
|
color inherit
|
||||||
|
|
||||||
|
.id
|
||||||
|
color #8899a6
|
||||||
|
</style>
|
||||||
@@ -37,6 +37,8 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import { lib } from 'emojilib';
|
import { lib } from 'emojilib';
|
||||||
|
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faHeart, faFlag } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/emoji-picker.vue'),
|
i18n: i18n('common/views/components/emoji-picker.vue'),
|
||||||
@@ -48,7 +50,7 @@ export default Vue.extend({
|
|||||||
categories: [{
|
categories: [{
|
||||||
ref: 'customEmojiSection',
|
ref: 'customEmojiSection',
|
||||||
text: this.$t('custom-emoji'),
|
text: this.$t('custom-emoji'),
|
||||||
icon: ['fas', 'asterisk'],
|
icon: faAsterisk,
|
||||||
isActive: true
|
isActive: true
|
||||||
}, {
|
}, {
|
||||||
name: 'people',
|
name: 'people',
|
||||||
@@ -60,43 +62,43 @@ export default Vue.extend({
|
|||||||
name: 'animals_and_nature',
|
name: 'animals_and_nature',
|
||||||
ref: 'animalsAndNatureSection',
|
ref: 'animalsAndNatureSection',
|
||||||
text: this.$t('animals-and-nature'),
|
text: this.$t('animals-and-nature'),
|
||||||
icon: ['fas', 'leaf'],
|
icon: faLeaf,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'food_and_drink',
|
name: 'food_and_drink',
|
||||||
ref: 'foodAndDrinkSection',
|
ref: 'foodAndDrinkSection',
|
||||||
text: this.$t('food-and-drink'),
|
text: this.$t('food-and-drink'),
|
||||||
icon: ['fas', 'utensils'],
|
icon: faUtensils,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'activity',
|
name: 'activity',
|
||||||
ref: 'activitySection',
|
ref: 'activitySection',
|
||||||
text: this.$t('activity'),
|
text: this.$t('activity'),
|
||||||
icon: ['fas', 'futbol'],
|
icon: faFutbol,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'travel_and_places',
|
name: 'travel_and_places',
|
||||||
ref: 'travelAndPlacesSection',
|
ref: 'travelAndPlacesSection',
|
||||||
text: this.$t('travel-and-places'),
|
text: this.$t('travel-and-places'),
|
||||||
icon: ['fas', 'city'],
|
icon: faCity,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'objects',
|
name: 'objects',
|
||||||
ref: 'objectsSection',
|
ref: 'objectsSection',
|
||||||
text: this.$t('objects'),
|
text: this.$t('objects'),
|
||||||
icon: ['fas', 'poo-storm'],
|
icon: faDice,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'symbols',
|
name: 'symbols',
|
||||||
ref: 'symbolsSection',
|
ref: 'symbolsSection',
|
||||||
text: this.$t('symbols'),
|
text: this.$t('symbols'),
|
||||||
icon: ['far', 'heart'],
|
icon: faHeart,
|
||||||
isActive: false
|
isActive: false
|
||||||
}, {
|
}, {
|
||||||
name: 'flags',
|
name: 'flags',
|
||||||
ref: 'flagsSection',
|
ref: 'flagsSection',
|
||||||
text: this.$t('flags'),
|
text: this.$t('flags'),
|
||||||
icon: ['far', 'flag'],
|
icon: faFlag,
|
||||||
isActive: false
|
isActive: false
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|||||||
184
src/client/app/common/views/components/follow-button.vue
Normal file
184
src/client/app/common/views/components/follow-button.vue
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<button class="wfliddvnhxvyusikowhxozkyxyenqxqr"
|
||||||
|
:class="{ wait, block, mini, active: isFollowing || hasPendingFollowRequestFromYou }"
|
||||||
|
@click="onClick"
|
||||||
|
:disabled="wait"
|
||||||
|
>
|
||||||
|
<template v-if="!wait">
|
||||||
|
<fa :icon="iconAndText[0]"/> <template v-if="!mini">{{ iconAndText[1] }}</template>
|
||||||
|
</template>
|
||||||
|
<template v-else><fa icon="spinner" pulse fixed-width/></template>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/follow-button.vue'),
|
||||||
|
|
||||||
|
props: {
|
||||||
|
user: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
mini: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isFollowing: this.user.isFollowing,
|
||||||
|
hasPendingFollowRequestFromYou: this.user.hasPendingFollowRequestFromYou,
|
||||||
|
wait: false,
|
||||||
|
connection: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
iconAndText(): any[] {
|
||||||
|
return (
|
||||||
|
(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] :
|
||||||
|
(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['hourglass-start', this.$t('follow-processing')] :
|
||||||
|
(this.isFollowing) ? ['minus', this.$t('following')] :
|
||||||
|
(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] :
|
||||||
|
(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] :
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.connection = this.$root.stream.useSharedConnection('main');
|
||||||
|
|
||||||
|
this.connection.on('follow', this.onFollowChange);
|
||||||
|
this.connection.on('unfollow', this.onFollowChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.dispose();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onFollowChange(user) {
|
||||||
|
if (user.id == this.user.id) {
|
||||||
|
this.isFollowing = user.isFollowing;
|
||||||
|
this.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async onClick() {
|
||||||
|
this.wait = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (this.isFollowing) {
|
||||||
|
await this.$root.api('following/delete', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.hasPendingFollowRequestFromYou) {
|
||||||
|
await this.$root.api('following/requests/cancel', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
} else if (this.user.isLocked) {
|
||||||
|
await this.$root.api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
this.hasPendingFollowRequestFromYou = true;
|
||||||
|
} else {
|
||||||
|
await this.$root.api('following/create', {
|
||||||
|
userId: this.user.id
|
||||||
|
});
|
||||||
|
this.hasPendingFollowRequestFromYou = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
} finally {
|
||||||
|
this.wait = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.wfliddvnhxvyusikowhxozkyxyenqxqr
|
||||||
|
display block
|
||||||
|
user-select none
|
||||||
|
cursor pointer
|
||||||
|
padding 0 16px
|
||||||
|
margin 0
|
||||||
|
min-width 100px
|
||||||
|
line-height 36px
|
||||||
|
font-size 14px
|
||||||
|
font-weight bold
|
||||||
|
color var(--primary)
|
||||||
|
background transparent
|
||||||
|
outline none
|
||||||
|
border solid 1px var(--primary)
|
||||||
|
border-radius 36px
|
||||||
|
|
||||||
|
&.mini
|
||||||
|
padding 0
|
||||||
|
min-width 0
|
||||||
|
width 32px
|
||||||
|
height 32px
|
||||||
|
font-size 16px
|
||||||
|
border-radius 4px
|
||||||
|
line-height 32px
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
&:after
|
||||||
|
border-radius 8px
|
||||||
|
|
||||||
|
&.block
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
&:focus
|
||||||
|
&:after
|
||||||
|
content ""
|
||||||
|
pointer-events none
|
||||||
|
position absolute
|
||||||
|
top -5px
|
||||||
|
right -5px
|
||||||
|
bottom -5px
|
||||||
|
left -5px
|
||||||
|
border 2px solid var(--primaryAlpha03)
|
||||||
|
border-radius 36px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background var(--primaryAlpha01)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background var(--primaryAlpha02)
|
||||||
|
|
||||||
|
&.active
|
||||||
|
color var(--primaryForeground)
|
||||||
|
background var(--primary)
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
background var(--primaryLighten10)
|
||||||
|
border-color var(--primaryLighten10)
|
||||||
|
|
||||||
|
&:active
|
||||||
|
background var(--primaryDarken10)
|
||||||
|
border-color var(--primaryDarken10)
|
||||||
|
|
||||||
|
&.wait
|
||||||
|
cursor wait !important
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
*
|
||||||
|
pointer-events none
|
||||||
|
|
||||||
|
</style>
|
||||||
26
src/client/app/common/views/components/formula-core.vue
Normal file
26
src/client/app/common/views/components/formula-core.vue
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<template>
|
||||||
|
<span v-html="compiledFormula"></span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as katex from 'katex';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
formula: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
compiledFormula(): any {
|
||||||
|
return katex.renderToString(this.formula);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import "../../../../../../node_modules/katex/dist/katex.min.css";
|
||||||
|
</style>
|
||||||
20
src/client/app/common/views/components/formula.vue
Normal file
20
src/client/app/common/views/components/formula.vue
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<x-formula :formula="formula"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
XFormula: () => import('./formula-core.vue').then(m => m.default)
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
formula: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -50,15 +50,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="player" v-if="game.isEnded">
|
<div class="player" v-if="game.isEnded">
|
||||||
<div>
|
|
||||||
<button @click="logPos = 0" :disabled="logPos == 0"><fa icon="angle-double-left"/></button>
|
|
||||||
<button @click="logPos--" :disabled="logPos == 0"><fa icon="angle-left"/></button>
|
|
||||||
</div>
|
|
||||||
<span>{{ logPos }} / {{ logs.length }}</span>
|
<span>{{ logPos }} / {{ logs.length }}</span>
|
||||||
<div>
|
<ui-horizon-group>
|
||||||
<button @click="logPos++" :disabled="logPos == logs.length"><fa icon="angle-right"/></button>
|
<ui-button @click="logPos = 0" :disabled="logPos == 0"><fa :icon="faAngleDoubleLeft"/></ui-button>
|
||||||
<button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa icon="angle-double-right"/></button>
|
<ui-button @click="logPos--" :disabled="logPos == 0"><fa :icon="faAngleLeft"/></ui-button>
|
||||||
</div>
|
<ui-button @click="logPos++" :disabled="logPos == logs.length"><fa :icon="faAngleRight"/></ui-button>
|
||||||
|
<ui-button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa :icon="faAngleDoubleRight"/></ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="info">
|
<div class="info">
|
||||||
@@ -75,6 +73,7 @@ import i18n from '../../../../../i18n';
|
|||||||
import * as CRC32 from 'crc-32';
|
import * as CRC32 from 'crc-32';
|
||||||
import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
||||||
import { url } from '../../../../../config';
|
import { url } from '../../../../../config';
|
||||||
|
import { faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/games/reversi/reversi.game.vue'),
|
i18n: i18n('common/views/components/games/reversi/reversi.game.vue'),
|
||||||
@@ -99,7 +98,8 @@ export default Vue.extend({
|
|||||||
o: null as Reversi,
|
o: null as Reversi,
|
||||||
logs: [],
|
logs: [],
|
||||||
logPos: 0,
|
logPos: 0,
|
||||||
pollingClock: null
|
pollingClock: null,
|
||||||
|
faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -449,7 +449,9 @@ export default Vue.extend({
|
|||||||
padding-bottom 16px
|
padding-bottom 16px
|
||||||
|
|
||||||
> .player
|
> .player
|
||||||
padding-bottom 32px
|
padding 0 16px 32px 16px
|
||||||
|
margin 0 auto
|
||||||
|
max-width 500px
|
||||||
|
|
||||||
> span
|
> span
|
||||||
display inline-block
|
display inline-block
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
<div v-for="(x, i) in game.settings.map.join('')"
|
<div v-for="(x, i) in game.settings.map.join('')"
|
||||||
:data-none="x == ' '"
|
:data-none="x == ' '"
|
||||||
@click="onPixelClick(i, x)">
|
@click="onPixelClick(i, x)">
|
||||||
<template v-if="x == 'b'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template>
|
<fa v-if="x == 'b'" :icon="fasCircle"/>
|
||||||
<template v-if="x == 'w'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template>
|
<fa v-if="x == 'w'" :icon="farCircle"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -117,6 +117,8 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../../../i18n';
|
import i18n from '../../../../../i18n';
|
||||||
import * as maps from '../../../../../../../games/reversi/maps';
|
import * as maps from '../../../../../../../games/reversi/maps';
|
||||||
|
import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/games/reversi/reversi.room.vue'),
|
i18n: i18n('common/views/components/games/reversi/reversi.room.vue'),
|
||||||
@@ -129,7 +131,8 @@ export default Vue.extend({
|
|||||||
mapName: maps.eighteight.name,
|
mapName: maps.eighteight.name,
|
||||||
maps: maps,
|
maps: maps,
|
||||||
form: null,
|
form: null,
|
||||||
messages: []
|
messages: [],
|
||||||
|
fasCircle, farCircle
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-github-setting">
|
<div class="mk-github-setting">
|
||||||
<p>{{ $t('description') }}<a :href="`${docsUrl}/link-to-github`" target="_blank">{{ $t('detail') }}</a></p>
|
<p>{{ $t('description') }}</p>
|
||||||
<p class="account" v-if="$store.state.i.github" :title="`GitHub ID: ${$store.state.i.github.id}`">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
|
<p class="account" v-if="$store.state.i.github" :title="`GitHub ID: ${$store.state.i.github.id}`">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
|
||||||
<p>
|
<p>
|
||||||
<a :href="`${apiUrl}/connect/github`" target="_blank" @click.prevent="connect">{{ $store.state.i.github ? this.$t('reconnect') : this.$t('connect') }}</a>
|
<a :href="`${apiUrl}/connect/github`" target="_blank" @click.prevent="connect">{{ $store.state.i.github ? this.$t('reconnect') : this.$t('connect') }}</a>
|
||||||
@@ -14,15 +14,14 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import { apiUrl, docsUrl } from '../../../config';
|
import { apiUrl } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/github-setting.vue'),
|
i18n: i18n('common/views/components/github-setting.vue'),
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: null,
|
form: null,
|
||||||
apiUrl,
|
apiUrl
|
||||||
docsUrl
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@@ -22,7 +22,10 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
search() {
|
search() {
|
||||||
window.open(`https://www.google.com/?#q=${this.query}`, '_blank');
|
const engine = this.$store.state.settings.webSearchEngine ||
|
||||||
|
'https://www.google.com/?#q={{query}}';
|
||||||
|
const url = engine.replace('{{query}}', this.query)
|
||||||
|
window.open(url, '_blank');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -65,5 +65,6 @@ export default Vue.extend({
|
|||||||
max-height 100%
|
max-height 100%
|
||||||
margin auto
|
margin auto
|
||||||
cursor zoom-out
|
cursor zoom-out
|
||||||
|
image-orientation from-image
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
import muteAndBlock from './mute-and-block.vue';
|
import followButton from './follow-button.vue';
|
||||||
import error from './error.vue';
|
import error from './error.vue';
|
||||||
import apiSettings from './api-settings.vue';
|
|
||||||
import passwordSettings from './password-settings.vue';
|
|
||||||
import driveSettings from './drive-settings.vue';
|
|
||||||
import profileEditor from './profile-editor.vue';
|
|
||||||
import noteSkeleton from './note-skeleton.vue';
|
import noteSkeleton from './note-skeleton.vue';
|
||||||
import theme from './theme.vue';
|
|
||||||
import instance from './instance.vue';
|
import instance from './instance.vue';
|
||||||
import cwButton from './cw-button.vue';
|
import cwButton from './cw-button.vue';
|
||||||
import tagCloud from './tag-cloud.vue';
|
import tagCloud from './tag-cloud.vue';
|
||||||
@@ -15,26 +10,24 @@ import trends from './trends.vue';
|
|||||||
import analogClock from './analog-clock.vue';
|
import analogClock from './analog-clock.vue';
|
||||||
import menu from './menu.vue';
|
import menu from './menu.vue';
|
||||||
import noteHeader from './note-header.vue';
|
import noteHeader from './note-header.vue';
|
||||||
|
import renote from './renote.vue';
|
||||||
import signin from './signin.vue';
|
import signin from './signin.vue';
|
||||||
import signup from './signup.vue';
|
import signup from './signup.vue';
|
||||||
import forkit from './forkit.vue';
|
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 misskeyFlavoredMarkdown from './misskey-flavored-markdown';
|
import misskeyFlavoredMarkdown from './misskey-flavored-markdown.vue';
|
||||||
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';
|
||||||
import reactionsViewer from './reactions-viewer.vue';
|
import reactionsViewer from './reactions-viewer.vue';
|
||||||
import time from './time.vue';
|
import time from './time.vue';
|
||||||
import timer from './timer.vue';
|
|
||||||
import mediaList from './media-list.vue';
|
import mediaList from './media-list.vue';
|
||||||
import uploader from './uploader.vue';
|
import uploader from './uploader.vue';
|
||||||
import streamIndicator from './stream-indicator.vue';
|
import streamIndicator from './stream-indicator.vue';
|
||||||
import ellipsis from './ellipsis.vue';
|
import ellipsis from './ellipsis.vue';
|
||||||
import urlPreview from './url-preview.vue';
|
import urlPreview from './url-preview.vue';
|
||||||
import twitterSetting from './twitter-setting.vue';
|
|
||||||
import githubSetting from './github-setting.vue';
|
|
||||||
import fileTypeIcon from './file-type-icon.vue';
|
import fileTypeIcon from './file-type-icon.vue';
|
||||||
import emoji from './emoji.vue';
|
import emoji from './emoji.vue';
|
||||||
import welcomeTimeline from './welcome-timeline.vue';
|
import welcomeTimeline from './welcome-timeline.vue';
|
||||||
@@ -51,14 +44,9 @@ import uiInfo from './ui/info.vue';
|
|||||||
import formButton from './ui/form/button.vue';
|
import formButton from './ui/form/button.vue';
|
||||||
import formRadio from './ui/form/radio.vue';
|
import formRadio from './ui/form/radio.vue';
|
||||||
|
|
||||||
Vue.component('mk-mute-and-block', muteAndBlock);
|
Vue.component('mk-follow-button', followButton);
|
||||||
Vue.component('mk-error', error);
|
Vue.component('mk-error', error);
|
||||||
Vue.component('mk-api-settings', apiSettings);
|
|
||||||
Vue.component('mk-password-settings', passwordSettings);
|
|
||||||
Vue.component('mk-drive-settings', driveSettings);
|
|
||||||
Vue.component('mk-profile-editor', profileEditor);
|
|
||||||
Vue.component('mk-note-skeleton', noteSkeleton);
|
Vue.component('mk-note-skeleton', noteSkeleton);
|
||||||
Vue.component('mk-theme', theme);
|
|
||||||
Vue.component('mk-instance', instance);
|
Vue.component('mk-instance', instance);
|
||||||
Vue.component('mk-cw-button', cwButton);
|
Vue.component('mk-cw-button', cwButton);
|
||||||
Vue.component('mk-tag-cloud', tagCloud);
|
Vue.component('mk-tag-cloud', tagCloud);
|
||||||
@@ -66,6 +54,7 @@ Vue.component('mk-trends', trends);
|
|||||||
Vue.component('mk-analog-clock', analogClock);
|
Vue.component('mk-analog-clock', analogClock);
|
||||||
Vue.component('mk-menu', menu);
|
Vue.component('mk-menu', menu);
|
||||||
Vue.component('mk-note-header', noteHeader);
|
Vue.component('mk-note-header', noteHeader);
|
||||||
|
Vue.component('mk-renote', renote);
|
||||||
Vue.component('mk-signin', signin);
|
Vue.component('mk-signin', signin);
|
||||||
Vue.component('mk-signup', signup);
|
Vue.component('mk-signup', signup);
|
||||||
Vue.component('mk-forkit', forkit);
|
Vue.component('mk-forkit', forkit);
|
||||||
@@ -78,14 +67,11 @@ Vue.component('mk-poll-editor', pollEditor);
|
|||||||
Vue.component('mk-reaction-icon', reactionIcon);
|
Vue.component('mk-reaction-icon', reactionIcon);
|
||||||
Vue.component('mk-reactions-viewer', reactionsViewer);
|
Vue.component('mk-reactions-viewer', reactionsViewer);
|
||||||
Vue.component('mk-time', time);
|
Vue.component('mk-time', time);
|
||||||
Vue.component('mk-timer', timer);
|
|
||||||
Vue.component('mk-media-list', mediaList);
|
Vue.component('mk-media-list', mediaList);
|
||||||
Vue.component('mk-uploader', uploader);
|
Vue.component('mk-uploader', uploader);
|
||||||
Vue.component('mk-stream-indicator', streamIndicator);
|
Vue.component('mk-stream-indicator', streamIndicator);
|
||||||
Vue.component('mk-ellipsis', ellipsis);
|
Vue.component('mk-ellipsis', ellipsis);
|
||||||
Vue.component('mk-url-preview', urlPreview);
|
Vue.component('mk-url-preview', urlPreview);
|
||||||
Vue.component('mk-twitter-setting', twitterSetting);
|
|
||||||
Vue.component('mk-github-setting', githubSetting);
|
|
||||||
Vue.component('mk-file-type-icon', fileTypeIcon);
|
Vue.component('mk-file-type-icon', fileTypeIcon);
|
||||||
Vue.component('mk-emoji', emoji);
|
Vue.component('mk-emoji', emoji);
|
||||||
Vue.component('mk-welcome-timeline', welcomeTimeline);
|
Vue.component('mk-welcome-timeline', welcomeTimeline);
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ export default Vue.extend({
|
|||||||
padding 8px 16px
|
padding 8px 16px
|
||||||
width 100%
|
width 100%
|
||||||
color var(--popupFg)
|
color var(--popupFg)
|
||||||
|
white-space nowrap
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color var(--primaryForeground)
|
color var(--primaryForeground)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
|
import { unique } from '../../../../../prelude/array';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/messaging-room.message.vue'),
|
i18n: i18n('common/views/components/messaging-room.message.vue'),
|
||||||
@@ -49,9 +50,9 @@ export default Vue.extend({
|
|||||||
urls(): string[] {
|
urls(): string[] {
|
||||||
if (this.message.text) {
|
if (this.message.text) {
|
||||||
const ast = parse(this.message.text);
|
const ast = parse(this.message.text);
|
||||||
return ast
|
return unique(ast
|
||||||
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
|
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.silent))
|
||||||
.map(t => t.url);
|
.map(t => t.props.url));
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<p class="empty" v-if="!init && messages.length == 0"><fa icon="info-circle"/>{{ $t('empty') }}</p>
|
<p class="empty" v-if="!init && messages.length == 0"><fa icon="info-circle"/>{{ $t('empty') }}</p>
|
||||||
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages"><fa icon="flag"/>{{ $t('no-history') }}</p>
|
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages"><fa icon="flag"/>{{ $t('no-history') }}</p>
|
||||||
<button class="more" :class="{ fetching: fetchingMoreMessages }" v-if="existMoreMessages" @click="fetchMoreMessages" :disabled="fetchingMoreMessages">
|
<button class="more" :class="{ fetching: fetchingMoreMessages }" v-if="existMoreMessages" @click="fetchMoreMessages" :disabled="fetchingMoreMessages">
|
||||||
<template v-if="fetchingMoreMessages"><fa icon="spinner .pulse" fixed-width/></template>{{ fetchingMoreMessages ? $t('@.loading') : $t('@.load-more') }}
|
<template v-if="fetchingMoreMessages"><fa icon="spinner" pulse fixed-width/></template>{{ fetchingMoreMessages ? $t('@.loading') : $t('@.load-more') }}
|
||||||
</button>
|
</button>
|
||||||
<template v-for="(message, i) in _messages">
|
<template v-for="(message, i) in _messages">
|
||||||
<x-message :message="message" :key="message.id"/>
|
<x-message :message="message" :key="message.id"/>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<div class="new-message" v-show="showIndicator">
|
<div class="new-message" v-show="showIndicator">
|
||||||
<button @click="onIndicatorClick"><i><fa icon="arrow-circle-down"/></i>{{ $t('new-message') }}</button>
|
<button @click="onIndicatorClick"><i><fa :icon="faArrowCircleDown"/></i>{{ $t('new-message') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
<x-form :user="user" ref="form"/>
|
<x-form :user="user" ref="form"/>
|
||||||
@@ -34,6 +34,7 @@ import i18n from '../../../i18n';
|
|||||||
import XMessage from './messaging-room.message.vue';
|
import XMessage from './messaging-room.message.vue';
|
||||||
import XForm from './messaging-room.form.vue';
|
import XForm from './messaging-room.form.vue';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
|
import { faArrowCircleDown } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/messaging-room.vue'),
|
i18n: i18n('common/views/components/messaging-room.vue'),
|
||||||
@@ -52,7 +53,8 @@ export default Vue.extend({
|
|||||||
existMoreMessages: false,
|
existMoreMessages: false,
|
||||||
connection: null,
|
connection: null,
|
||||||
showIndicator: false,
|
showIndicator: false,
|
||||||
timer: null
|
timer: null,
|
||||||
|
faArrowCircleDown
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<p class="no-history" v-if="!fetching && messages.length == 0">{{ $t('no-history') }}</p>
|
<p class="no-history" v-if="!fetching && messages.length == 0">{{ $t('no-history') }}</p>
|
||||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,39 @@
|
|||||||
import Vue, { VNode } from 'vue';
|
import Vue, { VNode } from 'vue';
|
||||||
import { length } from 'stringz';
|
import { length } from 'stringz';
|
||||||
|
import { Node } from '../../../../../mfm/parser';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import getAcct from '../../../../../misc/acct/render';
|
|
||||||
import MkUrl from './url.vue';
|
import MkUrl from './url.vue';
|
||||||
import MkGoogle from './google.vue';
|
|
||||||
import { concat } from '../../../../../prelude/array';
|
import { concat } from '../../../../../prelude/array';
|
||||||
|
import MkFormula from './formula.vue';
|
||||||
|
import MkGoogle from './google.vue';
|
||||||
|
import { toUnicode } from 'punycode';
|
||||||
|
import syntaxHighlight from '../../../../../mfm/syntax-highlight';
|
||||||
|
|
||||||
|
function getTextCount(tokens: Node[]): number {
|
||||||
|
let count = 0;
|
||||||
|
const extract = (tokens: Node[]) => {
|
||||||
|
tokens.filter(x => x.name === 'text').forEach(x => {
|
||||||
|
count += length(x.props.text);
|
||||||
|
});
|
||||||
|
tokens.filter(x => x.children).forEach(x => {
|
||||||
|
extract(x.children);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
extract(tokens);
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getChildrenCount(tokens: Node[]): number {
|
||||||
|
let count = 0;
|
||||||
|
const extract = (tokens: Node[]) => {
|
||||||
|
tokens.filter(x => x.children).forEach(x => {
|
||||||
|
count++;
|
||||||
|
extract(x.children);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
extract(tokens);
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
export default Vue.component('misskey-flavored-markdown', {
|
export default Vue.component('misskey-flavored-markdown', {
|
||||||
props: {
|
props: {
|
||||||
@@ -20,6 +49,10 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
},
|
||||||
|
author: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
i: {
|
i: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: null
|
default: null
|
||||||
@@ -30,23 +63,24 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
render(createElement) {
|
render(createElement) {
|
||||||
let ast: any[];
|
if (this.text == null || this.text == '') return;
|
||||||
|
|
||||||
|
let ast: Node[];
|
||||||
|
|
||||||
if (this.ast == null) {
|
if (this.ast == null) {
|
||||||
// Parse text to ast
|
// Parse text to ast
|
||||||
ast = parse(this.text);
|
ast = parse(this.text);
|
||||||
} else {
|
} else {
|
||||||
ast = this.ast as any[];
|
ast = this.ast as Node[];
|
||||||
}
|
}
|
||||||
|
|
||||||
let bigCount = 0;
|
let bigCount = 0;
|
||||||
let motionCount = 0;
|
let motionCount = 0;
|
||||||
|
|
||||||
// Parse ast to DOM
|
const genEl = (ast: Node[]) => concat(ast.map((token): VNode[] => {
|
||||||
const els = concat(ast.map((token): VNode[] => {
|
switch (token.name) {
|
||||||
switch (token.type) {
|
|
||||||
case 'text': {
|
case 'text': {
|
||||||
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
|
const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
const x = text.split('\n')
|
const x = text.split('\n')
|
||||||
@@ -59,12 +93,12 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'bold': {
|
case 'bold': {
|
||||||
return [createElement('b', token.bold)];
|
return [createElement('b', genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'big': {
|
case 'big': {
|
||||||
bigCount++;
|
bigCount++;
|
||||||
const isLong = length(token.big) > 10;
|
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
|
||||||
const isMany = bigCount > 3;
|
const isMany = bigCount > 3;
|
||||||
return (createElement as any)('strong', {
|
return (createElement as any)('strong', {
|
||||||
attrs: {
|
attrs: {
|
||||||
@@ -74,12 +108,20 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
name: 'animate-css',
|
name: 'animate-css',
|
||||||
value: { classes: 'tada', iteration: 'infinite' }
|
value: { classes: 'tada', iteration: 'infinite' }
|
||||||
}]
|
}]
|
||||||
}, token.big);
|
}, genEl(token.children));
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'center': {
|
||||||
|
return [createElement('div', {
|
||||||
|
attrs: {
|
||||||
|
style: 'text-align:center;'
|
||||||
|
}
|
||||||
|
}, genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'motion': {
|
case 'motion': {
|
||||||
motionCount++;
|
motionCount++;
|
||||||
const isLong = length(token.motion) > 10;
|
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
|
||||||
const isMany = motionCount > 3;
|
const isMany = motionCount > 3;
|
||||||
return (createElement as any)('span', {
|
return (createElement as any)('span', {
|
||||||
attrs: {
|
attrs: {
|
||||||
@@ -89,13 +131,14 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
name: 'animate-css',
|
name: 'animate-css',
|
||||||
value: { classes: 'rubberBand', iteration: 'infinite' }
|
value: { classes: 'rubberBand', iteration: 'infinite' }
|
||||||
}]
|
}]
|
||||||
}, token.motion);
|
}, genEl(token.children));
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'url': {
|
case 'url': {
|
||||||
return [createElement(MkUrl, {
|
return [createElement(MkUrl, {
|
||||||
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
url: token.content,
|
url: token.props.url,
|
||||||
target: '_blank',
|
target: '_blank',
|
||||||
style: 'color:var(--mfmLink);'
|
style: 'color:var(--mfmLink);'
|
||||||
}
|
}
|
||||||
@@ -106,75 +149,75 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement('a', {
|
return [createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'link',
|
class: 'link',
|
||||||
href: token.url,
|
href: token.props.url,
|
||||||
target: '_blank',
|
target: '_blank',
|
||||||
title: token.url,
|
title: token.props.url,
|
||||||
style: 'color:var(--mfmLink);'
|
style: 'color:var(--mfmLink);'
|
||||||
}
|
}
|
||||||
}, token.title)];
|
}, genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'mention': {
|
case 'mention': {
|
||||||
|
const host = token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host;
|
||||||
|
const canonical = host != null ? `@${token.props.username}@${toUnicode(host)}` : `@${token.props.username}`;
|
||||||
return (createElement as any)('router-link', {
|
return (createElement as any)('router-link', {
|
||||||
|
key: Math.random(),
|
||||||
attrs: {
|
attrs: {
|
||||||
to: `/${token.canonical}`,
|
to: `/${canonical}`,
|
||||||
dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token),
|
// TODO
|
||||||
|
//dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token),
|
||||||
style: 'color:var(--mfmMention);'
|
style: 'color:var(--mfmMention);'
|
||||||
},
|
},
|
||||||
directives: [{
|
directives: [{
|
||||||
name: 'user-preview',
|
name: 'user-preview',
|
||||||
value: token.canonical
|
value: canonical
|
||||||
}]
|
}]
|
||||||
}, token.canonical);
|
}, canonical);
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'hashtag': {
|
case 'hashtag': {
|
||||||
return [createElement('router-link', {
|
return [createElement('router-link', {
|
||||||
|
key: Math.random(),
|
||||||
attrs: {
|
attrs: {
|
||||||
to: `/tags/${encodeURIComponent(token.hashtag)}`,
|
to: `/tags/${encodeURIComponent(token.props.hashtag)}`,
|
||||||
style: 'color:var(--mfmHashtag);'
|
style: 'color:var(--mfmHashtag);'
|
||||||
}
|
}
|
||||||
}, token.content)];
|
}, `#${token.props.hashtag}`)];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'code': {
|
case 'blockCode': {
|
||||||
return [createElement('pre', {
|
return [createElement('pre', {
|
||||||
class: 'code'
|
class: 'code'
|
||||||
}, [
|
}, [
|
||||||
createElement('code', {
|
createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: token.html
|
innerHTML: syntaxHighlight(token.props.code)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
])];
|
])];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'inline-code': {
|
case 'inlineCode': {
|
||||||
return [createElement('code', {
|
return [createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: token.html
|
innerHTML: syntaxHighlight(token.props.code)
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'quote': {
|
case 'quote': {
|
||||||
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
|
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
const x = text2.split('\n')
|
|
||||||
.map(t => [createElement('span', t), createElement('br')]);
|
|
||||||
x[x.length - 1].pop();
|
|
||||||
return [createElement('div', {
|
return [createElement('div', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'quote'
|
class: 'quote'
|
||||||
}
|
}
|
||||||
}, x)];
|
}, genEl(token.children))];
|
||||||
} else {
|
} else {
|
||||||
return [createElement('span', {
|
return [createElement('span', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'quote'
|
class: 'quote'
|
||||||
}
|
}
|
||||||
}, text2.replace(/\n/g, ' '))];
|
}, genEl(token.children))];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,15 +226,16 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
attrs: {
|
attrs: {
|
||||||
class: 'title'
|
class: 'title'
|
||||||
}
|
}
|
||||||
}, token.title)];
|
}, genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'emoji': {
|
case 'emoji': {
|
||||||
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
||||||
return [createElement('mk-emoji', {
|
return [createElement('mk-emoji', {
|
||||||
|
key: Math.random(),
|
||||||
attrs: {
|
attrs: {
|
||||||
emoji: token.emoji,
|
emoji: token.props.emoji,
|
||||||
name: token.name
|
name: token.props.name
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
customEmojis: this.customEmojis || customEmojis
|
customEmojis: this.customEmojis || customEmojis
|
||||||
@@ -199,24 +243,35 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'search': {
|
case 'math': {
|
||||||
return [createElement(MkGoogle, {
|
//const MkFormula = () => import('./formula.vue').then(m => m.default);
|
||||||
|
return [createElement(MkFormula, {
|
||||||
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
q: token.query
|
formula: token.props.formula
|
||||||
|
}
|
||||||
|
})];
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'search': {
|
||||||
|
//const MkGoogle = () => import('./google.vue').then(m => m.default);
|
||||||
|
return [createElement(MkGoogle, {
|
||||||
|
key: Math.random(),
|
||||||
|
props: {
|
||||||
|
q: token.props.query
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
console.log('unknown ast type:', token.type);
|
console.log('unknown ast type:', token.name);
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// el.tag === 'br' のとき i !== 0 が保証されるため、短絡評価により els[i - 1] は配列外参照しない
|
// Parse ast to DOM
|
||||||
const _els = els.filter((el, i) => !(el.tag === 'br' && ['div', 'pre'].includes(els[i - 1].tag)));
|
return createElement('span', genEl(ast));
|
||||||
return createElement('span', _els);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<mfm v-bind="$attrs" class="havbbuyv"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import Mfm from './mfm';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
Mfm
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.havbbuyv
|
||||||
|
>>> .title
|
||||||
|
display block
|
||||||
|
margin-bottom 4px
|
||||||
|
padding 4px
|
||||||
|
font-size 90%
|
||||||
|
text-align center
|
||||||
|
background var(--mfmTitleBg)
|
||||||
|
border-radius 4px
|
||||||
|
|
||||||
|
>>> .code
|
||||||
|
margin 8px 0
|
||||||
|
|
||||||
|
>>> .quote
|
||||||
|
margin 8px
|
||||||
|
padding 6px 0 6px 12px
|
||||||
|
color var(--mfmQuote)
|
||||||
|
border-left solid 3px var(--mfmQuoteLine)
|
||||||
|
|
||||||
|
>>> code
|
||||||
|
padding 4px 8px
|
||||||
|
margin 0 0.5em
|
||||||
|
font-size 80%
|
||||||
|
color #525252
|
||||||
|
background rgba(0, 0, 0, 0.05)
|
||||||
|
border-radius 2px
|
||||||
|
|
||||||
|
>>> pre > code
|
||||||
|
padding 16px
|
||||||
|
margin 0
|
||||||
|
|
||||||
|
>>> [data-is-me]:after
|
||||||
|
content "you"
|
||||||
|
padding 0 4px
|
||||||
|
margin-left 4px
|
||||||
|
font-size 80%
|
||||||
|
color var(--primaryForeground)
|
||||||
|
background var(--primary)
|
||||||
|
border-radius 4px
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -72,7 +72,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
save() {
|
save() {
|
||||||
this._mutedWords = this.mutedWords.split('\n').map(line => line.split(' '));
|
this._mutedWords = this.mutedWords.split('\n').map(line => line.split(' ').filter(x => x != ''));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,11 +14,12 @@
|
|||||||
<mk-time :time="note.createdAt"/>
|
<mk-time :time="note.createdAt"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<span class="visibility" v-if="note.visibility != 'public'">
|
<span class="visibility" v-if="note.visibility != 'public'">
|
||||||
<template v-if="note.visibility == 'home'"><fa icon="home"/></template>
|
<fa v-if="note.visibility == 'home'" icon="home"/>
|
||||||
<template v-if="note.visibility == 'followers'"><fa icon="unlock"/></template>
|
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
||||||
<template v-if="note.visibility == 'specified'"><fa icon="envelope"/></template>
|
<fa v-if="note.visibility == 'specified'" icon="envelope"/>
|
||||||
<template v-if="note.visibility == 'private'"><fa icon="lock"/></template>
|
<fa v-if="note.visibility == 'private'" icon="lock"/>
|
||||||
</span>
|
</span>
|
||||||
|
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
@@ -115,4 +116,7 @@ export default Vue.extend({
|
|||||||
> .visibility
|
> .visibility
|
||||||
margin-left 8px
|
margin-left 8px
|
||||||
|
|
||||||
|
> .localOnly
|
||||||
|
margin-left 4px
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import Vue from 'vue';
|
|||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import { url } from '../../../config';
|
import { url } from '../../../config';
|
||||||
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
||||||
import Ok from './ok.vue';
|
|
||||||
import { concat, intersperse } from '../../../../../prelude/array';
|
import { concat, intersperse } from '../../../../../prelude/array';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
@@ -56,7 +55,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
] : []
|
] : []
|
||||||
], [
|
], [
|
||||||
this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin ? [{
|
this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin || this.$store.state.i.isModerator ? [{
|
||||||
icon: ['far', 'trash-alt'],
|
icon: ['far', 'trash-alt'],
|
||||||
text: this.$t('delete'),
|
text: this.$t('delete'),
|
||||||
action: this.del
|
action: this.del
|
||||||
@@ -79,7 +78,10 @@ export default Vue.extend({
|
|||||||
this.$root.api('i/pin', {
|
this.$root.api('i/pin', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$root.new(Ok);
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
splash: true
|
||||||
|
});
|
||||||
this.destroyDom();
|
this.destroyDom();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -93,19 +95,29 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
del() {
|
del() {
|
||||||
if (!window.confirm(this.$t('delete-confirm'))) return;
|
this.$root.alert({
|
||||||
|
type: 'warning',
|
||||||
|
text: this.$t('delete-confirm'),
|
||||||
|
showCancelButton: true
|
||||||
|
}).then(res => {
|
||||||
|
if (!res) return;
|
||||||
|
|
||||||
this.$root.api('notes/delete', {
|
this.$root.api('notes/delete', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.destroyDom();
|
this.destroyDom();
|
||||||
});
|
});
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
favorite() {
|
favorite() {
|
||||||
this.$root.api('notes/favorites/create', {
|
this.$root.api('notes/favorites/create', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$root.new(Ok);
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
splash: true
|
||||||
|
});
|
||||||
this.destroyDom();
|
this.destroyDom();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -114,7 +126,10 @@ export default Vue.extend({
|
|||||||
this.$root.api('notes/favorites/delete', {
|
this.$root.api('notes/favorites/delete', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$root.new(Ok);
|
this.$root.alert({
|
||||||
|
type: 'success',
|
||||||
|
splash: true
|
||||||
|
});
|
||||||
this.destroyDom();
|
this.destroyDom();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,175 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="yvbkymdqeusiqucuuloahhiqflzinufs">
|
|
||||||
<div class="bg" ref="bg"></div>
|
|
||||||
<div class="body" ref="body">
|
|
||||||
<div class="icon">
|
|
||||||
<div class="circle left"></div>
|
|
||||||
<span class="check tip"></span>
|
|
||||||
<span class="check long"></span>
|
|
||||||
<div class="ring"></div>
|
|
||||||
<div class="fix"></div>
|
|
||||||
<div class="circle right"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import Vue from 'vue';
|
|
||||||
import * as anime from 'animejs';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
|
||||||
mounted() {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
anime({
|
|
||||||
targets: this.$refs.bg,
|
|
||||||
opacity: 1,
|
|
||||||
duration: 300,
|
|
||||||
easing: 'linear'
|
|
||||||
});
|
|
||||||
|
|
||||||
anime({
|
|
||||||
targets: this.$refs.body,
|
|
||||||
opacity: 1,
|
|
||||||
scale: [1.2, 1],
|
|
||||||
duration: 300,
|
|
||||||
easing: [0, 0.5, 0.5, 1]
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
anime({
|
|
||||||
targets: this.$refs.bg,
|
|
||||||
opacity: 0,
|
|
||||||
duration: 300,
|
|
||||||
easing: 'linear'
|
|
||||||
});
|
|
||||||
|
|
||||||
anime({
|
|
||||||
targets: this.$refs.body,
|
|
||||||
opacity: 0,
|
|
||||||
scale: 0.8,
|
|
||||||
duration: 300,
|
|
||||||
easing: [0.5, 0, 1, 0.5],
|
|
||||||
complete: () => this.destroyDom()
|
|
||||||
});
|
|
||||||
}, 1250);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
.yvbkymdqeusiqucuuloahhiqflzinufs
|
|
||||||
pointer-events none
|
|
||||||
|
|
||||||
> .bg
|
|
||||||
display block
|
|
||||||
position fixed
|
|
||||||
z-index 10000
|
|
||||||
top 0
|
|
||||||
left 0
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
background rgba(#000, 0.7)
|
|
||||||
opacity 0
|
|
||||||
|
|
||||||
> .body
|
|
||||||
position fixed
|
|
||||||
z-index 10000
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
left 0
|
|
||||||
bottom 0
|
|
||||||
margin auto
|
|
||||||
width 150px
|
|
||||||
height 150px
|
|
||||||
background var(--face)
|
|
||||||
border-radius 8px
|
|
||||||
opacity 0
|
|
||||||
|
|
||||||
> .icon
|
|
||||||
display flex
|
|
||||||
justify-content center
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
left 0
|
|
||||||
bottom 0
|
|
||||||
width 5em
|
|
||||||
height 5em
|
|
||||||
margin auto
|
|
||||||
border .25em solid transparent
|
|
||||||
border-radius 50%
|
|
||||||
line-height 5em
|
|
||||||
cursor default
|
|
||||||
box-sizing content-box
|
|
||||||
user-select none
|
|
||||||
zoom normal
|
|
||||||
border-color #a5dc86
|
|
||||||
|
|
||||||
> .circle
|
|
||||||
position absolute
|
|
||||||
width 3.75em
|
|
||||||
height 7.5em
|
|
||||||
transform rotate(45deg)
|
|
||||||
border-radius 50%
|
|
||||||
background var(--face)
|
|
||||||
|
|
||||||
&.left
|
|
||||||
top -.4375em
|
|
||||||
left -2.0635em
|
|
||||||
transform rotate(-45deg)
|
|
||||||
transform-origin 3.75em 3.75em
|
|
||||||
border-radius 7.5em 0 0 7.5em
|
|
||||||
|
|
||||||
&.right
|
|
||||||
top -.6875em
|
|
||||||
left 1.875em
|
|
||||||
transform rotate(-45deg)
|
|
||||||
transform-origin 0 3.75em
|
|
||||||
border-radius 0 7.5em 7.5em 0
|
|
||||||
animation swal2-rotate-success-circular-line 4.25s ease-in
|
|
||||||
|
|
||||||
> .check
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
height .3125em
|
|
||||||
border-radius .125em
|
|
||||||
background-color #a5dc86
|
|
||||||
z-index 2
|
|
||||||
|
|
||||||
&.tip
|
|
||||||
top 2.875em
|
|
||||||
left .875em
|
|
||||||
width 1.5625em
|
|
||||||
transform rotate(45deg)
|
|
||||||
animation swal2-animate-success-line-tip .75s
|
|
||||||
|
|
||||||
&.long
|
|
||||||
top 2.375em
|
|
||||||
right .5em
|
|
||||||
width 2.9375em
|
|
||||||
transform rotate(-45deg)
|
|
||||||
animation swal2-animate-success-line-long .75s
|
|
||||||
|
|
||||||
> .fix
|
|
||||||
position absolute
|
|
||||||
top .5em
|
|
||||||
left 1.625em
|
|
||||||
width .4375em
|
|
||||||
height 5.625em
|
|
||||||
transform rotate(-45deg)
|
|
||||||
z-index 1
|
|
||||||
background var(--face)
|
|
||||||
|
|
||||||
> .ring
|
|
||||||
position absolute
|
|
||||||
top -.25em
|
|
||||||
left -.25em
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
border .25em solid rgba(165,220,134,.3)
|
|
||||||
border-radius 50%
|
|
||||||
z-index 2
|
|
||||||
box-sizing content-box
|
|
||||||
</style>
|
|
||||||
@@ -25,12 +25,9 @@ export default Vue.extend({
|
|||||||
type: 'password'
|
type: 'password'
|
||||||
}).then(newPassword2 => {
|
}).then(newPassword2 => {
|
||||||
if (newPassword !== newPassword2) {
|
if (newPassword !== newPassword2) {
|
||||||
this.$dialog({
|
this.$root.alert({
|
||||||
title: null,
|
title: null,
|
||||||
text: this.$t('not-match'),
|
text: this.$t('not-match')
|
||||||
actions: [{
|
|
||||||
text: 'OK'
|
|
||||||
}]
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,19 @@
|
|||||||
<ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch>
|
<ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section v-if="enableEmail">
|
||||||
|
<header>{{ $t('email') }}</header>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<template v-if="$store.state.i.email != null">
|
||||||
|
<ui-info v-if="$store.state.i.emailVerified">{{ $t('email-verified') }}</ui-info>
|
||||||
|
<ui-info v-else warn>{{ $t('email-not-verified') }}</ui-info>
|
||||||
|
</template>
|
||||||
|
<ui-input v-model="email" type="email"><span>{{ $t('email-address') }}</span></ui-input>
|
||||||
|
<ui-button @click="updateEmail()">{{ $t('save') }}</ui-button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -77,9 +90,12 @@ import { toUnicode } from 'punycode';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/profile-editor.vue'),
|
i18n: i18n('common/views/components/profile-editor.vue'),
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
host: toUnicode(host),
|
host: toUnicode(host),
|
||||||
|
enableEmail: false,
|
||||||
|
email: null,
|
||||||
name: null,
|
name: null,
|
||||||
username: null,
|
username: null,
|
||||||
location: null,
|
location: null,
|
||||||
@@ -113,7 +129,11 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.name = this.$store.state.i.name || '';
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.enableEmail = meta.enableEmail;
|
||||||
|
});
|
||||||
|
this.email = this.$store.state.i.email;
|
||||||
|
this.name = this.$store.state.i.name;
|
||||||
this.username = this.$store.state.i.username;
|
this.username = this.$store.state.i.username;
|
||||||
this.location = this.$store.state.i.profile.location;
|
this.location = this.$store.state.i.profile.location;
|
||||||
this.description = this.$store.state.i.description;
|
this.description = this.$store.state.i.description;
|
||||||
@@ -179,8 +199,8 @@ export default Vue.extend({
|
|||||||
location: this.location || null,
|
location: this.location || null,
|
||||||
description: this.description || null,
|
description: this.description || null,
|
||||||
birthday: this.birthday || null,
|
birthday: this.birthday || null,
|
||||||
avatarId: this.avatarId,
|
avatarId: this.avatarId || undefined,
|
||||||
bannerId: this.bannerId,
|
bannerId: this.bannerId || undefined,
|
||||||
isCat: !!this.isCat,
|
isCat: !!this.isCat,
|
||||||
isBot: !!this.isBot,
|
isBot: !!this.isBot,
|
||||||
isLocked: !!this.isLocked,
|
isLocked: !!this.isLocked,
|
||||||
@@ -193,12 +213,24 @@ export default Vue.extend({
|
|||||||
this.$store.state.i.bannerUrl = i.bannerUrl;
|
this.$store.state.i.bannerUrl = i.bannerUrl;
|
||||||
|
|
||||||
if (notify) {
|
if (notify) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('saved')
|
text: this.$t('saved')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
updateEmail() {
|
||||||
|
this.$input({
|
||||||
|
title: this.$t('@.enter-password'),
|
||||||
|
type: 'password'
|
||||||
|
}).then(password => {
|
||||||
|
this.$root.api('i/update_email', {
|
||||||
|
password: password,
|
||||||
|
email: this.email == '' ? null : this.email
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -223,6 +255,5 @@ export default Vue.extend({
|
|||||||
width 72px
|
width 72px
|
||||||
height 72px
|
height 72px
|
||||||
margin auto
|
margin auto
|
||||||
box-shadow 0 0 16px rgba(0, 0, 0, 0.5)
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
108
src/client/app/common/views/components/renote.vue
Normal file
108
src/client/app/common/views/components/renote.vue
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<template>
|
||||||
|
<div class="puqkfets" :class="{ mini }">
|
||||||
|
<mk-avatar class="avatar" :user="note.user"/>
|
||||||
|
<fa icon="retweet"/>
|
||||||
|
<i18n path="@.renoted-by" tag="span">
|
||||||
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId" place="user">{{ note.user | userName }}</router-link>
|
||||||
|
</i18n>
|
||||||
|
<div class="info">
|
||||||
|
<span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span>
|
||||||
|
<mk-time :time="note.createdAt"/>
|
||||||
|
<span class="visibility" v-if="note.visibility != 'public'">
|
||||||
|
<fa v-if="note.visibility == 'home'" icon="home"/>
|
||||||
|
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
||||||
|
<fa v-if="note.visibility == 'specified'" icon="envelope"/>
|
||||||
|
<fa v-if="note.visibility == 'private'" icon="lock"/>
|
||||||
|
</span>
|
||||||
|
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n(),
|
||||||
|
props: {
|
||||||
|
note: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
mini: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.puqkfets
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
padding 16px 32px 8px 32px
|
||||||
|
line-height 28px
|
||||||
|
white-space pre
|
||||||
|
color var(--renoteText)
|
||||||
|
background linear-gradient(to bottom, var(--renoteGradient) 0%, var(--face) 100%)
|
||||||
|
|
||||||
|
&.mini
|
||||||
|
padding 8px 16px
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
@media (min-width 600px)
|
||||||
|
padding 16px 32px
|
||||||
|
|
||||||
|
> .avatar
|
||||||
|
@media (min-width 500px)
|
||||||
|
width 28px
|
||||||
|
height 28px
|
||||||
|
|
||||||
|
> .avatar
|
||||||
|
flex-shrink 0
|
||||||
|
display inline-block
|
||||||
|
width 28px
|
||||||
|
height 28px
|
||||||
|
margin 0 8px 0 0
|
||||||
|
border-radius 6px
|
||||||
|
|
||||||
|
> [data-icon]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
> span
|
||||||
|
overflow hidden
|
||||||
|
flex-shrink 1
|
||||||
|
text-overflow ellipsis
|
||||||
|
white-space nowrap
|
||||||
|
|
||||||
|
> .name
|
||||||
|
font-weight bold
|
||||||
|
|
||||||
|
> .info
|
||||||
|
margin-left auto
|
||||||
|
font-size 0.9em
|
||||||
|
|
||||||
|
> .mobile
|
||||||
|
margin-right 8px
|
||||||
|
|
||||||
|
> .mk-time
|
||||||
|
flex-shrink 0
|
||||||
|
|
||||||
|
> .visibility
|
||||||
|
margin-left 8px
|
||||||
|
|
||||||
|
[data-icon]
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
> .localOnly
|
||||||
|
margin-left 4px
|
||||||
|
|
||||||
|
[data-icon]
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -12,8 +12,9 @@
|
|||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/>
|
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/>
|
||||||
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button>
|
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button>
|
||||||
<p style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
|
<p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
|
||||||
<p style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
|
<p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
|
||||||
|
<p v-if="meta && meta.enableDiscordIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/discord`">{{ $t('signin-with-discord') /* TODO: Make these layouts better */ }}</a></p>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -40,9 +41,15 @@ export default Vue.extend({
|
|||||||
password: '',
|
password: '',
|
||||||
token: '',
|
token: '',
|
||||||
apiUrl,
|
apiUrl,
|
||||||
host: toUnicode(host)
|
host: toUnicode(host),
|
||||||
|
meta: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onUsernameChange() {
|
onUsernameChange() {
|
||||||
this.$root.api('users/show', {
|
this.$root.api('users/show', {
|
||||||
@@ -60,7 +67,8 @@ export default Vue.extend({
|
|||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
token: this.user && this.user.twoFactorEnabled ? this.token : undefined
|
token: this.user && this.user.twoFactorEnabled ? this.token : undefined
|
||||||
}, true).then(() => {
|
}, true).then(res => {
|
||||||
|
localStorage.setItem('i', res.i);
|
||||||
location.reload();
|
location.reload();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert(this.$t('login-failed'));
|
alert(this.$t('login-failed'));
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<span>{{ $t('username') }}</span>
|
<span>{{ $t('username') }}</span>
|
||||||
<span slot="prefix">@</span>
|
<span slot="prefix">@</span>
|
||||||
<span slot="suffix">@{{ host }}</span>
|
<span slot="suffix">@{{ host }}</span>
|
||||||
<p slot="desc" v-if="usernameState == 'wait'" style="color:#999"><fa icon="spinner .pulse" fixed-width/> {{ $t('checking') }}</p>
|
<p slot="desc" v-if="usernameState == 'wait'" style="color:#999"><fa icon="spinner" pulse fixed-width/> {{ $t('checking') }}</p>
|
||||||
<p slot="desc" v-if="usernameState == 'ok'" style="color:#3CB7B5"><fa icon="check" fixed-width/> {{ $t('available') }}</p>
|
<p slot="desc" v-if="usernameState == 'ok'" style="color:#3CB7B5"><fa icon="check" fixed-width/> {{ $t('available') }}</p>
|
||||||
<p slot="desc" v-if="usernameState == 'unavailable'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> {{ $t('unavailable') }}</p>
|
<p slot="desc" v-if="usernameState == 'unavailable'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> {{ $t('unavailable') }}</p>
|
||||||
<p slot="desc" v-if="usernameState == 'error'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> {{ $t('error') }}</p>
|
<p slot="desc" v-if="usernameState == 'error'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> {{ $t('error') }}</p>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-stream-indicator">
|
<div class="mk-stream-indicator">
|
||||||
<p v-if="stream.state == 'initializing'">
|
<p v-if="stream.state == 'initializing'">
|
||||||
<fa icon="spinner .pulse"/>
|
<fa icon="spinner" pulse/>
|
||||||
<span>{{ $t('connecting') }}<mk-ellipsis/></span>
|
<span>{{ $t('connecting') }}<mk-ellipsis/></span>
|
||||||
</p>
|
</p>
|
||||||
<p v-if="stream.state == 'reconnecting'">
|
<p v-if="stream.state == 'reconnecting'">
|
||||||
<fa icon="spinner .pulse"/>
|
<fa icon="spinner" pulse/>
|
||||||
<span>{{ $t('reconnecting') }}<mk-ellipsis/></span>
|
<span>{{ $t('reconnecting') }}<mk-ellipsis/></span>
|
||||||
</p>
|
</p>
|
||||||
<p v-if="stream.state == 'connected'">
|
<p v-if="stream.state == 'connected'">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="jtivnzhfwquxpsfidertopbmwmchmnmo">
|
<div class="jtivnzhfwquxpsfidertopbmwmchmnmo">
|
||||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
<p class="empty" v-else-if="tags.length == 0"><fa icon="exclamation-circle"/>{{ $t('empty') }}</p>
|
<p class="empty" v-else-if="tags.length == 0"><fa icon="exclamation-circle"/>{{ $t('empty') }}</p>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<vue-word-cloud
|
<vue-word-cloud
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="nicnklzforebnpfgasiypmpdaaglujqm">
|
<div class="nicnklzforebnpfgasiypmpdaaglujqm">
|
||||||
<label>
|
<label>
|
||||||
<span>{{ $t('light-theme') }}</span>
|
<span><fa :icon="faSun"/> {{ $t('light-theme') }}</span>
|
||||||
<ui-select v-model="light" :placeholder="$t('light-theme')">
|
<ui-select v-model="light" :placeholder="$t('light-theme')">
|
||||||
<optgroup :label="$t('light-themes')">
|
<optgroup :label="$t('light-themes')">
|
||||||
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
<span>{{ $t('dark-theme') }}</span>
|
<span><fa :icon="faMoon"/> {{ $t('dark-theme') }}</span>
|
||||||
<ui-select v-model="dark" :placeholder="$t('dark-theme')">
|
<ui-select v-model="dark" :placeholder="$t('dark-theme')">
|
||||||
<optgroup :label="$t('dark-themes')">
|
<optgroup :label="$t('dark-themes')">
|
||||||
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
@@ -104,6 +104,7 @@ import { Chrome } from 'vue-color';
|
|||||||
import * as uuid from 'uuid';
|
import * as uuid from 'uuid';
|
||||||
import * as tinycolor from 'tinycolor2';
|
import * as tinycolor from 'tinycolor2';
|
||||||
import * as JSON5 from 'json5';
|
import * as JSON5 from 'json5';
|
||||||
|
import { faMoon, faSun } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
// 後方互換性のため
|
// 後方互換性のため
|
||||||
function convertOldThemedefinition(t) {
|
function convertOldThemedefinition(t) {
|
||||||
@@ -135,7 +136,8 @@ export default Vue.extend({
|
|||||||
myThemeDesc: '',
|
myThemeDesc: '',
|
||||||
myThemePrimary: lightTheme.vars.primary,
|
myThemePrimary: lightTheme.vars.primary,
|
||||||
myThemeSecondary: lightTheme.vars.secondary,
|
myThemeSecondary: lightTheme.vars.secondary,
|
||||||
myThemeText: lightTheme.vars.text
|
myThemeText: lightTheme.vars.text,
|
||||||
|
faMoon, faSun
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -221,7 +223,7 @@ export default Vue.extend({
|
|||||||
try {
|
try {
|
||||||
theme = JSON5.parse(code);
|
theme = JSON5.parse(code);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: this.$t('invalid-theme')
|
text: this.$t('invalid-theme')
|
||||||
});
|
});
|
||||||
@@ -234,7 +236,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (theme.id == null) {
|
if (theme.id == null) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
text: this.$t('invalid-theme')
|
text: this.$t('invalid-theme')
|
||||||
});
|
});
|
||||||
@@ -242,7 +244,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.$store.state.device.themes.some(t => t.id == theme.id)) {
|
if (this.$store.state.device.themes.some(t => t.id == theme.id)) {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'info',
|
type: 'info',
|
||||||
text: this.$t('already-installed')
|
text: this.$t('already-installed')
|
||||||
});
|
});
|
||||||
@@ -254,7 +256,7 @@ export default Vue.extend({
|
|||||||
key: 'themes', value: themes
|
key: 'themes', value: themes
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('installed').replace('{}', theme.name)
|
text: this.$t('installed').replace('{}', theme.name)
|
||||||
});
|
});
|
||||||
@@ -267,7 +269,7 @@ export default Vue.extend({
|
|||||||
key: 'themes', value: themes
|
key: 'themes', value: themes
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'info',
|
type: 'info',
|
||||||
text: this.$t('uninstalled').replace('{}', theme.name)
|
text: this.$t('uninstalled').replace('{}', theme.name)
|
||||||
});
|
});
|
||||||
@@ -304,7 +306,7 @@ export default Vue.extend({
|
|||||||
const theme = this.myTheme;
|
const theme = this.myTheme;
|
||||||
|
|
||||||
if (theme.name == null || theme.name.trim() == '') {
|
if (theme.name == null || theme.name.trim() == '') {
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
text: this.$t('theme-name-required')
|
text: this.$t('theme-name-required')
|
||||||
});
|
});
|
||||||
@@ -318,7 +320,7 @@ export default Vue.extend({
|
|||||||
key: 'themes', value: themes
|
key: 'themes', value: themes
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$swal({
|
this.$root.alert({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
text: this.$t('saved')
|
text: this.$t('saved')
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ export default Vue.extend({
|
|||||||
ago >= 3600 ? this.$t('@.time.hours_ago') .replace('{}', (~~(ago / 3600)).toString()) :
|
ago >= 3600 ? this.$t('@.time.hours_ago') .replace('{}', (~~(ago / 3600)).toString()) :
|
||||||
ago >= 60 ? this.$t('@.time.minutes_ago').replace('{}', (~~(ago / 60)).toString()) :
|
ago >= 60 ? this.$t('@.time.minutes_ago').replace('{}', (~~(ago / 60)).toString()) :
|
||||||
ago >= 10 ? this.$t('@.time.seconds_ago').replace('{}', (~~(ago % 60)).toString()) :
|
ago >= 10 ? this.$t('@.time.seconds_ago').replace('{}', (~~(ago % 60)).toString()) :
|
||||||
ago >= 0 ? this.$t('@.time.just_now') :
|
ago >= -1 ? this.$t('@.time.just_now') :
|
||||||
ago < 0 ? this.$t('@.time.future') :
|
ago < -1 ? this.$t('@.time.future') :
|
||||||
this.$t('@.time.unknown'));
|
this.$t('@.time.unknown'));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
<template>
|
|
||||||
<time class="mk-time">
|
|
||||||
{{ hh }}:{{ mm }}:{{ ss }}
|
|
||||||
</time>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import Vue from 'vue';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
|
||||||
props: {
|
|
||||||
time: {
|
|
||||||
type: [Date, String],
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
tickId: null,
|
|
||||||
hh: null,
|
|
||||||
mm: null,
|
|
||||||
ss: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
_time(): Date {
|
|
||||||
return typeof this.time == 'string' ? new Date(this.time) : this.time;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.tick();
|
|
||||||
this.tickId = setInterval(this.tick, 1000);
|
|
||||||
},
|
|
||||||
destroyed() {
|
|
||||||
clearInterval(this.tickId);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
tick() {
|
|
||||||
const now = new Date().getTime();
|
|
||||||
const start = this._time.getTime();
|
|
||||||
const ago = Math.floor((now - start) / 1000);
|
|
||||||
|
|
||||||
this.hh = Math.floor(ago / (60 * 60)).toString().padStart(2, '0');
|
|
||||||
this.mm = Math.floor(ago / 60).toString().padStart(2, '0');
|
|
||||||
this.ss = (ago % 60).toString().padStart(2, '0');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="csqvmxybqbycalfhkxvyfrgbrdalkaoc">
|
<div class="csqvmxybqbycalfhkxvyfrgbrdalkaoc">
|
||||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
<p class="empty" v-else-if="stats.length == 0"><fa icon="exclamation-circle"/>{{ $t('empty') }}</p>
|
<p class="empty" v-else-if="stats.length == 0"><fa icon="exclamation-circle"/>{{ $t('empty') }}</p>
|
||||||
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
<transition-group v-else tag="div" name="chart">
|
<transition-group v-else tag="div" name="chart">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-twitter-setting">
|
<div class="mk-twitter-setting">
|
||||||
<p>{{ $t('description') }}<a :href="`${docsUrl}/link-to-twitter`" target="_blank">{{ $t('detail') }}</a></p>
|
<p>{{ $t('description') }}</p>
|
||||||
<p class="account" v-if="$store.state.i.twitter" :title="`Twitter ID: ${$store.state.i.twitter.userId}`">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
<p class="account" v-if="$store.state.i.twitter" :title="`Twitter ID: ${$store.state.i.twitter.userId}`">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
||||||
<p>
|
<p>
|
||||||
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ $store.state.i.twitter ? this.$t('reconnect') : this.$t('connect') }}</a>
|
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ $store.state.i.twitter ? this.$t('reconnect') : this.$t('connect') }}</a>
|
||||||
@@ -14,15 +14,14 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import { apiUrl, docsUrl } from '../../../config';
|
import { apiUrl } from '../../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/twitter-setting.vue'),
|
i18n: i18n('common/views/components/twitter-setting.vue'),
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: null,
|
form: null,
|
||||||
apiUrl,
|
apiUrl
|
||||||
docsUrl
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@@ -38,12 +38,24 @@ export default Vue.extend({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
}
|
},
|
||||||
|
autofocus: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
styl: 'fill'
|
styl: 'fill'
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (this.autofocus) {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$el.focus();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -57,6 +69,7 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
font-weight normal
|
font-weight normal
|
||||||
font-size 16px
|
font-size 16px
|
||||||
|
line-height 24px
|
||||||
border none
|
border none
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
outline none
|
outline none
|
||||||
@@ -66,6 +79,10 @@ export default Vue.extend({
|
|||||||
|
|
||||||
*
|
*
|
||||||
pointer-events none
|
pointer-events none
|
||||||
|
user-select none
|
||||||
|
|
||||||
|
&:disabled
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
&:after
|
&:after
|
||||||
@@ -85,6 +102,7 @@ export default Vue.extend({
|
|||||||
&.inline
|
&.inline
|
||||||
display inline-block
|
display inline-block
|
||||||
width auto
|
width auto
|
||||||
|
min-width 100px
|
||||||
|
|
||||||
&.primary
|
&.primary
|
||||||
font-weight bold
|
font-weight bold
|
||||||
@@ -93,30 +111,30 @@ export default Vue.extend({
|
|||||||
color var(--text)
|
color var(--text)
|
||||||
background var(--buttonBg)
|
background var(--buttonBg)
|
||||||
|
|
||||||
&:hover
|
&:not(:disabled):hover
|
||||||
background var(--buttonHoverBg)
|
background var(--buttonHoverBg)
|
||||||
|
|
||||||
&:active
|
&:not(:disabled):active
|
||||||
background var(--buttonActiveBg)
|
background var(--buttonActiveBg)
|
||||||
|
|
||||||
&.primary
|
&.primary
|
||||||
color var(--primaryForeground)
|
color var(--primaryForeground)
|
||||||
background var(--primary)
|
background var(--primary)
|
||||||
|
|
||||||
&:hover
|
&:not(:disabled):hover
|
||||||
background var(--primaryLighten5)
|
background var(--primaryLighten5)
|
||||||
|
|
||||||
&:active
|
&:not(:disabled):active
|
||||||
background var(--primaryDarken5)
|
background var(--primaryDarken5)
|
||||||
|
|
||||||
&:not(.fill)
|
&:not(.fill)
|
||||||
color var(--primary)
|
color var(--primary)
|
||||||
background none
|
background none
|
||||||
|
|
||||||
&:hover
|
&:not(:disabled):hover
|
||||||
color var(--primaryDarken5)
|
color var(--primaryDarken5)
|
||||||
|
|
||||||
&:active
|
&:not(:disabled):active
|
||||||
background var(--primaryAlpha03)
|
background var(--primaryAlpha03)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.ui-card
|
.ui-card
|
||||||
margin 16px
|
margin 16px
|
||||||
|
max-width 850px
|
||||||
color var(--faceText)
|
color var(--faceText)
|
||||||
background var(--face)
|
background var(--face)
|
||||||
border-radius var(--round)
|
border-radius var(--round)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="pfzekjfwkwvadvlujpdnnxfggqgqjoze" :class="{ inputs }">
|
<div class="vnxwkwuf" :class="{ inputs, noGrow }">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -15,21 +15,36 @@ export default Vue.extend({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
noGrow: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.pfzekjfwkwvadvlujpdnnxfggqgqjoze
|
.vnxwkwuf
|
||||||
display flex
|
margin 16px 0
|
||||||
|
|
||||||
&.inputs
|
&.inputs
|
||||||
margin 32px 0
|
margin 32px 0
|
||||||
|
|
||||||
|
&.fit-top
|
||||||
|
margin-top 0
|
||||||
|
|
||||||
|
&.fit-bottom
|
||||||
|
margin-bottom 0
|
||||||
|
|
||||||
|
&:not(.noGrow)
|
||||||
|
display flex
|
||||||
|
|
||||||
> *
|
> *
|
||||||
flex 1
|
flex 1
|
||||||
|
|
||||||
&:not(:last-child)
|
> *:not(:last-child)
|
||||||
margin-right 16px
|
margin-right 16px !important
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -18,18 +18,21 @@
|
|||||||
:autocomplete="autocomplete"
|
:autocomplete="autocomplete"
|
||||||
:spellcheck="spellcheck"
|
:spellcheck="spellcheck"
|
||||||
@focus="focused = true"
|
@focus="focused = true"
|
||||||
@blur="focused = false">
|
@blur="focused = false"
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<input ref="input"
|
<input ref="input"
|
||||||
type="text"
|
type="text"
|
||||||
:value="placeholder"
|
:value="placeholder"
|
||||||
readonly
|
readonly
|
||||||
@click="chooseFile">
|
@click="chooseFile"
|
||||||
|
>
|
||||||
<input ref="file"
|
<input ref="file"
|
||||||
type="file"
|
type="file"
|
||||||
:value="value"
|
:value="value"
|
||||||
@change="onChangeFile">
|
@change="onChangeFile"
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
|
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -325,6 +328,9 @@ root(fill)
|
|||||||
margin 6px 0
|
margin 6px 0
|
||||||
font-size 13px
|
font-size 13px
|
||||||
|
|
||||||
|
&:empty
|
||||||
|
display none
|
||||||
|
|
||||||
*
|
*
|
||||||
margin 0
|
margin 0
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ui-select" :class="[{ focused, filled }, styl]">
|
<div class="ui-select" :class="[{ focused, disabled, filled, inline }, styl]">
|
||||||
<div class="icon" ref="icon"><slot name="icon"></slot></div>
|
<div class="icon" ref="icon"><slot name="icon"></slot></div>
|
||||||
<div class="input" @click="focus">
|
<div class="input" @click="focus">
|
||||||
<span class="label" ref="label"><slot name="label"></slot></span>
|
<span class="label" ref="label"><slot name="label"></slot></span>
|
||||||
@@ -7,9 +7,11 @@
|
|||||||
<select ref="input"
|
<select ref="input"
|
||||||
:value="v"
|
:value="v"
|
||||||
:required="required"
|
:required="required"
|
||||||
|
:disabled="disabled"
|
||||||
@input="$emit('input', $event.target.value)"
|
@input="$emit('input', $event.target.value)"
|
||||||
@focus="focused = true"
|
@focus="focused = true"
|
||||||
@blur="focused = false">
|
@blur="focused = false"
|
||||||
|
>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</select>
|
</select>
|
||||||
<div class="suffix"><slot name="suffix"></slot></div>
|
<div class="suffix"><slot name="suffix"></slot></div>
|
||||||
@@ -22,6 +24,11 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
|
inject: {
|
||||||
|
horizonGrouped: {
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
required: false
|
required: false
|
||||||
@@ -30,12 +37,23 @@ export default Vue.extend({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false
|
||||||
|
},
|
||||||
styl: {
|
styl: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: 'line'
|
default: 'line'
|
||||||
|
},
|
||||||
|
inline: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default(): boolean {
|
||||||
|
return this.horizonGrouped;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
v: this.value,
|
v: this.value,
|
||||||
@@ -122,7 +140,7 @@ root(fill)
|
|||||||
transition-duration 0.3s
|
transition-duration 0.3s
|
||||||
font-size 16px
|
font-size 16px
|
||||||
line-height 32px
|
line-height 32px
|
||||||
color rgba(#000, 0.54)
|
color var(--inputLabel)
|
||||||
pointer-events none
|
pointer-events none
|
||||||
//will-change transform
|
//will-change transform
|
||||||
transform-origin top left
|
transform-origin top left
|
||||||
@@ -171,6 +189,9 @@ root(fill)
|
|||||||
margin 6px 0
|
margin 6px 0
|
||||||
font-size 13px
|
font-size 13px
|
||||||
|
|
||||||
|
&:empty
|
||||||
|
display none
|
||||||
|
|
||||||
*
|
*
|
||||||
margin 0
|
margin 0
|
||||||
|
|
||||||
@@ -200,4 +221,14 @@ root(fill)
|
|||||||
&:not(.fill)
|
&:not(.fill)
|
||||||
root(false)
|
root(false)
|
||||||
|
|
||||||
|
&.inline
|
||||||
|
display inline-block
|
||||||
|
margin 0
|
||||||
|
|
||||||
|
&.disabled
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
&, *
|
||||||
|
cursor not-allowed !important
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ export default Vue.extend({
|
|||||||
> span
|
> span
|
||||||
display block
|
display block
|
||||||
line-height 20px
|
line-height 20px
|
||||||
color currentColor
|
color var(--text)
|
||||||
transition inherit
|
transition inherit
|
||||||
|
|
||||||
> p
|
> p
|
||||||
|
|||||||
@@ -126,6 +126,8 @@ root(fill)
|
|||||||
> textarea
|
> textarea
|
||||||
display block
|
display block
|
||||||
width 100%
|
width 100%
|
||||||
|
min-width 100%
|
||||||
|
max-width 100%
|
||||||
min-height 100px
|
min-height 100px
|
||||||
padding 0
|
padding 0
|
||||||
font inherit
|
font inherit
|
||||||
@@ -143,6 +145,9 @@ root(fill)
|
|||||||
font-size 13px
|
font-size 13px
|
||||||
opacity 0.7
|
opacity 0.7
|
||||||
|
|
||||||
|
&:empty
|
||||||
|
display none
|
||||||
|
|
||||||
*
|
*
|
||||||
margin 0
|
margin 0
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<ol v-if="uploads.length > 0">
|
<ol v-if="uploads.length > 0">
|
||||||
<li v-for="ctx in uploads" :key="ctx.id">
|
<li v-for="ctx in uploads" :key="ctx.id">
|
||||||
<div class="img" :style="{ backgroundImage: `url(${ ctx.img })` }"></div>
|
<div class="img" :style="{ backgroundImage: `url(${ ctx.img })` }"></div>
|
||||||
<p class="name"><fa icon="spinner .pulse"/>{{ ctx.name }}</p>
|
<p class="name"><fa icon="spinner" pulse/>{{ ctx.name }}</p>
|
||||||
<p class="status">
|
<p class="status">
|
||||||
<span class="initing" v-if="ctx.progress == undefined">{{ $t('waiting') }}<mk-ellipsis/></span>
|
<span class="initing" v-if="ctx.progress == undefined">{{ $t('waiting') }}<mk-ellipsis/></span>
|
||||||
<span class="kb" v-if="ctx.progress != undefined">{{ String(Math.floor(ctx.progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i> / {{ String(Math.floor(ctx.progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i></span>
|
<span class="kb" v-if="ctx.progress != undefined">{{ String(Math.floor(ctx.progress.value / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i> / {{ String(Math.floor(ctx.progress.max / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i></span>
|
||||||
@@ -57,17 +57,11 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upload if the file didn't exist yet
|
|
||||||
const buf = new Uint8Array(e.target.result);
|
|
||||||
let bin = '';
|
|
||||||
// We use for-of loop instead of apply() to avoid RangeError
|
|
||||||
// SEE: https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string
|
|
||||||
for (const byte of buf) bin += String.fromCharCode(byte);
|
|
||||||
const ctx = {
|
const ctx = {
|
||||||
id: id,
|
id: id,
|
||||||
name: file.name || 'untitled',
|
name: file.name || 'untitled',
|
||||||
progress: undefined,
|
progress: undefined,
|
||||||
img: 'data:*/*;base64,' + btoa(bin)
|
img: window.URL.createObjectURL(file)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.uploads.push(ctx);
|
this.uploads.push(ctx);
|
||||||
|
|||||||
@@ -35,6 +35,25 @@
|
|||||||
<span>{{ $t('private') }}</span>
|
<span>{{ $t('private') }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div @click="choose('local-public')" :class="{ active: v == 'local-public' }">
|
||||||
|
<div><fa icon="globe"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('local-public') }}</span>
|
||||||
|
<span>{{ $t('local-public-desc') }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div @click="choose('local-home')" :class="{ active: v == 'local-home' }">
|
||||||
|
<div><fa icon="home"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('local-home') }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div @click="choose('local-followers')" :class="{ active: v == 'local-followers' }">
|
||||||
|
<div><fa icon="unlock"/></div>
|
||||||
|
<div>
|
||||||
|
<span>{{ $t('local-followers') }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<misskey-flavored-markdown v-if="note.text" :text="note.text" :customEmojis="note.emojis"/>
|
<misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :custom-emojis="note.emojis"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
import Vue from 'vue';
|
||||||
|
import * as JSON5 from 'json5';
|
||||||
|
|
||||||
|
Vue.filter('json5', x => {
|
||||||
|
return JSON5.stringify(x, null, 2);
|
||||||
|
});
|
||||||
|
|
||||||
require('./bytes');
|
require('./bytes');
|
||||||
require('./number');
|
require('./number');
|
||||||
require('./user');
|
require('./user');
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import getAcct from '../../../../../misc/acct/render';
|
import getAcct from '../../../../../misc/acct/render';
|
||||||
import getUserName from '../../../../../misc/get-user-name';
|
import getUserName from '../../../../../misc/get-user-name';
|
||||||
|
import { url } from '../../../config';
|
||||||
|
|
||||||
Vue.filter('acct', user => {
|
Vue.filter('acct', user => {
|
||||||
return getAcct(user);
|
return getAcct(user);
|
||||||
@@ -10,6 +11,6 @@ Vue.filter('userName', user => {
|
|||||||
return getUserName(user);
|
return getUserName(user);
|
||||||
});
|
});
|
||||||
|
|
||||||
Vue.filter('userPage', (user, path?) => {
|
Vue.filter('userPage', (user, path?, absolute = false) => {
|
||||||
return `/@${Vue.filter('acct')(user)}${(path ? `/${path}` : '')}`;
|
return `${absolute ? url : ''}/@${Vue.filter('acct')(user)}${(path ? `/${path}` : '')}`;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
|
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<template v-else-if="!user.isFollowing && user.isLocked"><fa icon="plus"/> {{ $t('follow-request') }}</template>
|
<template v-else-if="!user.isFollowing && user.isLocked"><fa icon="plus"/> {{ $t('follow-request') }}</template>
|
||||||
<template v-else-if="!user.isFollowing && !user.isLocked"><fa icon="plus"/> {{ $t('follow') }}</template>
|
<template v-else-if="!user.isFollowing && !user.isLocked"><fa icon="plus"/> {{ $t('follow') }}</template>
|
||||||
</template>
|
</template>
|
||||||
<template v-else><fa icon="spinner .pulse" fixed-width/></template>
|
<template v-else><fa icon="spinner" pulse fixed-width/></template>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -3,9 +3,15 @@
|
|||||||
<mk-widget-container :show-header="props.design == 0" :naked="props.design == 2">
|
<mk-widget-container :show-header="props.design == 0" :naked="props.design == 2">
|
||||||
<template slot="header"><fa icon="camera"/>{{ $t('title') }}</template>
|
<template slot="header"><fa icon="camera"/>{{ $t('title') }}</template>
|
||||||
|
|
||||||
<p :class="$style.fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p :class="$style.fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
<div :class="$style.stream" v-if="!fetching && images.length > 0">
|
<div :class="$style.stream" v-if="!fetching && images.length > 0">
|
||||||
<div v-for="image in images" :class="$style.img" :style="`background-image: url(${image.thumbnailUrl || image.url})`"></div>
|
<div v-for="image in images"
|
||||||
|
:class="$style.img"
|
||||||
|
:style="`background-image: url(${image.thumbnailUrl || image.url})`"
|
||||||
|
draggable="true"
|
||||||
|
@dragstart="onDragstart(image, $event)"
|
||||||
|
@dragend="onDragend"
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<p :class="$style.empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
|
<p :class="$style.empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
|
||||||
</mk-widget-container>
|
</mk-widget-container>
|
||||||
@@ -31,6 +37,7 @@ export default define({
|
|||||||
connection: null
|
connection: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.connection = this.$root.stream.useSharedConnection('main');
|
this.connection = this.$root.stream.useSharedConnection('main');
|
||||||
|
|
||||||
@@ -44,9 +51,11 @@ export default define({
|
|||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.connection.dispose();
|
this.connection.dispose();
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onDriveFileCreated(file) {
|
onDriveFileCreated(file) {
|
||||||
if (/^image\/.+$/.test(file.type)) {
|
if (/^image\/.+$/.test(file.type)) {
|
||||||
@@ -54,6 +63,7 @@ export default define({
|
|||||||
if (this.images.length > 9) this.images.pop();
|
if (this.images.length > 9) this.images.pop();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
func() {
|
func() {
|
||||||
if (this.props.design == 2) {
|
if (this.props.design == 2) {
|
||||||
this.props.design = 0;
|
this.props.design = 0;
|
||||||
@@ -62,7 +72,16 @@ export default define({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.save();
|
this.save();
|
||||||
}
|
},
|
||||||
|
|
||||||
|
onDragstart(file, e) {
|
||||||
|
e.dataTransfer.effectAllowed = 'move';
|
||||||
|
e.dataTransfer.setData('mk_drive_file', JSON.stringify(file));
|
||||||
|
},
|
||||||
|
|
||||||
|
onDragend(e) {
|
||||||
|
this.browser.isDragSource = false;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<button slot="func" title="設定" @click="setting"><fa icon="cog"/></button>
|
<button slot="func" title="設定" @click="setting"><fa icon="cog"/></button>
|
||||||
|
|
||||||
<div class="mkw-rss--body" :data-mobile="platform == 'mobile'">
|
<div class="mkw-rss--body" :data-mobile="platform == 'mobile'">
|
||||||
<p class="fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
<div class="feed" v-else>
|
<div class="feed" v-else>
|
||||||
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a>
|
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<x-pie class="pie" :value="usage"/>
|
<x-pie class="pie" :value="usage"/>
|
||||||
<div>
|
<div>
|
||||||
<p><fa icon="microchip"/>CPU</p>
|
<p><fa icon="microchip"/>CPU</p>
|
||||||
<p>{{ meta.cpu.cores }} Cores</p>
|
<p>{{ meta.cpu.cores }} Logical cores</p>
|
||||||
<p>{{ meta.cpu.model }}</p>
|
<p>{{ meta.cpu.model }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<p>Maintainer: <b><a :href="'mailto:' + meta.maintainer.email" target="_blank">{{ meta.maintainer.name }}</a></b></p>
|
<p>Maintainer: <b><a :href="'mailto:' + meta.maintainer.email" target="_blank">{{ meta.maintainer.name }}</a></b></p>
|
||||||
<p>Machine: {{ meta.machine }}</p>
|
<p>Machine: {{ meta.machine }}</p>
|
||||||
<p>Node: {{ meta.node }}</p>
|
<p>Node: {{ meta.node }}</p>
|
||||||
|
<p>Version: {{ meta.version }} </p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="memory">
|
<div class="memory">
|
||||||
<x-pie class="pie" :value="usage"/>
|
<x-pie class="pie" :value="usage"/>
|
||||||
<div>
|
<div>
|
||||||
<p><fa icon="flask"/>Memory</p>
|
<p><fa icon="memory"/>Memory</p>
|
||||||
<p>Total: {{ total | bytes(1) }}</p>
|
<p>Total: {{ total | bytes(1) }}</p>
|
||||||
<p>Used: {{ used | bytes(1) }}</p>
|
<p>Used: {{ used | bytes(1) }}</p>
|
||||||
<p>Free: {{ free | bytes(1) }}</p>
|
<p>Free: {{ free | bytes(1) }}</p>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<template slot="header"><fa icon="server"/>{{ $t('title') }}</template>
|
<template slot="header"><fa icon="server"/>{{ $t('title') }}</template>
|
||||||
<button slot="func" @click="toggle" :title="$t('toggle')"><fa icon="sort"/></button>
|
<button slot="func" @click="toggle" :title="$t('toggle')"><fa icon="sort"/></button>
|
||||||
|
|
||||||
<p :class="$style.fetching" v-if="fetching"><fa icon="spinner .pulse" fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
<p :class="$style.fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||||
<template v-if="!fetching">
|
<template v-if="!fetching">
|
||||||
<x-cpu-memory v-show="props.view == 0" :connection="connection"/>
|
<x-cpu-memory v-show="props.view == 0" :connection="connection"/>
|
||||||
<x-cpu v-show="props.view == 1" :connection="connection" :meta="meta"/>
|
<x-cpu v-show="props.view == 1" :connection="connection" :meta="meta"/>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user