Compare commits
553 Commits
Author | SHA1 | Date | |
---|---|---|---|
eebed9944c | |||
507a192489 | |||
0fabb6a057 | |||
23efaae85e | |||
5b2f15726f | |||
bc3a5f3512 | |||
ba05f236bd | |||
6ac92ac4b8 | |||
d9a1cd082c | |||
a32071541a | |||
eb4f625bbd | |||
e36d45507a | |||
e32884f07f | |||
1344ffa67d | |||
e07210524f | |||
6f3996c061 | |||
fd06fd4dc1 | |||
d86d5feae3 | |||
0e20a8f07b | |||
a40d784e3a | |||
e145131b95 | |||
92873b8bb5 | |||
d359b71c81 | |||
f1a0bf4257 | |||
ea4e2da58d | |||
1301b3b49e | |||
424625846e | |||
0790dd7a2c | |||
b238d7b934 | |||
011e4fded2 | |||
2fe872a9c9 | |||
02c1515a0f | |||
408118a1e8 | |||
6a45bb21c3 | |||
5d4e9aa949 | |||
c87b98c2af | |||
5a13c38a6d | |||
67f60ab307 | |||
08c278578d | |||
5e9d2d079d | |||
0e01fb5fc3 | |||
d44dc7e00d | |||
82ee3a538b | |||
fdc16253d1 | |||
7e83cd2d74 | |||
083eb75eff | |||
f50afa768f | |||
1a80fe91ce | |||
4de1a5ef6c | |||
d0d389299b | |||
dc70804350 | |||
78d691571b | |||
b7cbf4a42a | |||
87ca7c50b4 | |||
6c7550b3f3 | |||
4239ffa13f | |||
c6cfb0df76 | |||
380cf0de69 | |||
11f25ea2e7 | |||
ef62497777 | |||
2824d8a5b6 | |||
1c84c0828e | |||
39e4494836 | |||
dc174ca759 | |||
b61cfd0407 | |||
53405e54a8 | |||
c7ef7531a9 | |||
626b4bf314 | |||
323d0e0154 | |||
6d1338317b | |||
1ce26d8aec | |||
7ba3d3ec98 | |||
24f58b3ecb | |||
d1d8587096 | |||
96db630f5e | |||
91fae0ae8b | |||
bfa1235b48 | |||
95d324a413 | |||
ef3535319b | |||
e9c04f4fa0 | |||
e7180d529a | |||
b8cd872738 | |||
efaaa76185 | |||
19e1f996a6 | |||
40a69bf200 | |||
9e3abb9989 | |||
5ba48e06f7 | |||
8b3a0a524b | |||
d9fe9cc5df | |||
b202c7906a | |||
b9c868cac6 | |||
33adf3c88d | |||
8b84f40975 | |||
fa131d2023 | |||
a83b38b50a | |||
dcd7b286ef | |||
b85bf769cd | |||
630a20d61e | |||
88c3794cf1 | |||
42eb457ad0 | |||
d153a8de20 | |||
7f7551f44c | |||
23082b55a4 | |||
dac7387a7f | |||
8c6856d894 | |||
2c0e514fb2 | |||
1917b0339e | |||
c05419f223 | |||
e0deaec695 | |||
d70e2a788e | |||
7343e6e2e8 | |||
106d4cc0d6 | |||
c98879cb7a | |||
9ca755c313 | |||
25e0b98840 | |||
5599c43c71 | |||
eb7597d7e4 | |||
d5767e92c4 | |||
ba3749d373 | |||
d8088acdf2 | |||
ad93e0aa3d | |||
691e58f03d | |||
95d5bccfca | |||
2aa8e0a4bf | |||
6e96d6677d | |||
8816c20f51 | |||
e955fe1ffd | |||
5cbcac713a | |||
2b50364ab4 | |||
fa04ac789e | |||
95ce8dce3d | |||
0b5eec4ca8 | |||
6d9716f90e | |||
aa31061d90 | |||
acc7797dff | |||
7959196dc7 | |||
c6ff6939a5 | |||
769960f29e | |||
d92e9759f3 | |||
bf7e19b288 | |||
98954cd6d4 | |||
538bb978ed | |||
10232c5866 | |||
5cd6a0db16 | |||
ff0a05a2d6 | |||
e34b264af2 | |||
00d79487cd | |||
3cace734c7 | |||
f428372869 | |||
5dd2feba9b | |||
a1b026239e | |||
40735ce76b | |||
4a00c13b33 | |||
8e359d54bd | |||
fb76dff836 | |||
2448bf4e4e | |||
91e0fc8c62 | |||
b4f86feddb | |||
7167c8c593 | |||
51b79d4250 | |||
925fcc1c64 | |||
fcdc14862c | |||
dac2844cae | |||
706b0cea16 | |||
842e7844c7 | |||
1dceda50d8 | |||
af8b9abba4 | |||
07b07685fa | |||
cde43fe3c8 | |||
2fe84aa75b | |||
7d79a4840d | |||
3ee9479572 | |||
ccf8e44acc | |||
451acb77df | |||
e2c6227f47 | |||
ebd1c877ad | |||
498094b3c7 | |||
1cc183ecdb | |||
e8948452fd | |||
ade7e62836 | |||
395cfa6108 | |||
b5ff2abdb9 | |||
229e85b2c5 | |||
37058e3480 | |||
a1b82e9723 | |||
db943df0c8 | |||
ff8d300ea8 | |||
8b490b9b94 | |||
f83f8631ac | |||
16da91d8d1 | |||
8ffd62b462 | |||
935367e167 | |||
00618260f2 | |||
77d66fac7b | |||
17d7f59b06 | |||
2561547db1 | |||
7738438616 | |||
3d8fc4a794 | |||
87b4e7905e | |||
13c5d4985a | |||
f0df4096fd | |||
5044424549 | |||
8ce67cdcd6 | |||
1915ccabdd | |||
6fea2f52f1 | |||
f77eaaa08a | |||
7c5bc03492 | |||
72a1af6cd4 | |||
4bce6f14f3 | |||
a38ce86f87 | |||
f539491502 | |||
d279f8e9ff | |||
eaec936fa6 | |||
a0735b0e7a | |||
5b039a1bee | |||
921609cab1 | |||
199573ccee | |||
977200b7cd | |||
6abff253ea | |||
ba64de334a | |||
dc1d7fa9d7 | |||
f42665d4bc | |||
a5eb19c878 | |||
60fa8e13d6 | |||
ecbaea463b | |||
814ddeb436 | |||
d6466106e8 | |||
633f5384f9 | |||
fa7989772c | |||
0e395612a6 | |||
fb3f52f3ad | |||
ba11c71d65 | |||
bdc3081167 | |||
430efcf1b9 | |||
996450dd7c | |||
fa779f0417 | |||
25cec6d28a | |||
c5f8403cea | |||
a9ae9a65c8 | |||
3698c679e2 | |||
881df20f1b | |||
7d269c0441 | |||
ba38f64353 | |||
db3ae303cb | |||
66f3a155e6 | |||
639b483e6c | |||
09843a409b | |||
e894ed5a8b | |||
d7808299fd | |||
f92e0c16d2 | |||
d94b3757be | |||
13e822cba6 | |||
c57bf87f52 | |||
99fbd60265 | |||
ea9b48db3c | |||
c145c994a9 | |||
d033998b56 | |||
3136c714bf | |||
c0ee134f19 | |||
d15ebe5732 | |||
ef630195fa | |||
e31921151e | |||
f94992abbe | |||
b00060c09c | |||
f6217d96d2 | |||
3a6947c7ed | |||
0fb528ddf8 | |||
14c03f226d | |||
4f0d844b43 | |||
b93395fc4c | |||
34eacb7e2d | |||
0177023ead | |||
a4678e45de | |||
f24869625e | |||
01beb705a2 | |||
ce28c70c35 | |||
5e0f5c31e7 | |||
b28dd4be52 | |||
291beb45fc | |||
ffb345ccb5 | |||
d2abe2cd81 | |||
acffc3e522 | |||
0962e62b8c | |||
91ebd310b7 | |||
2974c74b4e | |||
3d24112d2d | |||
4a977cd523 | |||
4b1886990f | |||
f3499b787c | |||
5209a584a2 | |||
57a63d38aa | |||
3efffbcf22 | |||
15eaebe522 | |||
eee98358ac | |||
795fc5e7bc | |||
70ac668474 | |||
1004e0d6e8 | |||
52aa64fcb6 | |||
7860d97a10 | |||
409b37b271 | |||
ad9b9964fa | |||
d2b5276f43 | |||
7204e2a84c | |||
1377fa3332 | |||
bf087bfccf | |||
e846e3d571 | |||
d646e62888 | |||
c008154d18 | |||
29bd4de26a | |||
7559b8da6c | |||
35218e84fc | |||
2c135fa2f6 | |||
21da6bd047 | |||
f1d65a66b4 | |||
63e2dbbb0d | |||
a228c522f1 | |||
a951c337b8 | |||
db3efb3791 | |||
8ee771ca77 | |||
488bbc9651 | |||
29b2bdf613 | |||
7e35048829 | |||
4d6b9f62e5 | |||
5f9a9867eb | |||
059a8e07d2 | |||
cf82f56e66 | |||
2778bd14d4 | |||
5b0446739c | |||
55f235d0ac | |||
4ec44c68e9 | |||
e6952d499a | |||
e0b82f827b | |||
0bccb17e82 | |||
b251b8c6a9 | |||
c2a62f632b | |||
359da9a5a1 | |||
2a235151ed | |||
9e318d5ebc | |||
6819eb3b4d | |||
4c6fb60dd2 | |||
bffb9a5c45 | |||
dca4053a67 | |||
fd07f00d14 | |||
bbeb6d534e | |||
37b5afa1a3 | |||
63b8af4531 | |||
e89e76076a | |||
18b4f74cdb | |||
b80d0a3b12 | |||
e53dde385c | |||
6a7a4c20e6 | |||
6434dac04d | |||
5deb1bf40e | |||
9cd334576c | |||
ae36bf301a | |||
9f60688d37 | |||
6a5a9de795 | |||
ca0ea9e57c | |||
a77a7e8112 | |||
b26ea2edc0 | |||
02b99dfd76 | |||
af02b0f115 | |||
9b3c379678 | |||
a423fd7695 | |||
de6e1d8c9b | |||
d9db3e8629 | |||
ac1c81b7d6 | |||
49b2eec534 | |||
f0abc46429 | |||
9fd4f5ee0a | |||
5e202c3def | |||
48223c1c76 | |||
dddf7834cc | |||
66ef30b2cc | |||
f802fe57b9 | |||
ead884ce89 | |||
6a87e9f690 | |||
5b943722fb | |||
4d92b14308 | |||
167c96d14e | |||
8a42373753 | |||
c1751a9b84 | |||
4e11da98d9 | |||
1b7d98c17e | |||
3038434712 | |||
117ab633a1 | |||
e50fa4762d | |||
aed1e839ba | |||
00f2974a2a | |||
073c96af47 | |||
71da498364 | |||
8e9c11f160 | |||
98f6b23249 | |||
89288d8e0d | |||
724121eeaa | |||
edee95a5ca | |||
0c2361bf72 | |||
92f8dc48e3 | |||
06a0fff4b0 | |||
d55e4621ac | |||
bc6bda3714 | |||
d3aafd3f13 | |||
1a508de1c4 | |||
768cc0aff5 | |||
67f4c1f429 | |||
2d4ceec0a5 | |||
3e2a0cd89a | |||
d1f4f2f663 | |||
6e3bf26cad | |||
672377f116 | |||
80ee5afba7 | |||
f55fcd3305 | |||
64fc14ade5 | |||
807f245657 | |||
62f966dc27 | |||
09f97bf7a7 | |||
69460e494c | |||
9bef723346 | |||
b99eabb2cf | |||
17be3f3d0f | |||
05fe2cb173 | |||
428be14c27 | |||
a04fa8441e | |||
7bcfa84e1a | |||
1cc5986df3 | |||
7aa5d03875 | |||
a59fbfac19 | |||
677f9ee8f6 | |||
f4a16be2b4 | |||
46b967ee4a | |||
78568accd1 | |||
e9f20a0fad | |||
bbd9894e6b | |||
f92745e381 | |||
2762b78bcc | |||
2d4ed2c8c2 | |||
2de8e8c358 | |||
eb7b638db3 | |||
321e851b26 | |||
f8340be3bf | |||
02341ceb6e | |||
3dcdd7a5d7 | |||
85188b5de2 | |||
b721d049c6 | |||
e518fff944 | |||
048128c7e1 | |||
d3717449c2 | |||
04de6218d3 | |||
0082473d78 | |||
77baca8e6e | |||
6a7169630c | |||
6b2089e043 | |||
14ad3af30d | |||
e7e6d833b7 | |||
d1a9561135 | |||
c7bda6f908 | |||
ef43721e32 | |||
ba6cd874aa | |||
f283d2423f | |||
c07f668f14 | |||
596524a63c | |||
975e4dd285 | |||
09b05c8552 | |||
530ee6f80e | |||
6ad31dca76 | |||
d423f8ae57 | |||
8e5ce7f8e3 | |||
33dfc21e4b | |||
3266f3948a | |||
7259887124 | |||
800de03187 | |||
78ba305e5c | |||
bfed1475bb | |||
3281d263c4 | |||
a9a1798e3a | |||
6806eafaed | |||
3e20ea5b2e | |||
3f30a69b8b | |||
2d2e16d9f6 | |||
9c32118b77 | |||
ecf2eb4738 | |||
3d754ea7eb | |||
f755f24560 | |||
699879d95d | |||
6677508ba7 | |||
58da32358b | |||
491bc75095 | |||
b9eafeee3f | |||
c56ff5d88d | |||
f5dd83a44a | |||
9a295a85b1 | |||
8e06d93c31 | |||
1a42200137 | |||
bbf33d2475 | |||
93203ebfd1 | |||
67053eeaa0 | |||
43baf4ad6a | |||
5b2a36e47b | |||
2a0862a24e | |||
ce31027b2e | |||
3f66c77821 | |||
bc713656ec | |||
46d89faebc | |||
7135c0e308 | |||
1962bfb4a5 | |||
a1fca2550e | |||
c17f99b7a5 | |||
7cd76d60c2 | |||
fa7c8cfe5b | |||
05fb8d35af | |||
eaa827e2d9 | |||
f365ea4585 | |||
5d2e43ffb9 | |||
e9a97ed99a | |||
fe98102600 | |||
aae8845664 | |||
81a4388ecc | |||
be3ab026fd | |||
f92f9d8cb0 | |||
08a59591ae | |||
a09a244242 | |||
483a61d90d | |||
385fb7586b | |||
c624da70ef | |||
675668c395 | |||
bc9c7efe85 | |||
52da66d550 | |||
251c3c3fe4 | |||
3b6d242ef6 | |||
4f62043b0c | |||
b1ae304c51 | |||
425bc032d0 | |||
0156b75bde | |||
8bc8fc58de | |||
9bf847b1fb | |||
0b078d203b | |||
df59018b47 | |||
b2681dcb5d | |||
46fa471636 | |||
5f2c441996 | |||
a79cc42b26 | |||
bd97e315ff | |||
51083419f5 | |||
b23bfd4d86 | |||
7de3e847bd | |||
0d1a541dba | |||
2717109fe2 | |||
60ca0626ce | |||
15dae0ae65 | |||
1c680118a0 | |||
ad5efbba59 | |||
6dc7baa5e9 | |||
c2b886e750 |
@ -1,18 +1,19 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# BEARER_TOKEN=
|
# __MISSKEY_BEARER_TOKEN=
|
||||||
# CAMPAIGN_ID=
|
# __MISSKEY_CAMPAIGN_ID=
|
||||||
# GITHUB_TOKEN=
|
# __MISSKEY_GITHUB_TOKEN=
|
||||||
# HEAD='acid-chicken:patch-autogen'
|
# __MISSKEY_HEAD=acid-chicken:patch-autogen
|
||||||
# REPO='syuilo/misskey'
|
# __MISSKEY_REPO=syuilo/misskey
|
||||||
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$GITHUB_TOKEN" | jq -r '.[].head.label' | grep $HEAD)" && exit 1
|
# __MISSKEY_BRANCH=develop
|
||||||
|
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r '.[].head.label' | grep $__MISSKEY_HEAD)" && exit 1
|
||||||
cd "$(dirname $0)/.." && \
|
cd "$(dirname $0)/.." && \
|
||||||
touch null.cache && \
|
touch null.cache && \
|
||||||
rm *.cache && \
|
rm *.cache && \
|
||||||
git checkout master && \
|
git checkout $__MISSKEY_BRANCH && \
|
||||||
git pull origin master && \
|
git pull origin $__MISSKEY_BRANCH && \
|
||||||
git pull upstream master && \
|
git pull upstream $__MISSKEY_BRANCH && \
|
||||||
git stash && \
|
git stash && \
|
||||||
git rebase -f upstream/master && \
|
git rebase -f upstream/$__MISSKEY_BRANCH && \
|
||||||
git branch patch-autogen && \
|
git branch patch-autogen && \
|
||||||
git checkout patch-autogen && \
|
git checkout patch-autogen && \
|
||||||
git reset --hard HEAD || \
|
git reset --hard HEAD || \
|
||||||
@ -20,12 +21,12 @@ exit 1
|
|||||||
touch patreon.md.cache && \
|
touch patreon.md.cache && \
|
||||||
rm patreon.md.cache && \
|
rm patreon.md.cache && \
|
||||||
echo '<!-- PATREON_START -->' > patreon.md.cache && \
|
echo '<!-- PATREON_START -->' > patreon.md.cache && \
|
||||||
URL="https://www.patreon.com/api/oauth2/v2/campaigns/$CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
|
url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges"
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
touch patreon.raw.cache && \
|
touch patreon.raw.cache && \
|
||||||
rm patreon.raw.cache && \
|
rm patreon.raw.cache && \
|
||||||
curl -LSs -w '\n' -H "Authorization: Bearer $BEARER_TOKEN" -- $URL > patreon.raw.cache && \
|
curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \
|
||||||
touch patreon.cache && \
|
touch patreon.cache && \
|
||||||
rm patreon.cache && \
|
rm patreon.cache && \
|
||||||
cat patreon.raw.cache | \
|
cat patreon.raw.cache | \
|
||||||
@ -42,31 +43,31 @@ while :
|
|||||||
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
|
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
|
||||||
echo '</tr></table>' >> patreon.md.cache || \
|
echo '</tr></table>' >> patreon.md.cache || \
|
||||||
exit 1
|
exit 1
|
||||||
NEW_URL="$(cat patreon.raw.cache | jq -r '.links.next')"
|
new_url="$(cat patreon.raw.cache | jq -r '.links.next')"
|
||||||
test "$NEW_URL" = 'null' && \
|
test "$new_url" = 'null' && \
|
||||||
break || \
|
break || \
|
||||||
URL="$NEW_URL"
|
URL="$url"
|
||||||
done
|
done
|
||||||
IGNORE= && \
|
ignore= && \
|
||||||
echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \
|
echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \
|
||||||
touch README.md && \
|
touch README.md && \
|
||||||
touch .autogen/README.md && \
|
touch .autogen/README.md && \
|
||||||
rm .autogen/README.md && \
|
rm .autogen/README.md && \
|
||||||
mv README.md .autogen/README.md && \
|
mv README.md .autogen/README.md && \
|
||||||
cat .autogen/README.md | while IFS= read LINE;
|
cat .autogen/README.md | while IFS= read line;
|
||||||
do
|
do
|
||||||
if [[ -z "$IGNORE" ]]
|
if [[ -z "$ignore" ]]
|
||||||
then
|
then
|
||||||
if [[ "$LINE" = '<!-- PATREON_START -->' ]]
|
if [[ "$line" = '<!-- PATREON_START -->' ]]
|
||||||
then
|
then
|
||||||
IGNORE='PATREON_INSIDE'
|
ignore='PATREON_INSIDE'
|
||||||
else
|
else
|
||||||
echo "$LINE" >> README.md
|
echo "$line" >> README.md
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
|
if [[ "$LINE" = '<!-- PATREON_END -->' ]]
|
||||||
then
|
then
|
||||||
IGNORE=
|
ignore=
|
||||||
cat patreon.md.cache >> README.md
|
cat patreon.md.cache >> README.md
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -80,7 +81,7 @@ test 4 -lt $(cat diff.cache | wc -l) && \
|
|||||||
git add README.md && \
|
git add README.md && \
|
||||||
git commit -m 'Update README.md [AUTOGEN]' && \
|
git commit -m 'Update README.md [AUTOGEN]' && \
|
||||||
git push -f origin patch-autogen && \
|
git push -f origin patch-autogen && \
|
||||||
curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$HEAD'","base":"master"}' -- "https://api.github.com/repos/$REPO/pulls?access_token=$GITHUB_TOKEN"
|
curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN"
|
||||||
git stash
|
git stash
|
||||||
git checkout master
|
git checkout $__MISSKEY_BRANCH
|
||||||
git branch -D patch-autogen
|
git branch -D patch-autogen
|
||||||
|
@ -138,3 +138,6 @@ drive:
|
|||||||
|
|
||||||
# Clustering
|
# Clustering
|
||||||
# clusterLimit: 1
|
# clusterLimit: 1
|
||||||
|
|
||||||
|
# Summaly proxy
|
||||||
|
# summalyProxy: "http://example.com"
|
||||||
|
2
.npmrc
2
.npmrc
@ -1,2 +1,2 @@
|
|||||||
save-exact=true
|
save-exact = true
|
||||||
package-lock = false
|
package-lock = false
|
||||||
|
@ -47,13 +47,13 @@ Please run `node cli/migration/5.0.0` before launch.
|
|||||||
|
|
||||||
オセロがリバーシに変更されました。
|
オセロがリバーシに変更されました。
|
||||||
|
|
||||||
Othello is now Reversi.
|
Othello is rename to Reversi.
|
||||||
|
|
||||||
### Migration
|
### Migration
|
||||||
|
|
||||||
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。
|
||||||
|
|
||||||
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
|
Please rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings` respectively.
|
||||||
|
|
||||||
3.0.0
|
3.0.0
|
||||||
-----
|
-----
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
# Contribution guide
|
# Contribution guide
|
||||||
:v: Misskeyへの貢献ありがとうございます。 :v:
|
:v: Thanks for your contributions :v:
|
||||||
|
|
||||||
## Issueの報告
|
## Issues
|
||||||
新機能の提案や不具合の報告は https://github.com/syuilo/misskey/issues で管理しています。
|
Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues .
|
||||||
Issueを作成する前に、既に同じIssueが作成されていないかご確認ください。
|
Before creating a new issue, please search existing issues to avoid duplication.
|
||||||
もし既にIssueが作成されている場合は、既存のIssueにコメントをしたりリアクションをするようお願いします。
|
If you find the existing issue, please add your reaction or comment to the issue.
|
||||||
|
|
||||||
## Issueの解決
|
## Internationalization (i18n)
|
||||||
[pr-welcomeのラベルがついているIssue](https://github.com/syuilo/misskey/labels/pr-welcome)
|
Please see [Translation guide](./docs/translate.en.md).
|
||||||
の解決を目的としたPull Requestを作成してくださると非常にありがたいです。
|
|
||||||
|
|
||||||
## 翻訳の改善
|
## Localization (l10n)
|
||||||
ソースコード中の `%i18n:id%` という形の文字列は、言語ファイルの対応するテキストに置換されます。
|
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
|
||||||
言語ファイルは /locales ディレクトリに存在します。
|
|
||||||
|
|
||||||
## ドキュメントの編集
|

|
||||||
現在Misskeyはドキュメントが大きく不足しています。
|
|
||||||
ドキュメントは /docs ディレクトリに存在します。
|
|
||||||
|
|
||||||
## テストの追加
|
## Documentation
|
||||||
現在Misskeyはテストが大きく不足しています。
|
* Documents for contributors are located in `/docs`.
|
||||||
テストコードは /test ディレクトリに存在します。
|
* Documents for instance admins are located in `/docs`.
|
||||||
|
* Documents for end users are located in `src/docs`.
|
||||||
|
|
||||||
## 自動テスト及び自動リリース
|
## Test
|
||||||
Travis CIで行っています。
|
* Test codes are located in `/test`.
|
||||||
設定ファイルは /.travis に存在します。
|
|
||||||
|
## Continuous integration
|
||||||
|
Misskey uses Travis for automated test.
|
||||||
|
Configuration files are located in `/.travis`.
|
||||||
|
33
README.md
33
README.md
@ -1,4 +1,4 @@
|
|||||||
<img src="https://github.com/syuilo/misskey/blob/b3f42e62af698a67c2250533c437569559f1fdf9/src/himasaku/resources/himasaku.png?raw=true" align="right" width="320px"/>
|
<img src="https://github.com/syuilo/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/>
|
||||||
|
|
||||||
[](https://misskey.xyz/)
|
[](https://misskey.xyz/)
|
||||||
================================================================
|
================================================================
|
||||||
@ -7,7 +7,7 @@
|
|||||||
[![][dependencies-badge]][dependencies-link]
|
[![][dependencies-badge]][dependencies-link]
|
||||||
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
[](http://makeapullrequest.com) [](https://greenkeeper.io/)
|
||||||
|
|
||||||
Sophisticated microblogging platform, evolving forever.
|
**Sophisticated microblogging platform, evolving forever.**
|
||||||
|
|
||||||
[Misskey](https://misskey.xyz) is a decentralized microblogging platform born on Earth.
|
[Misskey](https://misskey.xyz) is a decentralized microblogging platform born on Earth.
|
||||||
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
Since it exists within the Fediverse (a universe where various social media platforms are organized),
|
||||||
@ -24,7 +24,7 @@ Why don't you take a short break from the hustle and bustle of the city, and div
|
|||||||
* Reactions
|
* Reactions
|
||||||
* User lists
|
* User lists
|
||||||
* Customizable column view (called MisskeyDeck)
|
* Customizable column view (called MisskeyDeck)
|
||||||
* and widgets!
|
* Customizable widgets
|
||||||
* Private messages
|
* Private messages
|
||||||
* ActivityPub support
|
* ActivityPub support
|
||||||
|
|
||||||
@ -32,40 +32,29 @@ and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz
|
|||||||
|
|
||||||
:package: Create your own instance
|
:package: Create your own instance
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
If you want to run your own instance of Misskey,
|
Please see [Setup and installation guide](./docs/setup.en.md).
|
||||||
please see [Setup and installation guide](./docs/setup.en.md).
|
|
||||||
|
|
||||||
:wrench: Contribute
|
:wrench: Contribution
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
**[PR](https://github.com/syuilo/misskey/pulls)s welcome!**
|
Please see [Contribution guide](./CONTRIBUTING.md).
|
||||||
|
|
||||||
### i18n
|
|
||||||
|
|
||||||
Please see [Translation guide](./docs/translate.en.md).
|
|
||||||
|
|
||||||
### l10n
|
|
||||||
|
|
||||||
Misskey is using Crowdin for l10n.
|
|
||||||
|
|
||||||
[](https://crowdin.com/project/misskey)
|
|
||||||
|
|
||||||
:heart: Backers & Sponsors
|
:heart: Backers & Sponsors
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D" alt="39ff"></td>
|
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Axella"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/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://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/user?u=12378075">39ff</a></td>
|
|
||||||
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
|
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
|
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/AxellaMC">Axella</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/user?u=12718187">Peter G.</a></td>
|
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
|
||||||
@ -76,20 +65,16 @@ Misskey is using Crowdin for l10n.
|
|||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/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/4950409/28e7d016209243759d9316be2e21381d/2?token-time=2145916800&token-hash=LuEaDkchH3GQWUcTOhBQ8xfKQYF0s5FjlZRd7Yduia8%3D" alt="mikan54951"></td>
|
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12959468/c249e15aebec4424b5c0f427173671b6/1?token-time=2145916800&token-hash=lubpCEdxAkxPlpR2O6bvZ7BIh8Q4nGf-U_mE1qpjVAQ%3D" alt="fujishan"></td>
|
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td>
|
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</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/dansup">dansup</a></td>
|
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=4950409">mikan54951</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>
|
||||||
<td><a href="https://www.patreon.com/fujishan">fujishan</a></td>
|
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
**Last updated:** Wed, 22 Aug 2018 05:25:06 UTC
|
**Last updated:** Sun, 02 Sep 2018 05:30:06 UTC
|
||||||
<!-- PATREON_END -->
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
|
BIN
assets/about/drive.png
Normal file
BIN
assets/about/drive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
BIN
assets/about/post.png
Normal file
BIN
assets/about/post.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 344 KiB |
BIN
assets/about/reaction.png
Normal file
BIN
assets/about/reaction.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
BIN
assets/about/ui.png
Normal file
BIN
assets/about/ui.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
BIN
assets/ai-orig.png
Normal file
BIN
assets/ai-orig.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 256 KiB |
BIN
assets/ai.png
Normal file
BIN
assets/ai.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 243 KiB |
@ -1,40 +0,0 @@
|
|||||||
const { default: User, deleteUser } = require('../built/models/user');
|
|
||||||
const { default: zip } = require('@prezzemolo/zip')
|
|
||||||
|
|
||||||
const migrate = async (user) => {
|
|
||||||
try {
|
|
||||||
await deleteUser(user._id);
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
const count = await User.count({
|
|
||||||
uri: /#/
|
|
||||||
});
|
|
||||||
|
|
||||||
const dop = 1
|
|
||||||
const idop = ((count - (count % dop)) / dop) + 1
|
|
||||||
|
|
||||||
return zip(
|
|
||||||
1,
|
|
||||||
async (time) => {
|
|
||||||
console.log(`${time} / ${idop}`)
|
|
||||||
const doc = await User.find({
|
|
||||||
uri: /#/
|
|
||||||
}, {
|
|
||||||
limit: dop, skip: time * dop
|
|
||||||
})
|
|
||||||
return Promise.all(doc.map(migrate))
|
|
||||||
},
|
|
||||||
idop
|
|
||||||
).then(a => {
|
|
||||||
const rv = []
|
|
||||||
a.forEach(e => rv.push(...e))
|
|
||||||
return rv
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
main().then(console.dir).catch(console.error)
|
|
@ -54,7 +54,7 @@ Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
|||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
*(optional)* Generating VAPID keys
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
If you want to enable ServiceWroker, you need to generate VAPID keys:
|
If you want to enable ServiceWorker, you need to generate VAPID keys:
|
||||||
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
Unless you have set your global node_modules location elsewhere, you need to run this in root.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
@ -131,6 +131,7 @@ You can check if the service is running with `systemctl status misskey`.
|
|||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
5. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -109,6 +109,7 @@ Restart=always
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
CentOSで1024以下のポートを使用してMisskeyを使用する場合は`ExecStart=/usr/bin/sudo /usr/bin/npm start`に変更する必要があります。
|
||||||
|
|
||||||
3. `systemctl daemon-reload ; systemctl enable misskey` systemdを再読み込みしmisskeyサービスを有効化
|
3. `systemctl daemon-reload ; systemctl enable misskey` systemdを再読み込みしmisskeyサービスを有効化
|
||||||
4. `systemctl start misskey` misskeyサービスの起動
|
4. `systemctl start misskey` misskeyサービスの起動
|
||||||
@ -120,6 +121,7 @@ WantedBy=multi-user.target
|
|||||||
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
3. `npm install`
|
3. `npm install`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
5. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# **Please DO NOT edit these files** except `ja-JP.yml`.
|
# **DO NOT edit locale files** except `ja-JP.yml`.
|
||||||
|
|
||||||
If you want to...
|
Please see [Contribution guide](../CONTRIBUTING.md) for more information.
|
||||||
* i18n ... please see [Translation guide](../docs/translate.en.md).
|
|
||||||
* l10n ... please visit https://crowdin.com/project/misskey
|
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "Verwirrt"
|
confused: "Verwirrt"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Was machst du gerade?"
|
a: "Was machst du gerade?"
|
||||||
b: "Was ist so passiert?"
|
b: "Was ist so passiert?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Entwickler"
|
develop: "Entwickler"
|
||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Diese Anmerkung favorisieren"
|
favorite: "Diese Anmerkung favorisieren"
|
||||||
pin: "An die Profilseite pinnen"
|
pin: "An die Profilseite pinnen"
|
||||||
delete: "Löschen"
|
delete: "Löschen"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direkt"
|
specified: "Direkt"
|
||||||
specified-desc: "Poste nur für bestimmte Benutzer"
|
specified-desc: "Poste nur für bestimmte Benutzer"
|
||||||
private: "Privat"
|
private: "Privat"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Laden"
|
fetching: "Laden"
|
||||||
no-broadcasts: "Keine Broadcasts"
|
no-broadcasts: "Keine Broadcasts"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Serverinformationen"
|
title: "Serverinformationen"
|
||||||
toggle: "Sicht umschalten"
|
toggle: "Sicht umschalten"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Schwarz ... komplett"
|
total: "Schwarz ... komplett"
|
||||||
notes: "Blau ... Hinweise"
|
notes: "Blau ... Hinweise"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "Verhalten"
|
behaviour: "Verhalten"
|
||||||
fetch-on-scroll: "Aktualisieren beim scrollen"
|
fetch-on-scroll: "Aktualisieren beim scrollen"
|
||||||
fetch-on-scroll-desc: "Wenn du runterscrollst empfängt die Seite automatisch zusätzliche Inhalte."
|
fetch-on-scroll-desc: "Wenn du runterscrollst empfängt die Seite automatisch zusätzliche Inhalte."
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
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"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "Nacht Modus"
|
dark-mode: "Nacht Modus"
|
||||||
circle-icons: "Kreisförmige Icons"
|
circle-icons: "Kreisförmige Icons"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Übergang in Fensterköpfen"
|
gradient-window-header: "Übergang in Fensterköpfen"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Zeige Antworten"
|
show-reply-target: "Zeige Antworten"
|
||||||
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of the fediverse"
|
misskey: "A ⭐ of the fediverse"
|
||||||
about-title: "A ⭐ of the fediverse."
|
about-title: "A ⭐ of the fediverse."
|
||||||
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
|
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
|
||||||
|
intro:
|
||||||
|
title: "What is Misskey?"
|
||||||
|
about: "Misskey is a open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable Ui, varieties of reaction for posts, free file storage providing integrated management system and other advancing functions are available. Also, network system called “Fediverse” enables us to communicate with users on other SNSs. Like, if you post something, then your posts will sent not only to Misskey but also mastodon. Just imagine that the planet is sending a microwave to other planet to communication."
|
||||||
|
features: "Features"
|
||||||
|
rich-contents: "Post"
|
||||||
|
rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!"
|
||||||
|
reaction: "Reactions"
|
||||||
|
reaction-desc: "Easiest way to tell your emotions.\nMisskey 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-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. You can edit layouts of your timeline, place selectable widgets you can easily move and create your unique home as this place will be your home."
|
||||||
|
drive: "Misskey 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."
|
||||||
|
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:
|
||||||
detected: "Please disable ad blocker."
|
detected: "Please disable ad blocker."
|
||||||
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "Confused"
|
confused: "Confused"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "Public"
|
||||||
|
home: "Home"
|
||||||
|
home-desc: "Post to the home timeline only"
|
||||||
|
followers: "Followers"
|
||||||
|
followers-desc: "Post to followers only"
|
||||||
|
specified: "Direct"
|
||||||
|
specified-desc: "Post to specified users only"
|
||||||
|
private: "Private"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "What are you doing?"
|
a: "What are you doing?"
|
||||||
b: "What's happening?"
|
b: "What's happening?"
|
||||||
@ -84,9 +106,10 @@ common:
|
|||||||
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
||||||
i-like-sushi: "I prefer sushi rather than pudding"
|
i-like-sushi: "I prefer sushi rather than pudding"
|
||||||
show-reversi-board-labels: "Show row and column labels in Reversi"
|
show-reversi-board-labels: "Show row and column labels in Reversi"
|
||||||
use-contrast-reversi-stones: "Make the stone color clear"
|
use-contrast-reversi-stones: "Make the stone color clear in reversi"
|
||||||
verified-user: "Verified account"
|
verified-user: "Verified account"
|
||||||
disable-animated-mfm: "Disable animated texts in a post"
|
disable-animated-mfm: "Disable animated texts in a post"
|
||||||
|
do-not-use-in-production: 'As this is for development, do not use this in production.'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Draw"
|
drawn: "Draw"
|
||||||
my-turn: "Your turn"
|
my-turn: "Your turn"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Developers"
|
develop: "Developers"
|
||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "Details"
|
||||||
|
copy-link: "Copy link"
|
||||||
favorite: "Favorite this note"
|
favorite: "Favorite this note"
|
||||||
pin: "Pin to your profile"
|
pin: "Pin to your profile"
|
||||||
delete: "Delete"
|
delete: "Delete"
|
||||||
@ -337,6 +362,9 @@ 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"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{} users mentioned"
|
||||||
|
empty: "No popular hashtag trends"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Fetching"
|
fetching: "Fetching"
|
||||||
no-broadcasts: "No announcements"
|
no-broadcasts: "No announcements"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtags"
|
title: "Hashtags"
|
||||||
count: "{} users mentioned"
|
|
||||||
empty: "No popular hashtag trends"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Server info"
|
title: "Server info"
|
||||||
toggle: "Toggle views"
|
toggle: "Toggle views"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "Uploading a new avatar"
|
uploading-avatar: "Uploading a new avatar"
|
||||||
avatar-updated: "Successfully updated the avatar"
|
avatar-updated: "Successfully updated the avatar"
|
||||||
choose-avatar: "Select an image for the avatar"
|
choose-avatar: "Select an image for the avatar"
|
||||||
|
invalid-filetype: "This filetype is not acceptable here"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "Behavior"
|
behaviour: "Behavior"
|
||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
|
||||||
|
note-visibility: "Post visibility"
|
||||||
|
default-note-visibility: "Default visibility"
|
||||||
|
remember-note-visibility: "Remember post visibility"
|
||||||
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"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Remove background"
|
delete-wallpaper: "Remove background"
|
||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
|
contrasted-acct: "Add contrast to username"
|
||||||
gradient-window-header: "Use gradients on window headers"
|
gradient-window-header: "Use gradients on window headers"
|
||||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||||
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
||||||
|
show-clock-on-header: "Show clock on upper-right"
|
||||||
show-reply-target: "Display reply target"
|
show-reply-target: "Display reply target"
|
||||||
show-my-renotes: "Show my renotes in the timeline"
|
show-my-renotes: "Show my renotes in the timeline"
|
||||||
show-renoted-my-notes: "Show renoted my posts in timelines"
|
show-renoted-my-notes: "Show renoted my posts in timelines"
|
||||||
@ -819,7 +851,7 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "Dashboard"
|
dashboard: "Dashboard"
|
||||||
all-users: "All Users"
|
all-users: "All Users"
|
||||||
original-users: "Users on this instance"
|
original-users: "Users on this instance"
|
||||||
all-notes: "All Posts"
|
all-notes: "All the posts"
|
||||||
original-notes: "Posts on this instance"
|
original-notes: "Posts on this instance"
|
||||||
invite: "Invite"
|
invite: "Invite"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Reposted by {}"
|
reposted-by: "Reposted by {}"
|
||||||
private: "This post is private"
|
private: "This post is private"
|
||||||
deleted: "This post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "All Users"
|
||||||
|
original-users: "Users on this instance"
|
||||||
|
all-notes: "All the posts"
|
||||||
|
original-notes: "Posts on this instance"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "More details..."
|
about: "More details..."
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Logging in..."
|
signin-button: "Logging in..."
|
||||||
signup-button: "Sign up"
|
signup-button: "Sign up"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
|
announcements: "Announcements"
|
||||||
|
photos: "Recent uploaded"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "Information"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey storage"
|
title: "Misskey storage"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -890,7 +930,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
no-users: "No frequent mentions"
|
no-users: "No frequent mentions"
|
||||||
desktop/views/pages/user/user.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "This account has been suspended."
|
is-suspended: "This account has been suspended."
|
||||||
is-remote: "The user is a remote user. The profile that you see here may not complete."
|
is-remote: "This profile belongs to a remote user. The profile that you see here may not be complete. "
|
||||||
view-remote: "See their complete profile"
|
view-remote: "See their complete profile"
|
||||||
desktop/views/pages/user/user.home.vue:
|
desktop/views/pages/user/user.home.vue:
|
||||||
last-used-at: "Last active:"
|
last-used-at: "Last active:"
|
||||||
@ -1066,7 +1106,7 @@ mobile/views/pages/favorites.vue:
|
|||||||
title: "Favorites"
|
title: "Favorites"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "Lists"
|
title: "Lists"
|
||||||
enter-list-name: "Enter list name"
|
enter-list-name: "Enter a name of the list to make"
|
||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
more: "Load more"
|
more: "Load more"
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "Dark Mode"
|
dark-mode: "Dark Mode"
|
||||||
i-am-under-limited-internet: "I'm in limited bandwidth"
|
i-am-under-limited-internet: "I'm in limited bandwidth"
|
||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
|
contrasted-acct: "Add contrast to username"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
show-reply-target: "Show reply target"
|
show-reply-target: "Show reply target"
|
||||||
show-my-renotes: "Show my reposts"
|
show-my-renotes: "Show my reposts"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "Post design"
|
post-style: "Post design"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Smart"
|
post-style-smart: "Smart"
|
||||||
|
notification-position: "Notification style"
|
||||||
|
notification-position-bottom: "Bottom"
|
||||||
|
notification-position-top: "Top"
|
||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
|
note-visibility: "Post visibility"
|
||||||
|
default-note-visibility: "Default visibility"
|
||||||
|
remember-note-visibility: "Remember post visibility"
|
||||||
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"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Updates will be applied after reloading the page"
|
update-available-desc: "Updates will be applied after reloading the page"
|
||||||
settings: "Settings"
|
settings: "Settings"
|
||||||
signout: "Sign out"
|
signout: "Sign out"
|
||||||
|
sound: "Sounds"
|
||||||
|
enable-sounds: "Enable sounds"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Follows you"
|
follows-you: "Follows you"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
|
@ -6,12 +6,25 @@ common:
|
|||||||
misskey: "Una ⭐️ del fediverso"
|
misskey: "Una ⭐️ del fediverso"
|
||||||
about-title: "Una ⭐️ del fediverso"
|
about-title: "Una ⭐️ del fediverso"
|
||||||
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Por favor, desactive el bloqueador de publicidad."
|
detected: "Por favor, desactive el bloqueador de publicidad."
|
||||||
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
|
||||||
application-authorization: "Autorizaciones de la aplicación."
|
application-authorization: "Autorizaciones de la aplicación."
|
||||||
close: "Cerrar"
|
close: "Cerrar"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||||
got-it: "¡Listo!"
|
got-it: "¡Listo!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Consejos de personalización"
|
title: "Consejos de personalización"
|
||||||
@ -58,7 +71,7 @@ common:
|
|||||||
friday: "Viernes"
|
friday: "Viernes"
|
||||||
saturday: "Sábado"
|
saturday: "Sábado"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "Me gusta"
|
||||||
love: "amor"
|
love: "amor"
|
||||||
laugh: "risa"
|
laugh: "risa"
|
||||||
hmm: "hmm"
|
hmm: "hmm"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "confundido"
|
confused: "confundido"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Chafado"
|
pudding: "Chafado"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "¿Qué haces?"
|
a: "¿Qué haces?"
|
||||||
b: "¿Qué está pasando?"
|
b: "¿Qué está pasando?"
|
||||||
@ -84,9 +106,10 @@ common:
|
|||||||
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
||||||
i-like-sushi: "Prefiero sushi a pudín"
|
i-like-sushi: "Prefiero sushi a pudín"
|
||||||
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "Cuenta verificada"
|
||||||
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||||
|
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Empatado"
|
drawn: "Empatado"
|
||||||
my-turn: "Mi turno"
|
my-turn: "Mi turno"
|
||||||
@ -170,9 +193,9 @@ common/views/components/games/reversi/reversi.vue:
|
|||||||
common/views/components/games/reversi/reversi.game.vue:
|
common/views/components/games/reversi/reversi.game.vue:
|
||||||
surrender: "Rendirse"
|
surrender: "Rendirse"
|
||||||
surrendered: "Por rendirse"
|
surrendered: "Por rendirse"
|
||||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
is-llotheo: "El último gana (Llotheo)"
|
||||||
looped-map: "ループマップ"
|
looped-map: "Mapa en bucle"
|
||||||
can-put-everywhere: "どこでも置けるモード"
|
can-put-everywhere: "Puedes colocar donde quieras"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "¡Juega Reversi con tus amigos!"
|
sub-title: "¡Juega Reversi con tus amigos!"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Desarrolladores"
|
develop: "Desarrolladores"
|
||||||
feedback: "Opiniones"
|
feedback: "Opiniones"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "Detalles"
|
||||||
|
copy-link: "Copiar enlace"
|
||||||
favorite: "Me gusta esta nota"
|
favorite: "Me gusta esta nota"
|
||||||
pin: "Fijar en el perfil"
|
pin: "Fijar en el perfil"
|
||||||
delete: "Borrar"
|
delete: "Borrar"
|
||||||
@ -288,10 +313,10 @@ common/views/components/signin.vue:
|
|||||||
signin: "Entra"
|
signin: "Entra"
|
||||||
or: "O"
|
or: "O"
|
||||||
signin-with-twitter: "Ingresar con Twitter"
|
signin-with-twitter: "Ingresar con Twitter"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
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: "招待コード"
|
invitation-code: "Código de invitación"
|
||||||
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
invitation-info: "Si no tienes un código de invitación, por favor contacta un <a href=\"{}\">administrador</a>."
|
||||||
username: "Usuario"
|
username: "Usuario"
|
||||||
checking: "Comprobando..."
|
checking: "Comprobando..."
|
||||||
available: "Disponible"
|
available: "Disponible"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Directo"
|
specified: "Directo"
|
||||||
specified-desc: "Publica solo para los seguidores que quieras"
|
specified-desc: "Publica solo para los seguidores que quieras"
|
||||||
private: "Privada"
|
private: "Privada"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Recuperando"
|
fetching: "Recuperando"
|
||||||
no-broadcasts: "Sin emisión"
|
no-broadcasts: "Sin emisión"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Alternar vistas"
|
toggle: "Alternar vistas"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Etiquetas"
|
title: "Etiquetas"
|
||||||
count: "{} usuarios mencionados"
|
|
||||||
empty: "Ninguna tendencia popular ahora"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Información del servidor"
|
title: "Información del servidor"
|
||||||
toggle: "Alternar vistas"
|
toggle: "Alternar vistas"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "Cargando un nuevo avatar"
|
uploading-avatar: "Cargando un nuevo avatar"
|
||||||
avatar-updated: "Avatar actualizado"
|
avatar-updated: "Avatar actualizado"
|
||||||
choose-avatar: "Escoge una imagen de avatar"
|
choose-avatar: "Escoge una imagen de avatar"
|
||||||
|
invalid-filetype: "Este tipo de archivo no es compatible aquí"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Negro ... Total"
|
total: "Negro ... Total"
|
||||||
notes: "Azul ... Notas"
|
notes: "Azul ... Notas"
|
||||||
@ -425,23 +452,23 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Próximo mes"
|
next: "Próximo mes"
|
||||||
go: "Click para navegar"
|
go: "Click para navegar"
|
||||||
desktop/views/components/charts.vue:
|
desktop/views/components/charts.vue:
|
||||||
title: "チャート"
|
title: "Gráficos"
|
||||||
per-day: "1日ごと"
|
per-day: "por día"
|
||||||
per-hour: "1時間ごと"
|
per-hour: "por hora"
|
||||||
notes: "投稿"
|
notes: "Publicaciones"
|
||||||
users: "ユーザー"
|
users: "Usuarios"
|
||||||
drive: "ドライブ"
|
drive: "Unidad"
|
||||||
charts:
|
charts:
|
||||||
notes: "投稿の増減 (統合)"
|
notes: "Número de publicaciones: aumentar/disminuir (Combinado)"
|
||||||
local-notes: "投稿の増減 (ローカル)"
|
local-notes: "Número de publicaciones: aumentar/disminuir (Local)"
|
||||||
remote-notes: "投稿の増減 (リモート)"
|
remote-notes: "Número de publicaciones: aumentar/disminuir (Remoto)"
|
||||||
notes-total: "投稿の累計"
|
notes-total: "Número de publicaciones: Acumulativo total"
|
||||||
users: "ユーザーの増減"
|
users: "Número de usuarios: aumentar/disminuir"
|
||||||
users-total: "ユーザーの累計"
|
users-total: "Número de usuarios: Acumulativo total"
|
||||||
drive: "ドライブ使用量の増減"
|
drive: "Capacidad de almacenamiento usada: aumentar/disminuir"
|
||||||
drive-total: "ドライブ使用量の累計"
|
drive-total: "Capacidad de almacenamiento usada: Acumulativa total"
|
||||||
drive-files: "ドライブのファイル数の増減"
|
drive-files: "Número de archivos almacenados: aumentar/disminuir"
|
||||||
drive-files-total: "ドライブのファイル数の累計"
|
drive-files-total: "Número de archivos almacenados: Acumulativo total"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
choose-file: "Escoger archivos"
|
choose-file: "Escoger archivos"
|
||||||
upload: "Cargar archivos de tu dispositivo"
|
upload: "Cargar archivos de tu dispositivo"
|
||||||
@ -462,7 +489,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "Ver más"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Renombrar"
|
rename: "Renombrar"
|
||||||
mark-as-sensitive: "Marcar como 'sensible'"
|
mark-as-sensitive: "Marcar como 'sensible'"
|
||||||
@ -514,31 +541,31 @@ desktop/views/components/media-image.vue:
|
|||||||
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
|
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
|
||||||
click-to-show: "Click para mostrar"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/media-video.vue:
|
desktop/views/components/media-video.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "Este contenido no es apropiado para ver en el trabajo"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "Click para mostrar"
|
||||||
desktop/views/components/follow-button.vue:
|
desktop/views/components/follow-button.vue:
|
||||||
following: "Siguiendo"
|
following: "Siguiendo"
|
||||||
follow: "Sigue"
|
follow: "Sigue"
|
||||||
request-pending: "Pendiente de aprobación"
|
request-pending: "Pendiente de aprobación"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "Solicitud de seguir"
|
||||||
desktop/views/components/followers-window.vue:
|
desktop/views/components/followers-window.vue:
|
||||||
followers: "{} のフォロワー"
|
followers: "{} seguidores"
|
||||||
desktop/views/components/followers.vue:
|
desktop/views/components/followers.vue:
|
||||||
empty: "フォロワーはいないようです。"
|
empty: "Parece que no tienes seguidores aún."
|
||||||
desktop/views/components/following-window.vue:
|
desktop/views/components/following-window.vue:
|
||||||
following: "{} のフォロー"
|
following: "Siguiendo {}"
|
||||||
desktop/views/components/following.vue:
|
desktop/views/components/following.vue:
|
||||||
empty: "フォロー中のユーザーはいないようです。"
|
empty: "Parece que aún no sigues a nadie."
|
||||||
desktop/views/components/friends-maker.vue:
|
desktop/views/components/friends-maker.vue:
|
||||||
title: "気になるユーザーをフォロー:"
|
title: "Usuarios recomendados:"
|
||||||
empty: "おすすめのユーザーは見つかりませんでした。"
|
empty: "No se pudieron encontrar usuarios para recomendar"
|
||||||
fetching: "読み込んでいます"
|
fetching: "Cargando"
|
||||||
refresh: "もっと見る"
|
refresh: "Más"
|
||||||
close: "閉じる"
|
close: "Cerrar"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "リバーシ"
|
game: "Reversi"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "Listo"
|
||||||
add-widget: "Agregar accesorio:"
|
add-widget: "Agregar accesorio:"
|
||||||
add: "Agregar"
|
add: "Agregar"
|
||||||
desktop/views/input-dialog.vue:
|
desktop/views/input-dialog.vue:
|
||||||
@ -564,8 +591,8 @@ desktop/views/components/notes.note.vue:
|
|||||||
detail: "Mostrar detalles"
|
detail: "Mostrar detalles"
|
||||||
private: "Esta publicación es privada"
|
private: "Esta publicación es privada"
|
||||||
deleted: "Esta publicación ha sido borrada"
|
deleted: "Esta publicación ha sido borrada"
|
||||||
hide: "隠す"
|
hide: "Esconder"
|
||||||
see-more: "もっと見る"
|
see-more: "Ver más"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
error: "Error al cargar."
|
error: "Error al cargar."
|
||||||
retry: "Reintentar"
|
retry: "Reintentar"
|
||||||
@ -601,7 +628,7 @@ desktop/views/components/post-form.vue:
|
|||||||
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
|
||||||
error: "Error"
|
error: "Error"
|
||||||
enter-username: "Por favor escribe un nombre de usuario..."
|
enter-username: "Por favor escribe un nombre de usuario..."
|
||||||
annotations: "内容への注釈 (オプション)"
|
annotations: "Anotaciones a la publicación (opcional)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "Nota nueva"
|
note: "Nota nueva"
|
||||||
reply: "Responder"
|
reply: "Responder"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "Acciones"
|
behaviour: "Acciones"
|
||||||
fetch-on-scroll: "Desplazamiento infinito"
|
fetch-on-scroll: "Desplazamiento infinito"
|
||||||
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
|
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
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"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Suprimir fondo"
|
delete-wallpaper: "Suprimir fondo"
|
||||||
dark-mode: "Modo Nocturno"
|
dark-mode: "Modo Nocturno"
|
||||||
circle-icons: "Usar iconos circulares"
|
circle-icons: "Usar iconos circulares"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
|
||||||
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -764,40 +796,40 @@ desktop/views/components/timeline.vue:
|
|||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "Bienvenido/a de vuelta,"
|
||||||
adjective: "さん"
|
adjective: "-san"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "Tu perfil"
|
||||||
drive: "ドライブ"
|
drive: "Unidad"
|
||||||
favorites: "お気に入り"
|
favorites: "Favoritos"
|
||||||
lists: "リスト"
|
lists: "Listas"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "Solicitudes de seguimiento"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "Personalizar la página de inicio"
|
||||||
admin: "管理"
|
admin: "Admin"
|
||||||
settings: "設定"
|
settings: "Configuraciones"
|
||||||
signout: "サインアウト"
|
signout: "Desconectarse"
|
||||||
dark: "闇に飲まれる"
|
dark: "Sumergirse en la oscuridad"
|
||||||
desktop/views/components/ui.header.nav.vue:
|
desktop/views/components/ui.header.nav.vue:
|
||||||
home: "ホーム"
|
home: "Inicio"
|
||||||
deck: "デッキ"
|
deck: "Cubierta"
|
||||||
messaging: "メッセージ"
|
messaging: "Mensajes"
|
||||||
game: "ゲーム"
|
game: "Juegos"
|
||||||
desktop/views/components/ui.header.notifications.vue:
|
desktop/views/components/ui.header.notifications.vue:
|
||||||
title: "通知"
|
title: "Notificaciones"
|
||||||
desktop/views/components/ui.header.post.vue:
|
desktop/views/components/ui.header.post.vue:
|
||||||
post: "新規投稿"
|
post: "Crear una publicación"
|
||||||
desktop/views/components/ui.header.search.vue:
|
desktop/views/components/ui.header.search.vue:
|
||||||
placeholder: "検索"
|
placeholder: "Buscar"
|
||||||
desktop/views/components/received-follow-requests-window.vue:
|
desktop/views/components/received-follow-requests-window.vue:
|
||||||
title: "フォロー申請"
|
title: "Solicitudes de seguidores"
|
||||||
accept: "承認"
|
accept: "Aceptar"
|
||||||
reject: "拒否"
|
reject: "Rechazar"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "Listas de usuario"
|
||||||
create-list: "リストを作成"
|
create-list: "Crear lista"
|
||||||
list-name: "リスト名"
|
list-name: "Nombre de lista"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "Publicaciones"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
desktop/views/components/users-list.vue:
|
desktop/views/components/users-list.vue:
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "Une ⭐ du fédiverse"
|
misskey: "Une ⭐ du fédiverse"
|
||||||
about-title: "Une ⭐ du fédivers."
|
about-title: "Une ⭐ du fédivers."
|
||||||
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre. Parce qu'il fait partie du Fédivers (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
|
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre. Parce qu'il fait partie du Fédivers (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "Fonctionnalités"
|
||||||
|
rich-contents: "Notes"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "Réactions"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "Interface utilisateur"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "Drive"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
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é."
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "Confus"
|
confused: "Confus"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "Public"
|
||||||
|
home: "Accueil"
|
||||||
|
home-desc: "Publier sur le fil local uniquement"
|
||||||
|
followers: "Abonnés·es"
|
||||||
|
followers-desc: "Publier à vos abonnés·es uniquement"
|
||||||
|
specified: "Direct"
|
||||||
|
specified-desc: "Publier aux utilisateurs·trices mentionnés·es"
|
||||||
|
private: "Privé"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Que faites-vous maintenant ?"
|
a: "Que faites-vous maintenant ?"
|
||||||
b: "Quoi de neuf ?"
|
b: "Quoi de neuf ?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "Compte vérifié"
|
verified-user: "Compte vérifié"
|
||||||
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Partie nulle"
|
drawn: "Partie nulle"
|
||||||
my-turn: "C’est votre tour"
|
my-turn: "C’est votre tour"
|
||||||
@ -172,7 +195,7 @@ common/views/components/games/reversi/reversi.game.vue:
|
|||||||
surrendered: "Par abandon"
|
surrendered: "Par abandon"
|
||||||
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
is-llotheo: "石の少ない方が勝ち(ロセオ)"
|
||||||
looped-map: "Carte en boucle"
|
looped-map: "Carte en boucle"
|
||||||
can-put-everywhere: "どこでも置けるモード"
|
can-put-everywhere: "Peut poser partout"
|
||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "Jouer à Reversi avec vos ami·e·s !"
|
sub-title: "Jouer à Reversi avec vos ami·e·s !"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Développeur·se·s"
|
develop: "Développeur·se·s"
|
||||||
feedback: "Remarques"
|
feedback: "Remarques"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "Détails"
|
||||||
|
copy-link: "Copier le lien"
|
||||||
favorite: "Mettre cette note en favoris"
|
favorite: "Mettre cette note en favoris"
|
||||||
pin: "Épingler sur votre profil"
|
pin: "Épingler sur votre profil"
|
||||||
delete: "Supprimer"
|
delete: "Supprimer"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
specified-desc: "Publier aux utilisateur·rice·s mentionné·e·s"
|
specified-desc: "Publier aux utilisateur·rice·s mentionné·e·s"
|
||||||
private: "Privé"
|
private: "Privé"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{} utilisateurs·trices mentionnés·es"
|
||||||
|
empty: "Aucune tendance"
|
||||||
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"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Basculer entre les vues"
|
toggle: "Basculer entre les vues"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Étiquettes"
|
title: "Étiquettes"
|
||||||
count: "{} utilisateur·rice·s mentionné·e·s"
|
|
||||||
empty: "Aucune tendance"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Informations sur le serveur"
|
title: "Informations sur le serveur"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
@ -391,7 +417,7 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
||||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
||||||
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: "まゆかわいいよまゆ"
|
tips-line23: "Mayu est mignone avec ses sourcils."
|
||||||
tips-line24: "Misskey a vu le jour en 2014"
|
tips-line24: "Misskey a vu le jour en 2014"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
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: "L'avatar est mis à jour"
|
||||||
choose-avatar: "Choisir un avatar"
|
choose-avatar: "Choisir un avatar"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Noirs ... Total"
|
total: "Noirs ... Total"
|
||||||
notes: "Bleu ... Notes"
|
notes: "Bleu ... Notes"
|
||||||
@ -425,19 +452,19 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Mois prochain"
|
next: "Mois prochain"
|
||||||
go: "Cliquez pour naviguer"
|
go: "Cliquez pour naviguer"
|
||||||
desktop/views/components/charts.vue:
|
desktop/views/components/charts.vue:
|
||||||
title: "チャート"
|
title: "Graphiques"
|
||||||
per-day: "1日ごと"
|
per-day: "par jour"
|
||||||
per-hour: "1時間ごと"
|
per-hour: "par heure"
|
||||||
notes: "投稿"
|
notes: "Publications"
|
||||||
users: "ユーザー"
|
users: "Utilisateurs"
|
||||||
drive: "ドライブ"
|
drive: "Drive"
|
||||||
charts:
|
charts:
|
||||||
notes: "投稿の増減 (統合)"
|
notes: "投稿の増減 (統合)"
|
||||||
local-notes: "投稿の増減 (ローカル)"
|
local-notes: "投稿の増減 (ローカル)"
|
||||||
remote-notes: "投稿の増減 (リモート)"
|
remote-notes: "投稿の増減 (リモート)"
|
||||||
notes-total: "投稿の累計"
|
notes-total: "投稿の累計"
|
||||||
users: "ユーザーの増減"
|
users: "Nombre d’utilisateurs·trices : augmentation/diminution"
|
||||||
users-total: "ユーザーの累計"
|
users-total: "Nombre total d’utilisateurs·trices : total cumulé"
|
||||||
drive: "ドライブ使用量の増減"
|
drive: "ドライブ使用量の増減"
|
||||||
drive-total: "ドライブ使用量の累計"
|
drive-total: "ドライブ使用量の累計"
|
||||||
drive-files: "ドライブのファイル数の増減"
|
drive-files: "ドライブのファイル数の増減"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "Comportement"
|
behaviour: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
fetch-on-scroll-desc: "Chargement automatique du contenu lors du défilement de la page."
|
fetch-on-scroll-desc: "Chargement automatique du contenu lors du défilement de la page."
|
||||||
|
note-visibility: "Visibilité de la publication"
|
||||||
|
default-note-visibility: "Visibilité par défaut"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
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"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Supprimer le fond d'écran"
|
delete-wallpaper: "Supprimer le fond d'écran"
|
||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
|
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||||
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "Afficher le formulaire en haut du fil"
|
||||||
suggest-recent-hashtags: "Afficher les hashtags populaires dans le champs de saisie"
|
suggest-recent-hashtags: "Afficher les hashtags populaires dans le champs de saisie"
|
||||||
|
show-clock-on-header: "Afficher l'horloge à droite sur le coté supérieur"
|
||||||
show-reply-target: "Afficher les réponses"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications dans le fil"
|
show-my-renotes: "Afficher mes republications dans le fil"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -817,8 +849,8 @@ desktop/views/pages/admin/admin.vue:
|
|||||||
update: "Mises à jour"
|
update: "Mises à jour"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
dashboard: "Tableau de bord"
|
dashboard: "Tableau de bord"
|
||||||
all-users: "Tou·te·s les utilisateur·rice·s"
|
all-users: "Toutes les utilisateurrices"
|
||||||
original-users: "Utilisateur·rice·s sur cette instance"
|
original-users: "Utilisateurrices sur cette instance"
|
||||||
all-notes: "Toutes les publications"
|
all-notes: "Toutes les publications"
|
||||||
original-notes: "Publication sur cette instance"
|
original-notes: "Publication sur cette instance"
|
||||||
invite: "Invitation"
|
invite: "Invitation"
|
||||||
@ -837,7 +869,7 @@ desktop/views/pages/admin/admin.verify-user.vue:
|
|||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
desktop/views/pages/admin/admin.unverify-user.vue:
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "Ôter la vérification du compte"
|
unverify: "Ôter la vérification du compte"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "Ce compte n'est pas vérifié"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
is-media-only: "Les publications médias uniquement"
|
is-media-only: "Les publications médias uniquement"
|
||||||
is-media-view: "Vue média"
|
is-media-view: "Vue média"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Reposté par {}"
|
reposted-by: "Reposté par {}"
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "Toutes les utilisateurrices"
|
||||||
|
original-users: "Utilisateurrices sur cette instance"
|
||||||
|
all-notes: "Toutes les publications"
|
||||||
|
original-notes: "Publication sur cette instance"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "à propos"
|
about: "à propos"
|
||||||
gotit: "J'ai compris !"
|
gotit: "J'ai compris !"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Se connecter"
|
signin-button: "Se connecter"
|
||||||
signup-button: "S'inscrire"
|
signup-button: "S'inscrire"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Propulsé par <b>Misskey</b>."
|
powered-by-misskey: "Propulsé par <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Lecteur de Misskey"
|
title: "Lecteur de Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -964,14 +1004,14 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "Choisissez un dossier"
|
select-folder: "Choisissez un dossier"
|
||||||
mobile/views/components/drive.file.vue:
|
mobile/views/components/drive.file.vue:
|
||||||
nsfw: "閲覧注意"
|
nsfw: "CW"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "Télécharger"
|
download: "Télécharger"
|
||||||
rename: "Renommer"
|
rename: "Renommer"
|
||||||
move: "Déplacer"
|
move: "Déplacer"
|
||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "CW"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "Le contenu est NSFW"
|
sensitive: "Le contenu est NSFW"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
@ -1038,7 +1078,7 @@ mobile/views/components/timeline.vue:
|
|||||||
load-more: "Afficher plus"
|
load-more: "Afficher plus"
|
||||||
mobile/views/components/ui.header.vue:
|
mobile/views/components/ui.header.vue:
|
||||||
welcome-back: "Content de vous revoir ! "
|
welcome-back: "Content de vous revoir ! "
|
||||||
adjective: "さん"
|
adjective: "M."
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
@ -1052,7 +1092,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "Jeux"
|
game: "Jeux"
|
||||||
darkmode: "Mode nuit"
|
darkmode: "Mode nuit"
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
admin: "管理"
|
admin: "Admin"
|
||||||
about: "À propose de Misskey"
|
about: "À propose de Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment"
|
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment"
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "Mode nuit"
|
dark-mode: "Mode nuit"
|
||||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d'actualité"
|
||||||
show-reply-target: "Afficher les réponses"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes republications"
|
show-my-renotes: "Afficher mes republications"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "Style de la publication"
|
post-style: "Style de la publication"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Intelligent"
|
post-style-smart: "Intelligent"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "en bas"
|
||||||
|
notification-position-top: "en haut"
|
||||||
behavior: "Comportement"
|
behavior: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
|
note-visibility: "Visibilité de la publication"
|
||||||
|
default-note-visibility: "Visibilité par défaut"
|
||||||
|
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
|
||||||
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"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
||||||
settings: "Réglages"
|
settings: "Réglages"
|
||||||
signout: "Déconnexion"
|
signout: "Déconnexion"
|
||||||
|
sound: "Sons"
|
||||||
|
enable-sounds: "Activer les sons"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "vous suit"
|
follows-you: "vous suit"
|
||||||
following: "Abonnements"
|
following: "Abonnements"
|
||||||
@ -1214,7 +1263,7 @@ docs:
|
|||||||
res: "Réponse"
|
res: "Réponse"
|
||||||
require-credential: "Ce point de communication nécessite une authentification."
|
require-credential: "Ce point de communication nécessite une authentification."
|
||||||
require-permission: "Ce point de communication nécessite la permission {permission}."
|
require-permission: "Ce point de communication nécessite la permission {permission}."
|
||||||
has-limit: "レートリミットがあります。"
|
has-limit: "Il y’a un taux limite."
|
||||||
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
|
||||||
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
|
||||||
show-src: "Vous pouvez voir le code source ce point de communication."
|
show-src: "Vous pouvez voir le code source ce point de communication."
|
||||||
|
@ -5,24 +5,9 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
|
|
||||||
const loadLang = lang => yaml.safeLoad(
|
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL'];
|
||||||
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
|
||||||
|
|
||||||
const native = loadLang('ja-JP');
|
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
|
||||||
|
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));
|
||||||
|
|
||||||
const langs = {
|
module.exports = locales.reduce((a, b) => ({ ...a, ...b }));
|
||||||
'de-DE': loadLang('de-DE'),
|
|
||||||
'en-US': loadLang('en-US'),
|
|
||||||
'fr-FR': loadLang('fr-FR'),
|
|
||||||
'ja-JP': native,
|
|
||||||
'ja-KS': loadLang('ja-KS'),
|
|
||||||
'pl-PL': loadLang('pl-PL'),
|
|
||||||
'es-ES': loadLang('es-ES')
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.values(langs).forEach(locale => {
|
|
||||||
// Extend native language (Japanese)
|
|
||||||
locale = Object.assign({}, native, locale);
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = langs;
|
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -73,6 +86,16 @@ common:
|
|||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
|
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@ -94,6 +117,8 @@ common:
|
|||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
|
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -283,6 +308,8 @@ common/views/components/nav.vue:
|
|||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
|
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -371,6 +398,10 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
|
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -399,8 +430,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
|
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
@ -456,6 +485,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
|
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
@ -717,6 +747,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -729,9 +762,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -982,7 +1017,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
|
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
@ -1339,6 +1377,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1347,8 +1386,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1367,6 +1412,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
|
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "ようMisskeyを見つけてくれて、おおきにやで。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>やねん。Fediverse(ぎょうさんのSNSで構成されとる宇宙)っちゅうもんの中におるから、お隣さんのSNSとも仲良うさせてもろてんねん。ちょいとやかましい心斎橋から離れて、新しいインターネットにダイブしてみぃひん?"
|
about: "ようMisskeyを見つけてくれて、おおきにやで。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>やねん。Fediverse(ぎょうさんのSNSで構成されとる宇宙)っちゅうもんの中におるから、お隣さんのSNSとも仲良うさせてもろてんねん。ちょいとやかましい心斎橋から離れて、新しいインターネットにダイブしてみぃひん?"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてや"
|
detected: "広告ブロッカーを無効にしてや"
|
||||||
warning: "<strong>Misskeyは広告を掲載してへん</strong>けど、広告をブロックしはる機能がおると一部の機能が利用できんくなったり、不具合が発生するかも分からん。知らんけど。"
|
warning: "<strong>Misskeyは広告を掲載してへん</strong>けど、広告をブロックしはる機能がおると一部の機能が利用できんくなったり、不具合が発生するかも分からん。知らんけど。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "こまこまのこまりやわぁ"
|
confused: "こまこまのこまりやわぁ"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "アメちゃんちゃうんちゃう?"
|
pudding: "アメちゃんちゃうんちゃう?"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今なにしてん?"
|
a: "今なにしてん?"
|
||||||
b: "何かあったんか?"
|
b: "何かあったんか?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!"
|
||||||
verified-user: "アメちゃん付きアカウント"
|
verified-user: "アメちゃん付きアカウント"
|
||||||
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "おあいこ"
|
drawn: "おあいこ"
|
||||||
my-turn: "あんさんのターンや"
|
my-turn: "あんさんのターンや"
|
||||||
@ -207,9 +230,9 @@ common/views/components/games/reversi/reversi.room.vue:
|
|||||||
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: "トラブルシュート"
|
||||||
common/views/components/connect-failed.troubleshooter.vue:
|
common/views/components/connect-failed.troubleshooter.vue:
|
||||||
title: "トラブルシューティング"
|
title: "トラブルシューティング"
|
||||||
@ -219,99 +242,101 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
checking-internet: "インターネット接続を確認中"
|
checking-internet: "インターネット接続を確認中"
|
||||||
server: "サーバー接続"
|
server: "サーバー接続"
|
||||||
checking-server: "サーバー接続を確認中"
|
checking-server: "サーバー接続を確認中"
|
||||||
finding: "問題を調べています"
|
finding: "問題を調べとるで"
|
||||||
no-network: "ネットワークに接続されていません"
|
no-network: "ネットワークに接続されとらんで"
|
||||||
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
|
no-network-desc: "つこてるPCのネットワーク接続が正常か確認してや。"
|
||||||
no-internet: "インターネットに接続されていません"
|
no-internet: "インターネットに接続されとらんで"
|
||||||
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
|
no-internet-desc: "ネットワークには接続されとるけど、インターネットには接続されとらんようやわ。つこてるPCのインターネット接続が正常か確認してや。"
|
||||||
no-server: "Misskeyのサーバーに接続できません"
|
no-server: "Misskeyのサーバーに接続でけへんわ"
|
||||||
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
no-server-desc: "つこてるPCのインターネット接続は正常やけど、Misskeyのサーバーにはつながらんわ。多分サーバーがダウンまたはメンテナンスしとるわ、知らんけど。すまんけどしばらくしてから再度アクセスしてみてや。"
|
||||||
success: "Misskeyのサーバーに接続できました"
|
success: "Misskeyのサーバーに接続できたわ"
|
||||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
success-desc: "正常に接続できるようやわ。ページを再度読み込みしてな。"
|
||||||
flush: "キャッシュの削除"
|
flush: "キャッシュの削除"
|
||||||
set-version: "バージョン指定"
|
set-version: "バージョン指定"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "あんさん"
|
||||||
no-history: "履歴はありません"
|
no-history: "履歴はあらへんで"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはあらへんで"
|
||||||
more: "もっと読む"
|
more: "もっと読む"
|
||||||
no-history: "これより過去の履歴はありません"
|
no-history: "これより過去の履歴はあらへんで"
|
||||||
resize-form: "ドラッグしてフォームの広さを調整"
|
resize-form: "ドラッグしてフォームの広さを調整"
|
||||||
new-message: "新しいメッセージがあります"
|
new-message: "新しいメッセージがあるで"
|
||||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
only-one-file-attached: "メッセージに添付できんのはひとつのファイルのみやで"
|
||||||
common/views/components/messaging-room.form.vue:
|
common/views/components/messaging-room.form.vue:
|
||||||
input-message-here: "ここにメッセージを入力"
|
input-message-here: "ここにメッセージ書いてや"
|
||||||
send: "送信"
|
send: "送信"
|
||||||
attach-from-local: "PCからファイルを添付する"
|
attach-from-local: "PCからファイルを添付する"
|
||||||
attach-from-drive: "ドライブからファイルを添付する"
|
attach-from-drive: "ドライブからファイルを添付する"
|
||||||
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
|
only-one-file-attached: "メッセージに添付できんのはひとつのファイルのみやで"
|
||||||
common/views/components/messaging-room.message.vue:
|
common/views/components/messaging-room.message.vue:
|
||||||
is-read: "既読"
|
is-read: "既読"
|
||||||
deleted: "このメッセージは削除されました"
|
deleted: "このメッセージは削除されたわ"
|
||||||
common/views/components/nav.vue:
|
common/views/components/nav.vue:
|
||||||
about: "Misskeyについて"
|
about: "Misskeyについて"
|
||||||
stats: "統計"
|
stats: "統計"
|
||||||
status: "ステータス"
|
status: "ステータス"
|
||||||
wiki: "Wiki"
|
wiki: "Wiki"
|
||||||
donors: "ドナー"
|
donors: "支援者"
|
||||||
repository: "リポジトリ"
|
repository: "リポジトリ"
|
||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "ほかす"
|
||||||
delete-confirm: "この投稿を削除しますか?"
|
delete-confirm: "この投稿を削除してもええか?"
|
||||||
remote: "投稿元で見る"
|
remote: "投稿元で見る"
|
||||||
common/views/components/poll.vue:
|
common/views/components/poll.vue:
|
||||||
vote-to: "「{}」に投票する"
|
vote-to: "「{}」に投票や!"
|
||||||
vote-count: "{}票"
|
vote-count: "{}票"
|
||||||
total-users: "{}人が投票"
|
total-users: "{}人が投票"
|
||||||
vote: "投票する"
|
vote: "投票するで"
|
||||||
show-result: "結果を見る"
|
show-result: "結果を見よか"
|
||||||
voted: "投票済み"
|
voted: "投票済みや"
|
||||||
common/views/components/poll-editor.vue:
|
common/views/components/poll-editor.vue:
|
||||||
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
|
no-only-one-choice: "選択肢が最低2つ必要やで"
|
||||||
choice-n: "選択肢{}"
|
choice-n: "選択肢{}"
|
||||||
remove: "この選択肢を削除"
|
remove: "この選択肢を消すで"
|
||||||
add: "+選択肢を追加"
|
add: "+選択肢を追加"
|
||||||
destroy: "アンケートを破棄"
|
destroy: "アンケートをほかそ"
|
||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "リアクションを選択"
|
choose-reaction: "リアクションを選択"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
token: "トークン"
|
token: "トークン"
|
||||||
signing-in: "やってます..."
|
signing-in: "サインイン中や..."
|
||||||
signin: "サインイン"
|
signin: "サインイン"
|
||||||
or: "または"
|
or: "または"
|
||||||
signin-with-twitter: "Twitterでログイン"
|
signin-with-twitter: "Twitterでサインイン"
|
||||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。"
|
||||||
common/views/components/signup.vue:
|
common/views/components/signup.vue:
|
||||||
invitation-code: "招待コード"
|
invitation-code: "招待コード"
|
||||||
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||||
username: "ユーザー名"
|
username: "ユーザー名"
|
||||||
checking: "確認しています..."
|
checking: "確認中や…"
|
||||||
available: "利用できます"
|
available: "使えるで"
|
||||||
unavailable: "既に利用されています"
|
unavailable: "もう使われとるで"
|
||||||
error: "通信エラー"
|
error: "通信エラー"
|
||||||
invalid-format: "a~z、A~Z、0~9、_が使えます"
|
invalid-format: "a~z、A~Z、0~9、_が使えるで"
|
||||||
too-short: "1文字以上でお願いします!"
|
too-short: "1文字以上でお願いします!"
|
||||||
too-long: "20文字以内でお願いします"
|
too-long: "20文字以内でお願いします"
|
||||||
password: "パスワード"
|
password: "パスワード"
|
||||||
password-placeholder: "8文字以上を推奨します"
|
password-placeholder: "8文字以上を推奨します"
|
||||||
weak-password: "弱いパスワード"
|
weak-password: "へぼいパスワード"
|
||||||
normal-password: "まあまあのパスワード"
|
normal-password: "ぼちぼちなパスワード"
|
||||||
strong-password: "強いパスワード"
|
strong-password: "良さげなパスワード"
|
||||||
retype: "再入力"
|
retype: "もっかい入力頼むで"
|
||||||
retype-placeholder: "確認のため再入力してください"
|
retype-placeholder: "確認のためもっぺん入力してや"
|
||||||
password-matched: "確認されました"
|
password-matched: "一致しとるで"
|
||||||
password-not-matched: "一致していません"
|
password-not-matched: "一致しとらんで"
|
||||||
recaptcha: "認証"
|
recaptcha: "認証"
|
||||||
create: "アカウント作成"
|
create: "アカウント作成"
|
||||||
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
|
some-error: "何かよう分からんけど、アカウントの作成に失敗してしもたわ。すまんがもっぺん試してくれへんか?"
|
||||||
common/views/components/special-message.vue:
|
common/views/components/special-message.vue:
|
||||||
new-year: "Happy New Year!"
|
new-year: "Happy New Year!"
|
||||||
christmas: "Merry Christmas!"
|
christmas: "Merry Christmas!"
|
||||||
@ -320,8 +345,8 @@ common/views/components/stream-indicator.vue:
|
|||||||
reconnecting: "再接続中"
|
reconnecting: "再接続中"
|
||||||
connected: "接続完了"
|
connected: "接続完了"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/twitter-setting.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
description: "あんさんがつことるTwitterアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにTwitterアカウント情報が表示されるようになったり、Twitterをつこた便利なサインインが使えるようになったりすんで。"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connected-to: "次のTwitterアカウントに接続されとるで"
|
||||||
detail: "詳細..."
|
detail: "詳細..."
|
||||||
reconnect: "再接続する"
|
reconnect: "再接続する"
|
||||||
connect: "Twitterと接続する"
|
connect: "Twitterと接続する"
|
||||||
@ -337,9 +362,12 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはあらへんで"
|
||||||
have-a-nice-day: "良い一日を!"
|
have-a-nice-day: "良い一日を!"
|
||||||
next: "次"
|
next: "次"
|
||||||
common/views/widgets/calendar.vue:
|
common/views/widgets/calendar.vue:
|
||||||
@ -351,17 +379,15 @@ common/views/widgets/calendar.vue:
|
|||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
common/views/widgets/donation.vue:
|
||||||
title: "寄付のお願い"
|
title: "寄付のお願い"
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かるんや。Misskeyは広告を掲載したりせんから、収入を皆様からの寄付に頼ってますねん。もし興味があるなら、{}までご連絡よろしゅう頼んます。ご協力おおきに。"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はあらへんで"
|
||||||
common/views/widgets/posts-monitor.vue:
|
common/views/widgets/posts-monitor.vue:
|
||||||
title: "投稿チャート"
|
title: "投稿チャート"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -370,30 +396,30 @@ common/views/widgets/memo.vue:
|
|||||||
memo: "ここに書いて!"
|
memo: "ここに書いて!"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
common/views/widgets/slideshow.vue:
|
common/views/widgets/slideshow.vue:
|
||||||
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
|
folder-customize-mode: "フォルダを指定するんやったら、一旦カスタマイズモードを終了してや"
|
||||||
folder: "クリックしてフォルダを指定してください"
|
folder: "クリックしてフォルダを指定してください"
|
||||||
no-image: "このフォルダには画像がありません"
|
no-image: "このフォルダには画像がありません"
|
||||||
common/views/widgets/tips.vue:
|
common/views/widgets/tips.vue:
|
||||||
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
|
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできんで"
|
||||||
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
|
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開くで"
|
||||||
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
|
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできんで"
|
||||||
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
|
tips-line4: "投稿フォームにクリップボードにおる画像データをペーストできんで"
|
||||||
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
|
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできんで"
|
||||||
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
|
tips-line6: "ドライブやと、ファイルをドラッグしてフォルダ移動できんで"
|
||||||
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
|
tips-line7: "ドライブやと、フォルダをドラッグしてフォルダ移動できんで"
|
||||||
tips-line8: "ホームは設定からカスタマイズできます"
|
tips-line8: "ホームは設定からカスタマイズできんで"
|
||||||
tips-line9: "MisskeyはAGPLv3です"
|
tips-line9: "MisskeyはAGPLv3やで"
|
||||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れんで"
|
||||||
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
|
tips-line11: "投稿の ... をクリックして、ピン留めから投稿をユーザーページにピン留めできんで"
|
||||||
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
|
tips-line13: "投稿に添付したファイルは全てドライブに保存されんで"
|
||||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できんで"
|
||||||
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
|
tips-line17: "「**」でテキストを囲ったると**強調表示**されんで"
|
||||||
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
|
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで"
|
||||||
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
|
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん"
|
||||||
tips-line21: "APIを利用してbotの開発なども行えます"
|
tips-line21: "APIをつこてbotの開発なども行えるで"
|
||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始したんよ"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -403,14 +429,15 @@ common/views/pages/follow.vue:
|
|||||||
desktop:
|
desktop:
|
||||||
banner-crop-title: "バナーとして表示する部分を選択"
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
uploading-banner: "新しいバナーをアップロードしています"
|
uploading-banner: "新しいバナーをアップロードしとるで"
|
||||||
banner-updated: "バナーを更新しました"
|
banner-updated: "バナーを更新したで"
|
||||||
choose-banner: "バナーにする画像を選択"
|
choose-banner: "バナーにする画像を選択"
|
||||||
avatar-crop-title: "アバターとして表示する部分を選択"
|
avatar-crop-title: "アバターとして表示する部分を選択"
|
||||||
avatar: "アバター"
|
avatar: "アバター"
|
||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -420,10 +447,10 @@ desktop/views/components/activity.vue:
|
|||||||
title: "アクティビティ"
|
title: "アクティビティ"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{1}年 {2}月"
|
title: "{1}年 {2} 月"
|
||||||
prev: "前の月"
|
prev: "前の月"
|
||||||
next: "次の月"
|
next: "次の月"
|
||||||
go: "クリックして時間遡行"
|
go: "クリックしてタイムリープ"
|
||||||
desktop/views/components/charts.vue:
|
desktop/views/components/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
@ -464,7 +491,7 @@ desktop/views/components/drive.file.vue:
|
|||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "閲覧注意"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "名前を変更"
|
rename: "名前を変えるで"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
unmark-as-sensitive: "閲覧注意を解除"
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
copy-url: "URLをコピー"
|
copy-url: "URLをコピー"
|
||||||
@ -475,26 +502,26 @@ desktop/views/components/drive.file.vue:
|
|||||||
open-in-app: "アプリで開く"
|
open-in-app: "アプリで開く"
|
||||||
add-app: "アプリを追加"
|
add-app: "アプリを追加"
|
||||||
rename-file: "ファイル名の変更"
|
rename-file: "ファイル名の変更"
|
||||||
input-new-file-name: "新しいファイル名を入力してください"
|
input-new-file-name: "新しいファイル名を入力してや"
|
||||||
copied: "コピー完了"
|
copied: "コピー完了や"
|
||||||
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
|
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
|
||||||
desktop/views/components/drive.folder.vue:
|
desktop/views/components/drive.folder.vue:
|
||||||
unable-to-process: "操作を完了できません"
|
unable-to-process: "操作を完了できません"
|
||||||
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
|
||||||
unhandled-error: "不明なエラー"
|
unhandled-error: "ようわからん"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
move-to-this-folder: "このフォルダへ移動"
|
move-to-this-folder: "このフォルダへ移動"
|
||||||
show-in-new-window: "新しいウィンドウで表示"
|
show-in-new-window: "新しいウィンドウで表示"
|
||||||
rename: "名前を変更"
|
rename: "名前を変えるで"
|
||||||
rename-folder: "フォルダ名の変更"
|
rename-folder: "フォルダ名を変えるで"
|
||||||
input-new-folder-name: "新しいフォルダ名を入力してください"
|
input-new-folder-name: "新しいフォルダ名を入力してや"
|
||||||
desktop/views/components/drive.nav-folder.vue:
|
desktop/views/components/drive.nav-folder.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
desktop/views/components/drive.vue:
|
desktop/views/components/drive.vue:
|
||||||
search: "検索"
|
search: "検索"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||||
empty-drive: "ドライブには何もありません。"
|
empty-drive: "ドライブには何もあらへんで。"
|
||||||
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
|
||||||
empty-folder: "このフォルダーは空です"
|
empty-folder: "このフォルダーは空です"
|
||||||
unable-to-process: "操作を完了できません"
|
unable-to-process: "操作を完了できません"
|
||||||
@ -511,11 +538,11 @@ desktop/views/components/drive.vue:
|
|||||||
upload: "ファイルをアップロード"
|
upload: "ファイルをアップロード"
|
||||||
url-upload: "URLからアップロード"
|
url-upload: "URLからアップロード"
|
||||||
desktop/views/components/media-image.vue:
|
desktop/views/components/media-image.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "ちょっと見せられへんわ"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして見せるで"
|
||||||
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:
|
desktop/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
@ -536,7 +563,7 @@ desktop/views/components/friends-maker.vue:
|
|||||||
refresh: "もっと見る"
|
refresh: "もっと見る"
|
||||||
close: "閉じる"
|
close: "閉じる"
|
||||||
desktop/views/components/game-window.vue:
|
desktop/views/components/game-window.vue:
|
||||||
game: "リバーシ"
|
game: "ゲーム"
|
||||||
desktop/views/components/home.vue:
|
desktop/views/components/home.vue:
|
||||||
done: "完了"
|
done: "完了"
|
||||||
add-widget: "ウィジェットを追加:"
|
add-widget: "ウィジェットを追加:"
|
||||||
@ -575,32 +602,32 @@ desktop/views/components/notifications.vue:
|
|||||||
empty: "ありません!"
|
empty: "ありません!"
|
||||||
desktop/views/components/post-form.vue:
|
desktop/views/components/post-form.vue:
|
||||||
add-visible-user: "+ユーザーを追加"
|
add-visible-user: "+ユーザーを追加"
|
||||||
attach-location-information: "位置情報を添付する"
|
attach-location-information: "いる場所くっつけるで"
|
||||||
hide-contents: "内容を隠す"
|
hide-contents: "内容を隠す"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
quote-placeholder: "この投稿を引用..."
|
quote-placeholder: "この投稿を引用..."
|
||||||
submit: "投稿"
|
submit: "投稿"
|
||||||
reply: "返信"
|
reply: "返信"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
posted: "投稿しました!"
|
posted: "投稿したで!"
|
||||||
replied: "返信しました!"
|
replied: "返信したで!"
|
||||||
reposted: "Renoteしました!"
|
reposted: "Renoteしました!"
|
||||||
note-failed: "投稿に失敗しました"
|
note-failed: "投稿に失敗したで"
|
||||||
reply-failed: "返信に失敗しました"
|
reply-failed: "返信に失敗したで"
|
||||||
renote-failed: "Renoteに失敗しました"
|
renote-failed: "Renoteに失敗しました"
|
||||||
posting: "投稿中"
|
posting: "投稿中"
|
||||||
attach-media-from-local: "PCからメディアを添付"
|
attach-media-from-local: "PCからメディアを添付"
|
||||||
attach-media-from-drive: "ドライブからメディアを添付"
|
attach-media-from-drive: "ドライブからメディアを添付"
|
||||||
attach-cancel: "添付取り消し"
|
attach-cancel: "くっつけるのやめよか"
|
||||||
insert-a-kao: "v('ω')v"
|
insert-a-kao: "v('ω')v"
|
||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近"
|
recent-tags: "最近のタグ"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "お使いの端末は位置情報に対応していません"
|
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "ユーザー名を入力してや"
|
||||||
annotations: "内容への注釈 (オプション)"
|
annotations: "内容への注釈 (オプション)"
|
||||||
desktop/views/components/post-form-window.vue:
|
desktop/views/components/post-form-window.vue:
|
||||||
note: "新規投稿"
|
note: "新規投稿"
|
||||||
@ -635,20 +662,25 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、WebSocket接続を経由してAPIリクエストが行われんで(パフォーマンス向上するかも、知らんけど)。オフにすると、ネイティブの fetch API が利用されるで。この設定はこのデバイスのみ有効やで。"
|
||||||
display: "デザインと表示"
|
display: "デザインと表示"
|
||||||
customize: "ホームをカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
choose-wallpaper: "壁紙を選択"
|
choose-wallpaper: "壁紙を選択"
|
||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -686,9 +718,9 @@ desktop/views/components/settings.vue:
|
|||||||
prevent-update: "アップデートを延期する(非推奨)"
|
prevent-update: "アップデートを延期する(非推奨)"
|
||||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||||
no-updates: "利用可能な更新はありません"
|
no-updates: "利用可能な更新はありません"
|
||||||
no-updates-desc: "お使いのMisskeyは最新です。"
|
no-updates-desc: "つこてるMisskeyは最新や!"
|
||||||
update-available: "新しいバージョンが利用可能です"
|
update-available: "新しいバージョンが利用可能や"
|
||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されるで。"
|
||||||
advanced-settings: "高度な設定"
|
advanced-settings: "高度な設定"
|
||||||
debug-mode: "デバッグモードを有効にする"
|
debug-mode: "デバッグモードを有効にする"
|
||||||
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
debug-mode-desc: "この設定はブラウザに記憶されます。"
|
||||||
@ -707,28 +739,28 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
unregister: "設定を解除"
|
unregister: "設定を解除"
|
||||||
unregistered: "二段階認証が無効になりました。"
|
unregistered: "二段階認証が無効になりました。"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はここやで"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "んで、ここに出とるQRコードをスキャンしてな:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "最後にデバイスに表示されとるトークンを入力してな:"
|
||||||
submit: "完了"
|
submit: "送信"
|
||||||
success: "設定が完了しました!"
|
success: "設定が完了したで!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "なんか設定に失敗したで。トークンを間違えとらんか確認してや。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次のサインインからは、パスワードに加えてデバイスに出とるトークンを入力してな。"
|
||||||
desktop/views/components/settings.api.vue:
|
desktop/views/components/settings.api.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」っちゅうキーでパラメータに付加してリクエストしてや。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用されるかも知れんから、このトークンは第三者に教えたらあかんで(アプリなどにも入力しんといてな)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたとかその可能性があったらトークンを再生成できるで。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "トークン:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してや"
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはあらへんで"
|
||||||
desktop/views/components/settings.drive.vue:
|
desktop/views/components/settings.drive.vue:
|
||||||
max: "中"
|
max: "中"
|
||||||
in-use: "使用中"
|
in-use: "使用中"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはいません"
|
no-users: "ミュートしているユーザーはおらんで"
|
||||||
desktop/views/components/settings.password.vue:
|
desktop/views/components/settings.password.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "パスワードを変更する"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
@ -764,7 +796,7 @@ desktop/views/components/timeline.vue:
|
|||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "おかえりなさい、"
|
welcome-back: "おかえり、"
|
||||||
adjective: "さん"
|
adjective: "さん"
|
||||||
desktop/views/components/ui.header.account.vue:
|
desktop/views/components/ui.header.account.vue:
|
||||||
profile: "プロフィール"
|
profile: "プロフィール"
|
||||||
@ -772,7 +804,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
favorites: "お気に入り"
|
favorites: "お気に入り"
|
||||||
lists: "リスト"
|
lists: "リスト"
|
||||||
follow-requests: "フォロー申請"
|
follow-requests: "フォロー申請"
|
||||||
customize: "ホームのカスタマイズ"
|
customize: "ホームをカスタマイズ"
|
||||||
admin: "管理"
|
admin: "管理"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
@ -794,7 +826,7 @@ desktop/views/components/received-follow-requests-window.vue:
|
|||||||
reject: "拒否"
|
reject: "拒否"
|
||||||
desktop/views/components/user-lists-window.vue:
|
desktop/views/components/user-lists-window.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
create-list: "リストを作成"
|
create-list: "新しいリストを作成"
|
||||||
list-name: "リスト名"
|
list-name: "リスト名"
|
||||||
desktop/views/components/user-preview.vue:
|
desktop/views/components/user-preview.vue:
|
||||||
notes: "投稿"
|
notes: "投稿"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -829,11 +861,11 @@ desktop/views/pages/admin/admin.suspend-user.vue:
|
|||||||
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
desktop/views/pages/admin/admin.unsuspend-user.vue:
|
||||||
unsuspend-user: "ユーザーの凍結の解除"
|
unsuspend-user: "ユーザーの凍結の解除"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
unsuspended: "凍結を解除しました"
|
unsuspended: "凍結を解除したで"
|
||||||
desktop/views/pages/admin/admin.verify-user.vue:
|
desktop/views/pages/admin/admin.verify-user.vue:
|
||||||
verify-user: "ユーザーの公式アカウント設定"
|
verify-user: "ユーザーの公式アカウント設定"
|
||||||
verify: "公式アカウントにする"
|
verify: "公式アカウントにする"
|
||||||
verified: "公式アカウントにしました"
|
verified: "公式アカウントにしたで"
|
||||||
desktop/views/pages/admin/admin.unverify-user.vue:
|
desktop/views/pages/admin/admin.unverify-user.vue:
|
||||||
unverify-user: "ユーザーの公式アカウント解除"
|
unverify-user: "ユーザーの公式アカウント解除"
|
||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
@ -846,21 +878,29 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
signin: "ログイン"
|
signin: "サインイン"
|
||||||
signup: "新規登録"
|
signup: "サインアップ"
|
||||||
signin-button: "やってる"
|
signin-button: "サインイン中…"
|
||||||
signup-button: "やる"
|
signup-button: "サインアップ"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "ドライブ"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
more: "さらに読み込む"
|
more: "もっと読み込んでくで"
|
||||||
desktop/views/pages/home-customize.vue:
|
desktop/views/pages/home-customize.vue:
|
||||||
title: "ホームのカスタマイズ"
|
title: "ホームをカスタマイズ"
|
||||||
desktop/views/pages/note.vue:
|
desktop/views/pages/note.vue:
|
||||||
prev: "前の投稿"
|
prev: "前の投稿"
|
||||||
next: "次の投稿"
|
next: "次の投稿"
|
||||||
@ -895,19 +935,19 @@ desktop/views/pages/user/user.vue:
|
|||||||
desktop/views/pages/user/user.home.vue:
|
desktop/views/pages/user/user.home.vue:
|
||||||
last-used-at: "最終アクセス"
|
last-used-at: "最終アクセス"
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "フォト"
|
title: "写真"
|
||||||
loading: "読み込み中"
|
loading: "読み込み中"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はあらへんで"
|
||||||
desktop/views/pages/user/user.profile.vue:
|
desktop/views/pages/user/user.profile.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされとるで"
|
||||||
stalk: "ストークする"
|
stalk: "ストークする"
|
||||||
stalking: "ストーキングしています"
|
stalking: "ストーキングしとるで"
|
||||||
unstalk: "ストーク解除"
|
unstalk: "ストーク解除"
|
||||||
mute: "ミュートする"
|
mute: "ミュートする"
|
||||||
muted: "ミュートしています"
|
muted: "ミュートしとるで"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに追加"
|
||||||
list-pushed: "{user}を{list}に追加しました。"
|
list-pushed: "{user}を{list}に追加したで。"
|
||||||
desktop/views/pages/user/user.header.vue:
|
desktop/views/pages/user/user.header.vue:
|
||||||
posts: "投稿"
|
posts: "投稿"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@ -926,7 +966,7 @@ desktop/views/widgets/notifications.vue:
|
|||||||
desktop/views/widgets/polls.vue:
|
desktop/views/widgets/polls.vue:
|
||||||
title: "アンケート"
|
title: "アンケート"
|
||||||
refresh: "他を見る"
|
refresh: "他を見る"
|
||||||
nothing: "ありません!"
|
nothing: "あらへん!"
|
||||||
desktop/views/widgets/post-form.vue:
|
desktop/views/widgets/post-form.vue:
|
||||||
title: "投稿"
|
title: "投稿"
|
||||||
note: "投稿"
|
note: "投稿"
|
||||||
@ -948,7 +988,7 @@ mobile/views/components/drive.vue:
|
|||||||
count-separator: "、"
|
count-separator: "、"
|
||||||
file-count: "ファイル"
|
file-count: "ファイル"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっと読み込む"
|
||||||
nothing-in-drive: "ドライブには何もありません"
|
nothing-in-drive: "ドライブには何もあらへんで。"
|
||||||
folder-is-empty: "このフォルダは空です"
|
folder-is-empty: "このフォルダは空です"
|
||||||
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
|
||||||
deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。"
|
deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。"
|
||||||
@ -1025,9 +1065,9 @@ mobile/views/components/post-form.vue:
|
|||||||
quote-placeholder: "この投稿を引用... (オプション)"
|
quote-placeholder: "この投稿を引用... (オプション)"
|
||||||
reply-placeholder: "この投稿への返信..."
|
reply-placeholder: "この投稿への返信..."
|
||||||
cw-placeholder: "内容への注釈 (オプション)"
|
cw-placeholder: "内容への注釈 (オプション)"
|
||||||
location-alert: "お使いの端末は位置情報に対応していません"
|
location-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
||||||
error: "エラー"
|
error: "エラー"
|
||||||
username-prompt: "ユーザー名を入力してください"
|
username-prompt: "ユーザー名を入力してや"
|
||||||
mobile/views/components/sub-note-content.vue:
|
mobile/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
@ -1066,7 +1106,7 @@ mobile/views/pages/favorites.vue:
|
|||||||
title: "お気に入り"
|
title: "お気に入り"
|
||||||
mobile/views/pages/user-lists.vue:
|
mobile/views/pages/user-lists.vue:
|
||||||
title: "リスト"
|
title: "リスト"
|
||||||
enter-list-name: "リスト名を入力してください"
|
enter-list-name: "リスト名を入力してや"
|
||||||
mobile/views/pages/drive.vue:
|
mobile/views/pages/drive.vue:
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
more: "もっと見る"
|
more: "もっと見る"
|
||||||
@ -1082,7 +1122,7 @@ mobile/views/pages/home.vue:
|
|||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{}」が付けられた投稿はあらへんで。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1149,9 +1190,15 @@ mobile/views/pages/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "べっぴんさん"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
|
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "광고 차단기를 해제하십시오"
|
detected: "광고 차단기를 해제하십시오"
|
||||||
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
|
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "곤란하고 있어"
|
confused: "곤란하고 있어"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "지금 어떻게하고있어?"
|
a: "지금 어떻게하고있어?"
|
||||||
b: "뭔가 있었습니까?"
|
b: "뭔가 있었습니까?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "무승부"
|
drawn: "무승부"
|
||||||
my-turn: "당신의 차례입니다"
|
my-turn: "당신의 차례입니다"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
1277
locales/nl-NL.yml
Normal file
1277
locales/nl-NL.yml
Normal file
File diff suppressed because it is too large
Load Diff
1277
locales/no-NO.yml
Normal file
1277
locales/no-NO.yml
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "⭐ Fediwersum"
|
misskey: "⭐ Fediwersum"
|
||||||
about-title: "⭐ Fediwersum"
|
about-title: "⭐ Fediwersum"
|
||||||
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Spróbuj wyłączyć blokadę reklam."
|
detected: "Spróbuj wyłączyć blokadę reklam."
|
||||||
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "Zmieszany"
|
confused: "Zmieszany"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Co robisz?"
|
a: "Co robisz?"
|
||||||
b: "Co się wydarzyło?"
|
b: "Co się wydarzyło?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Remis"
|
drawn: "Remis"
|
||||||
my-turn: "Twoja kolej"
|
my-turn: "Twoja kolej"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "Autorzy"
|
develop: "Autorzy"
|
||||||
feedback: "Podziel się opinią"
|
feedback: "Podziel się opinią"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Dodaj do ulubionych"
|
favorite: "Dodaj do ulubionych"
|
||||||
pin: "Przypnij do profilu"
|
pin: "Przypnij do profilu"
|
||||||
delete: "Usuń"
|
delete: "Usuń"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "Bezpośredni"
|
specified: "Bezpośredni"
|
||||||
specified-desc: "Tylko dla określonych użytkowników"
|
specified-desc: "Tylko dla określonych użytkowników"
|
||||||
private: "Prywatny"
|
private: "Prywatny"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "Sprawdzanie"
|
fetching: "Sprawdzanie"
|
||||||
no-broadcasts: "Brak transmisji"
|
no-broadcasts: "Brak transmisji"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "Hashtagi"
|
title: "Hashtagi"
|
||||||
count: "Wspomniany przez {} użytkowników"
|
|
||||||
empty: "Brak popularnych hashtagów"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "Informacje o serwerze"
|
title: "Informacje o serwerze"
|
||||||
toggle: "Przełącz widok"
|
toggle: "Przełącz widok"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "Wysyłanie awatara"
|
uploading-avatar: "Wysyłanie awatara"
|
||||||
avatar-updated: "Wysłano awatar"
|
avatar-updated: "Wysłano awatar"
|
||||||
choose-avatar: "Wybierz awatar"
|
choose-avatar: "Wybierz awatar"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Czarny … Łącznie"
|
total: "Czarny … Łącznie"
|
||||||
notes: "Niebieski … Wpisy"
|
notes: "Niebieski … Wpisy"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "Zachowanie"
|
behaviour: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
|
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
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"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "Usuń tło"
|
delete-wallpaper: "Usuń tło"
|
||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "Udostępniono przez {}"
|
reposted-by: "Udostępniono przez {}"
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
gotit: "Rozumiem!"
|
gotit: "Rozumiem!"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "Zaloguj się"
|
signin-button: "Zaloguj się"
|
||||||
signup-button: "Zarejestruj się"
|
signup-button: "Zarejestruj się"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
powered-by-misskey: "Oparto o <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Dysk Misskey"
|
title: "Dysk Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "Styl wpisów"
|
post-style: "Styl wpisów"
|
||||||
post-style-standard: "Standardowy"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "Inteligentny"
|
post-style-smart: "Inteligentny"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "Zachowanie"
|
behavior: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
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"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
signout: "Wyloguj"
|
signout: "Wyloguj"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Śledzi Cię"
|
follows-you: "Śledzi Cię"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "Uma ⭐ do fediverso"
|
misskey: "Uma ⭐ do fediverso"
|
||||||
about-title: "Uma ⭐ do fediverso."
|
about-title: "Uma ⭐ do fediverso."
|
||||||
about: "Obrigado por encontrar Misskey. Uma <b>plataforma descentralizada de microblog</b> nascida na Terra. Já que ela existe no Fediverso (um universo onde várias plataformas de mídia social são organizadas), ela é ligada com outras plataformas.Por que você não tira uma folga do agito e confusão da cidade, e mergulha em uma nova internet?"
|
about: "Obrigado por encontrar Misskey. Uma <b>plataforma descentralizada de microblog</b> nascida na Terra. Já que ela existe no Fediverso (um universo onde várias plataformas de mídia social são organizadas), ela é ligada com outras plataformas.Por que você não tira uma folga do agito e confusão da cidade, e mergulha em uma nova internet?"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Por favor, desative o bloqueador de anúncios."
|
detected: "Por favor, desative o bloqueador de anúncios."
|
||||||
warning: "Alguns recursos podem não estar disponíveis ou apresentar mal funcionamento se o bloqueio de anúncios estiver ativado. <strong>Misskey não está usando anúncios</strong>"
|
warning: "Alguns recursos podem não estar disponíveis ou apresentar mal funcionamento se o bloqueio de anúncios estiver ativado. <strong>Misskey não está usando anúncios</strong>"
|
||||||
@ -58,7 +71,7 @@ common:
|
|||||||
friday: "sexta"
|
friday: "sexta"
|
||||||
saturday: "sábado"
|
saturday: "sábado"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "Curtir"
|
||||||
love: "Amei"
|
love: "Amei"
|
||||||
laugh: "Riso"
|
laugh: "Riso"
|
||||||
hmm: "Hmm...?"
|
hmm: "Hmm...?"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "Confuso"
|
confused: "Confuso"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudim"
|
pudding: "Pudim"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "O que está fazendo?"
|
a: "O que está fazendo?"
|
||||||
b: "O que está acontecendo?"
|
b: "O que está acontecendo?"
|
||||||
@ -81,12 +103,13 @@ common:
|
|||||||
ok: "OK"
|
ok: "OK"
|
||||||
update-available-title: "Atualização disponível"
|
update-available-title: "Atualização disponível"
|
||||||
update-available: "Uma nova versão de Misskey está disponível ({newer}). A versão atual é {current}. Recarregue a página para atualizar."
|
update-available: "Uma nova versão de Misskey está disponível ({newer}). A versão atual é {current}. Recarregue a página para atualizar."
|
||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
|
||||||
i-like-sushi: "Eu prefiro sushi a pudim"
|
i-like-sushi: "Eu prefiro sushi a pudim"
|
||||||
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
|
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "Conta verificada"
|
verified-user: "Conta verificada"
|
||||||
disable-animated-mfm: "Desativar texto animado nas publicações"
|
disable-animated-mfm: "Desativar texto animado nas publicações"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Empatado"
|
drawn: "Empatado"
|
||||||
my-turn: "Seu turno"
|
my-turn: "Seu turno"
|
||||||
@ -97,7 +120,7 @@ common:
|
|||||||
black: "Pretas"
|
black: "Pretas"
|
||||||
white: "Brancas"
|
white: "Brancas"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
this-turn: "{}ターン目"
|
this-turn: "Turno de {}"
|
||||||
widgets:
|
widgets:
|
||||||
analog-clock: "Relógio analógico"
|
analog-clock: "Relógio analógico"
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
@ -106,16 +129,16 @@ common:
|
|||||||
activity: "Atividade"
|
activity: "Atividade"
|
||||||
rss: "Leitor de RSS"
|
rss: "Leitor de RSS"
|
||||||
memo: "Nota adesiva"
|
memo: "Nota adesiva"
|
||||||
trends: "トレンド"
|
trends: "Tendências"
|
||||||
photo-stream: "フォトストリーム"
|
photo-stream: "フォトストリーム"
|
||||||
posts-monitor: "投稿チャート"
|
posts-monitor: "Gráfico de publicações"
|
||||||
slideshow: "スライドショー"
|
slideshow: "スライドショー"
|
||||||
version: "Versão"
|
version: "Versão"
|
||||||
broadcast: "ブロードキャスト"
|
broadcast: "ブロードキャスト"
|
||||||
notifications: "Notificações"
|
notifications: "Notificações"
|
||||||
users: "Usuário sugeridos"
|
users: "Usuário sugeridos"
|
||||||
polls: "Enquetes"
|
polls: "Enquetes"
|
||||||
post-form: "投稿フォーム"
|
post-form: "Formulário de publicação"
|
||||||
messaging: "Mensagens"
|
messaging: "Mensagens"
|
||||||
server: "Informações do servidor"
|
server: "Informações do servidor"
|
||||||
donation: "Doações"
|
donation: "Doações"
|
||||||
@ -135,10 +158,10 @@ common:
|
|||||||
swap-up: "Mover para cima"
|
swap-up: "Mover para cima"
|
||||||
swap-down: "Mover para baixo"
|
swap-down: "Mover para baixo"
|
||||||
remove: "Remover"
|
remove: "Remover"
|
||||||
add-column: "カラムを追加"
|
add-column: "Adicionar coluna"
|
||||||
rename: "Renomear"
|
rename: "Renomear"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねる"
|
||||||
pop-right: "右に出す"
|
pop-right: "Acoplar à direita"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
|
share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
|
||||||
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
||||||
@ -151,18 +174,18 @@ auth/views/form.vue:
|
|||||||
drive-write: "ドライブを操作する。"
|
drive-write: "ドライブを操作する。"
|
||||||
notification-read: "通知を見る。"
|
notification-read: "通知を見る。"
|
||||||
notification-write: "通知を操作する。"
|
notification-write: "通知を操作する。"
|
||||||
cancel: "キャンセル"
|
cancel: "Cancelar"
|
||||||
accept: "アクセスを許可"
|
accept: "Permitir acesso"
|
||||||
auth/views/index.vue:
|
auth/views/index.vue:
|
||||||
loading: "読み込み中"
|
loading: "Carregando"
|
||||||
denied: "アプリケーションの連携をキャンセルしました。"
|
denied: "アプリケーションの連携をキャンセルしました。"
|
||||||
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
|
||||||
already-authorized: "このアプリは既に連携済みです"
|
already-authorized: "Este aplicativo já foi autorizado"
|
||||||
allowed: "アプリケーションの連携を許可しました"
|
allowed: "Aplicativos com acesso autorizado"
|
||||||
callback-url: "アプリケーションに戻っています"
|
callback-url: "Voltando ao aplicativo"
|
||||||
please-go-back: "アプリケーションに戻って、やっていってください。"
|
please-go-back: "Por favor, volte ao aplicativo."
|
||||||
error: "セッションが存在しません。"
|
error: "A sessão não existe."
|
||||||
sign-in: "サインインしてください"
|
sign-in: "Por favor, entre."
|
||||||
common/views/components/games/reversi/reversi.vue:
|
common/views/components/games/reversi/reversi.vue:
|
||||||
matching:
|
matching:
|
||||||
waiting-for: "{}を待っています"
|
waiting-for: "{}を待っています"
|
||||||
@ -176,17 +199,17 @@ common/views/components/games/reversi/reversi.game.vue:
|
|||||||
common/views/components/games/reversi/reversi.index.vue:
|
common/views/components/games/reversi/reversi.index.vue:
|
||||||
title: "Misskey Reversi"
|
title: "Misskey Reversi"
|
||||||
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
|
||||||
invite: "招待"
|
invite: "Convidar"
|
||||||
rule: "遊び方"
|
rule: "Como jogar"
|
||||||
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
|
||||||
mode-invite: "招待"
|
mode-invite: "Convidar"
|
||||||
mode-invite-desc: "指定したユーザーと対戦するモードです。"
|
mode-invite-desc: "Convidar um usuário para jogar"
|
||||||
invitations: "対局の招待があります!"
|
invitations: "Você foi convidado!"
|
||||||
my-games: "自分の対局"
|
my-games: "Meu jogo"
|
||||||
all-games: "みんなの対局"
|
all-games: "Todos os jogos"
|
||||||
enter-username: "ユーザー名を入力してください"
|
enter-username: "Digite o nome de usuário."
|
||||||
game-state:
|
game-state:
|
||||||
ended: "終了"
|
ended: "Terminado"
|
||||||
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: "ゲームの設定"
|
||||||
@ -228,11 +251,11 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
|
||||||
success: "Misskeyのサーバーに接続できました"
|
success: "Misskeyのサーバーに接続できました"
|
||||||
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
|
||||||
flush: "キャッシュの削除"
|
flush: "Limpar o cache"
|
||||||
set-version: "バージョン指定"
|
set-version: "バージョン指定"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "Você"
|
||||||
no-history: "履歴はありません"
|
no-history: "履歴はありません"
|
||||||
common/views/components/messaging-room.vue:
|
common/views/components/messaging-room.vue:
|
||||||
empty: "このユーザーと話したことはありません"
|
empty: "このユーザーと話したことはありません"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "Todos os usuários"
|
all-users: "Todos os usuários"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "Todas as notas"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Desenvolvido por <b>Misskey</b>."
|
powered-by-misskey: "Desenvolvido por <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Drive Misskey"
|
title: "Drive Misskey"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
@ -6,6 +6,19 @@ common:
|
|||||||
misskey: "A ⭐ of fediverse"
|
misskey: "A ⭐ of fediverse"
|
||||||
about-title: "A ⭐ of fediverse."
|
about-title: "A ⭐ of fediverse."
|
||||||
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
|
||||||
|
intro:
|
||||||
|
title: "Misskeyって?"
|
||||||
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
|
features: "特徴"
|
||||||
|
rich-contents: "投稿"
|
||||||
|
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
||||||
|
reaction: "リアクション"
|
||||||
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
|
ui: "インターフェース"
|
||||||
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
|
drive: "ドライブ"
|
||||||
|
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
||||||
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "広告ブロッカーを無効にしてください"
|
detected: "広告ブロッカーを無効にしてください"
|
||||||
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
|
||||||
@ -68,6 +81,15 @@ common:
|
|||||||
confused: "こまこまのこまり"
|
confused: "こまこまのこまり"
|
||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
|
note-visibility:
|
||||||
|
public: "公開"
|
||||||
|
home: "ホーム"
|
||||||
|
home-desc: "ホームタイムラインにのみ公開"
|
||||||
|
followers: "フォロワー"
|
||||||
|
followers-desc: "自分のフォロワーにのみ公開"
|
||||||
|
specified: "ダイレクト"
|
||||||
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
|
private: "非公開"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今どうしてる?"
|
a: "今どうしてる?"
|
||||||
b: "何かありましたか?"
|
b: "何かありましたか?"
|
||||||
@ -87,6 +109,7 @@ common:
|
|||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "引き分け"
|
drawn: "引き分け"
|
||||||
my-turn: "あなたのターンです"
|
my-turn: "あなたのターンです"
|
||||||
@ -260,6 +283,8 @@ common/views/components/nav.vue:
|
|||||||
develop: "開発者"
|
develop: "開発者"
|
||||||
feedback: "フィードバック"
|
feedback: "フィードバック"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
|
detail: "詳細"
|
||||||
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
pin: "ピン留め"
|
pin: "ピン留め"
|
||||||
delete: "削除"
|
delete: "削除"
|
||||||
@ -337,6 +362,9 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "指定したユーザーにのみ公開"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
|
common/views/components/trends.vue:
|
||||||
|
count: "{}人が投稿"
|
||||||
|
empty: "トレンドなし"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -360,8 +388,6 @@ common/views/widgets/posts-monitor.vue:
|
|||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
common/views/widgets/hashtags.vue:
|
common/views/widgets/hashtags.vue:
|
||||||
title: "ハッシュタグ"
|
title: "ハッシュタグ"
|
||||||
count: "{}人が投稿"
|
|
||||||
empty: "トレンドなし"
|
|
||||||
common/views/widgets/server.vue:
|
common/views/widgets/server.vue:
|
||||||
title: "サーバー情報"
|
title: "サーバー情報"
|
||||||
toggle: "表示を切り替え"
|
toggle: "表示を切り替え"
|
||||||
@ -411,6 +437,7 @@ desktop:
|
|||||||
uploading-avatar: "新しいアバターをアップロードしています"
|
uploading-avatar: "新しいアバターをアップロードしています"
|
||||||
avatar-updated: "アバターを更新しました"
|
avatar-updated: "アバターを更新しました"
|
||||||
choose-avatar: "アバターにする画像を選択"
|
choose-avatar: "アバターにする画像を選択"
|
||||||
|
invalid-filetype: "この形式のファイルはサポートされていません"
|
||||||
desktop/views/components/activity.chart.vue:
|
desktop/views/components/activity.chart.vue:
|
||||||
total: "Black ... Total"
|
total: "Black ... Total"
|
||||||
notes: "Blue ... Notes"
|
notes: "Blue ... Notes"
|
||||||
@ -635,6 +662,9 @@ desktop/views/components/settings.vue:
|
|||||||
behaviour: "動作"
|
behaviour: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "詳細設定"
|
advanced: "詳細設定"
|
||||||
@ -646,9 +676,11 @@ desktop/views/components/settings.vue:
|
|||||||
delete-wallpaper: "壁紙を削除"
|
delete-wallpaper: "壁紙を削除"
|
||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
|
||||||
@ -819,8 +851,8 @@ desktop/views/pages/admin/admin.dashboard.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "このインスタンスのユーザー"
|
original-users: "このインスタンスのユーザー"
|
||||||
all-notes: "全てのノート"
|
all-notes: "全ての投稿"
|
||||||
original-notes: "このインスタンスのノート"
|
original-notes: "このインスタンスの投稿"
|
||||||
invite: "招待"
|
invite: "招待"
|
||||||
desktop/views/pages/admin/admin.suspend-user.vue:
|
desktop/views/pages/admin/admin.suspend-user.vue:
|
||||||
suspend-user: "ユーザーの凍結"
|
suspend-user: "ユーザーの凍結"
|
||||||
@ -846,6 +878,11 @@ desktop/views/pages/deck/deck.note.vue:
|
|||||||
reposted-by: "{}がRenote"
|
reposted-by: "{}がRenote"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
|
desktop/views/pages/stats/stats.vue:
|
||||||
|
all-users: "全てのユーザー"
|
||||||
|
original-users: "このインスタンスのユーザー"
|
||||||
|
all-notes: "全ての投稿"
|
||||||
|
original-notes: "このインスタンスの投稿"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
about: "詳しく..."
|
about: "詳しく..."
|
||||||
gotit: "わかった"
|
gotit: "わかった"
|
||||||
@ -854,7 +891,10 @@ desktop/views/pages/welcome.vue:
|
|||||||
signin-button: "やってる"
|
signin-button: "やってる"
|
||||||
signup-button: "やる"
|
signup-button: "やる"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
|
announcements: "お知らせ"
|
||||||
|
photos: "最近の画像"
|
||||||
powered-by-misskey: "Powered by <b>Misskey</b>."
|
powered-by-misskey: "Powered by <b>Misskey</b>."
|
||||||
|
info: "情報"
|
||||||
desktop/views/pages/drive.vue:
|
desktop/views/pages/drive.vue:
|
||||||
title: "Misskey Drive"
|
title: "Misskey Drive"
|
||||||
desktop/views/pages/favorites.vue:
|
desktop/views/pages/favorites.vue:
|
||||||
@ -1142,6 +1182,7 @@ mobile/views/pages/settings.vue:
|
|||||||
dark-mode: "ダークモード"
|
dark-mode: "ダークモード"
|
||||||
i-am-under-limited-internet: "私は通信を制限されている"
|
i-am-under-limited-internet: "私は通信を制限されている"
|
||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||||
@ -1150,8 +1191,14 @@ mobile/views/pages/settings.vue:
|
|||||||
post-style: "投稿の表示スタイル"
|
post-style: "投稿の表示スタイル"
|
||||||
post-style-standard: "標準"
|
post-style-standard: "標準"
|
||||||
post-style-smart: "スマート"
|
post-style-smart: "スマート"
|
||||||
|
notification-position: "通知の表示"
|
||||||
|
notification-position-bottom: "下"
|
||||||
|
notification-position-top: "上"
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
|
note-visibility: "投稿の公開範囲"
|
||||||
|
default-note-visibility: "デフォルトの公開範囲"
|
||||||
|
remember-note-visibility: "投稿の公開範囲を記憶する"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
@ -1170,6 +1217,8 @@ mobile/views/pages/settings.vue:
|
|||||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||||
settings: "設定"
|
settings: "設定"
|
||||||
signout: "サインアウト"
|
signout: "サインアウト"
|
||||||
|
sound: "サウンド"
|
||||||
|
enable-sounds: "サウンドを有効にする"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされています"
|
follows-you: "フォローされています"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
|
35
package.json
35
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "8.13.0",
|
"version": "8.34.1",
|
||||||
"clientVersion": "1.0.9001",
|
"clientVersion": "1.0.9561",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -32,7 +32,7 @@
|
|||||||
"@types/debug": "0.0.30",
|
"@types/debug": "0.0.30",
|
||||||
"@types/deep-equal": "1.0.1",
|
"@types/deep-equal": "1.0.1",
|
||||||
"@types/double-ended-queue": "2.1.0",
|
"@types/double-ended-queue": "2.1.0",
|
||||||
"@types/elasticsearch": "5.0.25",
|
"@types/elasticsearch": "5.0.26",
|
||||||
"@types/file-type": "5.2.1",
|
"@types/file-type": "5.2.1",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
"@types/gulp-htmlmin": "1.3.32",
|
"@types/gulp-htmlmin": "1.3.32",
|
||||||
@ -55,12 +55,12 @@
|
|||||||
"@types/koa-send": "4.1.1",
|
"@types/koa-send": "4.1.1",
|
||||||
"@types/koa-views": "2.0.3",
|
"@types/koa-views": "2.0.3",
|
||||||
"@types/koa__cors": "2.2.3",
|
"@types/koa__cors": "2.2.3",
|
||||||
"@types/minio": "6.0.2",
|
"@types/minio": "7.0.0",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.3",
|
||||||
"@types/mongodb": "3.1.4",
|
"@types/mongodb": "3.1.4",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.9.2",
|
"@types/node": "10.9.4",
|
||||||
"@types/portscanner": "2.1.0",
|
"@types/portscanner": "2.1.0",
|
||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.2.0",
|
"@types/qrcode": "1.2.0",
|
||||||
@ -76,11 +76,11 @@
|
|||||||
"@types/speakeasy": "2.0.2",
|
"@types/speakeasy": "2.0.2",
|
||||||
"@types/systeminformation": "3.23.0",
|
"@types/systeminformation": "3.23.0",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.3",
|
"@types/uuid": "3.4.4",
|
||||||
"@types/webpack": "4.4.11",
|
"@types/webpack": "4.4.11",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.39",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.0",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
@ -151,17 +151,17 @@
|
|||||||
"lodash.assign": "4.2.0",
|
"lodash.assign": "4.2.0",
|
||||||
"mecab-async": "0.1.2",
|
"mecab-async": "0.1.2",
|
||||||
"merge-options": "1.0.1",
|
"merge-options": "1.0.1",
|
||||||
"minio": "7.0.0",
|
"minio": "7.0.1",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
"mongodb": "3.1.1",
|
"mongodb": "3.1.1",
|
||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.10.0",
|
"nan": "2.11.0",
|
||||||
"nested-property": "0.0.7",
|
"nested-property": "0.0.7",
|
||||||
"node-sass": "4.9.3",
|
"node-sass": "4.9.3",
|
||||||
"node-sass-json-importer": "3.3.1",
|
"node-sass-json-importer": "4.0.1",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"object-assign-deep": "0.4.0",
|
"object-assign-deep": "0.4.0",
|
||||||
"on-build-webpack": "0.1.0",
|
"on-build-webpack": "0.1.0",
|
||||||
@ -190,11 +190,11 @@
|
|||||||
"single-line-log": "1.1.2",
|
"single-line-log": "1.1.2",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"stringz": "1.0.0",
|
"stringz": "1.0.0",
|
||||||
"style-loader": "0.22.1",
|
"style-loader": "0.23.0",
|
||||||
"stylus": "0.54.5",
|
"stylus": "0.54.5",
|
||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"summaly": "2.1.4",
|
"summaly": "2.2.0",
|
||||||
"systeminformation": "3.43.0",
|
"systeminformation": "3.45.1",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
@ -210,18 +210,19 @@
|
|||||||
"vue": "2.5.17",
|
"vue": "2.5.17",
|
||||||
"vue-chartjs": "3.4.0",
|
"vue-chartjs": "3.4.0",
|
||||||
"vue-cropperjs": "2.2.1",
|
"vue-cropperjs": "2.2.1",
|
||||||
"vue-js-modal": "1.3.19",
|
"vue-js-modal": "1.3.26",
|
||||||
"vue-json-tree-view": "2.1.4",
|
"vue-json-tree-view": "2.1.4",
|
||||||
"vue-loader": "15.4.0",
|
"vue-loader": "15.4.1",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-style-loader": "4.1.2",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
|
"vuewordcloud": "18.7.11",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.2",
|
"web-push": "3.3.2",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.17.1",
|
"webpack": "4.17.2",
|
||||||
"webpack-cli": "3.1.0",
|
"webpack-cli": "3.1.0",
|
||||||
"websocket": "1.0.26",
|
"websocket": "1.0.26",
|
||||||
"ws": "6.0.0",
|
"ws": "6.0.0",
|
||||||
|
@ -6,6 +6,10 @@ html
|
|||||||
&, *
|
&, *
|
||||||
cursor progress !important
|
cursor progress !important
|
||||||
|
|
||||||
|
html
|
||||||
|
// iOSのため
|
||||||
|
overflow auto
|
||||||
|
|
||||||
body
|
body
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ export default Vue.extend({
|
|||||||
accepted() {
|
accepted() {
|
||||||
this.state = 'accepted';
|
this.state = 'accepted';
|
||||||
if (this.session.app.callbackUrl) {
|
if (this.session.app.callbackUrl) {
|
||||||
location.href = this.session.app.callbackUrl + '?token=' + this.session.token;
|
location.href = `${this.session.app.callbackUrl}?token=${this.session.token}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
// Get salt query
|
// Get salt query
|
||||||
const salt = localStorage.getItem('salt')
|
const salt = localStorage.getItem('salt')
|
||||||
? '?salt=' + localStorage.getItem('salt')
|
? `?salt=${localStorage.getItem('salt')}`
|
||||||
: '';
|
: '';
|
||||||
|
|
||||||
// Load an app script
|
// Load an app script
|
||||||
@ -140,7 +140,7 @@
|
|||||||
// Random
|
// Random
|
||||||
localStorage.setItem('salt', Math.random().toString());
|
localStorage.setItem('salt', Math.random().toString());
|
||||||
|
|
||||||
// Clear cache (serive worker)
|
// Clear cache (service worker)
|
||||||
try {
|
try {
|
||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ export default async function(mios: MiOS, force = false, silent = false) {
|
|||||||
localStorage.setItem('should-refresh', 'true');
|
localStorage.setItem('should-refresh', 'true');
|
||||||
localStorage.setItem('v', newer);
|
localStorage.setItem('v', newer);
|
||||||
|
|
||||||
// Clear cache (serive worker)
|
// Clear cache (service worker)
|
||||||
try {
|
try {
|
||||||
if (navigator.serviceWorker.controller) {
|
if (navigator.serviceWorker.controller) {
|
||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
const gcd = (a, b) => !b ? a : gcd(b, a % b);
|
|
||||||
export default gcd;
|
|
@ -1,53 +0,0 @@
|
|||||||
export default function(qs: string) {
|
|
||||||
const q = {
|
|
||||||
text: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
qs.split(' ').forEach(x => {
|
|
||||||
if (/^([a-z_]+?):(.+?)$/.test(x)) {
|
|
||||||
const [key, value] = x.split(':');
|
|
||||||
switch (key) {
|
|
||||||
case 'user':
|
|
||||||
q['includeUserUsernames'] = value.split(',');
|
|
||||||
break;
|
|
||||||
case 'exclude_user':
|
|
||||||
q['excludeUserUsernames'] = value.split(',');
|
|
||||||
break;
|
|
||||||
case 'follow':
|
|
||||||
q['following'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'reply':
|
|
||||||
q['reply'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'renote':
|
|
||||||
q['renote'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'media':
|
|
||||||
q['media'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'poll':
|
|
||||||
q['poll'] = value == 'null' ? null : value == 'true';
|
|
||||||
break;
|
|
||||||
case 'until':
|
|
||||||
case 'since':
|
|
||||||
// YYYY-MM-DD
|
|
||||||
if (/^[0-9]+\-[0-9]+\-[0-9]+$/) {
|
|
||||||
const [yyyy, mm, dd] = value.split('-');
|
|
||||||
q[`${key}_date`] = (new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10))).getTime();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
q[key] = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
q.text += x + ' ';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (q.text) {
|
|
||||||
q.text = q.text.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
return q;
|
|
||||||
}
|
|
@ -3,8 +3,10 @@ import MiOS from '../../../../../mios';
|
|||||||
|
|
||||||
export class ReversiGameStream extends Stream {
|
export class ReversiGameStream extends Stream {
|
||||||
constructor(os: MiOS, me, game) {
|
constructor(os: MiOS, me, game) {
|
||||||
super(os, 'games/reversi-game', {
|
super(os, 'games/reversi-game', me ? {
|
||||||
i: me ? me.token : null,
|
i: me.token,
|
||||||
|
game: game.id
|
||||||
|
} : {
|
||||||
game: game.id
|
game: game.id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,9 @@ import MiOS from '../../../mios';
|
|||||||
*/
|
*/
|
||||||
export class LocalTimelineStream extends Stream {
|
export class LocalTimelineStream extends Stream {
|
||||||
constructor(os: MiOS, me) {
|
constructor(os: MiOS, me) {
|
||||||
super(os, 'local-timeline', {
|
super(os, 'local-timeline', me ? {
|
||||||
i: me.token
|
i: me.token
|
||||||
});
|
} : {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import * as uuid from 'uuid';
|
import * as uuid from 'uuid';
|
||||||
import Connection from './stream';
|
import Connection from './stream';
|
||||||
|
import { erase } from '../../../../../prelude/array';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ストリーム接続を管理するクラス
|
* ストリーム接続を管理するクラス
|
||||||
@ -89,7 +90,7 @@ export default abstract class StreamManager<T extends Connection> extends EventE
|
|||||||
* @param userId use で発行したユーザーID
|
* @param userId use で発行したユーザーID
|
||||||
*/
|
*/
|
||||||
public dispose(userId) {
|
public dispose(userId) {
|
||||||
this.users = this.users.filter(id => id != userId);
|
this.users = erase(userId, this.users);
|
||||||
|
|
||||||
this._connection.user = `Managed (${ this.users.length })`;
|
this._connection.user = `Managed (${ this.users.length })`;
|
||||||
|
|
||||||
|
@ -44,11 +44,11 @@ export default class Connection extends EventEmitter {
|
|||||||
|
|
||||||
const query = params
|
const query = params
|
||||||
? Object.keys(params)
|
? Object.keys(params)
|
||||||
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
|
.map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
|
||||||
.join('&')
|
.join('&')
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
this.socket = new ReconnectingWebsocket(`${wsUrl}/${endpoint}${query ? '?' + query : ''}`);
|
this.socket = new ReconnectingWebsocket(`${wsUrl}/${endpoint}${query ? `?${query}` : ''}`);
|
||||||
this.socket.addEventListener('open', this.onOpen);
|
this.socket.addEventListener('open', this.onOpen);
|
||||||
this.socket.addEventListener('close', this.onClose);
|
this.socket.addEventListener('close', this.onClose);
|
||||||
this.socket.addEventListener('message', this.onMessage);
|
this.socket.addEventListener('message', this.onMessage);
|
||||||
|
@ -1,19 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<span class="mk-acct">
|
<span class="mk-acct">
|
||||||
<span class="name">@{{ user.username }}</span>
|
<span class="name">@{{ user.username }}</span>
|
||||||
<span class="host" v-if="user.host">@{{ user.host }}</span>
|
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail">@{{ user.host || host }}</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { host } from '../../../config';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['user']
|
props: ['user', 'detail'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
host
|
||||||
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-acct
|
.mk-acct
|
||||||
> .host
|
> .host.fade
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
</style>
|
</style>
|
||||||
|
@ -125,7 +125,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.type == 'user') {
|
if (this.type == 'user') {
|
||||||
const cacheKey = 'autocomplete:user:' + this.q;
|
const cacheKey = `autocomplete:user:${this.q}`;
|
||||||
const cache = sessionStorage.getItem(cacheKey);
|
const cache = sessionStorage.getItem(cacheKey);
|
||||||
if (cache) {
|
if (cache) {
|
||||||
const users = JSON.parse(cache);
|
const users = JSON.parse(cache);
|
||||||
@ -148,7 +148,7 @@ export default Vue.extend({
|
|||||||
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
} else {
|
} else {
|
||||||
const cacheKey = 'autocomplete:hashtag:' + this.q;
|
const cacheKey = `autocomplete:hashtag:${this.q}`;
|
||||||
const cache = sessionStorage.getItem(cacheKey);
|
const cache = sessionStorage.getItem(cacheKey);
|
||||||
if (cache) {
|
if (cache) {
|
||||||
const hashtags = JSON.parse(cache);
|
const hashtags = JSON.parse(cache);
|
||||||
|
@ -57,7 +57,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check internet connection
|
// Check internet connection
|
||||||
fetch('https://google.com?rand=' + Math.random(), {
|
fetch(`https://google.com?rand=${Math.random()}`, {
|
||||||
mode: 'no-cors'
|
mode: 'no-cors'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.internet = true;
|
this.internet = true;
|
||||||
|
@ -159,11 +159,9 @@ export default Vue.extend({
|
|||||||
canPutEverywhere: this.game.settings.canPutEverywhere,
|
canPutEverywhere: this.game.settings.canPutEverywhere,
|
||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
});
|
});
|
||||||
this.logs.forEach((log, i) => {
|
for (const log of this.logs.slice(0, v)) {
|
||||||
if (i < v) {
|
this.o.put(log.color, log.pos);
|
||||||
this.o.put(log.color, log.pos);
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
import tagCloud from './tag-cloud.vue';
|
||||||
|
import trends from './trends.vue';
|
||||||
import analogClock from './analog-clock.vue';
|
import analogClock from './analog-clock.vue';
|
||||||
import menu from './menu.vue';
|
import menu from './menu.vue';
|
||||||
import noteHeader from './note-header.vue';
|
import noteHeader from './note-header.vue';
|
||||||
@ -40,6 +42,8 @@ import uiSelect from './ui/select.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-tag-cloud', tagCloud);
|
||||||
|
Vue.component('mk-trends', trends);
|
||||||
Vue.component('mk-analog-clock', analogClock);
|
Vue.component('mk-analog-clock', analogClock);
|
||||||
Vue.component('mk-menu', menu);
|
Vue.component('mk-menu', menu);
|
||||||
Vue.component('mk-note-header', noteHeader);
|
Vue.component('mk-note-header', noteHeader);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-menu">
|
<div class="onchrpzrvnoruiaenfcqvccjfuupzzwv">
|
||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ hukidasi }" ref="popover">
|
<div class="popover" :class="{ hukidasi }" ref="popover">
|
||||||
<template v-for="item in items">
|
<template v-for="item in items">
|
||||||
@ -119,9 +119,10 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
@import '~const.styl'
|
@import '~const.styl'
|
||||||
|
|
||||||
$border-color = rgba(27, 31, 35, 0.15)
|
root(isDark)
|
||||||
|
$bg-color = isDark ? #2c303c : #fff
|
||||||
|
$border-color = rgba(27, 31, 35, 0.15)
|
||||||
|
|
||||||
.mk-menu
|
|
||||||
position initial
|
position initial
|
||||||
|
|
||||||
> .backdrop
|
> .backdrop
|
||||||
@ -131,14 +132,14 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
z-index 10000
|
z-index 10000
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
background rgba(#000, 0.1)
|
background rgba(#000, isDark ? 0.5 : 0.1)
|
||||||
opacity 0
|
opacity 0
|
||||||
|
|
||||||
> .popover
|
> .popover
|
||||||
position absolute
|
position absolute
|
||||||
z-index 10001
|
z-index 10001
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
background #fff
|
background $bg-color
|
||||||
border 1px solid $border-color
|
border 1px solid $border-color
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||||
@ -172,12 +173,13 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
border-top solid $balloon-size transparent
|
border-top solid $balloon-size transparent
|
||||||
border-left solid $balloon-size transparent
|
border-left solid $balloon-size transparent
|
||||||
border-right solid $balloon-size transparent
|
border-right solid $balloon-size transparent
|
||||||
border-bottom solid $balloon-size #fff
|
border-bottom solid $balloon-size $bg-color
|
||||||
|
|
||||||
> button
|
> button
|
||||||
display block
|
display block
|
||||||
padding 8px 16px
|
padding 8px 16px
|
||||||
width 100%
|
width 100%
|
||||||
|
color isDark ? #d6dce2 : #111
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color $theme-color-foreground
|
color $theme-color-foreground
|
||||||
@ -191,6 +193,12 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
> div
|
> div
|
||||||
margin 8px 0
|
margin 8px 0
|
||||||
height 1px
|
height 1px
|
||||||
background #eee
|
background isDark ? #1c2023 : #eee
|
||||||
|
|
||||||
|
.onchrpzrvnoruiaenfcqvccjfuupzzwv[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.onchrpzrvnoruiaenfcqvccjfuupzzwv:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
@dragover.prevent.stop="onDragover"
|
@dragover.prevent.stop="onDragover"
|
||||||
@drop.prevent.stop="onDrop"
|
@drop.prevent.stop="onDrop"
|
||||||
>
|
>
|
||||||
<div class="stream">
|
<div class="body">
|
||||||
<p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p>
|
<p class="init" v-if="init">%fa:spinner .spin%%i18n:common.loading%</p>
|
||||||
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p>
|
<p class="empty" v-if="!init && messages.length == 0">%fa:info-circle%%i18n:@empty%</p>
|
||||||
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p>
|
<p class="no-history" v-if="!init && messages.length > 0 && !existMoreMessages">%fa:flag%%i18n:@no-history%</p>
|
||||||
@ -77,6 +77,12 @@ export default Vue.extend({
|
|||||||
this.connection.on('message', this.onMessage);
|
this.connection.on('message', this.onMessage);
|
||||||
this.connection.on('read', this.onRead);
|
this.connection.on('read', this.onRead);
|
||||||
|
|
||||||
|
if (this.isNaked) {
|
||||||
|
window.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
|
} else {
|
||||||
|
this.$el.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
|
}
|
||||||
|
|
||||||
document.addEventListener('visibilitychange', this.onVisibilitychange);
|
document.addEventListener('visibilitychange', this.onVisibilitychange);
|
||||||
|
|
||||||
this.fetchMessages().then(() => {
|
this.fetchMessages().then(() => {
|
||||||
@ -90,6 +96,12 @@ export default Vue.extend({
|
|||||||
this.connection.off('read', this.onRead);
|
this.connection.off('read', this.onRead);
|
||||||
this.connection.close();
|
this.connection.close();
|
||||||
|
|
||||||
|
if (this.isNaked) {
|
||||||
|
window.removeEventListener('scroll', this.onScroll);
|
||||||
|
} else {
|
||||||
|
this.$el.removeEventListener('scroll', this.onScroll);
|
||||||
|
}
|
||||||
|
|
||||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -226,6 +238,14 @@ export default Vue.extend({
|
|||||||
}, 4000);
|
}, 4000);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onScroll() {
|
||||||
|
const el = this.isNaked ? window.document.documentElement : this.$el;
|
||||||
|
const current = el.scrollTop + el.clientHeight;
|
||||||
|
if (current > el.scrollHeight - 1) {
|
||||||
|
this.showIndicator = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
if (document.hidden) return;
|
if (document.hidden) return;
|
||||||
this.messages.forEach(message => {
|
this.messages.forEach(message => {
|
||||||
@ -251,7 +271,7 @@ root(isDark)
|
|||||||
height 100%
|
height 100%
|
||||||
background isDark ? #191b22 : #fff
|
background isDark ? #191b22 : #fff
|
||||||
|
|
||||||
> .stream
|
> .body
|
||||||
width 100%
|
width 100%
|
||||||
max-width 600px
|
max-width 600px
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
|
@ -205,17 +205,8 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const _els = [];
|
// el.tag === 'br' のとき i !== 0 が保証されるため、短絡評価により els[i - 1] は配列外参照しない
|
||||||
els.forEach((el, i) => {
|
const _els = els.filter((el, i) => !(el.tag === 'br' && ['div', 'pre'].includes(els[i - 1].tag)));
|
||||||
if (el.tag == 'br') {
|
|
||||||
if (!['div', 'pre'].includes(els[i - 1].tag)) {
|
|
||||||
_els.push(el);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_els.push(el);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return createElement('span', _els);
|
return createElement('span', _els);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -26,8 +26,8 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
(this as any).os.getMeta().then(meta => {
|
(this as any).os.getMeta().then(meta => {
|
||||||
if (meta.repositoryUrl) this.repositoryUrl = meta.repositoryUrl;
|
if (meta.maintainer.repository_url) this.repositoryUrl = meta.maintainer.repository_url;
|
||||||
if (meta.feedbackUrl) this.feedbackUrl = meta.feedbackUrl;
|
if (meta.maintainer.feedback_url) this.feedbackUrl = meta.maintainer.feedback_url;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -6,17 +6,27 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { url } from '../../../config';
|
||||||
|
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note', 'source', 'compact'],
|
props: ['note', 'source', 'compact'],
|
||||||
computed: {
|
computed: {
|
||||||
items() {
|
items() {
|
||||||
const items = [];
|
const items = [{
|
||||||
items.push({
|
icon: '%fa:info-circle%',
|
||||||
|
text: '%i18n:@detail%',
|
||||||
|
action: this.detail
|
||||||
|
}, {
|
||||||
|
icon: '%fa:link%',
|
||||||
|
text: '%i18n:@copy-link%',
|
||||||
|
action: this.copyLink
|
||||||
|
}, null, {
|
||||||
icon: '%fa:star%',
|
icon: '%fa:star%',
|
||||||
text: '%i18n:@favorite%',
|
text: '%i18n:@favorite%',
|
||||||
action: this.favorite
|
action: this.favorite
|
||||||
});
|
}];
|
||||||
|
|
||||||
if (this.note.userId == this.$store.state.i.id) {
|
if (this.note.userId == this.$store.state.i.id) {
|
||||||
items.push({
|
items.push({
|
||||||
icon: '%fa:thumbtack%',
|
icon: '%fa:thumbtack%',
|
||||||
@ -42,6 +52,14 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
detail() {
|
||||||
|
this.$router.push(`/notes/${ this.note.id }`);
|
||||||
|
},
|
||||||
|
|
||||||
|
copyLink() {
|
||||||
|
copyToClipboard(`${url}/notes/${ this.note.id }`);
|
||||||
|
},
|
||||||
|
|
||||||
pin() {
|
pin() {
|
||||||
(this as any).api('i/pin', {
|
(this as any).api('i/pin', {
|
||||||
noteId: this.note.id
|
noteId: this.note.id
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { erase } from '../../../../../prelude/array';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -53,7 +54,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
get() {
|
get() {
|
||||||
return {
|
return {
|
||||||
choices: this.choices.filter(choice => choice != '')
|
choices: erase('', this.choices)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { sum } from '../../../../../prelude/array';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note'],
|
props: ['note'],
|
||||||
data() {
|
data() {
|
||||||
@ -33,7 +34,7 @@ export default Vue.extend({
|
|||||||
return this.note.poll;
|
return this.note.poll;
|
||||||
},
|
},
|
||||||
total(): number {
|
total(): number {
|
||||||
return this.poll.choices.reduce((a, b) => a + b.votes, 0);
|
return sum(this.poll.choices.map(x => x.votes));
|
||||||
},
|
},
|
||||||
isVoted(): boolean {
|
isVoted(): boolean {
|
||||||
return this.poll.choices.some(c => c.isVoted);
|
return this.poll.choices.some(c => c.isVoted);
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<span class="mk-reaction-icon">
|
<span class="mk-reaction-icon">
|
||||||
<img v-if="reaction == 'like'" src="/assets/reactions/like.png" alt="%i18n:common.reactions.like%">
|
<img v-if="reaction == 'like'" src="https://twemoji.maxcdn.com/2/svg/1f44d.svg" alt="%i18n:common.reactions.like%">
|
||||||
<img v-if="reaction == 'love'" src="/assets/reactions/love.png" alt="%i18n:common.reactions.love%">
|
<img v-if="reaction == 'love'" src="https://twemoji.maxcdn.com/2/svg/2764.svg" alt="%i18n:common.reactions.love%">
|
||||||
<img v-if="reaction == 'laugh'" src="/assets/reactions/laugh.png" alt="%i18n:common.reactions.laugh%">
|
<img v-if="reaction == 'laugh'" src="https://twemoji.maxcdn.com/2/svg/1f606.svg" alt="%i18n:common.reactions.laugh%">
|
||||||
<img v-if="reaction == 'hmm'" src="/assets/reactions/hmm.png" alt="%i18n:common.reactions.hmm%">
|
<img v-if="reaction == 'hmm'" src="https://twemoji.maxcdn.com/2/svg/1f914.svg" alt="%i18n:common.reactions.hmm%">
|
||||||
<img v-if="reaction == 'surprise'" src="/assets/reactions/surprise.png" alt="%i18n:common.reactions.surprise%">
|
<img v-if="reaction == 'surprise'" src="https://twemoji.maxcdn.com/2/svg/1f62e.svg" alt="%i18n:common.reactions.surprise%">
|
||||||
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
|
<img v-if="reaction == 'congrats'" src="https://twemoji.maxcdn.com/2/svg/1f389.svg" alt="%i18n:common.reactions.congrats%">
|
||||||
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
|
<img v-if="reaction == 'angry'" src="https://twemoji.maxcdn.com/2/svg/1f4a2.svg" alt="%i18n:common.reactions.angry%">
|
||||||
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
|
<img v-if="reaction == 'confused'" src="https://twemoji.maxcdn.com/2/svg/1f625.svg" alt="%i18n:common.reactions.confused%">
|
||||||
<img v-if="reaction == 'rip'" src="/assets/reactions/rip.png" alt="%i18n:common.reactions.rip%">
|
<img v-if="reaction == 'rip'" src="https://twemoji.maxcdn.com/2/svg/1f607.svg" alt="%i18n:common.reactions.rip%">
|
||||||
<template v-if="reaction == 'pudding'">
|
<template v-if="reaction == 'pudding'">
|
||||||
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
|
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="https://twemoji.maxcdn.com/2/svg/1f363.svg" alt="%i18n:common.reactions.pudding%">
|
||||||
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
|
<img v-else src="https://twemoji.maxcdn.com/2/svg/1f36e.svg" alt="%i18n:common.reactions.pudding%">
|
||||||
</template>
|
</template>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -78,7 +78,7 @@ export default Vue.extend({
|
|||||||
cursor wait !important
|
cursor wait !important
|
||||||
|
|
||||||
> .avatar
|
> .avatar
|
||||||
margin 16px auto 0 auto
|
margin 0 auto 0 auto
|
||||||
width 64px
|
width 64px
|
||||||
height 64px
|
height 64px
|
||||||
background #ddd
|
background #ddd
|
||||||
|
90
src/client/app/common/views/components/tag-cloud.vue
Normal file
90
src/client/app/common/views/components/tag-cloud.vue
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<div class="jtivnzhfwquxpsfidertopbmwmchmnmo">
|
||||||
|
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||||
|
<p class="empty" v-else-if="tags.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
||||||
|
<div v-else>
|
||||||
|
<vue-word-cloud
|
||||||
|
:words="tags.slice(0, 20).map(x => [x.name, x.count])"
|
||||||
|
:color="color"
|
||||||
|
:spacing="1">
|
||||||
|
<template slot-scope="{word, text, weight}">
|
||||||
|
<div style="cursor: pointer;" :title="weight">
|
||||||
|
{{ text }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vue-word-cloud>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as VueWordCloud from 'vuewordcloud';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
[VueWordCloud.name]: VueWordCloud
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tags: [],
|
||||||
|
fetching: true,
|
||||||
|
clock: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetch();
|
||||||
|
this.clock = setInterval(this.fetch, 1000 * 60);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
clearInterval(this.clock);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
(this as any).api('aggregation/hashtags').then(tags => {
|
||||||
|
this.tags = tags;
|
||||||
|
this.fetching = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
color([, weight]) {
|
||||||
|
const peak = Math.max.apply(null, this.tags.map(x => x.count));
|
||||||
|
const w = weight / peak;
|
||||||
|
|
||||||
|
if (w > 0.9) {
|
||||||
|
return this.$store.state.device.darkmode ? '#ff4e69' : '#ff4e69';
|
||||||
|
} else if (w > 0.5) {
|
||||||
|
return this.$store.state.device.darkmode ? '#3bc4c7' : '#3bc4c7';
|
||||||
|
} else {
|
||||||
|
return this.$store.state.device.darkmode ? '#fff' : '#555';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
root(isDark)
|
||||||
|
height 100%
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
> .fetching
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> [data-fa]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
> div
|
||||||
|
height 100%
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
.jtivnzhfwquxpsfidertopbmwmchmnmo[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.jtivnzhfwquxpsfidertopbmwmchmnmo:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
105
src/client/app/common/views/components/trends.vue
Normal file
105
src/client/app/common/views/components/trends.vue
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
<template>
|
||||||
|
<div class="csqvmxybqbycalfhkxvyfrgbrdalkaoc">
|
||||||
|
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||||
|
<p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
||||||
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
|
<!-- <transition-group v-else tag="div" name="chart"> -->
|
||||||
|
<div>
|
||||||
|
<div v-for="stat in stats" :key="stat.tag">
|
||||||
|
<div class="tag">
|
||||||
|
<router-link :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
||||||
|
<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
|
||||||
|
</div>
|
||||||
|
<x-chart class="chart" :src="stat.chart"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- </transition-group> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import XChart from './trends.chart.vue';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
components: {
|
||||||
|
XChart
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stats: [],
|
||||||
|
fetching: true,
|
||||||
|
clock: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetch();
|
||||||
|
this.clock = setInterval(this.fetch, 1000 * 60);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
clearInterval(this.clock);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
(this as any).api('hashtags/trend').then(stats => {
|
||||||
|
this.stats = stats;
|
||||||
|
this.fetching = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
root(isDark)
|
||||||
|
> .fetching
|
||||||
|
> .empty
|
||||||
|
margin 0
|
||||||
|
padding 16px
|
||||||
|
text-align center
|
||||||
|
color #aaa
|
||||||
|
|
||||||
|
> [data-fa]
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
> div
|
||||||
|
.chart-move
|
||||||
|
transition transform 1s ease
|
||||||
|
|
||||||
|
> div
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
padding 14px 16px
|
||||||
|
|
||||||
|
&:not(:last-child)
|
||||||
|
border-bottom solid 1px isDark ? #393f4f : #eee
|
||||||
|
|
||||||
|
> .tag
|
||||||
|
flex 1
|
||||||
|
overflow hidden
|
||||||
|
font-size 14px
|
||||||
|
color isDark ? #9baec8 : #65727b
|
||||||
|
|
||||||
|
> a
|
||||||
|
display block
|
||||||
|
width 100%
|
||||||
|
white-space nowrap
|
||||||
|
overflow hidden
|
||||||
|
text-overflow ellipsis
|
||||||
|
color inherit
|
||||||
|
|
||||||
|
> p
|
||||||
|
margin 0
|
||||||
|
font-size 75%
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
> .chart
|
||||||
|
height 30px
|
||||||
|
|
||||||
|
.csqvmxybqbycalfhkxvyfrgbrdalkaoc[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.csqvmxybqbycalfhkxvyfrgbrdalkaoc:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
|
</style>
|
@ -24,19 +24,34 @@ export default Vue.extend({
|
|||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
margin 16px
|
margin 16px
|
||||||
padding 16px
|
|
||||||
color isDark ? #fff : #000
|
color isDark ? #fff : #000
|
||||||
background isDark ? #282C37 : #fff
|
background isDark ? #282C37 : #fff
|
||||||
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
||||||
|
|
||||||
@media (min-width 500px)
|
|
||||||
padding 32px
|
|
||||||
|
|
||||||
> header
|
> header
|
||||||
font-weight normal
|
padding 16px
|
||||||
font-size 24px
|
font-weight bold
|
||||||
|
font-size 20px
|
||||||
color isDark ? #fff : #444
|
color isDark ? #fff : #444
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 24px 32px
|
||||||
|
|
||||||
|
> section
|
||||||
|
padding 20px 16px
|
||||||
|
border-top solid 1px isDark ? rgba(#000, 0.3) : rgba(#000, 0.1)
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 32px
|
||||||
|
|
||||||
|
&.fit-top
|
||||||
|
padding-top 0
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 16px
|
||||||
|
font-weight bold
|
||||||
|
color isDark ? #fff : #444
|
||||||
|
|
||||||
.ui-card[data-darkmode]
|
.ui-card[data-darkmode]
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
display inline-block
|
display inline-block
|
||||||
margin 32px 32px 32px 0
|
margin 0 32px 0 0
|
||||||
cursor pointer
|
cursor pointer
|
||||||
transition all 0.3s
|
transition all 0.3s
|
||||||
|
|
||||||
|
@ -64,6 +64,12 @@ root(isDark)
|
|||||||
cursor pointer
|
cursor pointer
|
||||||
transition all 0.3s
|
transition all 0.3s
|
||||||
|
|
||||||
|
&:first-child
|
||||||
|
margin-top 0
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-bottom 0
|
||||||
|
|
||||||
> *
|
> *
|
||||||
user-select none
|
user-select none
|
||||||
|
|
||||||
@ -89,6 +95,7 @@ root(isDark)
|
|||||||
|
|
||||||
> .button
|
> .button
|
||||||
display inline-block
|
display inline-block
|
||||||
|
flex-shrink 0
|
||||||
margin 3px 0 0 0
|
margin 3px 0 0 0
|
||||||
width 34px
|
width 34px
|
||||||
height 14px
|
height 14px
|
||||||
|
@ -8,13 +8,13 @@
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="mk-url-preview">
|
<div v-else class="mk-url-preview">
|
||||||
<a :href="url" target="_blank" :title="url" v-if="!fetching">
|
<a :class="{ mini }" :href="url" target="_blank" :title="url" v-if="!fetching">
|
||||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>{{ title }}</h1>
|
<h1>{{ title }}</h1>
|
||||||
</header>
|
</header>
|
||||||
<p>{{ description }}</p>
|
<p>{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p>
|
||||||
<footer>
|
<footer>
|
||||||
<img class="icon" v-if="icon" :src="icon"/>
|
<img class="icon" v-if="icon" :src="icon"/>
|
||||||
<p>{{ sitename }}</p>
|
<p>{{ sitename }}</p>
|
||||||
@ -28,18 +28,105 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { url as misskeyUrl } from '../../../config';
|
import { url as misskeyUrl } from '../../../config';
|
||||||
|
|
||||||
|
// THIS IS THE WHITELIST FOR THE EMBED PLAYER
|
||||||
|
const whiteList = [
|
||||||
|
'afreecatv.com',
|
||||||
|
'aparat.com',
|
||||||
|
'applemusic.com',
|
||||||
|
'amazon.com',
|
||||||
|
'awa.fm',
|
||||||
|
'bandcamp.com',
|
||||||
|
'bbc.co.uk',
|
||||||
|
'beatport.com',
|
||||||
|
'bilibili.com',
|
||||||
|
'boomstream.com',
|
||||||
|
'breakers.tv',
|
||||||
|
'cam4.com',
|
||||||
|
'cavelis.net',
|
||||||
|
'chaturbate.com',
|
||||||
|
'cnn.com',
|
||||||
|
'cybergame.tv',
|
||||||
|
'dailymotion.com',
|
||||||
|
'deezer.com',
|
||||||
|
'djlive.pl',
|
||||||
|
'e-onkyo.com',
|
||||||
|
'eventials.com',
|
||||||
|
'facebook.com',
|
||||||
|
'fc2.com',
|
||||||
|
'gameplank.tv',
|
||||||
|
'goodgame.ru',
|
||||||
|
'google.com',
|
||||||
|
'hardtunes.com',
|
||||||
|
'instagram.com',
|
||||||
|
'johnnylooch.com',
|
||||||
|
'kexp.org',
|
||||||
|
'lahzenegar.com',
|
||||||
|
'liveedu.tv',
|
||||||
|
'livetube.cc',
|
||||||
|
'livestream.com',
|
||||||
|
'meridix.com',
|
||||||
|
'mixcloud.com',
|
||||||
|
'mixer.com',
|
||||||
|
'mobcrush.com',
|
||||||
|
'mylive.in.th',
|
||||||
|
'myspace.com',
|
||||||
|
'netflix.com',
|
||||||
|
'newretrowave.com',
|
||||||
|
'nhk.or.jp',
|
||||||
|
'nicovideo.jp',
|
||||||
|
'nico.ms',
|
||||||
|
'noisetrade.com',
|
||||||
|
'nood.tv',
|
||||||
|
'npr.org',
|
||||||
|
'openrec.tv',
|
||||||
|
'pandora.com',
|
||||||
|
'pandora.tv',
|
||||||
|
'picarto.tv',
|
||||||
|
'pscp.tv',
|
||||||
|
'restream.io',
|
||||||
|
'reverbnation.com',
|
||||||
|
'sermonaudio.com',
|
||||||
|
'smashcast.tv',
|
||||||
|
'songkick.com',
|
||||||
|
'soundcloud.com',
|
||||||
|
'spinninrecords.com',
|
||||||
|
'spotify.com',
|
||||||
|
'stitcher.com',
|
||||||
|
'stream.me',
|
||||||
|
'switchboard.live',
|
||||||
|
'tunein.com',
|
||||||
|
'twitcasting.tv',
|
||||||
|
'twitch.tv',
|
||||||
|
'twitter.com',
|
||||||
|
'vaughnlive.tv',
|
||||||
|
'veoh.com',
|
||||||
|
'vimeo.com',
|
||||||
|
'watchpeoplecode.com',
|
||||||
|
'web.tv',
|
||||||
|
'youtube.com',
|
||||||
|
'youtu.be'
|
||||||
|
];
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
url: {
|
url: {
|
||||||
type: String,
|
type: String,
|
||||||
require: true
|
require: true
|
||||||
},
|
},
|
||||||
|
|
||||||
detail: {
|
detail: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
|
||||||
|
mini: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
@ -57,6 +144,7 @@ export default Vue.extend({
|
|||||||
misskeyUrl
|
misskeyUrl
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
const url = new URL(this.url);
|
const url = new URL(this.url);
|
||||||
|
|
||||||
@ -81,97 +169,22 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
|
|
||||||
|
fetch(`/url?url=${encodeURIComponent(this.url)}`).then(res => {
|
||||||
res.json().then(info => {
|
res.json().then(info => {
|
||||||
if (info.url != null) {
|
if (info.url == null) return;
|
||||||
this.title = info.title;
|
this.title = info.title;
|
||||||
this.description = info.description;
|
this.description = info.description;
|
||||||
this.thumbnail = info.thumbnail;
|
this.thumbnail = info.thumbnail;
|
||||||
this.icon = info.icon;
|
this.icon = info.icon;
|
||||||
this.sitename = info.sitename;
|
this.sitename = info.sitename;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
if ([ // THIS IS THE WHITELIST FOR THE EMBED PLAYER
|
if (whiteList.some(x => x == url.hostname || url.hostname.endsWith(`.${x}`))) {
|
||||||
'afreecatv.com',
|
this.player = info.player;
|
||||||
'aparat.com',
|
}
|
||||||
'applemusic.com',
|
})
|
||||||
'amazon.com',
|
});
|
||||||
'awa.fm',
|
}
|
||||||
'bandcamp.com',
|
|
||||||
'bbc.co.uk',
|
|
||||||
'beatport.com',
|
|
||||||
'bilibili.com',
|
|
||||||
'boomstream.com',
|
|
||||||
'breakers.tv',
|
|
||||||
'cam4.com',
|
|
||||||
'cavelis.net',
|
|
||||||
'chaturbate.com',
|
|
||||||
'cnn.com',
|
|
||||||
'cybergame.tv',
|
|
||||||
'dailymotion.com',
|
|
||||||
'deezer.com',
|
|
||||||
'djlive.pl',
|
|
||||||
'e-onkyo.com',
|
|
||||||
'eventials.com',
|
|
||||||
'facebook.com',
|
|
||||||
'fc2.com',
|
|
||||||
'gameplank.tv',
|
|
||||||
'goodgame.ru',
|
|
||||||
'google.com',
|
|
||||||
'hardtunes.com',
|
|
||||||
'instagram.com',
|
|
||||||
'johnnylooch.com',
|
|
||||||
'kexp.org',
|
|
||||||
'lahzenegar.com',
|
|
||||||
'liveedu.tv',
|
|
||||||
'livetube.cc',
|
|
||||||
'livestream.com',
|
|
||||||
'meridix.com',
|
|
||||||
'mixcloud.com',
|
|
||||||
'mixer.com',
|
|
||||||
'mobcrush.com',
|
|
||||||
'mylive.in.th',
|
|
||||||
'myspace.com',
|
|
||||||
'netflix.com',
|
|
||||||
'newretrowave.com',
|
|
||||||
'nhk.or.jp',
|
|
||||||
'nicovideo.jp',
|
|
||||||
'nico.ms',
|
|
||||||
'noisetrade.com',
|
|
||||||
'nood.tv',
|
|
||||||
'npr.org',
|
|
||||||
'openrec.tv',
|
|
||||||
'pandora.com',
|
|
||||||
'pandora.tv',
|
|
||||||
'picarto.tv',
|
|
||||||
'pscp.tv',
|
|
||||||
'restream.io',
|
|
||||||
'reverbnation.com',
|
|
||||||
'sermonaudio.com',
|
|
||||||
'smashcast.tv',
|
|
||||||
'songkick.com',
|
|
||||||
'soundcloud.com',
|
|
||||||
'spinninrecords.com',
|
|
||||||
'spotify.com',
|
|
||||||
'stitcher.com',
|
|
||||||
'stream.me',
|
|
||||||
'switchboard.live',
|
|
||||||
'tunein.com',
|
|
||||||
'twitcasting.tv',
|
|
||||||
'twitch.tv',
|
|
||||||
'twitter.com',
|
|
||||||
'vaughnlive.tv',
|
|
||||||
'veoh.com',
|
|
||||||
'vimeo.com',
|
|
||||||
'watchpeoplecode.com',
|
|
||||||
'web.tv',
|
|
||||||
'youtube.com',
|
|
||||||
'youtu.be'
|
|
||||||
].some(x => x == url.hostname || url.hostname.endsWith(`.${x}`)))
|
|
||||||
this.player = info.player;
|
|
||||||
} // info.url
|
|
||||||
}) // json
|
|
||||||
}); // fetch
|
|
||||||
} // created
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -286,6 +299,29 @@ root(isDark)
|
|||||||
width 12px
|
width 12px
|
||||||
height 12px
|
height 12px
|
||||||
|
|
||||||
|
&.mini
|
||||||
|
font-size 10px
|
||||||
|
|
||||||
|
> .thumbnail
|
||||||
|
position relative
|
||||||
|
width 100%
|
||||||
|
height 60px
|
||||||
|
|
||||||
|
> article
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
padding 8px
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 4px
|
||||||
|
|
||||||
|
> footer
|
||||||
|
margin-top 4px
|
||||||
|
|
||||||
|
> img
|
||||||
|
width 12px
|
||||||
|
height 12px
|
||||||
|
|
||||||
.mk-url-preview[data-darkmode]
|
.mk-url-preview[data-darkmode]
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import { toUnicode as decodePunycode } from 'punycode';
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['url', 'target'],
|
props: ['url', 'target'],
|
||||||
data() {
|
data() {
|
||||||
@ -27,11 +28,11 @@ export default Vue.extend({
|
|||||||
created() {
|
created() {
|
||||||
const url = new URL(this.url);
|
const url = new URL(this.url);
|
||||||
this.schema = url.protocol;
|
this.schema = url.protocol;
|
||||||
this.hostname = url.hostname;
|
this.hostname = decodePunycode(url.hostname);
|
||||||
this.port = url.port;
|
this.port = url.port;
|
||||||
this.pathname = url.pathname;
|
this.pathname = decodeURIComponent(url.pathname);
|
||||||
this.query = url.search;
|
this.query = decodeURIComponent(url.search);
|
||||||
this.hash = url.hash;
|
this.hash = decodeURIComponent(url.hash);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -47,7 +47,7 @@ export default Vue.extend({
|
|||||||
props: ['source', 'compact'],
|
props: ['source', 'compact'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
v: this.$store.state.device.visibility || 'public'
|
v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -97,7 +97,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
choose(visibility) {
|
choose(visibility) {
|
||||||
this.$store.commit('device/setVisibility', visibility);
|
if (this.$store.state.settings.rememberNoteVisibility) {
|
||||||
|
this.$store.commit('device/setVisibility', visibility);
|
||||||
|
}
|
||||||
this.$emit('chosen', visibility);
|
this.$emit('chosen', visibility);
|
||||||
this.$destroy();
|
this.$destroy();
|
||||||
},
|
},
|
||||||
|
@ -1,22 +1,24 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-welcome-timeline">
|
<div class="mk-welcome-timeline">
|
||||||
<div v-for="note in notes">
|
<transition-group name="ldzpakcixzickvggyixyrhqwjaefknon" tag="div">
|
||||||
<mk-avatar class="avatar" :user="note.user" target="_blank"/>
|
<div v-for="note in notes" :key="note.id">
|
||||||
<div class="body">
|
<mk-avatar class="avatar" :user="note.user" target="_blank"/>
|
||||||
<header>
|
<div class="body">
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
<header>
|
||||||
<span class="username">@{{ note.user | acct }}</span>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
||||||
<div class="info">
|
<span class="username">@{{ note.user | acct }}</span>
|
||||||
<router-link class="created-at" :to="note | notePage">
|
<div class="info">
|
||||||
<mk-time :time="note.createdAt"/>
|
<router-link class="created-at" :to="note | notePage">
|
||||||
</router-link>
|
<mk-time :time="note.createdAt"/>
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="text">
|
||||||
|
<misskey-flavored-markdown v-if="note.text" :text="note.text"/>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
|
||||||
<div class="text">
|
|
||||||
<misskey-flavored-markdown v-if="note.text" :text="note.text"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</transition-group>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -31,15 +33,30 @@ export default Vue.extend({
|
|||||||
default: undefined
|
default: undefined
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
fetching: true,
|
fetching: true,
|
||||||
notes: []
|
notes: [],
|
||||||
|
connection: null,
|
||||||
|
connectionId: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.fetch();
|
this.fetch();
|
||||||
|
|
||||||
|
this.connection = (this as any).os.streams.localTimelineStream.getConnection();
|
||||||
|
this.connectionId = (this as any).os.streams.localTimelineStream.use();
|
||||||
|
|
||||||
|
this.connection.on('note', this.onNote);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.connection.off('note', this.onNote);
|
||||||
|
(this as any).os.streams.localTimelineStream.dispose(this.connectionId);
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
fetch(cb?) {
|
fetch(cb?) {
|
||||||
this.fetching = true;
|
this.fetching = true;
|
||||||
@ -48,77 +65,93 @@ export default Vue.extend({
|
|||||||
local: true,
|
local: true,
|
||||||
reply: false,
|
reply: false,
|
||||||
renote: false,
|
renote: false,
|
||||||
media: false,
|
file: false,
|
||||||
poll: false,
|
poll: false
|
||||||
bot: false
|
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
this.notes = notes;
|
this.notes = notes;
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
|
|
||||||
|
onNote(note) {
|
||||||
|
if (note.replyId != null) return;
|
||||||
|
if (note.renoteId != null) return;
|
||||||
|
if (note.poll != null) return;
|
||||||
|
|
||||||
|
this.notes.unshift(note);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
.ldzpakcixzickvggyixyrhqwjaefknon-enter
|
||||||
|
.ldzpakcixzickvggyixyrhqwjaefknon-leave-to
|
||||||
|
opacity 0
|
||||||
|
transform translateY(-30px)
|
||||||
|
|
||||||
root(isDark)
|
root(isDark)
|
||||||
background isDark ? #282C37 : #fff
|
background isDark ? #282C37 : #fff
|
||||||
|
|
||||||
> div
|
> div
|
||||||
padding 16px
|
> *
|
||||||
overflow-wrap break-word
|
transition transform .3s ease, opacity .3s ease
|
||||||
font-size .9em
|
|
||||||
color isDark ? #fff : #4C4C4C
|
|
||||||
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
|
||||||
|
|
||||||
&:after
|
> div
|
||||||
content ""
|
padding 16px
|
||||||
display block
|
overflow-wrap break-word
|
||||||
clear both
|
font-size .9em
|
||||||
|
color isDark ? #fff : #4C4C4C
|
||||||
|
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
||||||
|
|
||||||
> .avatar
|
&:after
|
||||||
display block
|
content ""
|
||||||
float left
|
display block
|
||||||
position -webkit-sticky
|
clear both
|
||||||
position sticky
|
|
||||||
top 16px
|
|
||||||
width 42px
|
|
||||||
height 42px
|
|
||||||
border-radius 6px
|
|
||||||
|
|
||||||
> .body
|
> .avatar
|
||||||
float right
|
display block
|
||||||
width calc(100% - 42px)
|
float left
|
||||||
padding-left 12px
|
position -webkit-sticky
|
||||||
|
position sticky
|
||||||
|
top 16px
|
||||||
|
width 42px
|
||||||
|
height 42px
|
||||||
|
border-radius 6px
|
||||||
|
|
||||||
> header
|
> .body
|
||||||
display flex
|
float right
|
||||||
align-items center
|
width calc(100% - 42px)
|
||||||
margin-bottom 4px
|
padding-left 12px
|
||||||
white-space nowrap
|
|
||||||
|
|
||||||
> .name
|
> header
|
||||||
display block
|
display flex
|
||||||
margin 0 .5em 0 0
|
align-items center
|
||||||
padding 0
|
margin-bottom 4px
|
||||||
overflow hidden
|
white-space nowrap
|
||||||
font-weight bold
|
|
||||||
text-overflow ellipsis
|
|
||||||
color isDark ? #fff : #627079
|
|
||||||
|
|
||||||
> .username
|
> .name
|
||||||
margin 0 .5em 0 0
|
display block
|
||||||
color isDark ? #606984 : #ccc
|
margin 0 .5em 0 0
|
||||||
|
padding 0
|
||||||
|
overflow hidden
|
||||||
|
font-weight bold
|
||||||
|
text-overflow ellipsis
|
||||||
|
color isDark ? #fff : #627079
|
||||||
|
|
||||||
> .info
|
> .username
|
||||||
margin-left auto
|
margin 0 .5em 0 0
|
||||||
font-size 0.9em
|
color isDark ? #606984 : #ccc
|
||||||
|
|
||||||
> .created-at
|
> .info
|
||||||
color isDark ? #606984 : #c0c0c0
|
margin-left auto
|
||||||
|
font-size 0.9em
|
||||||
|
|
||||||
> .text
|
> .created-at
|
||||||
text-align left
|
color isDark ? #606984 : #c0c0c0
|
||||||
|
|
||||||
|
> .text
|
||||||
|
text-align left
|
||||||
|
|
||||||
.mk-welcome-timeline[data-darkmode]
|
.mk-welcome-timeline[data-darkmode]
|
||||||
root(true)
|
root(true)
|
||||||
|
@ -191,7 +191,7 @@ class Autocomplete {
|
|||||||
const acct = renderAcct(value);
|
const acct = renderAcct(value);
|
||||||
|
|
||||||
// 挿入
|
// 挿入
|
||||||
this.text = trimmedBefore + '@' + acct + ' ' + after;
|
this.text = `${trimmedBefore}@${acct} ${after}`;
|
||||||
|
|
||||||
// キャレットを戻す
|
// キャレットを戻す
|
||||||
this.vm.$nextTick(() => {
|
this.vm.$nextTick(() => {
|
||||||
@ -207,7 +207,7 @@ class Autocomplete {
|
|||||||
const after = source.substr(caret);
|
const after = source.substr(caret);
|
||||||
|
|
||||||
// 挿入
|
// 挿入
|
||||||
this.text = trimmedBefore + '#' + value + ' ' + after;
|
this.text = `${trimmedBefore}#${value} ${after}`;
|
||||||
|
|
||||||
// キャレットを戻す
|
// キャレットを戻す
|
||||||
this.vm.$nextTick(() => {
|
this.vm.$nextTick(() => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
Vue.filter('notePage', note => {
|
Vue.filter('notePage', note => {
|
||||||
return '/notes/' + note.id;
|
return `/notes/${note.id}`;
|
||||||
});
|
});
|
||||||
|
@ -11,5 +11,5 @@ Vue.filter('userName', user => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Vue.filter('userPage', (user, path?) => {
|
Vue.filter('userPage', (user, path?) => {
|
||||||
return '/@' + Vue.filter('acct')(user) + (path ? '/' + path : '');
|
return `/@${Vue.filter('acct')(user)}${(path ? `/${path}` : '')}`;
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
|
<div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
|
||||||
<div class="signed-in-as" v-html="'%i18n:@signed-in-as%'.replace('{}', '<b>' + myName + '</b>')"></div>
|
<div class="signed-in-as" v-html="'%i18n:@signed-in-as%'.replace('{}', `<b>${myName}`)"></div>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<div class="banner" :style="bannerStyle"></div>
|
<div class="banner" :style="bannerStyle"></div>
|
||||||
@ -83,7 +83,7 @@ export default Vue.extend({
|
|||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (this.user.isLocked && this.user.hasPendingFollowRequestFromYou) {
|
if (this.user.hasPendingFollowRequestFromYou) {
|
||||||
this.user = await (this as any).api('following/requests/cancel', {
|
this.user = await (this as any).api('following/requests/cancel', {
|
||||||
userId: this.user.id
|
userId: this.user.id
|
||||||
});
|
});
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mkw-analog-clock">
|
<div class="mkw-analog-clock">
|
||||||
<mk-widget-container :naked="!(props.design % 2)" :show-header="false">
|
<mk-widget-container :naked="props.style % 2 === 0" :show-header="false">
|
||||||
<div class="mkw-analog-clock--body">
|
<div class="mkw-analog-clock--body">
|
||||||
<mk-analog-clock :dark="$store.state.device.darkmode" :smooth="!(props.design && ~props.design)"/>
|
<mk-analog-clock :dark="$store.state.device.darkmode" :smooth="props.style < 2"/>
|
||||||
</div>
|
</div>
|
||||||
</mk-widget-container>
|
</mk-widget-container>
|
||||||
</div>
|
</div>
|
||||||
@ -13,13 +13,12 @@ import define from '../../../common/define-widget';
|
|||||||
export default define({
|
export default define({
|
||||||
name: 'analog-clock',
|
name: 'analog-clock',
|
||||||
props: () => ({
|
props: () => ({
|
||||||
design: -1
|
style: 0
|
||||||
})
|
})
|
||||||
}).extend({
|
}).extend({
|
||||||
methods: {
|
methods: {
|
||||||
func() {
|
func() {
|
||||||
if (++this.props.design > 2)
|
this.props.style = (this.props.style + 1) % 4;
|
||||||
this.props.design = -1;
|
|
||||||
this.save();
|
this.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mkw-broadcast"
|
<div class="anltbovirfeutcigvwgmgxipejaeozxi"
|
||||||
:data-found="broadcasts.length != 0"
|
:data-found="announcements && announcements.length != 0"
|
||||||
:data-melt="props.design == 1"
|
:data-melt="props.design == 1"
|
||||||
:data-mobile="platform == 'mobile'"
|
:data-mobile="platform == 'mobile'"
|
||||||
>
|
>
|
||||||
@ -14,18 +14,17 @@
|
|||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<p class="fetching" v-if="fetching">%i18n:@fetching%<mk-ellipsis/></p>
|
<p class="fetching" v-if="fetching">%i18n:@fetching%<mk-ellipsis/></p>
|
||||||
<h1 v-if="!fetching">{{ broadcasts.length == 0 ? '%i18n:@no-broadcasts%' : broadcasts[i].title }}</h1>
|
<h1 v-if="!fetching">{{ announcements.length == 0 ? '%i18n:@no-broadcasts%' : announcements[i].title }}</h1>
|
||||||
<p v-if="!fetching">
|
<p v-if="!fetching">
|
||||||
<span v-if="broadcasts.length != 0" v-html="broadcasts[i].text"></span>
|
<span v-if="announcements.length != 0" v-html="announcements[i].text"></span>
|
||||||
<template v-if="broadcasts.length == 0">%i18n:@have-a-nice-day%</template>
|
<template v-if="announcements.length == 0">%i18n:@have-a-nice-day%</template>
|
||||||
</p>
|
</p>
|
||||||
<a v-if="broadcasts.length > 1" @click="next">%i18n:@next% >></a>
|
<a v-if="announcements.length > 1" @click="next">%i18n:@next% >></a>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import define from '../../../common/define-widget';
|
import define from '../../../common/define-widget';
|
||||||
import { lang } from '../../../config';
|
|
||||||
|
|
||||||
export default define({
|
export default define({
|
||||||
name: 'broadcast',
|
name: 'broadcast',
|
||||||
@ -37,26 +36,18 @@ export default define({
|
|||||||
return {
|
return {
|
||||||
i: 0,
|
i: 0,
|
||||||
fetching: true,
|
fetching: true,
|
||||||
broadcasts: []
|
announcements: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
(this as any).os.getMeta().then(meta => {
|
(this as any).os.getMeta().then(meta => {
|
||||||
let broadcasts = [];
|
this.announcements = meta.broadcasts;
|
||||||
if (meta.broadcasts) {
|
|
||||||
meta.broadcasts.forEach(broadcast => {
|
|
||||||
if (broadcast[lang]) {
|
|
||||||
broadcasts.push(broadcast[lang]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.broadcasts = broadcasts;
|
|
||||||
this.fetching = false;
|
this.fetching = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
next() {
|
next() {
|
||||||
if (this.i == this.broadcasts.length - 1) {
|
if (this.i == this.announcements.length - 1) {
|
||||||
this.i = 0;
|
this.i = 0;
|
||||||
} else {
|
} else {
|
||||||
this.i++;
|
this.i++;
|
||||||
@ -75,7 +66,7 @@ export default define({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mkw-broadcast
|
root(isDark)
|
||||||
padding 10px
|
padding 10px
|
||||||
border solid 1px #4078c0
|
border solid 1px #4078c0
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
@ -135,22 +126,18 @@ export default define({
|
|||||||
margin 0
|
margin 0
|
||||||
font-size 0.95em
|
font-size 0.95em
|
||||||
font-weight normal
|
font-weight normal
|
||||||
color #4078c0
|
color isDark ? #539eff : #4078c0
|
||||||
|
|
||||||
> p
|
> p
|
||||||
display block
|
display block
|
||||||
z-index 1
|
z-index 1
|
||||||
margin 0
|
margin 0
|
||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
color #555
|
color isDark ? #fff : #555
|
||||||
|
|
||||||
&.fetching
|
&.fetching
|
||||||
text-align center
|
text-align center
|
||||||
|
|
||||||
a
|
|
||||||
color #555
|
|
||||||
text-decoration underline
|
|
||||||
|
|
||||||
> a
|
> a
|
||||||
display block
|
display block
|
||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
@ -159,4 +146,10 @@ export default define({
|
|||||||
> p
|
> p
|
||||||
color #fff
|
color #fff
|
||||||
|
|
||||||
|
.anltbovirfeutcigvwgmgxipejaeozxi[data-darkmode]
|
||||||
|
root(true)
|
||||||
|
|
||||||
|
.anltbovirfeutcigvwgmgxipejaeozxi:not([data-darkmode])
|
||||||
|
root(false)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
<div class="mkw-donation" :data-mobile="platform == 'mobile'">
|
<div class="mkw-donation" :data-mobile="platform == 'mobile'">
|
||||||
<article>
|
<article>
|
||||||
<h1>%fa:heart%%i18n:@title%</h1>
|
<h1>%fa:heart%%i18n:@title%</h1>
|
||||||
<p>
|
<p v-if="meta">
|
||||||
{{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }}
|
{{ '%i18n:@text%'.substr(0, '%i18n:@text%'.indexOf('{')) }}
|
||||||
<a href="https://syuilo.com">@syuilo</a>
|
<a :href="meta.maintainer.url">{{ meta.maintainer.name }}</a>
|
||||||
{{ '%i18n:@text%'.substr('%i18n:@text%'.indexOf('}') + 1) }}
|
{{ '%i18n:@text%'.substr('%i18n:@text%'.indexOf('}') + 1) }}
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
@ -15,6 +15,17 @@
|
|||||||
import define from '../../../common/define-widget';
|
import define from '../../../common/define-widget';
|
||||||
export default define({
|
export default define({
|
||||||
name: 'donation'
|
name: 'donation'
|
||||||
|
}).extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
meta: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
this.meta = meta;
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -4,20 +4,7 @@
|
|||||||
<template slot="header">%fa:hashtag%%i18n:@title%</template>
|
<template slot="header">%fa:hashtag%%i18n:@title%</template>
|
||||||
|
|
||||||
<div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'">
|
<div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'">
|
||||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
<mk-trends/>
|
||||||
<p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
|
|
||||||
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
|
||||||
<!-- <transition-group v-else tag="div" name="chart"> -->
|
|
||||||
<div>
|
|
||||||
<div v-for="stat in stats" :key="stat.tag">
|
|
||||||
<div class="tag">
|
|
||||||
<router-link :to="`/tags/${ encodeURIComponent(stat.tag) }`" :title="stat.tag">#{{ stat.tag }}</router-link>
|
|
||||||
<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
|
|
||||||
</div>
|
|
||||||
<x-chart class="chart" :src="stat.chart"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- </transition-group> -->
|
|
||||||
</div>
|
</div>
|
||||||
</mk-widget-container>
|
</mk-widget-container>
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +12,6 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import define from '../../../common/define-widget';
|
import define from '../../../common/define-widget';
|
||||||
import XChart from './hashtags.chart.vue';
|
|
||||||
|
|
||||||
export default define({
|
export default define({
|
||||||
name: 'hashtags',
|
name: 'hashtags',
|
||||||
@ -33,89 +19,11 @@ export default define({
|
|||||||
compact: false
|
compact: false
|
||||||
})
|
})
|
||||||
}).extend({
|
}).extend({
|
||||||
components: {
|
|
||||||
XChart
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
stats: [],
|
|
||||||
fetching: true,
|
|
||||||
clock: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.fetch();
|
|
||||||
this.clock = setInterval(this.fetch, 1000 * 60);
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
clearInterval(this.clock);
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
func() {
|
func() {
|
||||||
this.props.compact = !this.props.compact;
|
this.props.compact = !this.props.compact;
|
||||||
this.save();
|
this.save();
|
||||||
},
|
|
||||||
fetch() {
|
|
||||||
(this as any).api('hashtags/trend').then(stats => {
|
|
||||||
this.stats = stats;
|
|
||||||
this.fetching = false;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
root(isDark)
|
|
||||||
.mkw-hashtags--body
|
|
||||||
> .fetching
|
|
||||||
> .empty
|
|
||||||
margin 0
|
|
||||||
padding 16px
|
|
||||||
text-align center
|
|
||||||
color #aaa
|
|
||||||
|
|
||||||
> [data-fa]
|
|
||||||
margin-right 4px
|
|
||||||
|
|
||||||
> div
|
|
||||||
.chart-move
|
|
||||||
transition transform 1s ease
|
|
||||||
|
|
||||||
> div
|
|
||||||
display flex
|
|
||||||
align-items center
|
|
||||||
padding 14px 16px
|
|
||||||
|
|
||||||
&:not(:last-child)
|
|
||||||
border-bottom solid 1px isDark ? #393f4f : #eee
|
|
||||||
|
|
||||||
> .tag
|
|
||||||
flex 1
|
|
||||||
overflow hidden
|
|
||||||
font-size 14px
|
|
||||||
color isDark ? #9baec8 : #65727b
|
|
||||||
|
|
||||||
> a
|
|
||||||
display block
|
|
||||||
width 100%
|
|
||||||
white-space nowrap
|
|
||||||
overflow hidden
|
|
||||||
text-overflow ellipsis
|
|
||||||
color inherit
|
|
||||||
|
|
||||||
> p
|
|
||||||
margin 0
|
|
||||||
font-size 75%
|
|
||||||
opacity 0.7
|
|
||||||
|
|
||||||
> .chart
|
|
||||||
height 30px
|
|
||||||
|
|
||||||
.mkw-hashtags[data-darkmode]
|
|
||||||
root(true)
|
|
||||||
|
|
||||||
.mkw-hashtags:not([data-darkmode])
|
|
||||||
root(false)
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
@ -4,6 +4,7 @@ declare const _THEME_COLOR_: string;
|
|||||||
declare const _COPYRIGHT_: string;
|
declare const _COPYRIGHT_: string;
|
||||||
declare const _VERSION_: string;
|
declare const _VERSION_: string;
|
||||||
declare const _CODENAME_: string;
|
declare const _CODENAME_: string;
|
||||||
|
declare const _ENV_: string;
|
||||||
|
|
||||||
const address = new URL(location.href);
|
const address = new URL(location.href);
|
||||||
|
|
||||||
@ -18,3 +19,4 @@ export const themeColor = _THEME_COLOR_;
|
|||||||
export const copyright = _COPYRIGHT_;
|
export const copyright = _COPYRIGHT_;
|
||||||
export const version = _VERSION_;
|
export const version = _VERSION_;
|
||||||
export const codename = _CODENAME_;
|
export const codename = _CODENAME_;
|
||||||
|
export const env = _ENV_;
|
||||||
|
@ -3,8 +3,21 @@ import { apiUrl } from '../../config';
|
|||||||
import CropWindow from '../views/components/crop-window.vue';
|
import CropWindow from '../views/components/crop-window.vue';
|
||||||
import ProgressDialog from '../views/components/progress-dialog.vue';
|
import ProgressDialog from '../views/components/progress-dialog.vue';
|
||||||
|
|
||||||
export default (os: OS) => (cb, file = null) => {
|
export default (os: OS) => {
|
||||||
const fileSelected = file => {
|
|
||||||
|
const cropImage = file => new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
const regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$');
|
||||||
|
if (!regex.test(file.name) ) {
|
||||||
|
os.apis.dialog({
|
||||||
|
title: '%fa:info-circle% %i18n:desktop.invalid-filetype%',
|
||||||
|
text: null,
|
||||||
|
actions: [{
|
||||||
|
text: '%i18n:common.got-it%'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
return reject('invalid-filetype');
|
||||||
|
}
|
||||||
|
|
||||||
const w = os.new(CropWindow, {
|
const w = os.new(CropWindow, {
|
||||||
image: file,
|
image: file,
|
||||||
@ -19,27 +32,29 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
|
|
||||||
os.api('drive/folders/find', {
|
os.api('drive/folders/find', {
|
||||||
name: '%i18n:desktop.avatar%'
|
name: '%i18n:desktop.avatar%'
|
||||||
}).then(iconFolder => {
|
}).then(avatarFolder => {
|
||||||
if (iconFolder.length === 0) {
|
if (avatarFolder.length === 0) {
|
||||||
os.api('drive/folders/create', {
|
os.api('drive/folders/create', {
|
||||||
name: '%i18n:desktop.avatar%'
|
name: '%i18n:desktop.avatar%'
|
||||||
}).then(iconFolder => {
|
}).then(iconFolder => {
|
||||||
upload(data, iconFolder);
|
resolve(upload(data, iconFolder));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
upload(data, iconFolder[0]);
|
resolve(upload(data, avatarFolder[0]));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
w.$once('skipped', () => {
|
w.$once('skipped', () => {
|
||||||
set(file);
|
resolve(file);
|
||||||
});
|
});
|
||||||
|
|
||||||
document.body.appendChild(w.$el);
|
w.$once('cancelled', reject);
|
||||||
};
|
|
||||||
|
|
||||||
const upload = (data, folder) => {
|
document.body.appendChild(w.$el);
|
||||||
|
});
|
||||||
|
|
||||||
|
const upload = (data, folder) => new Promise((resolve, reject) => {
|
||||||
const dialog = os.new(ProgressDialog, {
|
const dialog = os.new(ProgressDialog, {
|
||||||
title: '%i18n:desktop.uploading-avatar%'
|
title: '%i18n:desktop.uploading-avatar%'
|
||||||
});
|
});
|
||||||
@ -52,18 +67,19 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
xhr.onload = e => {
|
xhr.onload = e => {
|
||||||
const file = JSON.parse((e.target as any).response);
|
const file = JSON.parse((e.target as any).response);
|
||||||
(dialog as any).close();
|
(dialog as any).close();
|
||||||
set(file);
|
resolve(file);
|
||||||
};
|
};
|
||||||
|
xhr.onerror = reject;
|
||||||
|
|
||||||
xhr.upload.onprogress = e => {
|
xhr.upload.onprogress = e => {
|
||||||
if (e.lengthComputable) (dialog as any).update(e.loaded, e.total);
|
if (e.lengthComputable) (dialog as any).update(e.loaded, e.total);
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr.send(data);
|
xhr.send(data);
|
||||||
};
|
});
|
||||||
|
|
||||||
const set = file => {
|
const setAvatar = file => {
|
||||||
os.api('i/update', {
|
return os.api('i/update', {
|
||||||
avatarId: file.id
|
avatarId: file.id
|
||||||
}).then(i => {
|
}).then(i => {
|
||||||
os.store.commit('updateIKeyValue', {
|
os.store.commit('updateIKeyValue', {
|
||||||
@ -83,18 +99,21 @@ export default (os: OS) => (cb, file = null) => {
|
|||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (cb) cb(i);
|
return i;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (file) {
|
return (file = null) => {
|
||||||
fileSelected(file);
|
const selectedFile = file
|
||||||
} else {
|
? Promise.resolve(file)
|
||||||
os.apis.chooseDriveFile({
|
: os.apis.chooseDriveFile({
|
||||||
multiple: false,
|
multiple: false,
|
||||||
title: '%fa:image% %i18n:desktop.choose-avatar%'
|
title: '%fa:image% %i18n:desktop.choose-avatar%'
|
||||||
}).then(file => {
|
});
|
||||||
fileSelected(file);
|
|
||||||
});
|
return selectedFile
|
||||||
}
|
.then(cropImage)
|
||||||
|
.then(setAvatar)
|
||||||
|
.catch(err => err && console.warn(err));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,19 @@ import ProgressDialog from '../views/components/progress-dialog.vue';
|
|||||||
export default (os: OS) => {
|
export default (os: OS) => {
|
||||||
|
|
||||||
const cropImage = file => new Promise((resolve, reject) => {
|
const cropImage = file => new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
const regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$');
|
||||||
|
if (!regex.test(file.name) ) {
|
||||||
|
os.apis.dialog({
|
||||||
|
title: '%fa:info-circle% %i18n:desktop.invalid-filetype%',
|
||||||
|
text: null,
|
||||||
|
actions: [{
|
||||||
|
text: '%i18n:common.got-it%'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
return reject('invalid-filetype');
|
||||||
|
}
|
||||||
|
|
||||||
const w = os.new(CropWindow, {
|
const w = os.new(CropWindow, {
|
||||||
image: file,
|
image: file,
|
||||||
title: '%i18n:desktop.banner-crop-title%',
|
title: '%i18n:desktop.banner-crop-title%',
|
||||||
|
@ -88,7 +88,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
(this as any).api('chart').then(chart => {
|
(this as any).api('chart', {
|
||||||
|
limit: 32
|
||||||
|
}).then(chart => {
|
||||||
this.chart = chart;
|
this.chart = chart;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -580,6 +582,6 @@ export default Vue.extend({
|
|||||||
> div
|
> div
|
||||||
> *
|
> *
|
||||||
display block
|
display block
|
||||||
height 300px
|
height 320px
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -163,7 +163,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
alert('%i18n:@unhandled-error% ' + err);
|
alert(`%i18n:@unhandled-error% ${err}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
alert('%i18n:@unhandled-error% ' + err);
|
alert(`%i18n:@unhandled-error% ${err}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -404,7 +404,7 @@ export default Vue.extend({
|
|||||||
folder: folder
|
folder: folder
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
window.open(url + '/i/drive/folder/' + folder.id,
|
window.open(`${url}/i/drive/folder/${folder.id}`,
|
||||||
'drive_window',
|
'drive_window',
|
||||||
'height=500, width=800');
|
'height=500, width=800');
|
||||||
}
|
}
|
||||||
|
@ -55,13 +55,15 @@ export default Vue.extend({
|
|||||||
methods: {
|
methods: {
|
||||||
onFollow(user) {
|
onFollow(user) {
|
||||||
if (user.id == this.u.id) {
|
if (user.id == this.u.id) {
|
||||||
this.user.isFollowing = user.isFollowing;
|
this.u.isFollowing = user.isFollowing;
|
||||||
|
this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onUnfollow(user) {
|
onUnfollow(user) {
|
||||||
if (user.id == this.u.id) {
|
if (user.id == this.u.id) {
|
||||||
this.user.isFollowing = user.isFollowing;
|
this.u.isFollowing = user.isFollowing;
|
||||||
|
this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -74,7 +76,7 @@ export default Vue.extend({
|
|||||||
userId: this.u.id
|
userId: this.u.id
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (this.u.isLocked && this.u.hasPendingFollowRequestFromYou) {
|
if (this.u.hasPendingFollowRequestFromYou) {
|
||||||
this.u = await (this as any).api('following/requests/cancel', {
|
this.u = await (this as any).api('following/requests/cancel', {
|
||||||
userId: this.u.id
|
userId: this.u.id
|
||||||
});
|
});
|
||||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
|||||||
const mouseY = e.clientY - rect.top;
|
const mouseY = e.clientY - rect.top;
|
||||||
const xp = mouseX / this.$el.offsetWidth * 100;
|
const xp = mouseX / this.$el.offsetWidth * 100;
|
||||||
const yp = mouseY / this.$el.offsetHeight * 100;
|
const yp = mouseY / this.$el.offsetHeight * 100;
|
||||||
this.$el.style.backgroundPosition = xp + '% ' + yp + '%';
|
this.$el.style.backgroundPosition = `${xp}% ${yp}%`;
|
||||||
this.$el.style.backgroundImage = `url("${this.image.url}")`;
|
this.$el.style.backgroundImage = `url("${this.image.url}")`;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -42,12 +42,12 @@
|
|||||||
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
|
||||||
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="files" v-if="p.files.length > 0">
|
||||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
<mk-media-list :media-list="p.files" :raw="true"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p"/>
|
<mk-poll v-if="p.poll" :note="p"/>
|
||||||
<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/>
|
<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/>
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
<a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||||
<div class="map" v-if="p.geo" ref="map"></div>
|
<div class="map" v-if="p.geo" ref="map"></div>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
<mk-note-preview :note="p.renote"/>
|
<mk-note-preview :note="p.renote"/>
|
||||||
@ -86,6 +86,7 @@ import MkRenoteFormWindow from './renote-form-window.vue';
|
|||||||
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
|
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
|
||||||
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
|
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
|
||||||
import XSub from './notes.note.sub.vue';
|
import XSub from './notes.note.sub.vue';
|
||||||
|
import { sum } from '../../../../../prelude/array';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
@ -114,7 +115,7 @@ export default Vue.extend({
|
|||||||
isRenote(): boolean {
|
isRenote(): boolean {
|
||||||
return (this.note.renote &&
|
return (this.note.renote &&
|
||||||
this.note.text == null &&
|
this.note.text == null &&
|
||||||
this.note.mediaIds.length == 0 &&
|
this.note.fileIds.length == 0 &&
|
||||||
this.note.poll == null);
|
this.note.poll == null);
|
||||||
},
|
},
|
||||||
p(): any {
|
p(): any {
|
||||||
@ -122,9 +123,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reactionCounts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reactionCounts)
|
? sum(Object.values(this.p.reactionCounts))
|
||||||
.map(key => this.p.reactionCounts[key])
|
|
||||||
.reduce((a, b) => a + b)
|
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
title(): string {
|
title(): string {
|
||||||
|
@ -28,11 +28,11 @@
|
|||||||
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i" :class="$style.text"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i" :class="$style.text"/>
|
||||||
<a class="rp" v-if="p.renote">RP:</a>
|
<a class="rp" v-if="p.renote">RP:</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="files" v-if="p.files.length > 0">
|
||||||
<mk-media-list :media-list="p.media"/>
|
<mk-media-list :media-list="p.files"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
<a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
||||||
<div class="map" v-if="p.geo" ref="map"></div>
|
<div class="map" v-if="p.geo" ref="map"></div>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
<mk-note-preview :note="p.renote"/>
|
<mk-note-preview :note="p.renote"/>
|
||||||
@ -78,6 +78,7 @@ import MkRenoteFormWindow from './renote-form-window.vue';
|
|||||||
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
|
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
|
||||||
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
|
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
|
||||||
import XSub from './notes.note.sub.vue';
|
import XSub from './notes.note.sub.vue';
|
||||||
|
import { sum } from '../../../../../prelude/array';
|
||||||
|
|
||||||
function focus(el, fn) {
|
function focus(el, fn) {
|
||||||
const target = fn(el);
|
const target = fn(el);
|
||||||
@ -110,7 +111,7 @@ export default Vue.extend({
|
|||||||
isRenote(): boolean {
|
isRenote(): boolean {
|
||||||
return (this.note.renote &&
|
return (this.note.renote &&
|
||||||
this.note.text == null &&
|
this.note.text == null &&
|
||||||
this.note.mediaIds.length == 0 &&
|
this.note.fileIds.length == 0 &&
|
||||||
this.note.poll == null);
|
this.note.poll == null);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -120,9 +121,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
reactionsCount(): number {
|
reactionsCount(): number {
|
||||||
return this.p.reactionCounts
|
return this.p.reactionCounts
|
||||||
? Object.keys(this.p.reactionCounts)
|
? sum(Object.values(this.p.reactionCounts))
|
||||||
.map(key => this.p.reactionCounts[key])
|
|
||||||
.reduce((a, b) => a + b)
|
|
||||||
: 0;
|
: 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ export default Vue.extend({
|
|||||||
prepend(note, silent = false) {
|
prepend(note, silent = false) {
|
||||||
//#region 弾く
|
//#region 弾く
|
||||||
const isMyNote = note.userId == this.$store.state.i.id;
|
const isMyNote = note.userId == this.$store.state.i.id;
|
||||||
const isPureRenote = note.renoteId != null && note.text == null && note.mediaIds.length == 0 && note.poll == null;
|
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
|
||||||
|
|
||||||
if (this.$store.state.settings.showMyRenotes === false) {
|
if (this.$store.state.settings.showMyRenotes === false) {
|
||||||
if (isMyNote && isPureRenote) {
|
if (isMyNote && isPureRenote) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<span class="icon" v-if="geo">%fa:map-marker-alt%</span>
|
<span class="icon" v-if="geo">%fa:map-marker-alt%</span>
|
||||||
<span v-if="!reply">%i18n:@note%</span>
|
<span v-if="!reply">%i18n:@note%</span>
|
||||||
<span v-if="reply">%i18n:@reply%</span>
|
<span v-if="reply">%i18n:@reply%</span>
|
||||||
<span class="count" v-if="media.length != 0">{{ '%i18n:@attaches%'.replace('{}', media.length) }}</span>
|
<span class="count" v-if="files.length != 0">{{ '%i18n:@attaches%'.replace('{}', files.length) }}</span>
|
||||||
<span class="count" v-if="uploadings.length != 0">{{ '%i18n:@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
<span class="count" v-if="uploadings.length != 0">{{ '%i18n:@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
@ -14,7 +14,7 @@
|
|||||||
:reply="reply"
|
:reply="reply"
|
||||||
@posted="onPosted"
|
@posted="onPosted"
|
||||||
@change-uploadings="onChangeUploadings"
|
@change-uploadings="onChangeUploadings"
|
||||||
@change-attached-media="onChangeMedia"
|
@change-attached-files="onChangeFiles"
|
||||||
@geo-attached="onGeoAttached"
|
@geo-attached="onGeoAttached"
|
||||||
@geo-dettached="onGeoDettached"/>
|
@geo-dettached="onGeoDettached"/>
|
||||||
</div>
|
</div>
|
||||||
@ -29,7 +29,7 @@ export default Vue.extend({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
uploadings: [],
|
uploadings: [],
|
||||||
media: [],
|
files: [],
|
||||||
geo: null
|
geo: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -42,8 +42,8 @@ export default Vue.extend({
|
|||||||
onChangeUploadings(files) {
|
onChangeUploadings(files) {
|
||||||
this.uploadings = files;
|
this.uploadings = files;
|
||||||
},
|
},
|
||||||
onChangeMedia(media) {
|
onChangeFiles(files) {
|
||||||
this.media = media;
|
this.files = files;
|
||||||
},
|
},
|
||||||
onGeoAttached(geo) {
|
onGeoAttached(geo) {
|
||||||
this.geo = geo;
|
this.geo = geo;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
@keydown="onKeydown" @paste="onPaste" :placeholder="placeholder"
|
@keydown="onKeydown" @paste="onPaste" :placeholder="placeholder"
|
||||||
v-autocomplete="'text'"
|
v-autocomplete="'text'"
|
||||||
></textarea>
|
></textarea>
|
||||||
<div class="medias" :class="{ with: poll }" v-show="files.length != 0">
|
<div class="files" :class="{ with: poll }" v-show="files.length != 0">
|
||||||
<x-draggable :list="files" :options="{ animation: 150 }">
|
<x-draggable :list="files" :options="{ animation: 150 }">
|
||||||
<div v-for="file in files" :key="file.id">
|
<div v-for="file in files" :key="file.id">
|
||||||
<div class="img" :style="{ backgroundImage: `url(${file.thumbnailUrl})` }" :title="file.name"></div>
|
<div class="img" :style="{ backgroundImage: `url(${file.thumbnailUrl})` }" :title="file.name"></div>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
<button class="upload" title="%i18n:@attach-media-from-local%" @click="chooseFile">%fa:upload%</button>
|
<button class="upload" title="%i18n:@attach-media-from-local%" @click="chooseFile">%fa:upload%</button>
|
||||||
<button class="drive" title="%i18n:@attach-media-from-drive%" @click="chooseFileFromDrive">%fa:cloud%</button>
|
<button class="drive" title="%i18n:@attach-media-from-drive%" @click="chooseFileFromDrive">%fa:cloud%</button>
|
||||||
<button class="kao" title="%i18n:@insert-a-kao%" @click="kao">%fa:R smile%</button>
|
<button class="kao" title="%i18n:@insert-a-kao%" @click="kao">%fa:R smile%</button>
|
||||||
<button class="poll" title="%i18n:@create-poll%" @click="poll = true">%fa:chart-pie%</button>
|
<button class="poll" title="%i18n:@create-poll%" @click="poll = !poll">%fa:chart-pie%</button>
|
||||||
<button class="poll" title="%i18n:@hide-contents%" @click="useCw = !useCw">%fa:eye-slash%</button>
|
<button class="poll" title="%i18n:@hide-contents%" @click="useCw = !useCw">%fa:eye-slash%</button>
|
||||||
<button class="geo" title="%i18n:@attach-location-information%" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
<button class="geo" title="%i18n:@attach-location-information%" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
||||||
<button class="visibility" title="%i18n:@visibility%" @click="setVisibility" ref="visibilityButton">
|
<button class="visibility" title="%i18n:@visibility%" @click="setVisibility" ref="visibilityButton">
|
||||||
@ -62,6 +62,8 @@ import getFace from '../../../common/scripts/get-face';
|
|||||||
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import { host } from '../../../config';
|
import { host } from '../../../config';
|
||||||
|
import { erase } from '../../../../../prelude/array';
|
||||||
|
import parseAcct from '../../../../../misc/acct/parse';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
@ -99,7 +101,7 @@ export default Vue.extend({
|
|||||||
useCw: false,
|
useCw: false,
|
||||||
cw: null,
|
cw: null,
|
||||||
geo: null,
|
geo: null,
|
||||||
visibility: this.$store.state.device.visibility || 'public',
|
visibility: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility,
|
||||||
visibleUsers: [],
|
visibleUsers: [],
|
||||||
autocomplete: null,
|
autocomplete: null,
|
||||||
draghover: false,
|
draghover: false,
|
||||||
@ -110,9 +112,9 @@ export default Vue.extend({
|
|||||||
computed: {
|
computed: {
|
||||||
draftId(): string {
|
draftId(): string {
|
||||||
return this.renote
|
return this.renote
|
||||||
? 'renote:' + this.renote.id
|
? `renote:${this.renote.id}`
|
||||||
: this.reply
|
: this.reply
|
||||||
? 'reply:' + this.reply.id
|
? `reply:${this.reply.id}`
|
||||||
: 'note';
|
: 'note';
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -188,7 +190,7 @@ export default Vue.extend({
|
|||||||
(this.$refs.poll as any).set(draft.data.poll);
|
(this.$refs.poll as any).set(draft.data.poll);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.$emit('change-attached-media', this.files);
|
this.$emit('change-attached-files', this.files);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,12 +227,12 @@ export default Vue.extend({
|
|||||||
|
|
||||||
attachMedia(driveFile) {
|
attachMedia(driveFile) {
|
||||||
this.files.push(driveFile);
|
this.files.push(driveFile);
|
||||||
this.$emit('change-attached-media', this.files);
|
this.$emit('change-attached-files', this.files);
|
||||||
},
|
},
|
||||||
|
|
||||||
detachMedia(id) {
|
detachMedia(id) {
|
||||||
this.files = this.files.filter(x => x.id != id);
|
this.files = this.files.filter(x => x.id != id);
|
||||||
this.$emit('change-attached-media', this.files);
|
this.$emit('change-attached-files', this.files);
|
||||||
},
|
},
|
||||||
|
|
||||||
onChangeFile() {
|
onChangeFile() {
|
||||||
@ -249,7 +251,7 @@ export default Vue.extend({
|
|||||||
this.text = '';
|
this.text = '';
|
||||||
this.files = [];
|
this.files = [];
|
||||||
this.poll = false;
|
this.poll = false;
|
||||||
this.$emit('change-attached-media', this.files);
|
this.$emit('change-attached-files', this.files);
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeydown(e) {
|
onKeydown(e) {
|
||||||
@ -297,7 +299,7 @@ export default Vue.extend({
|
|||||||
if (driveFile != null && driveFile != '') {
|
if (driveFile != null && driveFile != '') {
|
||||||
const file = JSON.parse(driveFile);
|
const file = JSON.parse(driveFile);
|
||||||
this.files.push(file);
|
this.files.push(file);
|
||||||
this.$emit('change-attached-media', this.files);
|
this.$emit('change-attached-files', this.files);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
@ -313,7 +315,7 @@ export default Vue.extend({
|
|||||||
this.geo = pos.coords;
|
this.geo = pos.coords;
|
||||||
this.$emit('geo-attached', this.geo);
|
this.$emit('geo-attached', this.geo);
|
||||||
}, err => {
|
}, err => {
|
||||||
alert('%i18n:@error%: ' + err.message);
|
alert(`%i18n:@error%: ${err.message}`);
|
||||||
}, {
|
}, {
|
||||||
enableHighAccuracy: true
|
enableHighAccuracy: true
|
||||||
});
|
});
|
||||||
@ -336,17 +338,16 @@ export default Vue.extend({
|
|||||||
addVisibleUser() {
|
addVisibleUser() {
|
||||||
(this as any).apis.input({
|
(this as any).apis.input({
|
||||||
title: '%i18n:@enter-username%'
|
title: '%i18n:@enter-username%'
|
||||||
}).then(username => {
|
}).then(acct => {
|
||||||
(this as any).api('users/show', {
|
if (acct.startsWith('@')) acct = acct.substr(1);
|
||||||
username
|
(this as any).api('users/show', parseAcct(acct)).then(user => {
|
||||||
}).then(user => {
|
|
||||||
this.visibleUsers.push(user);
|
this.visibleUsers.push(user);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
removeVisibleUser(user) {
|
removeVisibleUser(user) {
|
||||||
this.visibleUsers = this.visibleUsers.filter(u => u != user);
|
this.visibleUsers = erase(user, this.visibleUsers);
|
||||||
},
|
},
|
||||||
|
|
||||||
post() {
|
post() {
|
||||||
@ -354,7 +355,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
(this as any).api('notes/create', {
|
(this as any).api('notes/create', {
|
||||||
text: this.text == '' ? undefined : this.text,
|
text: this.text == '' ? undefined : this.text,
|
||||||
mediaIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
|
fileIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
|
||||||
replyId: this.reply ? this.reply.id : undefined,
|
replyId: this.reply ? this.reply.id : undefined,
|
||||||
renoteId: this.renote ? this.renote.id : undefined,
|
renoteId: this.renote ? this.renote.id : undefined,
|
||||||
poll: this.poll ? (this.$refs.poll as any).get() : undefined,
|
poll: this.poll ? (this.$refs.poll as any).get() : undefined,
|
||||||
@ -514,7 +515,7 @@ root(isDark)
|
|||||||
margin-right 8px
|
margin-right 8px
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
|
|
||||||
> .medias
|
> .files
|
||||||
margin 0
|
margin 0
|
||||||
padding 0
|
padding 0
|
||||||
background isDark ? #181b23 : lighten($theme-color, 98%)
|
background isDark ? #181b23 : lighten($theme-color, 98%)
|
||||||
|
@ -26,6 +26,22 @@
|
|||||||
<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
|
<mk-switch v-model="autoPopout" text="%i18n:@auto-popout%">
|
||||||
<span>%i18n:@auto-popout-desc%</span>
|
<span>%i18n:@auto-popout-desc%</span>
|
||||||
</mk-switch>
|
</mk-switch>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<header>%i18n:@note-visibility%</header>
|
||||||
|
<mk-switch v-model="$store.state.settings.rememberNoteVisibility" @change="onChangeRememberNoteVisibility" text="%i18n:@remember-note-visibility%"/>
|
||||||
|
<section>
|
||||||
|
<header>%i18n:@default-note-visibility%</header>
|
||||||
|
<ui-select v-model="defaultNoteVisibility">
|
||||||
|
<option value="public">%i18n:common.note-visibility.public%</option>
|
||||||
|
<option value="home">%i18n:common.note-visibility.home%</option>
|
||||||
|
<option value="followers">%i18n:common.note-visibility.followers%</option>
|
||||||
|
<option value="specified">%i18n:common.note-visibility.specified%</option>
|
||||||
|
<option value="private">%i18n:common.note-visibility.private%</option>
|
||||||
|
</ui-select>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>%i18n:@advanced%</summary>
|
<summary>%i18n:@advanced%</summary>
|
||||||
<mk-switch v-model="apiViaStream" text="%i18n:@api-via-stream%">
|
<mk-switch v-model="apiViaStream" text="%i18n:@api-via-stream%">
|
||||||
@ -44,11 +60,13 @@
|
|||||||
<button class="ui" @click="deleteWallpaper">%i18n:@delete-wallpaper%</button>
|
<button class="ui" @click="deleteWallpaper">%i18n:@delete-wallpaper%</button>
|
||||||
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
|
||||||
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.contrastedAcct" @change="onChangeContrastedAcct" text="%i18n:@contrasted-acct%"/>
|
||||||
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
|
||||||
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
|
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
|
||||||
<mk-switch v-model="$store.state.settings.suggestRecentHashtags" @change="onChangeSuggestRecentHashtags" text="%i18n:@suggest-recent-hashtags%"/>
|
<mk-switch v-model="$store.state.settings.suggestRecentHashtags" @change="onChangeSuggestRecentHashtags" text="%i18n:@suggest-recent-hashtags%"/>
|
||||||
|
<mk-switch v-model="$store.state.settings.showClockOnHeader" @change="onChangeShowClockOnHeader" text="%i18n:@show-clock-on-header%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
<mk-switch v-model="$store.state.settings.showMyRenotes" @change="onChangeShowMyRenotes" text="%i18n:@show-my-renotes%"/>
|
||||||
<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
<mk-switch v-model="$store.state.settings.showRenotedMyNotes" @change="onChangeShowRenotedMyNotes" text="%i18n:@show-renoted-my-notes%"/>
|
||||||
@ -237,6 +255,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
defaultNoteVisibility: {
|
||||||
|
get() { return this.$store.state.settings.defaultNoteVisibility; },
|
||||||
|
set(value) { this.$store.commit('settings/set', { key: 'defaultNoteVisibility', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
autoPopout: {
|
autoPopout: {
|
||||||
get() { return this.$store.state.device.autoPopout; },
|
get() { return this.$store.state.device.autoPopout; },
|
||||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||||
@ -310,6 +333,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeRememberNoteVisibility(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'rememberNoteVisibility',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeAutoWatch(v) {
|
onChangeAutoWatch(v) {
|
||||||
(this as any).api('i/update', {
|
(this as any).api('i/update', {
|
||||||
autoWatch: v
|
autoWatch: v
|
||||||
@ -333,6 +362,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeShowClockOnHeader(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'showClockOnHeader',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeShowReplyTarget(v) {
|
onChangeShowReplyTarget(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'showReplyTarget',
|
key: 'showReplyTarget',
|
||||||
@ -369,6 +404,12 @@ export default Vue.extend({
|
|||||||
value: v
|
value: v
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onChangeContrastedAcct(v) {
|
||||||
|
this.$store.dispatch('settings/set', {
|
||||||
|
key: 'contrastedAcct',
|
||||||
|
value: v
|
||||||
|
});
|
||||||
|
},
|
||||||
onChangeILikeSushi(v) {
|
onChangeILikeSushi(v) {
|
||||||
this.$store.dispatch('settings/set', {
|
this.$store.dispatch('settings/set', {
|
||||||
key: 'iLikeSushi',
|
key: 'iLikeSushi',
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
<misskey-flavored-markdown v-if="note.text" :text="note.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="note.text" :text="note.text" :i="$store.state.i"/>
|
||||||
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
|
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
|
||||||
</div>
|
</div>
|
||||||
<details v-if="note.media.length > 0">
|
<details v-if="note.files.length > 0">
|
||||||
<summary>({{ '%i18n:@media-count%'.replace('{}', note.media.length) }})</summary>
|
<summary>({{ '%i18n:@media-count%'.replace('{}', note.files.length) }})</summary>
|
||||||
<mk-media-list :media-list="note.media"/>
|
<mk-media-list :media-list="note.files"/>
|
||||||
</details>
|
</details>
|
||||||
<details v-if="note.poll">
|
<details v-if="note.poll">
|
||||||
<summary>%i18n:@poll%</summary>
|
<summary>%i18n:@poll%</summary>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<li class="deck" :class="{ active: $route.name == 'deck' }" @click="goToTop">
|
<li class="deck" :class="{ active: $route.name == 'deck' }" @click="goToTop">
|
||||||
<router-link to="/deck">
|
<router-link to="/deck">
|
||||||
%fa:columns%
|
%fa:columns%
|
||||||
<p>%i18n:@deck% <small>(beta)</small></p>
|
<p>%i18n:@deck%</p>
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li class="messaging">
|
<li class="messaging">
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
|
<p class="warn" v-if="env != 'production'">%i18n:common.do-not-use-in-production%</p>
|
||||||
<mk-special-message/>
|
<mk-special-message/>
|
||||||
<div class="main" ref="main">
|
<div class="main" ref="main">
|
||||||
<div class="backdrop"></div>
|
<div class="backdrop"></div>
|
||||||
@ -17,7 +18,7 @@
|
|||||||
<x-account v-if="$store.getters.isSignedIn"/>
|
<x-account v-if="$store.getters.isSignedIn"/>
|
||||||
<x-notifications v-if="$store.getters.isSignedIn"/>
|
<x-notifications v-if="$store.getters.isSignedIn"/>
|
||||||
<x-post v-if="$store.getters.isSignedIn"/>
|
<x-post v-if="$store.getters.isSignedIn"/>
|
||||||
<x-clock/>
|
<x-clock v-if="$store.state.settings.showClockOnHeader"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -28,6 +29,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import * as anime from 'animejs';
|
import * as anime from 'animejs';
|
||||||
|
import { env } from '../../../config';
|
||||||
|
|
||||||
import XNav from './ui.header.nav.vue';
|
import XNav from './ui.header.nav.vue';
|
||||||
import XSearch from './ui.header.search.vue';
|
import XSearch from './ui.header.search.vue';
|
||||||
@ -43,7 +45,13 @@ export default Vue.extend({
|
|||||||
XAccount,
|
XAccount,
|
||||||
XNotifications,
|
XNotifications,
|
||||||
XPost,
|
XPost,
|
||||||
XClock,
|
XClock
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
env: env
|
||||||
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -119,6 +127,15 @@ root(isDark)
|
|||||||
width 100%
|
width 100%
|
||||||
box-shadow 0 1px 1px rgba(#000, 0.075)
|
box-shadow 0 1px 1px rgba(#000, 0.075)
|
||||||
|
|
||||||
|
> .warn
|
||||||
|
display block
|
||||||
|
margin 0
|
||||||
|
padding 4px
|
||||||
|
text-align center
|
||||||
|
font-size 12px
|
||||||
|
background #f00
|
||||||
|
color #fff
|
||||||
|
|
||||||
> .main
|
> .main
|
||||||
height 48px
|
height 48px
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
|||||||
this.open();
|
this.open();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
const query = this.user[0] == '@' ?
|
const query = this.user.startsWith('@') ?
|
||||||
parseAcct(this.user.substr(1)) :
|
parseAcct(this.user.substr(1)) :
|
||||||
{ userId: this.user };
|
{ userId: this.user };
|
||||||
|
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
<template>
|
||||||
|
<div class="qldxjjsrseehkusjuoooapmsprvfrxyl mk-admin-card">
|
||||||
|
<header>%i18n:@announcements%</header>
|
||||||
|
<textarea v-model="broadcasts"></textarea>
|
||||||
|
<button class="ui" @click="save">%i18n:@save%</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
broadcasts: '',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
this.broadcasts = JSON.stringify(meta.broadcasts, null, ' ');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
save() {
|
||||||
|
(this as any).api('admin/update-meta', {
|
||||||
|
broadcasts: JSON.parse(this.broadcasts)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
.qldxjjsrseehkusjuoooapmsprvfrxyl
|
||||||
|
textarea
|
||||||
|
width 100%
|
||||||
|
min-height 300px
|
||||||
|
|
||||||
|
</style>
|
@ -4,8 +4,8 @@
|
|||||||
<div v-if="stats" class="stats">
|
<div v-if="stats" class="stats">
|
||||||
<div><b>%fa:user% {{ stats.originalUsersCount | number }}</b><span>%i18n:@original-users%</span></div>
|
<div><b>%fa:user% {{ stats.originalUsersCount | number }}</b><span>%i18n:@original-users%</span></div>
|
||||||
<div><span>%fa:user% {{ stats.usersCount | number }}</span><span>%i18n:@all-users%</span></div>
|
<div><span>%fa:user% {{ stats.usersCount | number }}</span><span>%i18n:@all-users%</span></div>
|
||||||
<div><b>%fa:pen% {{ stats.originalNotesCount | number }}</b><span>%i18n:@original-notes%</span></div>
|
<div><b>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</b><span>%i18n:@original-notes%</span></div>
|
||||||
<div><span>%fa:pen% {{ stats.notesCount | number }}</span><span>%i18n:@all-notes%</span></div>
|
<div><span>%fa:pencil-alt% {{ stats.notesCount | number }}</span><span>%i18n:@all-notes%</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cpu-memory">
|
<div class="cpu-memory">
|
||||||
<x-cpu-memory :connection="connection"/>
|
<x-cpu-memory :connection="connection"/>
|
||||||
|
41
src/client/app/desktop/views/pages/admin/admin.hashtags.vue
Normal file
41
src/client/app/desktop/views/pages/admin/admin.hashtags.vue
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<template>
|
||||||
|
<div class="jdnqwkzlnxcfftthoybjxrebyolvoucw mk-admin-card">
|
||||||
|
<header>%i18n:@hided-tags%</header>
|
||||||
|
<textarea v-model="hidedTags"></textarea>
|
||||||
|
<button class="ui" @click="save">%i18n:@save%</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from "vue";
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
hidedTags: '',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
(this as any).os.getMeta().then(meta => {
|
||||||
|
this.hidedTags = meta.hidedTags.join('\n');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
save() {
|
||||||
|
(this as any).api('admin/update-meta', {
|
||||||
|
hidedTags: this.hidedTags.split('\n')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
@import '~const.styl'
|
||||||
|
|
||||||
|
.jdnqwkzlnxcfftthoybjxrebyolvoucw
|
||||||
|
textarea
|
||||||
|
width 100%
|
||||||
|
min-height 300px
|
||||||
|
|
||||||
|
</style>
|
@ -4,6 +4,9 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }">%fa:chalkboard .fw%%i18n:@dashboard%</li>
|
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }">%fa:chalkboard .fw%%i18n:@dashboard%</li>
|
||||||
<li @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
|
<li @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
|
||||||
|
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }">%fa:broadcast-tower .fw%%i18n:@announcements%</li>
|
||||||
|
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }">%fa:hashtag .fw%%i18n:@hashtags%</li>
|
||||||
|
|
||||||
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }">%fa:cloud .fw%%i18n:@drive%</li> -->
|
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }">%fa:cloud .fw%%i18n:@drive%</li> -->
|
||||||
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> -->
|
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> -->
|
||||||
</ul>
|
</ul>
|
||||||
@ -13,6 +16,12 @@
|
|||||||
<x-dashboard/>
|
<x-dashboard/>
|
||||||
<x-charts/>
|
<x-charts/>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-show="page == 'announcements'">
|
||||||
|
<x-announcements/>
|
||||||
|
</div>
|
||||||
|
<div v-show="page == 'hashtags'">
|
||||||
|
<x-hashtags/>
|
||||||
|
</div>
|
||||||
<div v-if="page == 'users'">
|
<div v-if="page == 'users'">
|
||||||
<x-suspend-user/>
|
<x-suspend-user/>
|
||||||
<x-unsuspend-user/>
|
<x-unsuspend-user/>
|
||||||
@ -28,6 +37,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import XDashboard from "./admin.dashboard.vue";
|
import XDashboard from "./admin.dashboard.vue";
|
||||||
|
import XAnnouncements from "./admin.announcements.vue";
|
||||||
|
import XHashtags from "./admin.hashtags.vue";
|
||||||
import XSuspendUser from "./admin.suspend-user.vue";
|
import XSuspendUser from "./admin.suspend-user.vue";
|
||||||
import XUnsuspendUser from "./admin.unsuspend-user.vue";
|
import XUnsuspendUser from "./admin.unsuspend-user.vue";
|
||||||
import XVerifyUser from "./admin.verify-user.vue";
|
import XVerifyUser from "./admin.verify-user.vue";
|
||||||
@ -37,6 +48,8 @@ import XCharts from "../../components/charts.vue";
|
|||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
components: {
|
components: {
|
||||||
XDashboard,
|
XDashboard,
|
||||||
|
XAnnouncements,
|
||||||
|
XHashtags,
|
||||||
XSuspendUser,
|
XSuspendUser,
|
||||||
XUnsuspendUser,
|
XUnsuspendUser,
|
||||||
XVerifyUser,
|
XVerifyUser,
|
||||||
|
@ -3,18 +3,20 @@
|
|||||||
@dragover.prevent.stop="onDragover"
|
@dragover.prevent.stop="onDragover"
|
||||||
@dragenter.prevent="onDragenter"
|
@dragenter.prevent="onDragenter"
|
||||||
@dragleave="onDragleave"
|
@dragleave="onDragleave"
|
||||||
@drop.prevent.stop="onDrop"
|
@drop.prevent.stop="onDrop">
|
||||||
>
|
|
||||||
<header :class="{ indicate: count > 0 }"
|
<header :class="{ indicate: count > 0 }"
|
||||||
draggable="true"
|
draggable="true"
|
||||||
@click="toggleActive"
|
@click="goTop"
|
||||||
@dragstart="onDragstart"
|
@dragstart="onDragstart"
|
||||||
@dragend="onDragend"
|
@dragend="onDragend"
|
||||||
@contextmenu.prevent.stop="onContextmenu"
|
@contextmenu.prevent.stop="onContextmenu">
|
||||||
>
|
<button class="toggleActive" @click="toggleActive" v-if="isStacked">
|
||||||
|
<template v-if="active">%fa:angle-up%</template>
|
||||||
|
<template v-else>%fa:angle-down%</template>
|
||||||
|
</button>
|
||||||
<slot name="header"></slot>
|
<slot name="header"></slot>
|
||||||
<span class="count" v-if="count > 0">({{ count }})</span>
|
<span class="count" v-if="count > 0">({{ count }})</span>
|
||||||
<button ref="menu" @click.stop="showMenu">%fa:caret-down%</button>
|
<button class="menu" ref="menu" @click.stop="showMenu">%fa:caret-down%</button>
|
||||||
</header>
|
</header>
|
||||||
<div ref="body" v-show="active">
|
<div ref="body" v-show="active">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
@ -26,6 +28,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Menu from '../../../../common/views/components/menu.vue';
|
import Menu from '../../../../common/views/components/menu.vue';
|
||||||
import contextmenu from '../../../api/contextmenu';
|
import contextmenu from '../../../api/contextmenu';
|
||||||
|
import { countIf } from '../../../../../../prelude/array';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -115,7 +118,7 @@ export default Vue.extend({
|
|||||||
toggleActive() {
|
toggleActive() {
|
||||||
if (!this.isStacked) return;
|
if (!this.isStacked) return;
|
||||||
const vms = this.$store.state.settings.deck.layout.find(ids => ids.indexOf(this.column.id) != -1).map(id => this.getColumnVm(id));
|
const vms = this.$store.state.settings.deck.layout.find(ids => ids.indexOf(this.column.id) != -1).map(id => this.getColumnVm(id));
|
||||||
if (this.active && vms.filter(vm => vm.$el.classList.contains('active')).length == 1) return;
|
if (this.active && countIf(vm => vm.$el.classList.contains('active'), vms) == 1) return;
|
||||||
this.active = !this.active;
|
this.active = !this.active;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -211,6 +214,13 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
goTop() {
|
||||||
|
this.$refs.body.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: 'smooth'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
onDragstart(e) {
|
onDragstart(e) {
|
||||||
e.dataTransfer.effectAllowed = 'move';
|
e.dataTransfer.effectAllowed = 'move';
|
||||||
e.dataTransfer.setData('mk-deck-column', this.column.id);
|
e.dataTransfer.setData('mk-deck-column', this.column.id);
|
||||||
@ -302,6 +312,7 @@ root(isDark)
|
|||||||
color #bbb
|
color #bbb
|
||||||
|
|
||||||
> header
|
> header
|
||||||
|
display flex
|
||||||
z-index 1
|
z-index 1
|
||||||
line-height $header-height
|
line-height $header-height
|
||||||
padding 0 16px
|
padding 0 16px
|
||||||
@ -328,10 +339,8 @@ root(isDark)
|
|||||||
margin-left 4px
|
margin-left 4px
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
|
|
||||||
> button
|
> .toggleActive
|
||||||
position absolute
|
> .menu
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
width $header-height
|
width $header-height
|
||||||
line-height $header-height
|
line-height $header-height
|
||||||
font-size 16px
|
font-size 16px
|
||||||
@ -343,6 +352,13 @@ root(isDark)
|
|||||||
&:active
|
&:active
|
||||||
color isDark ? #b2c1d5 : #999
|
color isDark ? #b2c1d5 : #999
|
||||||
|
|
||||||
|
> .toggleActive
|
||||||
|
margin-left -16px
|
||||||
|
|
||||||
|
> .menu
|
||||||
|
margin-left auto
|
||||||
|
margin-right -16px
|
||||||
|
|
||||||
> div
|
> div
|
||||||
height "calc(100% - %s)" % $header-height
|
height "calc(100% - %s)" % $header-height
|
||||||
overflow auto
|
overflow auto
|
||||||
|
@ -68,7 +68,7 @@ export default Vue.extend({
|
|||||||
(this as any).api('notes/user-list-timeline', {
|
(this as any).api('notes/user-list-timeline', {
|
||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
mediaOnly: this.mediaOnly,
|
withFiles: this.mediaOnly,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
@ -90,7 +90,7 @@ export default Vue.extend({
|
|||||||
listId: this.list.id,
|
listId: this.list.id,
|
||||||
limit: fetchLimit + 1,
|
limit: fetchLimit + 1,
|
||||||
untilId: (this.$refs.timeline as any).tail().id,
|
untilId: (this.$refs.timeline as any).tail().id,
|
||||||
mediaOnly: this.mediaOnly,
|
withFiles: this.mediaOnly,
|
||||||
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
includeMyRenotes: this.$store.state.settings.showMyRenotes,
|
||||||
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes,
|
||||||
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
includeLocalRenotes: this.$store.state.settings.showLocalRenotes
|
||||||
@ -109,7 +109,7 @@ export default Vue.extend({
|
|||||||
return promise;
|
return promise;
|
||||||
},
|
},
|
||||||
onNote(note) {
|
onNote(note) {
|
||||||
if (this.mediaOnly && note.media.length == 0) return;
|
if (this.mediaOnly && note.files.length == 0) return;
|
||||||
|
|
||||||
// Prepend a note
|
// Prepend a note
|
||||||
(this.$refs.timeline as any).prepend(note);
|
(this.$refs.timeline as any).prepend(note);
|
||||||
|
@ -28,14 +28,15 @@
|
|||||||
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||||
<a class="rp" v-if="p.renote != null">RP:</a>
|
<a class="rp" v-if="p.renote != null">RP:</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="media" v-if="p.media.length > 0">
|
<div class="files" v-if="p.files.length > 0">
|
||||||
<mk-media-list :media-list="p.media"/>
|
<mk-media-list :media-list="p.files"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
<a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||||
<div class="renote" v-if="p.renote">
|
<div class="renote" v-if="p.renote">
|
||||||
<mk-note-preview :note="p.renote" :mini="true"/>
|
<mk-note-preview :note="p.renote" :mini="true"/>
|
||||||
</div>
|
</div>
|
||||||
|
<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="false" :mini="true"/>
|
||||||
</div>
|
</div>
|
||||||
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
|
||||||
</div>
|
</div>
|
||||||
@ -53,11 +54,11 @@
|
|||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="srwrkujossgfuhrbnvqkybtzxpblgchi">
|
<div v-else class="srwrkujossgfuhrbnvqkybtzxpblgchi">
|
||||||
<div v-if="note.media.length > 0">
|
<div v-if="note.files.length > 0">
|
||||||
<mk-media-list :media-list="note.media"/>
|
<mk-media-list :media-list="note.files"/>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="note.renote && note.renote.media.length > 0">
|
<div v-if="note.renote && note.renote.files.length > 0">
|
||||||
<mk-media-list :media-list="note.renote.media"/>
|
<mk-media-list :media-list="note.renote.files"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -99,7 +100,7 @@ export default Vue.extend({
|
|||||||
isRenote(): boolean {
|
isRenote(): boolean {
|
||||||
return (this.note.renote &&
|
return (this.note.renote &&
|
||||||
this.note.text == null &&
|
this.note.text == null &&
|
||||||
this.note.mediaIds.length == 0 &&
|
this.note.fileIds.length == 0 &&
|
||||||
this.note.poll == null);
|
this.note.poll == null);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -370,7 +371,7 @@ root(isDark)
|
|||||||
.mk-url-preview
|
.mk-url-preview
|
||||||
margin-top 8px
|
margin-top 8px
|
||||||
|
|
||||||
> .media
|
> .files
|
||||||
> img
|
> img
|
||||||
display block
|
display block
|
||||||
max-width 100%
|
max-width 100%
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user