Compare commits
458 Commits
Author | SHA1 | Date | |
---|---|---|---|
3b974428fc | |||
580191fb17 | |||
be0cb88b6c | |||
95c4e4497e | |||
2ec445f83e | |||
51b915428e | |||
1395cf89ce | |||
2a8f984db7 | |||
decf2d396f | |||
f7964da899 | |||
c8607ff7b6 | |||
e9f8897fe2 | |||
e0b107a3a0 | |||
1d3e6a7197 | |||
1c93fcb1c4 | |||
e3389e7899 | |||
454632d785 | |||
c9bca7dc85 | |||
710ba526fa | |||
aa47b6732d | |||
20f83420ca | |||
d09a68ef11 | |||
b545be5799 | |||
4fc377584f | |||
a5f09c90dd | |||
d059d7f972 | |||
c03e2dfbc0 | |||
45c5e7b967 | |||
c81a94ff75 | |||
acc6f54557 | |||
8025b121af | |||
78ec06bda3 | |||
6ef83d9c59 | |||
fca4ceef21 | |||
00f979f0e6 | |||
556677be7a | |||
624fd093f2 | |||
2ee438dece | |||
534de24406 | |||
e88ce1746d | |||
b8aad35009 | |||
47bd485a39 | |||
ad869d7469 | |||
d15cce5337 | |||
37daff6d61 | |||
5417e40f59 | |||
0fed33bfdb | |||
5dddc75d09 | |||
081578c604 | |||
6c47bf5b76 | |||
9e85291cd3 | |||
7f77517fc8 | |||
b2f288dcac | |||
52b59e9d7b | |||
80c74b1fa7 | |||
91811ea500 | |||
57150fd910 | |||
cddbbdf5d0 | |||
423dc2349b | |||
0556a2a2da | |||
65d943e42a | |||
3bcb344ecb | |||
82d721d60b | |||
48dc56e834 | |||
2c33bd6e31 | |||
b6524616bc | |||
7e2b70f912 | |||
4f071a66b6 | |||
39f2303429 | |||
cacf072027 | |||
6ab1fdfe1a | |||
6e5c93f926 | |||
1670737075 | |||
fee235c4e4 | |||
7a39d489f2 | |||
7c634218d1 | |||
2704c5be73 | |||
489b51ba9f | |||
21807c29f1 | |||
3bc62fe3eb | |||
ba0e3c4a5f | |||
9ec1fb5e37 | |||
d708409462 | |||
07d05d4f86 | |||
bbdb2ebb40 | |||
f7908ba098 | |||
f2fda3075e | |||
1338a68979 | |||
e7da505fb3 | |||
5a9228372f | |||
c4a6ba9097 | |||
d5871b408b | |||
7b3338e373 | |||
d18ee12d2f | |||
ca9cc97940 | |||
a70070ac7d | |||
069d99b320 | |||
37d350dcad | |||
8653e09b59 | |||
7cd2d59576 | |||
a0839de38f | |||
b7c5c71c6f | |||
adab0adbdd | |||
2faa58928f | |||
ffb80efe21 | |||
6f959218ef | |||
be1125dcb9 | |||
9ab34c2301 | |||
0166d81d9e | |||
0b26efbd2f | |||
2cbaedf946 | |||
b66924fbe8 | |||
8c91148954 | |||
be0eff3dda | |||
85903ac9c6 | |||
dbdd778dc7 | |||
fc50dfd8d5 | |||
f444e132ee | |||
68f562c323 | |||
820ea69613 | |||
6f4b3853a1 | |||
a706ad0e80 | |||
820116affc | |||
52650342be | |||
85ddabdc65 | |||
0730cc4fa4 | |||
17b6ab0ef0 | |||
4e208b85bb | |||
00f8b29f6d | |||
9cf0fcadb1 | |||
c595efeead | |||
b56c6793a1 | |||
ebceffba1e | |||
3ae42d9b85 | |||
796237b3c6 | |||
cb7a97ee4c | |||
0cf758b6d1 | |||
d28fca320e | |||
8bd17703c3 | |||
a78eebc43f | |||
79fb5246df | |||
458b8c78dc | |||
64e0cbd6fc | |||
7fe937026b | |||
656cec65b9 | |||
8045bbff1c | |||
c1a7a21746 | |||
f3ee63fcbe | |||
7645c212a3 | |||
8b38e2ea58 | |||
c9eb6a8919 | |||
9a41fd4734 | |||
70d96ee076 | |||
3b6fb3959b | |||
484d705320 | |||
786031be66 | |||
bc0027ce43 | |||
3e7c6d9bdc | |||
5463e3e55e | |||
84a880086e | |||
89419b7136 | |||
9106ec74f7 | |||
ebf9a0921d | |||
c237f49016 | |||
709290d2da | |||
eb3180f3b6 | |||
681997509c | |||
79ff5888fd | |||
9ee9cf8d81 | |||
ee3c0f6f18 | |||
9dd463bff4 | |||
df297d0031 | |||
d18d1cb958 | |||
5bc0570888 | |||
8b43d75eaf | |||
89b37bd73d | |||
69f246ce7f | |||
6a97f0b7f6 | |||
d885b872f3 | |||
125849673a | |||
30c53e9ee0 | |||
981fb9e8f3 | |||
9fac22d880 | |||
b8f034064a | |||
6068227434 | |||
69cda49c88 | |||
039d821d20 | |||
44d93bc408 | |||
cfa76ac6f9 | |||
0ec2d16522 | |||
6bcac1fe14 | |||
bc9427d000 | |||
07c043361e | |||
e676a9a501 | |||
09e654c6d2 | |||
549cb1ba87 | |||
c633827e5e | |||
08142ead67 | |||
638d81b66e | |||
4c83c2f64d | |||
bf56f90fdc | |||
d8412aad7a | |||
c136741710 | |||
4fe8454da0 | |||
3f2161dadd | |||
3db516aa1a | |||
367bbbe605 | |||
5b70ff561c | |||
4486527e5d | |||
147e23d332 | |||
ee20e6950e | |||
1d217154ef | |||
27d304a1ab | |||
1d1a373ca8 | |||
bca3c6f8bf | |||
d83d661535 | |||
e16906afc3 | |||
a6dc0f3684 | |||
6120474548 | |||
121dd86299 | |||
5251d9f668 | |||
7ae3f569de | |||
142ebead59 | |||
e196086c64 | |||
8c6ed98505 | |||
98a2953c9c | |||
61d224695b | |||
6967def6c8 | |||
393c6aa79a | |||
fc05540404 | |||
1c589c7c18 | |||
284df27435 | |||
68c0600a5c | |||
b8163bd0e1 | |||
8c25b9dfad | |||
bf34f67583 | |||
0c63f410d6 | |||
069077ace4 | |||
5be947ea4d | |||
b41ffa75b7 | |||
cd80e02ebf | |||
dffcefb81f | |||
48df08d4dc | |||
4de9a08e55 | |||
3f46b5259b | |||
2faa8ea97c | |||
514690cf18 | |||
f4f78c1898 | |||
2d24befb15 | |||
184d88838c | |||
4490503d59 | |||
99750435ae | |||
fae920e578 | |||
0243b6d13b | |||
12bc725d68 | |||
b1a7b781ec | |||
7e1cad3e12 | |||
fd3f4c37a0 | |||
3acd2e0f0c | |||
b1b5a795c8 | |||
197e2c8377 | |||
fb8b0c291d | |||
706d47ec32 | |||
4eab2b3654 | |||
0a78f560e0 | |||
f6f79fb388 | |||
34235d4d44 | |||
21842ec190 | |||
026e1cc7e7 | |||
c65f4eebaf | |||
17baf8770a | |||
01f60edb17 | |||
15b11e59f4 | |||
a2db4db963 | |||
e87b9cc019 | |||
54cb94db1d | |||
1de8e1eeb1 | |||
1d8fb65959 | |||
28482627f7 | |||
4ee7df887d | |||
b040571fa8 | |||
fbd5e4bab8 | |||
498bdd1cd0 | |||
102cca8971 | |||
e710ad4c5f | |||
f64f6fd603 | |||
5995020c64 | |||
2dc86ec1ac | |||
d50bcbdb23 | |||
19afd0ba61 | |||
7a787fa95c | |||
4e85eb90cb | |||
d4474b953e | |||
0aaf3d7bd7 | |||
02bb2423af | |||
e9b25f17af | |||
96671c5c7e | |||
4fc786f062 | |||
51c0cca4ff | |||
bd344628f6 | |||
48deb35d4b | |||
f9792f0d5c | |||
0157033104 | |||
596f92cfcc | |||
b2dedf7f98 | |||
34393ef89f | |||
7e11cd3b99 | |||
dd1622296d | |||
77cb59a6ac | |||
a2b60e38a3 | |||
f0570bf111 | |||
b980164318 | |||
3e7ff586a5 | |||
923bbcbf6b | |||
8cc85931d6 | |||
b25522a091 | |||
97ae7e9ef4 | |||
d25bd65722 | |||
f4f98c25f7 | |||
336607568f | |||
e2843a5ce4 | |||
702875a78e | |||
0fa8c6afd2 | |||
96571866a3 | |||
f72b00bec7 | |||
1e7b5a0a98 | |||
9f09afc824 | |||
93b599dc8e | |||
1c722494de | |||
a464c8d1d0 | |||
51362e9a52 | |||
3c086fe8c7 | |||
f3b1248bd8 | |||
4e529ee7d0 | |||
a2b975a493 | |||
13055d1496 | |||
78b5af4e4f | |||
008432e156 | |||
d3d50b2f79 | |||
eefeb4c268 | |||
86d4f1981c | |||
7a8e97972c | |||
3555213155 | |||
5d3d8dffd6 | |||
dea8688c9d | |||
a235869cfa | |||
a8434b3bc5 | |||
f110b2b320 | |||
0543cffe00 | |||
0383cbe43f | |||
9dd1203583 | |||
4eeeaffdee | |||
6f73f3d7a1 | |||
aa9cd211dd | |||
3cdf4f01f8 | |||
d0f84643d8 | |||
89707ad436 | |||
163d81c1b0 | |||
81a7213583 | |||
8f92a07d68 | |||
31b30e3dd2 | |||
0a1ac12d97 | |||
e800104ac4 | |||
05cb94eb77 | |||
51499e04e0 | |||
0c993ef851 | |||
b27fced30d | |||
2b7da9d98c | |||
cd66f86f08 | |||
a2e7cab573 | |||
f81f7d51c5 | |||
7fb640e38f | |||
c7561be15f | |||
741c81bca9 | |||
1e38528716 | |||
58b3be438a | |||
4522568749 | |||
719f9c8c02 | |||
fe891da886 | |||
95b6684cfd | |||
66836836ab | |||
0db48c778f | |||
13a2f9373c | |||
ae4d504392 | |||
85d240625d | |||
db646b0ad9 | |||
2570d50957 | |||
7faecaadcf | |||
dcbcb18081 | |||
f1a61a268e | |||
d7636355a1 | |||
ed2993b3f2 | |||
1368c9d182 | |||
c5e3c07c16 | |||
f8395166af | |||
dc8f4c8d6a | |||
ed4860dfd9 | |||
5b0bf98b3c | |||
adffac1000 | |||
3a1672b061 | |||
e7658be6cd | |||
63533ad9c8 | |||
34b431fa1d | |||
958802dbe0 | |||
8681259597 | |||
f3d76c06db | |||
3f32a9bfff | |||
c497149765 | |||
9159613f2f | |||
70e95a5cdb | |||
b0f82749aa | |||
20c0690352 | |||
006ecec443 | |||
effcf0a609 | |||
3852d0b2c3 | |||
ec67590dbe | |||
65d0dbb7d8 | |||
f8af57dffb | |||
2b058be3aa | |||
67efd30553 | |||
8d1fdc5aa4 | |||
d033103163 | |||
53dff28a21 | |||
53c37036ee | |||
133c879a3a | |||
a105faeaae | |||
13404310a7 | |||
2373b114bf | |||
5bfc6b6547 | |||
8026a609bb | |||
10db61a0d2 | |||
40520f3997 | |||
c1d59716d1 | |||
d8698743a1 | |||
ade5055bc3 | |||
6e343d50f1 | |||
ce3f735654 | |||
9b5e623130 | |||
f0b0c5b540 | |||
dd2207d430 | |||
ffd6ac2434 | |||
27f93cc112 | |||
7ee88a69ec | |||
227798300f | |||
37a360efd9 | |||
3a850823a9 | |||
4da53b7382 | |||
cb6f94735f | |||
c073a20969 | |||
6dc8a385ee | |||
f299c050b8 | |||
eed540a51c | |||
5db72c4d71 | |||
fc0bbfa759 | |||
6d63c81dd5 | |||
bea42924cb | |||
b48ef68c12 | |||
65109d140b |
3
.autogen/check_pr.jq
Normal file
3
.autogen/check_pr.jq
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.[]
|
||||||
|
.head
|
||||||
|
.label
|
2
.autogen/next_url.jq
Normal file
2
.autogen/next_url.jq
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.links
|
||||||
|
.next
|
39
.autogen/patreon.jq
Normal file
39
.autogen/patreon.jq
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
(
|
||||||
|
.data |
|
||||||
|
map(
|
||||||
|
select(
|
||||||
|
.relationships
|
||||||
|
.currently_entitled_tiers
|
||||||
|
.data[]
|
||||||
|
)
|
||||||
|
) |
|
||||||
|
map(
|
||||||
|
.relationships
|
||||||
|
.user
|
||||||
|
.data
|
||||||
|
.id
|
||||||
|
)
|
||||||
|
) as $data |
|
||||||
|
.included |
|
||||||
|
map(
|
||||||
|
select(
|
||||||
|
.id as $id |
|
||||||
|
$data |
|
||||||
|
contains(
|
||||||
|
[
|
||||||
|
$id
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) |
|
||||||
|
map(
|
||||||
|
.attributes |
|
||||||
|
[
|
||||||
|
.full_name,
|
||||||
|
.thumb_url,
|
||||||
|
.url
|
||||||
|
] |
|
||||||
|
@tsv
|
||||||
|
) |
|
||||||
|
.[] |
|
||||||
|
@text
|
@ -5,7 +5,7 @@
|
|||||||
# __MISSKEY_HEAD=acid-chicken:patch-autogen
|
# __MISSKEY_HEAD=acid-chicken:patch-autogen
|
||||||
# __MISSKEY_REPO=syuilo/misskey
|
# __MISSKEY_REPO=syuilo/misskey
|
||||||
# __MISSKEY_BRANCH=develop
|
# __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
|
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1
|
||||||
cd "$(dirname $0)/.." && \
|
cd "$(dirname $0)/.." && \
|
||||||
touch null.cache && \
|
touch null.cache && \
|
||||||
rm *.cache && \
|
rm *.cache && \
|
||||||
@ -30,7 +30,7 @@ while :
|
|||||||
touch patreon.cache && \
|
touch patreon.cache && \
|
||||||
rm patreon.cache && \
|
rm patreon.cache && \
|
||||||
cat patreon.raw.cache | \
|
cat patreon.raw.cache | \
|
||||||
jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \
|
jq -r -f patreon.jq >> patreon.cache && \
|
||||||
echo '<table><tr>' >> patreon.md.cache && \
|
echo '<table><tr>' >> patreon.md.cache && \
|
||||||
cat patreon.cache | \
|
cat patreon.cache | \
|
||||||
awk -F'\t' '{print $2,$1}' | \
|
awk -F'\t' '{print $2,$1}' | \
|
||||||
@ -43,7 +43,7 @@ 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 -f next_url.jq)"
|
||||||
test "$new_url" = 'null' && \
|
test "$new_url" = 'null' && \
|
||||||
break || \
|
break || \
|
||||||
URL="$url"
|
URL="$url"
|
@ -108,13 +108,5 @@ autoAdmin: true
|
|||||||
# port: 9200
|
# port: 9200
|
||||||
# pass: null
|
# pass: null
|
||||||
|
|
||||||
# ServiceWorker
|
|
||||||
#sw:
|
|
||||||
# # Public key of VAPID
|
|
||||||
# public_key: example-sw-public-key
|
|
||||||
#
|
|
||||||
# # Private key of VAPID
|
|
||||||
# private_key: example-sw-private-key
|
|
||||||
|
|
||||||
# Clustering
|
# Clustering
|
||||||
#clusterLimit: 1
|
#clusterLimit: 1
|
||||||
|
70
CHANGELOG.md
70
CHANGELOG.md
@ -1,9 +1,75 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
破壊的変更のみ記載。
|
10.66.1
|
||||||
|
-------
|
||||||
|
* ActivityPubのsharedInboxに関して修正
|
||||||
|
* MFMでのカッコの判定を改善
|
||||||
|
* バグ修正
|
||||||
|
|
||||||
This document describes breaking changes only.
|
10.66.0
|
||||||
|
-------
|
||||||
|
* ユーザーごとのRSSフィードを提供するように
|
||||||
|
* リストのユーザーがすべて表示できない問題を修正
|
||||||
|
* デザインの調整
|
||||||
|
* パフォーマンスの改善
|
||||||
|
|
||||||
|
10.65.0
|
||||||
|
-------
|
||||||
|
* 検索で投稿やユーザーのURLを入力した際にそれをフェッチして表示するように
|
||||||
|
* リストのリネームと削除をできるように
|
||||||
|
* リストからユーザーを削除できるように
|
||||||
|
* リモートの絵文字を更新するように
|
||||||
|
* ActivityPubのための絵文字エンドポイントを実装
|
||||||
|
* 管理者がドライブのファイルのNSFWを設定できるように
|
||||||
|
* ServiceWorkerの設定を管理者ページで行えるように
|
||||||
|
* メンションの判定を改善
|
||||||
|
* リモートの投稿を引用した際にオリジナルのURLを挿入するように
|
||||||
|
* クライアントのパフォーマンス改善
|
||||||
|
* CWの内容がタブタイトルに表示されるのを修正
|
||||||
|
* アカウントを作成したときにログイン状態にならない問題を修正
|
||||||
|
* 時計の針にテーマカラーが適用されていなかったのを修正
|
||||||
|
* 一部の日時の表示が日本語で表示されていたのを修正
|
||||||
|
* プロフィールの写真欄に画像以外のファイルが含まれる問題を修正
|
||||||
|
* メンションが含まれる投稿に返信する際、フォームに予めそれらのメンションがセットされた状態にならない問題を修正
|
||||||
|
* デッキのTLにUIの動きを減らすオプションが適用されていなかったのを修正
|
||||||
|
* ログイン画面のタイムラインに隠した投稿が表示される問題を修正
|
||||||
|
* サジェストが複数開いてしまう問題を修正
|
||||||
|
* APから来たタグに登録時の長さ制限が適用されていなかったのを修正
|
||||||
|
|
||||||
|
10.64.2
|
||||||
|
-------
|
||||||
|
* UIの動きを減らすオプションが一部のアニメーションに適用されなかったのを修正
|
||||||
|
|
||||||
|
10.64.1
|
||||||
|
-------
|
||||||
|
* レートリミットの調整
|
||||||
|
* アニメーションの調整
|
||||||
|
|
||||||
|
10.64.0
|
||||||
|
-------
|
||||||
|
* いくつかのアニメーションを追加
|
||||||
|
* OGP向けにインスタンスのバナー画像を提供するように
|
||||||
|
* 管理者ページでドライブのファイルを表示できるように
|
||||||
|
* ユーザビリティの強化
|
||||||
|
* バグ修正
|
||||||
|
|
||||||
|
10.63.1
|
||||||
|
-------
|
||||||
|
* メンションの表示を改善
|
||||||
|
* バグ修正
|
||||||
|
|
||||||
|
10.63.0
|
||||||
|
-------
|
||||||
|
* ActivityPubのユーザーフィールドをユーザーページに表示
|
||||||
|
* 404ページの実装
|
||||||
|
* パフォーマンスの向上
|
||||||
|
* バグ修正
|
||||||
|
|
||||||
|
10.62.2
|
||||||
|
-------
|
||||||
|
* バグ修正
|
||||||
|
* ユーザビリティの向上
|
||||||
|
|
||||||
10.0.0
|
10.0.0
|
||||||
------
|
------
|
||||||
|
@ -25,3 +25,16 @@ Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n).
|
|||||||
## Continuous integration
|
## Continuous integration
|
||||||
Misskey uses CircleCI for automated test.
|
Misskey uses CircleCI for automated test.
|
||||||
Configuration files are located in `/.circleci`.
|
Configuration files are located in `/.circleci`.
|
||||||
|
|
||||||
|
## Glossary
|
||||||
|
### AP
|
||||||
|
Stands for _**A**ctivity**P**ub_.
|
||||||
|
|
||||||
|
### MFM
|
||||||
|
Stands for _**M**isskey **F**lavored **M**arkdown_.
|
||||||
|
|
||||||
|
### Mk
|
||||||
|
Stands for _**M**iss**k**ey_.
|
||||||
|
|
||||||
|
### SW
|
||||||
|
Stands for _**S**ervice**W**orker_.
|
||||||
|
13
PULL_REQUEST_TEMPLATE.md
Normal file
13
PULL_REQUEST_TEMPLATE.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Summary
|
||||||
|
|
||||||
|
<!--
|
||||||
|
-
|
||||||
|
- * Please describe your changes here *
|
||||||
|
-
|
||||||
|
- If you are going to resolve some issue, please add this context.
|
||||||
|
- Resolve #ISSUE_NUMBER
|
||||||
|
-
|
||||||
|
- If you are going to fix some bug issue, please add this context.
|
||||||
|
- Fix #ISSUE_NUMBER
|
||||||
|
-
|
||||||
|
-->
|
14
README.md
14
README.md
@ -3,9 +3,9 @@
|
|||||||
[](https://misskey.xyz/)
|
[](https://misskey.xyz/)
|
||||||
================================================================
|
================================================================
|
||||||
|
|
||||||
[](https://circleci.com/gh/syuilo/misskey)
|
[](https://circleci.com/gh/syuilo/misskey)
|
||||||
[![][dependencies-badge]][dependencies-link]
|
[](https://david-dm.org/syuilo/misskey)
|
||||||
[](http://makeapullrequest.com)
|
[](http://makeapullrequest.com)
|
||||||
|
|
||||||
**Sophisticated microblogging platform, evolving forever.**
|
**Sophisticated microblogging platform, evolving forever.**
|
||||||
|
|
||||||
@ -77,6 +77,7 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
|
||||||
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=ybYtxfpte1b-rGg6Zecpys2ZdZDtwR_UNJHQjt-3eoU%3D" alt="Xeltica"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
||||||
@ -85,6 +86,7 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
|
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
|
||||||
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||||
|
<td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
|
||||||
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||||
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
||||||
@ -116,7 +118,7 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
**Last updated:** Sat, 01 Dec 2018 22:05:05 UTC
|
**Last updated:** Sun, 16 Dec 2018 18:32:06 UTC
|
||||||
<!-- PATREON_END -->
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
@ -128,9 +130,7 @@ Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
|||||||
[![][agpl-3.0-badge]][AGPL-3.0]
|
[![][agpl-3.0-badge]][AGPL-3.0]
|
||||||
|
|
||||||
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
|
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square
|
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=for-the-badge
|
||||||
[dependencies-link]: https://david-dm.org/syuilo/misskey
|
|
||||||
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
|
|
||||||
|
|
||||||
[backer-url]: #backers
|
[backer-url]: #backers
|
||||||
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
|
||||||
|
70
docs/examples/misskey.nginx
Normal file
70
docs/examples/misskey.nginx
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
# Sample nginx configuration for Misskey
|
||||||
|
#
|
||||||
|
# 1. Replace example.tld to your domain
|
||||||
|
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-ebabled/
|
||||||
|
# or copy to /etc/nginx/conf.d/
|
||||||
|
|
||||||
|
# For WebSocket
|
||||||
|
map $http_upgrade $connection_upgrade {
|
||||||
|
default upgrade;
|
||||||
|
'' close;
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name example.tld;
|
||||||
|
|
||||||
|
# For SSL domain validation
|
||||||
|
root /var/www/html;
|
||||||
|
location /.well-known/acme-challenge/ { allow all; }
|
||||||
|
location /.well-known/pki-validation/ { allow all; }
|
||||||
|
location / { return 301 https://$server_name$request_uri; }
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 http2;
|
||||||
|
listen [::]:443 http2;
|
||||||
|
server_name example.tld;
|
||||||
|
ssl on;
|
||||||
|
ssl_session_cache shared:ssl_session_cache:10m;
|
||||||
|
|
||||||
|
# To use Let's Encrypt certificate
|
||||||
|
ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
|
||||||
|
|
||||||
|
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
|
||||||
|
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
||||||
|
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
||||||
|
|
||||||
|
# SSL protocol settings
|
||||||
|
ssl_protocols TLSv1 TLSv1.2;
|
||||||
|
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
# Change to your upload limit
|
||||||
|
client_max_body_size 80m;
|
||||||
|
|
||||||
|
# Proxy to Node
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_redirect off;
|
||||||
|
|
||||||
|
# For WebSocket
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
|
||||||
|
# Cache settings
|
||||||
|
proxy_cache cache1;
|
||||||
|
proxy_cache_lock on;
|
||||||
|
proxy_cache_use_stale updating;
|
||||||
|
add_header X-Cache $upstream_cache_status;
|
||||||
|
}
|
||||||
|
}
|
@ -47,16 +47,6 @@ As root:
|
|||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
||||||
5. `npm install` Install misskey dependencies.
|
5. `npm install` Install misskey dependencies.
|
||||||
|
|
||||||
*(optional)* 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 as root.
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
npm install web-push -g
|
|
||||||
web-push generate-vapid-keys
|
|
||||||
```
|
|
||||||
|
|
||||||
*5.* Configure Misskey
|
*5.* Configure Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
|
@ -47,16 +47,6 @@ En mode root :
|
|||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
||||||
5. `npm install` Installez les dépendances de misskey.
|
5. `npm install` Installez les dépendances de misskey.
|
||||||
|
|
||||||
*(optionnel)* Génération des clés VAPID
|
|
||||||
----------------------------------------------------------------
|
|
||||||
Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID :
|
|
||||||
Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root.
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
npm install web-push -g
|
|
||||||
web-push generate-vapid-keys
|
|
||||||
```
|
|
||||||
|
|
||||||
*5.* Création du fichier de configuration
|
*5.* Création du fichier de configuration
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
||||||
|
@ -53,15 +53,6 @@ adduser --disabled-password --disabled-login misskey
|
|||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
||||||
5. `npm install` Misskeyの依存パッケージをインストール
|
5. `npm install` Misskeyの依存パッケージをインストール
|
||||||
|
|
||||||
*(オプション)* VAPIDキーペアの生成
|
|
||||||
----------------------------------------------------------------
|
|
||||||
ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
npm install web-push -g
|
|
||||||
web-push generate-vapid-keys
|
|
||||||
```
|
|
||||||
|
|
||||||
*5.* 設定ファイルを作成する
|
*5.* 設定ファイルを作成する
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
||||||
|
52
gulpfile.ts
52
gulpfile.ts
@ -11,14 +11,12 @@ import tslint from 'gulp-tslint';
|
|||||||
const cssnano = require('gulp-cssnano');
|
const cssnano = require('gulp-cssnano');
|
||||||
const stylus = require('gulp-stylus');
|
const stylus = require('gulp-stylus');
|
||||||
import * as uglifyComposer from 'gulp-uglify/composer';
|
import * as uglifyComposer from 'gulp-uglify/composer';
|
||||||
import pug = require('gulp-pug');
|
|
||||||
import * as rimraf from 'rimraf';
|
import * as rimraf from 'rimraf';
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
const imagemin = require('gulp-imagemin');
|
const imagemin = require('gulp-imagemin');
|
||||||
import * as rename from 'gulp-rename';
|
import * as rename from 'gulp-rename';
|
||||||
import * as mocha from 'gulp-mocha';
|
import * as mocha from 'gulp-mocha';
|
||||||
import * as replace from 'gulp-replace';
|
import * as replace from 'gulp-replace';
|
||||||
import * as htmlmin from 'gulp-htmlmin';
|
|
||||||
const uglifyes = require('uglify-es');
|
const uglifyes = require('uglify-es');
|
||||||
|
|
||||||
const locales = require('./locales');
|
const locales = require('./locales');
|
||||||
@ -34,8 +32,6 @@ if (isDebug) {
|
|||||||
console.warn(chalk.yellow.bold(' built script will not be compressed.'));
|
console.warn(chalk.yellow.bold(' built script will not be compressed.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
const constants = require('./src/const.json');
|
|
||||||
|
|
||||||
gulp.task('build', [
|
gulp.task('build', [
|
||||||
'build:ts',
|
'build:ts',
|
||||||
'build:copy',
|
'build:copy',
|
||||||
@ -109,7 +105,7 @@ gulp.task('default', ['build']);
|
|||||||
gulp.task('build:client', [
|
gulp.task('build:client', [
|
||||||
'build:ts',
|
'build:ts',
|
||||||
'build:client:script',
|
'build:client:script',
|
||||||
'build:client:pug',
|
'build:client:styles',
|
||||||
'copy:client'
|
'copy:client'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -148,52 +144,6 @@ gulp.task('copy:client', [
|
|||||||
.pipe(gulp.dest('./built/client/assets/'))
|
.pipe(gulp.dest('./built/client/assets/'))
|
||||||
);
|
);
|
||||||
|
|
||||||
gulp.task('build:client:pug', [
|
|
||||||
'copy:client',
|
|
||||||
'build:client:script',
|
|
||||||
'build:client:styles'
|
|
||||||
], () =>
|
|
||||||
gulp.src('./src/client/app/base.pug')
|
|
||||||
.pipe(pug({
|
|
||||||
locals: {
|
|
||||||
themeColor: constants.themeColor
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.pipe(htmlmin({
|
|
||||||
// 真理値属性の簡略化 e.g.
|
|
||||||
// <input value="foo" readonly="readonly"> to
|
|
||||||
// <input value="foo" readonly>
|
|
||||||
collapseBooleanAttributes: true,
|
|
||||||
|
|
||||||
// テキストの一部かもしれない空白も削除する e.g.
|
|
||||||
// <div> <p> foo </p> </div> to
|
|
||||||
// <div><p>foo</p></div>
|
|
||||||
collapseWhitespace: true,
|
|
||||||
|
|
||||||
// タグ間の改行を保持する
|
|
||||||
preserveLineBreaks: true,
|
|
||||||
|
|
||||||
// (できる場合は)属性のクォーテーション削除する e.g.
|
|
||||||
// <p class="foo-bar" id="moo" title="blah blah">foo</p> to
|
|
||||||
// <p class=foo-bar id=moo title="blah blah">foo</p>
|
|
||||||
removeAttributeQuotes: true,
|
|
||||||
|
|
||||||
// 省略可能なタグを省略する e.g.
|
|
||||||
// <html><p>yo</p></html> ro
|
|
||||||
// <p>yo</p>
|
|
||||||
removeOptionalTags: true,
|
|
||||||
|
|
||||||
// 属性の値がデフォルトと同じなら省略する e.g.
|
|
||||||
// <input type="text"> to
|
|
||||||
// <input>
|
|
||||||
removeRedundantAttributes: true,
|
|
||||||
|
|
||||||
// CSSも圧縮する
|
|
||||||
minifyCSS: true
|
|
||||||
}))
|
|
||||||
.pipe(gulp.dest('./built/client/app/'))
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task('locales', () =>
|
gulp.task('locales', () =>
|
||||||
gulp.src('./locales/*.yml')
|
gulp.src('./locales/*.yml')
|
||||||
.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' }))
|
.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' }))
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "あなた"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "接続中"
|
connecting: "接続中"
|
||||||
reconnecting: "再接続中"
|
reconnecting: "再接続中"
|
||||||
connected: "接続完了"
|
connected: "接続完了"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connect: "接続する"
|
||||||
detail: "詳細..."
|
|
||||||
reconnect: "再接続する"
|
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
connected-to: "次のアカウントに接続されています"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "再接続する"
|
|
||||||
twitter-disconnect: "切断する"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||||
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
|
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "Verifizierter Benutzer"
|
verified-user: "Verifizierter Benutzer"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Umfrage"
|
polls: "Umfrage"
|
||||||
post-form: "Beitragsform"
|
post-form: "Beitragsform"
|
||||||
server: "Server-Info"
|
server: "Server-Info"
|
||||||
donation: "Spenden"
|
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Tipps"
|
tips: "Tipps"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut."
|
dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut."
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Einen Nutzer suchen"
|
search-user: "Einen Nutzer suchen"
|
||||||
you: "Du"
|
you: "Du"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Verbindung wird hergestellt"
|
connecting: "Verbindung wird hergestellt"
|
||||||
reconnecting: "Erneut verbinden"
|
reconnecting: "Erneut verbinden"
|
||||||
connected: "Verbindung hergestellt"
|
connected: "Verbindung hergestellt"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Wenn du deinen Twitter-Account mit deinem Misskey-Account verbindest, siehst du deine Twitter Account-Informationen auf deinem Profil und du kannst dich mit Twitter einloggen."
|
title: "サービス連携"
|
||||||
connected-to: "Du bist mit diesem Twitter-Account verbunden"
|
connect: "接続する"
|
||||||
detail: "Mehr..."
|
disconnect: "切断する"
|
||||||
reconnect: "Erneut verbinden"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "Mit Twitter verbinden"
|
|
||||||
disconnect: "Trennen"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Spende"
|
|
||||||
text: "Um Misskey am Laufen zu halten geben wir Geld für Domain, Server usw. aus. Wir bekommen dafür kein Geld und würden uns freuen, wenn du spenden würdest. Wenn du interessiert bist, dann kontaktiere {}. Danke für deine Unterstützung!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Fotostream"
|
title: "Fotostream"
|
||||||
no-photos: "Keine Fotos"
|
no-photos: "Keine Fotos"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Kreisförmige Icons"
|
circle-icons: "Kreisförmige Icons"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Zeige Antworten"
|
show-reply-target: "Zeige Antworten"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Karte anzeigen"
|
show-maps: "Karte anzeigen"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "Ton"
|
sound: "Ton"
|
||||||
enable-sounds: "Ton aktivieren"
|
enable-sounds: "Ton aktivieren"
|
||||||
enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
|
enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Taskmanager"
|
title: "Taskmanager"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "再接続する"
|
|
||||||
twitter-disconnect: "切断する"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "Neuste Version:"
|
latest-version: "Neuste Version:"
|
||||||
|
@ -110,9 +110,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 in reversi"
|
use-white-black-reversi-stones: "Use white-black stone 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"
|
||||||
|
suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area"
|
||||||
always-show-nsfw: "Always show NSFW contents"
|
always-show-nsfw: "Always show NSFW contents"
|
||||||
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
|
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
|
||||||
show-full-acct: "Do not omit the hostname from the username"
|
show-full-acct: "Do not omit the hostname from the username"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Polls"
|
polls: "Polls"
|
||||||
post-form: "Post form"
|
post-form: "Post form"
|
||||||
server: "Server info"
|
server: "Server info"
|
||||||
donation: "Request for donations"
|
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Tips"
|
tips: "Tips"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
dev: "Failed to create the application. Please try again."
|
dev: "Failed to create the application. Please try again."
|
||||||
ai-chan-kawaii: "Ai-chan kawaii!"
|
ai-chan-kawaii: "Ai-chan kawaii!"
|
||||||
|
you: "You"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Would you allow <i>{name}</i> to access your account?"
|
share-access: "Would you allow <i>{name}</i> to access your account?"
|
||||||
permission-ask: "This application requires the following permissions:"
|
permission-ask: "This application requires the following permissions:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "Hide"
|
hide: "Hide"
|
||||||
show: "See more"
|
show: "See more"
|
||||||
|
chars: "{count} chars"
|
||||||
|
files: "{count} files"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Find a user"
|
search-user: "Find a user"
|
||||||
you: "You"
|
you: "You"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Connecting"
|
connecting: "Connecting"
|
||||||
reconnecting: "Reconnecting"
|
reconnecting: "Reconnecting"
|
||||||
connected: "Connected"
|
connected: "Connected"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Once you connect your Twitter account to your Misskey account, you will be able to see information about your Twitter account on your profile, and you will be able to sign-in using Twitter."
|
title: "Service cooperation"
|
||||||
connected-to: "You are connected to this Twitter account"
|
connect: "Connect"
|
||||||
detail: "Details..."
|
|
||||||
reconnect: "Reconnect"
|
|
||||||
connect: "Link your Twitter account"
|
|
||||||
disconnect: "Disconnect"
|
disconnect: "Disconnect"
|
||||||
|
connected-to: "You are connected to next account"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub."
|
description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub."
|
||||||
connected-to: "You are connected to this GitHub account"
|
connected-to: "You are connected to this GitHub account"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "Account"
|
account: "Account"
|
||||||
location: "Location"
|
location: "Location"
|
||||||
description: "About me"
|
description: "About me"
|
||||||
|
language: "Language"
|
||||||
birthday: "Birthday"
|
birthday: "Birthday"
|
||||||
avatar: "Icon"
|
avatar: "Icon"
|
||||||
banner: "Banner"
|
banner: "Banner"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "Today: "
|
today: "Today: "
|
||||||
this-month: "This month: "
|
this-month: "This month: "
|
||||||
this-year: "This year: "
|
this-year: "This year: "
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Request for donations"
|
|
||||||
text: "To keep Misskey up and running, there have to happen some expense for the domain name, the server and so on. Since our policy is not to display any advertisements, we count on your donations. If you're interested in helping, contact {}. Thank you for your contribution!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Photo stream"
|
title: "Photo stream"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "Mayu is so cute with its eyebrows."
|
tips-line23: "Mayu is so cute with its eyebrows."
|
||||||
tips-line24: "Misskey has been running since 2014."
|
tips-line24: "Misskey has been running since 2014."
|
||||||
tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open"
|
tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "Page not found"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Signed in as {}"
|
signed-in-as: "Signed in as {}"
|
||||||
following: "Following"
|
following: "Following"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Use circle icons"
|
circle-icons: "Use circle icons"
|
||||||
contrasted-acct: "Add contrast to username"
|
contrasted-acct: "Add contrast to username"
|
||||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||||
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
|
|
||||||
show-clock-on-header: "Show clock on upper-right"
|
show-clock-on-header: "Show clock on upper-right"
|
||||||
show-reply-target: "Display reply target"
|
show-reply-target: "Display reply target"
|
||||||
timeline: "Timeline"
|
timeline: "Timeline"
|
||||||
@ -776,6 +776,13 @@ desktop/views/components/settings.vue:
|
|||||||
deck-column-align: "Deck column alignment"
|
deck-column-align: "Deck column alignment"
|
||||||
deck-column-align-center: "Center"
|
deck-column-align-center: "Center"
|
||||||
deck-column-align-left: "Left"
|
deck-column-align-left: "Left"
|
||||||
|
deck-column-align-flexible: "Flexible"
|
||||||
|
deck-column-width: "Column width of the deck"
|
||||||
|
deck-column-width-narrow: "narrow"
|
||||||
|
deck-column-width-narrower: "somewhat narrow"
|
||||||
|
deck-column-width-normal: "Normal"
|
||||||
|
deck-column-width-wider: "somewhat wide"
|
||||||
|
deck-column-width-wide: "wide"
|
||||||
sound: "Sound"
|
sound: "Sound"
|
||||||
enable-sounds: "Enable sound"
|
enable-sounds: "Enable sound"
|
||||||
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "Enter the new password again"
|
enter-new-password-again: "Enter the new password again"
|
||||||
not-match: "The new passwords do not match"
|
not-match: "The new passwords do not match"
|
||||||
changed: "Password changed"
|
changed: "Password changed"
|
||||||
|
failed: "Failed to change password"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "This post is private"
|
private: "This post is private"
|
||||||
deleted: "This post has been deleted"
|
deleted: "This post has been deleted"
|
||||||
media-count: "{} media attached"
|
media-count: "{} media attached"
|
||||||
poll: "Poll"
|
poll: "Poll"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "Tags"
|
||||||
|
query: "Query (optional)"
|
||||||
|
add: "Add"
|
||||||
|
save: "Save"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Task Manager"
|
title: "Task Manager"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "Instance description"
|
instance-description: "Instance description"
|
||||||
host: "Host"
|
host: "Host"
|
||||||
banner-url: "Banner image URL"
|
banner-url: "Banner image URL"
|
||||||
|
error-image-url: "Error image URL"
|
||||||
languages: "Language of this instance"
|
languages: "Language of this instance"
|
||||||
languages-desc: "You can add more than one, separated by spaces."
|
languages-desc: "You can add more than one, separated by spaces."
|
||||||
maintainer-config: "Administrator information"
|
maintainer-config: "Administrator information"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "Requests"
|
network-requests: "Requests"
|
||||||
network-time: "Response time"
|
network-time: "Response time"
|
||||||
network-usage: "Traffic"
|
network-usage: "Traffic"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "Sort"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "Origin"
|
||||||
|
combined: "Local + Remote"
|
||||||
|
local: "Local"
|
||||||
|
remote: "Remote"
|
||||||
|
delete: "Delete"
|
||||||
|
deleted: "Deleted successfully"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "Operations"
|
operation: "Operations"
|
||||||
username-or-userid: "Username or user ID"
|
username-or-userid: "Username or user ID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
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"
|
||||||
twitter: "Twitter integration"
|
|
||||||
twitter-connect: "Connect to your Twitter account"
|
|
||||||
twitter-reconnect: "Reconnect"
|
|
||||||
twitter-disconnect: "Disconnect"
|
|
||||||
github: "GitHub Integration"
|
|
||||||
github-connect: "Connect to your GitHub account"
|
|
||||||
github-reconnect: "Reconnect"
|
|
||||||
github-disconnect: "Disconnect"
|
|
||||||
discord: "Discord Integration"
|
|
||||||
discord-connect: "Connect to your Discord account"
|
|
||||||
discord-reconnect: "Reconnect"
|
|
||||||
discord-disconnect: "Disconnect"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "Current version:"
|
version: "Current version:"
|
||||||
latest-version: "Latest version:"
|
latest-version: "Latest version:"
|
||||||
|
@ -110,9 +110,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: "Hacer el color de la piedra claro en Reversi"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "Cuenta verificada"
|
verified-user: "Cuenta verificada"
|
||||||
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Encuestas"
|
polls: "Encuestas"
|
||||||
post-form: "Formulario"
|
post-form: "Formulario"
|
||||||
server: "Información del servidor"
|
server: "Información del servidor"
|
||||||
donation: "Donaciones"
|
|
||||||
nav: "Navegación"
|
nav: "Navegación"
|
||||||
tips: "Consejos"
|
tips: "Consejos"
|
||||||
hashtags: "Etiquetas"
|
hashtags: "Etiquetas"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "La aplicación requiere los siguientes permisos:"
|
permission-ask: "La aplicación requiere los siguientes permisos:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Encuentra un usuario"
|
search-user: "Encuentra un usuario"
|
||||||
you: "Tu"
|
you: "Tu"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Conectando"
|
connecting: "Conectando"
|
||||||
reconnecting: "Reconectando"
|
reconnecting: "Reconectando"
|
||||||
connected: "Conectado"
|
connected: "Conectado"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Si comectas tu cuenta de Twitter con tu cuenta de Misskey podrás ver la información de tu cuemta de Twitter en tu perfil y además podrás entrar usando Twitter."
|
title: "サービス連携"
|
||||||
connected-to: "Estas comectado con las siguientes cuentas de Twitter"
|
connect: "接続する"
|
||||||
detail: "Detalles..."
|
disconnect: "切断する"
|
||||||
reconnect: "Conectar de nuevo"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "Conectate usando Twitter"
|
|
||||||
disconnect: "Desconectado"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "Hoy:"
|
today: "Hoy:"
|
||||||
this-month: "Este mes:"
|
this-month: "Este mes:"
|
||||||
this-year: "Este año:"
|
this-year: "Este año:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Donaciones"
|
|
||||||
text: "Para mantener Misskey funcionando tenemos que pagar por el dominio, los costos de hospedaje y otros costos. Como no recibimos dinero de publicidad, contamos con el apoyo de todos ustedes. Si estás interesado en ayudar, contacta a {}. ¡Muchas gracias por tu contribución!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Galería de fotos"
|
title: "Galería de fotos"
|
||||||
no-photos: "No hay fotos."
|
no-photos: "No hay fotos."
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "Mayu is tan bonito con sus cejas."
|
tips-line23: "Mayu is tan bonito con sus cejas."
|
||||||
tips-line24: "Misskey inició en 2014."
|
tips-line24: "Misskey inició en 2014."
|
||||||
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
|
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Autenticado como {}"
|
signed-in-as: "Autenticado como {}"
|
||||||
following: "Siguiendo"
|
following: "Siguiendo"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Usar iconos circulares"
|
circle-icons: "Usar iconos circulares"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "再接続する"
|
|
||||||
twitter-disconnect: "切断する"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
@ -47,11 +47,11 @@ common:
|
|||||||
seconds_ago: "Il y a {} seconde·s"
|
seconds_ago: "Il y a {} seconde·s"
|
||||||
minutes_ago: "Il y a {} min"
|
minutes_ago: "Il y a {} min"
|
||||||
hours_ago: "Il y a {} h"
|
hours_ago: "Il y a {} h"
|
||||||
days_ago: "Il y a {} jours"
|
days_ago: "Il y a {} j"
|
||||||
weeks_ago: "Il y a {} semaines·s"
|
weeks_ago: "Il y a {} semaines"
|
||||||
months_ago: "Il y a {} mois"
|
months_ago: "Il y a {} mois"
|
||||||
years_ago: "Il y a {} an·s"
|
years_ago: "Il y a {} an·s"
|
||||||
month-and-day: "{day}/{month}"
|
month-and-day: "{day}-{month}"
|
||||||
trash: "Corbeille"
|
trash: "Corbeille"
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
messaging: "Conversations"
|
messaging: "Conversations"
|
||||||
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "Votre jeton vient d’être généré, vous allez maintenant être déconnecté."
|
my-token-regenerated: "Votre jeton vient d’être généré, vous allez maintenant être déconnecté."
|
||||||
i-like-sushi: "Je préfère les sushis plutôt que le pudding"
|
i-like-sushi: "Je préfère les sushis plutôt que le pudding"
|
||||||
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||||
use-contrast-reversi-stones: "Icône avec contraste sur Reversi"
|
use-white-black-reversi-stones: "Jouer avec des pions noirs et blancs sur Reversi"
|
||||||
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"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "Toujours afficher les contenus sensibles"
|
always-show-nsfw: "Toujours afficher les contenus sensibles"
|
||||||
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
|
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
|
||||||
show-full-acct: "Afficher l’adresse complète de l’utilisateur"
|
show-full-acct: "Afficher l’adresse complète de l’utilisateur"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Sondages"
|
polls: "Sondages"
|
||||||
post-form: "Champs de publication"
|
post-form: "Champs de publication"
|
||||||
server: "Info sur le serveur"
|
server: "Info sur le serveur"
|
||||||
donation: "Dons"
|
|
||||||
nav: "Navigation"
|
nav: "Navigation"
|
||||||
tips: "Conseils"
|
tips: "Conseils"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
dev: "Échec lors de la création de l’application. Veuillez réessayer."
|
dev: "Échec lors de la création de l’application. Veuillez réessayer."
|
||||||
ai-chan-kawaii: "Ai-Chan est mignonne !"
|
ai-chan-kawaii: "Ai-Chan est mignonne !"
|
||||||
|
you: "Vous"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte ?"
|
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte ?"
|
||||||
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
permission-ask: "Cette application nécessite les autorisations suivantes :"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "Masquer"
|
hide: "Masquer"
|
||||||
show: "Voir plus"
|
show: "Voir plus"
|
||||||
|
chars: "{count} caractères"
|
||||||
|
files: "{count} fichiers"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Trouver un·e utilisateur·trice"
|
search-user: "Trouver un·e utilisateur·trice"
|
||||||
you: "Vous"
|
you: "Vous"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Connexion en cours"
|
connecting: "Connexion en cours"
|
||||||
reconnecting: "Reconnexion en cours"
|
reconnecting: "Reconnexion en cours"
|
||||||
connected: "Connecté"
|
connected: "Connecté"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
|
title: "Intégrations"
|
||||||
connected-to: "Vous êtes connecté à ce compte Twitter"
|
connect: "Connecter"
|
||||||
detail: "Détails…"
|
disconnect: "Déconnecter"
|
||||||
reconnect: "Reconnexion"
|
connected-to: "Vous êtes connectés aux services suivants"
|
||||||
connect: "Lier votre compte Twitter"
|
|
||||||
disconnect: "Déconnexion"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "Si vous liez votre compte GitHub à votre compte Misskey, vous verrez votre compte GitHub s’afficher sur votre profil, vous aurez également la possibilité de vous connecter à Misskey en utilisant ce dernier."
|
description: "Si vous liez votre compte GitHub à votre compte Misskey, vous verrez votre compte GitHub s’afficher sur votre profil, vous aurez également la possibilité de vous connecter à Misskey en utilisant ce dernier."
|
||||||
connected-to: "Vous êtes connecté à votre compte GitHub"
|
connected-to: "Vous êtes connecté à votre compte GitHub"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "Compte"
|
account: "Compte"
|
||||||
location: "Lieu"
|
location: "Lieu"
|
||||||
description: "À propos de moi"
|
description: "À propos de moi"
|
||||||
|
language: "Langue"
|
||||||
birthday: "Date de naissance"
|
birthday: "Date de naissance"
|
||||||
avatar: "Avatar"
|
avatar: "Avatar"
|
||||||
banner: "Bannière"
|
banner: "Bannière"
|
||||||
@ -476,14 +478,11 @@ common/views/widgets/broadcast.vue:
|
|||||||
next: "Suivant"
|
next: "Suivant"
|
||||||
common/views/widgets/calendar.vue:
|
common/views/widgets/calendar.vue:
|
||||||
year: "Année {}"
|
year: "Année {}"
|
||||||
month: "Mois {}"
|
month: "{},"
|
||||||
day: "{}"
|
day: "{}"
|
||||||
today: "Aujourd’hui :"
|
today: "Aujourd’hui :"
|
||||||
this-month: "Ce mois-ci :"
|
this-month: "Ce mois-ci :"
|
||||||
this-year: "Cette année :"
|
this-year: "Cette année :"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Faire un don"
|
|
||||||
text: "Les frais pour faire fonctionner Misskey sortent directement de notre poche. Nous ne recevons pas d'argent issu de la publicité, si vous pouvez nous faire des dons, on vous serait éternellement reconnaissants. Si vous êtes intéressé·es veuillez contacter {}. Merci pour votre contribution !"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Flux de photos"
|
title: "Flux de photos"
|
||||||
no-photos: "Pas de photo"
|
no-photos: "Pas de photo"
|
||||||
@ -516,7 +515,7 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
|
||||||
tips-line11: "Vous pouvez épingler des notes sur votre page en cliquant sur « … »"
|
tips-line11: "Vous pouvez épingler des notes sur votre page en cliquant sur « … »"
|
||||||
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
|
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
|
||||||
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
|
tips-line14: "Lorsque vous personnalisez la disposition de votre page d’accueil, vous pouvez effectuer un clique droit sur un widget pour changer son apparence."
|
||||||
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
|
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
|
||||||
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
|
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
|
||||||
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
|
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "Mayu est mignonne avec ses sourcils."
|
tips-line23: "Mayu est mignonne avec ses sourcils."
|
||||||
tips-line24: "Misskey est fonctionnel depuis 2014"
|
tips-line24: "Misskey est fonctionnel depuis 2014"
|
||||||
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
|
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "La page demandée est introuvable !"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Connecté·e en tant que {}"
|
signed-in-as: "Connecté·e en tant que {}"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
@ -552,7 +553,7 @@ desktop/views/components/activity.vue:
|
|||||||
title: "Activité"
|
title: "Activité"
|
||||||
toggle: "Afficher les vues"
|
toggle: "Afficher les vues"
|
||||||
desktop/views/components/calendar.vue:
|
desktop/views/components/calendar.vue:
|
||||||
title: "{month} / {year}"
|
title: "{month} - {year}"
|
||||||
prev: "Mois précédent"
|
prev: "Mois précédent"
|
||||||
next: "Mois suivant"
|
next: "Mois suivant"
|
||||||
go: "Cliquez pour naviguer"
|
go: "Cliquez pour naviguer"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
contrasted-acct: "Nom d’utilisateur contrasté"
|
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||||
post-form-on-timeline: "Afficher le formulaire en haut du fil"
|
post-form-on-timeline: "Afficher le formulaire en haut du fil"
|
||||||
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-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"
|
||||||
timeline: "Chronologie"
|
timeline: "Chronologie"
|
||||||
@ -776,6 +776,13 @@ desktop/views/components/settings.vue:
|
|||||||
deck-column-align: "Alignement des colonnes du Deck"
|
deck-column-align: "Alignement des colonnes du Deck"
|
||||||
deck-column-align-center: "Centrer"
|
deck-column-align-center: "Centrer"
|
||||||
deck-column-align-left: "À gauche"
|
deck-column-align-left: "À gauche"
|
||||||
|
deck-column-align-flexible: "Flexibles"
|
||||||
|
deck-column-width: "Largeur des colonnes du Deck"
|
||||||
|
deck-column-width-narrow: "Étroite"
|
||||||
|
deck-column-width-narrower: "Légèrement étroite"
|
||||||
|
deck-column-width-normal: "Normale"
|
||||||
|
deck-column-width-wider: "Légèrement large"
|
||||||
|
deck-column-width-wide: "Large"
|
||||||
sound: "Son"
|
sound: "Son"
|
||||||
enable-sounds: "Activer le son"
|
enable-sounds: "Activer le son"
|
||||||
enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur."
|
enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur."
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "Entrez à nouveau le nouveau mot de passe"
|
enter-new-password-again: "Entrez à nouveau le nouveau mot de passe"
|
||||||
not-match: "Les nouveaux mots de passe ne sont pas identiques"
|
not-match: "Les nouveaux mots de passe ne sont pas identiques"
|
||||||
changed: "Mot de passe modifié avec succès"
|
changed: "Mot de passe modifié avec succès"
|
||||||
|
failed: "Échec lors de la modification du mot de passe"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "cette publication est privée"
|
private: "cette publication est privée"
|
||||||
deleted: "cette publication a été supprimée"
|
deleted: "cette publication a été supprimée"
|
||||||
media-count: "{} médias attachés"
|
media-count: "{} médias attachés"
|
||||||
poll: "Sondage"
|
poll: "Sondage"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "Étiquettes"
|
||||||
|
query: "Requête (optionnelle)"
|
||||||
|
add: "Ajouter"
|
||||||
|
save: "Enregistrer"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Gestionnaire de tâches"
|
title: "Gestionnaire de tâches"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "Description de l’instance"
|
instance-description: "Description de l’instance"
|
||||||
host: "Hôte"
|
host: "Hôte"
|
||||||
banner-url: "Url de l’image de la bannière"
|
banner-url: "Url de l’image de la bannière"
|
||||||
|
error-image-url: "URL de l’image d’erreur"
|
||||||
languages: "Langue de l’instance"
|
languages: "Langue de l’instance"
|
||||||
languages-desc: "Vous pouvez en définir plus d’une, séparées par des espaces."
|
languages-desc: "Vous pouvez en définir plus d’une, séparées par des espaces."
|
||||||
maintainer-config: "Informations de l’administrateur"
|
maintainer-config: "Informations de l’administrateur"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "Requêtes"
|
network-requests: "Requêtes"
|
||||||
network-time: "Temps de réponse"
|
network-time: "Temps de réponse"
|
||||||
network-usage: "Traffic"
|
network-usage: "Traffic"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "Tri"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "Taille - Ascendant"
|
||||||
|
sizeDesc: "Taille - Volumineux en premier"
|
||||||
|
origin:
|
||||||
|
title: "Origine"
|
||||||
|
combined: "Locaux et distants combinés"
|
||||||
|
local: "Local"
|
||||||
|
remote: "Distant"
|
||||||
|
delete: "Supprimer"
|
||||||
|
deleted: "Supprimé"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "Actions"
|
operation: "Actions"
|
||||||
username-or-userid: "Nom d’utilisateur·rice ou ID utilisateur"
|
username-or-userid: "Nom d’utilisateur·rice ou ID utilisateur"
|
||||||
@ -1062,7 +1090,7 @@ admin/views/users.vue:
|
|||||||
createdAtAsc: "Date d’inscription (Ascendant)"
|
createdAtAsc: "Date d’inscription (Ascendant)"
|
||||||
createdAtDesc: "Date d’inscription (Descendant)"
|
createdAtDesc: "Date d’inscription (Descendant)"
|
||||||
updatedAtAsc: "Mis à jour récemment (Ascendant)"
|
updatedAtAsc: "Mis à jour récemment (Ascendant)"
|
||||||
updatedAtDesc: "更新日時が新しい順"
|
updatedAtDesc: "Mis à jour récemment (descendant)"
|
||||||
origin:
|
origin:
|
||||||
title: "Origine"
|
title: "Origine"
|
||||||
combined: "Locaux + distants"
|
combined: "Locaux + distants"
|
||||||
@ -1175,7 +1203,7 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
years-old: "{age} ans"
|
years-old: "{age} ans"
|
||||||
year: "/"
|
year: "/"
|
||||||
month: "/"
|
month: "/"
|
||||||
day: "/"
|
day: "-"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Publications"
|
default: "Publications"
|
||||||
with-replies: "Publications et réponses"
|
with-replies: "Publications et réponses"
|
||||||
@ -1335,7 +1363,7 @@ mobile/views/pages/welcome.vue:
|
|||||||
signup: "S'enregistrer"
|
signup: "S'enregistrer"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
dashboard: "Tableau de bord"
|
dashboard: "Tableau de bord"
|
||||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
widgets-hints: "Vous pouvez ajouter, supprimer et réaranger les widgets. Faites glisser « 三 » pour déplacer le widget. Appuyez sur « x » pour supprimer le widget. Certains widgets peuvent changer d’apparence en cliquant dessus."
|
||||||
add-widget: "Ajouter"
|
add-widget: "Ajouter"
|
||||||
customization-tips: "Conseils de personnalisation"
|
customization-tips: "Conseils de personnalisation"
|
||||||
mobile/views/pages/widgets/activity.vue:
|
mobile/views/pages/widgets/activity.vue:
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
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"
|
||||||
twitter: "Intégration à Twitter"
|
|
||||||
twitter-connect: "Se connecter à votre compte Twitter"
|
|
||||||
twitter-reconnect: "Reconnecter"
|
|
||||||
twitter-disconnect: "Déconnexion"
|
|
||||||
github: "Avec GitHub"
|
|
||||||
github-connect: "Se connecter à votre compte GitHub"
|
|
||||||
github-reconnect: "Reconnecter"
|
|
||||||
github-disconnect: "Déconnecter"
|
|
||||||
discord: "Intégration avec Discord"
|
|
||||||
discord-connect: "Connecter votre compte Discord"
|
|
||||||
discord-reconnect: "Reconnecter"
|
|
||||||
discord-disconnect: "Déconnecter"
|
|
||||||
update: "Mise à jour de Misskey"
|
update: "Mise à jour de Misskey"
|
||||||
version: "Version :"
|
version: "Version :"
|
||||||
latest-version: "Dernière version :"
|
latest-version: "Dernière version :"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "あなた"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "接続中"
|
connecting: "接続中"
|
||||||
reconnecting: "再接続中"
|
reconnecting: "再接続中"
|
||||||
connected: "接続完了"
|
connected: "接続完了"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connect: "接続する"
|
||||||
detail: "詳細..."
|
|
||||||
reconnect: "再接続する"
|
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
connected-to: "次のアカウントに接続されています"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "再接続する"
|
|
||||||
twitter-disconnect: "切断する"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
@ -118,9 +118,10 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -171,13 +172,13 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
|
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
|
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
@ -321,6 +322,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
|
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
@ -516,6 +519,14 @@ common/views/components/profile-editor.vue:
|
|||||||
email-verified: "メールアドレスが確認されました"
|
email-verified: "メールアドレスが確認されました"
|
||||||
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
|
|
||||||
|
common/views/components/user-list-editor.vue:
|
||||||
|
users: "ユーザー"
|
||||||
|
rename: "リスト名を変更"
|
||||||
|
delete: "リストを削除"
|
||||||
|
remove-user: "このリストから削除"
|
||||||
|
delete-are-you-sure: "リスト「$1」を削除しますか?"
|
||||||
|
deleted: "削除しました"
|
||||||
|
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "確認中"
|
fetching: "確認中"
|
||||||
no-broadcasts: "お知らせはありません"
|
no-broadcasts: "お知らせはありません"
|
||||||
@ -530,10 +541,6 @@ common/views/widgets/calendar.vue:
|
|||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
|
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -581,6 +588,9 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
|
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -858,7 +868,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -867,9 +876,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
|
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
@ -977,6 +993,7 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
|
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
@ -984,6 +1001,12 @@ desktop/views/components/sub-note-content.vue:
|
|||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
|
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
|
|
||||||
@ -1082,6 +1105,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1140,6 +1164,12 @@ admin/views/instance.vue:
|
|||||||
smtp-port: "SMTPポート"
|
smtp-port: "SMTPポート"
|
||||||
smtp-user: "SMTPユーザー"
|
smtp-user: "SMTPユーザー"
|
||||||
smtp-pass: "SMTPパスワード"
|
smtp-pass: "SMTPパスワード"
|
||||||
|
serviceworker-config: "ServiceWorker"
|
||||||
|
enable-serviceworker: "ServiceWorkerを有効にする"
|
||||||
|
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
|
||||||
|
vapid-publickey: "VAPID公開鍵"
|
||||||
|
vapid-privatekey: "VAPID秘密鍵"
|
||||||
|
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
|
||||||
|
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "チャート"
|
title: "チャート"
|
||||||
@ -1167,6 +1197,23 @@ admin/views/charts.vue:
|
|||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
|
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
|
@ -25,12 +25,12 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "さいなら"
|
close: "さいなら"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "もっとあらへんのか!"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入れてや"
|
||||||
got-it: "ほい"
|
got-it: "ほい"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "カスタマイズのヒント"
|
title: "カスタマイズのヒント"
|
||||||
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
|
paragraph: "<p>ホームのカスタマイズは、ウィジェットを増やしたりほかしたり、ドラッグ&ドロップして並び替えたりしていじれるで。</p><p>一部ウィジェットは<strong><strong>右</strong>クリック</strong>で表示もいじれるんや。</p><p>ほかしたいときはヘッダーの<strong>「ゴミ箱」</strong>にほうりこんでら。</p><p>「完了」押したらお終いやで。</p>"
|
||||||
gotit: "Got it!"
|
gotit: "Got it!"
|
||||||
notification:
|
notification:
|
||||||
file-uploaded: "ファイルがアップロードされたで"
|
file-uploaded: "ファイルがアップロードされたで"
|
||||||
@ -91,9 +91,9 @@ common:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "今から言うユーザー以外に見せんとってや"
|
specified-desc: "今から言うユーザー以外に見せんとってや"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
local-public: "公開 (ローカルのみ)"
|
local-public: "公開 (ローカルだけ)"
|
||||||
local-home: "ホーム (ローカルのみ)"
|
local-home: "ホーム (ローカルだけ)"
|
||||||
local-followers: "フォロワー (ローカルのみ)"
|
local-followers: "フォロワー (ローカルだけ)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "今なにしてん?"
|
a: "今なにしてん?"
|
||||||
b: "何かあったんか?"
|
b: "何かあったんか?"
|
||||||
@ -110,16 +110,17 @@ common:
|
|||||||
my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
|
my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
|
||||||
i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
|
i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "アメちゃん付きアカウント"
|
verified-user: "アメちゃん付きアカウント"
|
||||||
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!"
|
always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!"
|
||||||
always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん"
|
always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん"
|
||||||
show-full-acct: "ユーザー名のホストも出したる"
|
show-full-acct: "ユーザー名のホストも出したる"
|
||||||
show-via: "viaを表示する"
|
show-via: "viaを見せる"
|
||||||
reduce-motion: "UI、動き過ぎや、静かにしてや"
|
reduce-motion: "UI、動き過ぎや、静かにしてや"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OSにもとから入っとる絵文字使う"
|
||||||
do-not-use-in-production: '開発ビルドや。本番環境で使わんといて!知らんで!'
|
do-not-use-in-production: '開発ビルドや。本番環境で使わんといて!知らんで!'
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
@ -132,9 +133,9 @@ common:
|
|||||||
drawn: "おあいこ"
|
drawn: "おあいこ"
|
||||||
my-turn: "あんさんのターンや"
|
my-turn: "あんさんのターンや"
|
||||||
opponent-turn: "相手のターンや"
|
opponent-turn: "相手のターンや"
|
||||||
turn-of: "{name}のターンです"
|
turn-of: "{name}のターンや"
|
||||||
past-turn-of: "{name}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{name}の勝ち"
|
won: "{name}の勝ちやで!"
|
||||||
black: "黒"
|
black: "黒"
|
||||||
white: "白"
|
white: "白"
|
||||||
total: "合計"
|
total: "合計"
|
||||||
@ -158,14 +159,14 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
dev: "アプリの作成あかんかったわ。もっぺんやってみて。"
|
dev: "アプリの作成あかんかったわ。もっぺんやってみて。"
|
||||||
ai-chan-kawaii: "藍ちゃめっさべっぴんさんや"
|
ai-chan-kawaii: "藍ちゃめっさべっぴんさんや"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "あんたのアカウントに<i>{name}</i>がアクセスしようとしてるで?ええか?"
|
||||||
permission-ask: "このアプリは次の権限を要求してんで:"
|
permission-ask: "このアプリは次の権限を要求してんで:"
|
||||||
account-read: "アカウントの情報を見させてもらうで。"
|
account-read: "アカウントの情報を見させてもらうで。"
|
||||||
account-write: "アカウントの情報を操作させてもらうで。"
|
account-write: "アカウントの情報を操作させてもらうで。"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "もうええわ"
|
hide: "もうええわ"
|
||||||
show: "見たいやろ?"
|
show: "見たいやろ?"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あんさん"
|
you: "あんさん"
|
||||||
@ -353,7 +356,7 @@ common/views/components/emoji-picker.vue:
|
|||||||
custom-emoji: "カスタム絵文字"
|
custom-emoji: "カスタム絵文字"
|
||||||
people: "人"
|
people: "人"
|
||||||
animals-and-nature: "動物&自然"
|
animals-and-nature: "動物&自然"
|
||||||
food-and-drink: "食べ物&飲み物"
|
food-and-drink: "食いもん&飲みもん"
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
travel-and-places: "場所"
|
travel-and-places: "場所"
|
||||||
objects: "物"
|
objects: "物"
|
||||||
@ -400,27 +403,25 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "つないどるで"
|
connecting: "つないどるで"
|
||||||
reconnecting: "つなぎ直すで"
|
reconnecting: "つなぎ直すで"
|
||||||
connected: "つないだわ"
|
connected: "つないだわ"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "あんさんがつことるTwitterアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにTwitterアカウント情報が表示されるようになったり、Twitterをつこた便利なサインインが使えるようになったりすんで。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されとるで"
|
connect: "つなげる"
|
||||||
detail: "詳細..."
|
disconnect: "接続をほかす"
|
||||||
reconnect: "つなぎ直す"
|
connected-to: "このアカウントと繋がっとるで"
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "さいならする"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "あんたがつことるTwitterアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにTwitterアカウント情報が表示されるようになったり、Twitterを使うた便利なサインインが使えるようになったりすんで。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されとるで"
|
||||||
detail: "詳細..."
|
detail: "くわしく..."
|
||||||
reconnect: "再接続する"
|
reconnect: "つなぎ直す"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "接続をほかす"
|
||||||
common/views/components/discord-setting.vue:
|
common/views/components/discord-setting.vue:
|
||||||
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
description: "あんたがつことるDiscordアカウントをMisskeyアカウントに接続しとくと、あんさんのプロフィールにDiscordアカウント情報が表示されるようになったり、Discordを使うた便利なサインインが使えるようになったりすんで。"
|
||||||
connected-to: "次のDiscordアカウントに接続されています"
|
connected-to: "次のDiscordアカウントに接続されとるで"
|
||||||
detail: "詳細..."
|
detail: "くわしく..."
|
||||||
reconnect: "再接続する"
|
reconnect: "つなぎ直す"
|
||||||
connect: "Discordと接続する"
|
connect: "Discordと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "接続をほかす"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
waiting: "待っとる"
|
waiting: "待っとる"
|
||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
@ -432,26 +433,27 @@ common/views/components/visibility-chooser.vue:
|
|||||||
specified: "ダイレクト"
|
specified: "ダイレクト"
|
||||||
specified-desc: "今から言うユーザー以外に見せんとってや"
|
specified-desc: "今から言うユーザー以外に見せんとってや"
|
||||||
private: "非公開"
|
private: "非公開"
|
||||||
local-public: "公開 (ローカルのみ)"
|
local-public: "公開 (ローカルだけ)"
|
||||||
local-public-desc: "リモートへは公開しない"
|
local-public-desc: "リモートには見せへん"
|
||||||
local-home: "ホーム (ローカルのみ)"
|
local-home: "ホーム (ローカルだけ)"
|
||||||
local-followers: "フォロワー (ローカルのみ)"
|
local-followers: "フォロワー (ローカルだけ)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "流行は自分で作るんや"
|
empty: "流行は自分で作るんや"
|
||||||
common/views/components/language-settings.vue:
|
common/views/components/language-settings.vue:
|
||||||
title: "表示言語"
|
title: "表示言語"
|
||||||
pick-language: "言語を選択"
|
pick-language: "言語選んでや"
|
||||||
recommended: "推奨"
|
recommended: "これええで"
|
||||||
auto: "自動"
|
auto: "勝手にやる"
|
||||||
specify-language: "言語を指定"
|
specify-language: "言語選びや"
|
||||||
info: "変更はページの再度読み込み後に反映されます。"
|
info: "ページもっぺん読み込んだら反映したるで。"
|
||||||
common/views/components/profile-editor.vue:
|
common/views/components/profile-editor.vue:
|
||||||
title: "プロフィール"
|
title: "プロフィール"
|
||||||
name: "名前"
|
name: "名前"
|
||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -467,8 +469,8 @@ common/views/components/profile-editor.vue:
|
|||||||
upload-failed: "これアップロードでけへんわ"
|
upload-failed: "これアップロードでけへんわ"
|
||||||
email: "メール設定"
|
email: "メール設定"
|
||||||
email-address: "メールアドレス"
|
email-address: "メールアドレス"
|
||||||
email-verified: "メールアドレスが確認されました"
|
email-verified: "このメールアドレスOKや!"
|
||||||
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
email-not-verified: "メールアドレスが確認されとらん。メールボックスもっぺん見てくれへん?"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
fetching: "見てみるわ…"
|
fetching: "見てみるわ…"
|
||||||
no-broadcasts: "お知らせはあらへんで"
|
no-broadcasts: "お知らせはあらへんで"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かるんや。Misskeyは広告を掲載したりせんから、収入を皆様からの寄付に頼ってますねん。もし興味があるなら、{}までご連絡よろしゅう頼んます。ご協力おおきに。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はあらへんで"
|
no-photos: "写真はあらへんで"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "ウチのタコちゃんかわええやろ…今の突っ込むところや!"
|
tips-line23: "ウチのタコちゃんかわええやろ…今の突っ込むところや!"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始したんよ"
|
tips-line24: "Misskeyは2014年にサービスを開始したんよ"
|
||||||
tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで"
|
tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォローしとる"
|
following: "フォローしとる"
|
||||||
@ -694,7 +695,7 @@ desktop/views/components/post-form.vue:
|
|||||||
create-poll: "アンケートを作成"
|
create-poll: "アンケートを作成"
|
||||||
text-remain: "残り{}文字"
|
text-remain: "残り{}文字"
|
||||||
recent-tags: "最近のタグ"
|
recent-tags: "最近のタグ"
|
||||||
local-only-message: "この投稿はローカルにのみ公開されます"
|
local-only-message: "この投稿はローカルだけ公開されるで"
|
||||||
click-to-tagging: "クリックでタグ付け"
|
click-to-tagging: "クリックでタグ付け"
|
||||||
visibility: "公開範囲"
|
visibility: "公開範囲"
|
||||||
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
|
||||||
@ -744,7 +745,7 @@ desktop/views/components/settings.vue:
|
|||||||
default-note-visibility: "もとからの公開範囲"
|
default-note-visibility: "もとからの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
||||||
web-search-engine: "ウェブ検索エンジン"
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
web-search-engine-desc: "例: https://www.google.com/?#q?{{query}}"
|
||||||
auto-popout: "ウィンドウの自動ポップアウト"
|
auto-popout: "ウィンドウの自動ポップアウト"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
|
||||||
advanced: "もっと設定"
|
advanced: "もっと設定"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "アイコンもタコ焼きも丸いやんな?"
|
circle-icons: "アイコンもタコ焼きも丸いやんな?"
|
||||||
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
|
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
|
||||||
post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?"
|
post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示すんで"
|
|
||||||
show-clock-on-header: "右上をカリヨン広場にする(時計表示)"
|
show-clock-on-header: "右上をカリヨン広場にする(時計表示)"
|
||||||
show-reply-target: "どこにリプライするんや見せて"
|
show-reply-target: "どこにリプライするんや見せて"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -772,10 +772,17 @@ desktop/views/components/settings.vue:
|
|||||||
show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや"
|
show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや"
|
||||||
show-local-renotes: "ローカル投稿のRenoteも見たいんや"
|
show-local-renotes: "ローカル投稿のRenoteも見たいんや"
|
||||||
show-maps: "地図勝手にバァーって開いてくれ"
|
show-maps: "地図勝手にバァーって開いてくれ"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿も表示しっぱなしにする"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "真ん中"
|
deck-column-align-center: "真ん中"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンド鳴らす"
|
enable-sounds: "サウンド鳴らす"
|
||||||
enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。"
|
enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。"
|
||||||
@ -843,7 +850,7 @@ common/views/components/api-settings.vue:
|
|||||||
title: 'APIコンソール'
|
title: 'APIコンソール'
|
||||||
endpoint: 'エンドポイント'
|
endpoint: 'エンドポイント'
|
||||||
parameter: 'パラメータ'
|
parameter: 'パラメータ'
|
||||||
credential-info: "「i」パラメータは自動で付与されます。"
|
credential-info: "「i」パラメータは勝手に付くで。"
|
||||||
send: '送る'
|
send: '送る'
|
||||||
sending: '応答待っとる'
|
sending: '応答待っとる'
|
||||||
response: 'こんなん返ってきたわ'
|
response: 'こんなん返ってきたわ'
|
||||||
@ -860,8 +867,8 @@ common/views/components/mute-and-block.vue:
|
|||||||
no-muted-users: "ミュートしとるユーザーはおらんで"
|
no-muted-users: "ミュートしとるユーザーはおらんで"
|
||||||
no-blocked-users: "ブロックしとるユーザーはおらんで"
|
no-blocked-users: "ブロックしとるユーザーはおらんで"
|
||||||
word-mute: "ワードミュート"
|
word-mute: "ワードミュート"
|
||||||
muted-words: "ミュートされたキーワード"
|
muted-words: "ミュートしとるキーワード"
|
||||||
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
muted-words-description: "スペースで区切るとAND指定で、改行で区切るとOR指定や"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワード変える"
|
reset: "パスワード変える"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もっぺん入れてや"
|
enter-new-password-again: "もっぺん入れてや"
|
||||||
not-match: "パスワードがおうとらん"
|
not-match: "パスワードがおうとらん"
|
||||||
changed: "パスワード変えたわ"
|
changed: "パスワード変えたわ"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は見せられへんわ"
|
private: "この投稿は見せられへんわ"
|
||||||
deleted: "この投稿なんか無くなってもうたわ"
|
deleted: "この投稿なんか無くなってもうたわ"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,56 +970,57 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できるで。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
maintainer-name: "管理者名"
|
maintainer-name: "管理者名"
|
||||||
maintainer-email: "管理者の連絡先"
|
maintainer-email: "管理者の連絡先"
|
||||||
drive-config: "ドライブの設定"
|
drive-config: "ドライブの設定"
|
||||||
cache-remote-files: "リモートのファイルをキャッシュする"
|
cache-remote-files: "リモートのファイルをキャッシュする"
|
||||||
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
|
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをこっちで保管せずに直接リンク張るようになるで。サーバーのストレージは軽くやろうけど、プライバシー設定で直リンクを向こうにしとるユーザーはファイルが見れへんし、サムネイルが無いから通信量が増えたりするから、普通はオンにしといてな。"
|
||||||
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
|
||||||
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
|
||||||
mb: "メガバイト単位"
|
mb: "メガバイト単位"
|
||||||
recaptcha-config: "reCAPTCHAの設定"
|
recaptcha-config: "reCAPTCHAの設定"
|
||||||
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
|
recaptcha-info: "reCAPTCHAを有効にするにはreCAPTCHAトークンが要るで。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してな。"
|
||||||
enable-recaptcha: "reCAPTCHAを有効にする"
|
enable-recaptcha: "reCAPTCHAを有効にする"
|
||||||
recaptcha-site-key: "reCAPTCHA site key"
|
recaptcha-site-key: "reCAPTCHA site key"
|
||||||
recaptcha-secret-key: "reCAPTCHA secret key"
|
recaptcha-secret-key: "reCAPTCHA secret key"
|
||||||
twitter-integration-config: "Twitter連携の設定"
|
twitter-integration-config: "Twitter連携の設定"
|
||||||
twitter-integration-info: "コールバックURLは {url} に設定します。"
|
twitter-integration-info: "コールバックURLは {url} に設定してや。"
|
||||||
enable-twitter-integration: "Twitter連携を有効にする"
|
enable-twitter-integration: "Twitter連携を有効にする"
|
||||||
twitter-integration-consumer-key: "Consumer key"
|
twitter-integration-consumer-key: "Consumer key"
|
||||||
twitter-integration-consumer-secret: "Consumer secret"
|
twitter-integration-consumer-secret: "Consumer secret"
|
||||||
github-integration-config: "GitHub連携の設定"
|
github-integration-config: "GitHub連携の設定"
|
||||||
github-integration-info: "コールバックURLは {url} に設定します。"
|
github-integration-info: "コールバックURLは {url} に設定してや。"
|
||||||
enable-github-integration: "GitHub連携を有効にする"
|
enable-github-integration: "GitHub連携を使えるようにする"
|
||||||
github-integration-client-id: "Client ID"
|
github-integration-client-id: "Client ID"
|
||||||
github-integration-client-secret: "Client Secret"
|
github-integration-client-secret: "Client Secret"
|
||||||
discord-integration-config: "Discord連携の設定"
|
discord-integration-config: "Discord連携の設定"
|
||||||
discord-integration-info: "コールバックURLは {url} に設定します。"
|
discord-integration-info: "コールバックURLは {url} に設定してや。"
|
||||||
enable-discord-integration: "Discord連携を有効にする"
|
enable-discord-integration: "Discord連携を有効にする"
|
||||||
discord-integration-client-id: "Client ID"
|
discord-integration-client-id: "Client ID"
|
||||||
discord-integration-client-secret: "Client Secret"
|
discord-integration-client-secret: "Client Secret"
|
||||||
proxy-account-config: "プロキシアカウントの設定"
|
proxy-account-config: "プロキシアカウントの設定"
|
||||||
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
proxy-account-info: "プロキシアカウントは、代わりにフォローしてくれるアカウントや。例えば、551に豚まんが無いときやったり、ユーザーがリモートユーザーをアカウントに入れたとき、リストに入れられたユーザーが誰からもフォローされてないと寂しいやん。寂しいし、アクティビティも配達されへんから、プロキシアカウントがフォローしてくれるで。ええやつやん…"
|
||||||
proxy-account-username: "プロキシアカウントのユーザー名"
|
proxy-account-username: "プロキシアカウントのユーザー名"
|
||||||
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
|
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してや"
|
||||||
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
|
proxy-account-warn: "アカウント作るんはあんたがやってや。あんたのおかんもMisskeyもやってくれへんで。"
|
||||||
max-note-text-length: "投稿の最大文字数"
|
max-note-text-length: "投稿の最大文字数"
|
||||||
disable-registration: "ユーザー登録の受付を停止する"
|
disable-registration: "ユーザー登録の受付を止める"
|
||||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
disable-local-timeline: "ローカルタイムラインを使えんようにする"
|
||||||
invite: "招待"
|
invite: "来てや"
|
||||||
save: "保存"
|
save: "保存"
|
||||||
saved: "保存しました"
|
saved: "保存したで!"
|
||||||
user-recommendation-config: "おすすめユーザー"
|
user-recommendation-config: "このユーザーええで"
|
||||||
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを使えるようにする"
|
||||||
external-user-recommendation-engine: "エンジン"
|
external-user-recommendation-engine: "エンジン"
|
||||||
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
external-user-recommendation-timeout: "タイムアウト"
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
email-config: "メールサーバーの設定"
|
email-config: "メールサーバーの設定"
|
||||||
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
|
email-config-info: "メールアドレス確認やパスワードリセットの際に使うで。"
|
||||||
enable-email: "メール配信を有効にする"
|
enable-email: "メール配信を有効にする"
|
||||||
email: "メールアドレス"
|
email: "メールアドレス"
|
||||||
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
|
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
|
||||||
@ -1040,13 +1054,27 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
user-not-found: "ユーザーが見つかりません"
|
user-not-found: "ユーザーが見つからへん!"
|
||||||
lookup: "照会"
|
lookup: "照会"
|
||||||
reset-password: "パスワードをリセット"
|
reset-password: "パスワードをリセット"
|
||||||
password-updated: "パスワードは現在「{password}」です"
|
password-updated: "パスワードは現在「{password} 」やで"
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
suspended: "凍結しました"
|
suspended: "凍結しました"
|
||||||
unsuspend: "凍結の解除"
|
unsuspend: "凍結の解除"
|
||||||
@ -1163,8 +1191,8 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
muted: "ミュートしとるで"
|
muted: "ミュートしとるで"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
block: "ブロックする"
|
block: "ブロックする"
|
||||||
unblock: "ブロック解除"
|
unblock: "ブロックやめたる"
|
||||||
block-confirm: "このユーザーをブロックしますか?"
|
block-confirm: "このユーザーをブロックしてええか?"
|
||||||
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:
|
||||||
@ -1240,11 +1268,11 @@ mobile/views/components/media-video.vue:
|
|||||||
sensitive: "ちょっと見せられへんわ"
|
sensitive: "ちょっと見せられへんわ"
|
||||||
click-to-show: "押してみ、見せたるわ"
|
click-to-show: "押してみ、見せたるわ"
|
||||||
common/views/components/follow-button.vue:
|
common/views/components/follow-button.vue:
|
||||||
following: "フォロー中"
|
following: "フォローしとる"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許してくれるん待っとる"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "今フォロー処理やっとる‥"
|
||||||
follow-request: "フォロー申請"
|
follow-request: "フォローさせてや!言うてみる"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "おもろそうやな"
|
title: "おもろそうやな"
|
||||||
empty: "おすすめのユーザーはおらん。"
|
empty: "おすすめのユーザーはおらん。"
|
||||||
@ -1330,7 +1358,7 @@ mobile/views/pages/home.vue:
|
|||||||
mentions: "あんた宛て"
|
mentions: "あんた宛て"
|
||||||
messages: "メッセージ"
|
messages: "メッセージ"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿はあらへんかった。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
signup: "新規登録"
|
signup: "新規登録"
|
||||||
mobile/views/pages/widgets.vue:
|
mobile/views/pages/widgets.vue:
|
||||||
@ -1357,7 +1385,7 @@ mobile/views/pages/games/reversi.vue:
|
|||||||
reversi: "リバーシ"
|
reversi: "リバーシ"
|
||||||
mobile/views/pages/search.vue:
|
mobile/views/pages/search.vue:
|
||||||
search: "探す"
|
search: "探す"
|
||||||
not-found: "「{q}」に関する投稿は見つかりませんでした。"
|
not-found: "ワイは「{q}」なんて投稿知らんわ、無いんちゃう?知らんけど。"
|
||||||
mobile/views/pages/selectdrive.vue:
|
mobile/views/pages/selectdrive.vue:
|
||||||
select-file: "ファイル選んでや"
|
select-file: "ファイル選んでや"
|
||||||
mobile/views/pages/settings.vue:
|
mobile/views/pages/settings.vue:
|
||||||
@ -1385,22 +1413,10 @@ mobile/views/pages/settings.vue:
|
|||||||
default-note-visibility: "もとからの公開範囲"
|
default-note-visibility: "もとからの公開範囲"
|
||||||
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
remember-note-visibility: "投稿の公開範囲おぼえといて"
|
||||||
web-search-engine: "ウェブ検索エンジン"
|
web-search-engine: "ウェブ検索エンジン"
|
||||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
web-search-engine-desc: "例: https://www.google.com/?#q?{{query}}"
|
||||||
disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ"
|
disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ"
|
||||||
load-raw-images: "添付された画像もべっぴんさんのままにしといてな"
|
load-raw-images: "添付された画像もべっぴんさんのままにしといてな"
|
||||||
load-remote-media: "東京とか、リモートサーバーのメディアも見せてや"
|
load-remote-media: "東京とか、リモートサーバーのメディアも見せてや"
|
||||||
twitter: "鳥さんとも連携や!"
|
|
||||||
twitter-connect: "鳥さん邪魔すんで"
|
|
||||||
twitter-reconnect: "もっぺん繋ぎ直すで"
|
|
||||||
twitter-disconnect: "邪魔するんやったら帰って"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "あんたのMisskeyいつのや?"
|
update: "あんたのMisskeyいつのや?"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "いっちゃん新しいやつ:"
|
latest-version: "いっちゃん新しいやつ:"
|
||||||
@ -1426,13 +1442,13 @@ mobile/views/pages/user.vue:
|
|||||||
media: "メディア"
|
media: "メディア"
|
||||||
is-suspended: "このユーザーはあかんわ。凍結されとる。"
|
is-suspended: "このユーザーはあかんわ。凍結されとる。"
|
||||||
mute: "ミュート"
|
mute: "ミュート"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュートやめたる"
|
||||||
block: "ブロック"
|
block: "ブロック"
|
||||||
unblock: "ブロックやめたる"
|
unblock: "ブロックやめたる"
|
||||||
years-old: "{age}歳"
|
years-old: "{age}歳"
|
||||||
push-to-list: "リストに追加"
|
push-to-list: "リストに入れたる"
|
||||||
select-list: "リストを選択してください"
|
select-list: "リスト選んでや"
|
||||||
list-pushed: "{user}を{list}に追加しました"
|
list-pushed: "{user}を{list}に追加したで"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "最近儲かりまっか?"
|
recent-notes: "最近儲かりまっか?"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
@ -1457,21 +1473,21 @@ deck:
|
|||||||
hybrid: "ソーシャル"
|
hybrid: "ソーシャル"
|
||||||
hashtag: "ハッシュタグ"
|
hashtag: "ハッシュタグ"
|
||||||
global: "グローバル"
|
global: "グローバル"
|
||||||
mentions: "あなた宛て"
|
mentions: "あんた宛て"
|
||||||
direct: "ダイレクト投稿"
|
direct: "ダイレクト投稿"
|
||||||
notifications: "通知"
|
notifications: "通知"
|
||||||
list: "リスト"
|
list: "リスト"
|
||||||
swap-left: "左に移動"
|
swap-left: "左に移動や!"
|
||||||
swap-right: "右に移動"
|
swap-right: "右に移動や!"
|
||||||
swap-up: "上に移動"
|
swap-up: "上に移動や!"
|
||||||
swap-down: "下に移動"
|
swap-down: "下に移動や!"
|
||||||
remove: "カラムを削除"
|
remove: "カラムにさいなら"
|
||||||
add-column: "カラムを追加"
|
add-column: "カラム増やす"
|
||||||
rename: "名前を変更"
|
rename: "名前を変えるで"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "左に重ねんで!"
|
||||||
pop-right: "右に出す"
|
pop-right: "右に出すで!"
|
||||||
deck/deck.tl-column.vue:
|
deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "メディア投稿だけや"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "メディアビュー"
|
||||||
edit: "オプション"
|
edit: "オプション"
|
||||||
deck/deck.user-column.vue:
|
deck/deck.user-column.vue:
|
||||||
@ -1481,8 +1497,8 @@ deck/deck.user-column.vue:
|
|||||||
images: "画像"
|
images: "画像"
|
||||||
activity: "アクティビティ"
|
activity: "アクティビティ"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
pinned-notes: "ピン留めされた投稿"
|
pinned-notes: "ピン留めしはった投稿"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに入れたる"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다."
|
my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다."
|
||||||
i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요"
|
i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요"
|
||||||
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||||
use-contrast-reversi-stones: "리버시 아이콘의 대비를 높이기"
|
use-white-black-reversi-stones: "리버시에 흑백 돌을 사용"
|
||||||
verified-user: "공식 계정"
|
verified-user: "공식 계정"
|
||||||
disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
|
disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
|
||||||
|
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
|
||||||
always-show-nsfw: "항상 열람주의 미디어를 표시"
|
always-show-nsfw: "항상 열람주의 미디어를 표시"
|
||||||
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
|
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
|
||||||
show-full-acct: "사용자명의 호스트를 표시하지 않기"
|
show-full-acct: "사용자명의 호스트를 표시하지 않기"
|
||||||
@ -124,7 +125,7 @@ common:
|
|||||||
is-remote-user: "이 유저 정보는 복사본입니다."
|
is-remote-user: "이 유저 정보는 복사본입니다."
|
||||||
is-remote-post: "이 글 정보는 복사본입니다."
|
is-remote-post: "이 글 정보는 복사본입니다."
|
||||||
view-on-remote: "정확한 정보 보기"
|
view-on-remote: "정확한 정보 보기"
|
||||||
renoted-by: "{user}이(가) Renote"
|
renoted-by: "{user}이(가) 리노트"
|
||||||
error:
|
error:
|
||||||
title: '오류가 발생했습니다'
|
title: '오류가 발생했습니다'
|
||||||
retry: '다시 시도'
|
retry: '다시 시도'
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "투표"
|
polls: "투표"
|
||||||
post-form: "게시 양식"
|
post-form: "게시 양식"
|
||||||
server: "서버 정보"
|
server: "서버 정보"
|
||||||
donation: "기부 요청"
|
|
||||||
nav: "내비게이션"
|
nav: "내비게이션"
|
||||||
tips: "팁"
|
tips: "팁"
|
||||||
hashtags: "해시태그"
|
hashtags: "해시태그"
|
||||||
dev: "앱을 만드는 데 실패했습니다. 다시 시도하시기 바랍니다."
|
dev: "앱을 만드는 데 실패했습니다. 다시 시도하시기 바랍니다."
|
||||||
ai-chan-kawaii: "아이쨩 귀여워"
|
ai-chan-kawaii: "아이쨩 귀여워"
|
||||||
|
you: "당신"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>가 당신의 계정에 엑세스하도록 허용하시겠습니까?"
|
share-access: "<i>{name}</i>가 당신의 계정에 엑세스하도록 허용하시겠습니까?"
|
||||||
permission-ask: "이 앱은 다음의 권한을 요청합니다:"
|
permission-ask: "이 앱은 다음의 권한을 요청합니다:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "숨기기"
|
hide: "숨기기"
|
||||||
show: "더 보기"
|
show: "더 보기"
|
||||||
|
chars: "{count}문자"
|
||||||
|
files: "{count}파일"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "사용자 찾기"
|
search-user: "사용자 찾기"
|
||||||
you: "당신"
|
you: "당신"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "연결중"
|
connecting: "연결중"
|
||||||
reconnecting: "다시 연결 중"
|
reconnecting: "다시 연결 중"
|
||||||
connected: "연결 완료"
|
connected: "연결 완료"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "사용중이신 Twitter 계정을 Misskey 계정에 연결하면 프로필에 Twitter 정보가 표시되고, Twitter를 사용하여 편리하게 로그인할 수 있습니다."
|
title: "서비스 연계"
|
||||||
connected-to: "다음 Twitter 계정에 연결되어 있습니다"
|
connect: "접속"
|
||||||
detail: "자세히..."
|
|
||||||
reconnect: "다시 연결"
|
|
||||||
connect: "Twitter와 연결하기"
|
|
||||||
disconnect: "연결 끊기"
|
disconnect: "연결 끊기"
|
||||||
|
connected-to: "다음 계정에 연결되어 있습니다"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "사용중이신 Github 계정을 Misskey 계정에 연결하면 프로필에 Github 정보가 표시되고, Github를 사용하여 편리하게 로그인할 수 있습니다."
|
description: "사용중이신 Github 계정을 Misskey 계정에 연결하면 프로필에 Github 정보가 표시되고, Github를 사용하여 편리하게 로그인할 수 있습니다."
|
||||||
connected-to: "다음 Github 계정에 연결되어 있습니다"
|
connected-to: "다음 Github 계정에 연결되어 있습니다"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "계정"
|
account: "계정"
|
||||||
location: "장소"
|
location: "장소"
|
||||||
description: "자기소개"
|
description: "자기소개"
|
||||||
|
language: "언어"
|
||||||
birthday: "생일"
|
birthday: "생일"
|
||||||
avatar: "아바타"
|
avatar: "아바타"
|
||||||
banner: "배너"
|
banner: "배너"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "오늘:"
|
today: "오늘:"
|
||||||
this-month: "이번 달:"
|
this-month: "이번 달:"
|
||||||
this-year: "올해:"
|
this-year: "올해:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "기부 요청"
|
|
||||||
text: "Misskey의 운영에는 도메인, 서버 등의 비용이 들어갑니다. Misskey는 광고를 게시하거나 하지 않으므로 수입을 여러분의 기부금에 의존하고 있습니다. 혹시 관심있으시다면 {}로 연락해주시기 바랍니다. 협력해주셔서 감사합니다."
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "포토 스트림"
|
title: "포토 스트림"
|
||||||
no-photos: "사진이 없습니다"
|
no-photos: "사진이 없습니다"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "마유 귀여워요 마유"
|
tips-line23: "마유 귀여워요 마유"
|
||||||
tips-line24: "Misskey는 2014년에 서비스를 시작했습니다"
|
tips-line24: "Misskey는 2014년에 서비스를 시작했습니다"
|
||||||
tips-line25: "대응하는 브라우저인 경우 Misskey를 열어놓지 않아도 알림을 받을 수 있습니다"
|
tips-line25: "대응하는 브라우저인 경우 Misskey를 열어놓지 않아도 알림을 받을 수 있습니다"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "페이지를 찾을 수 없습니다"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}으로 로그인"
|
signed-in-as: "{}으로 로그인"
|
||||||
following: "팔로우 중"
|
following: "팔로우 중"
|
||||||
@ -657,11 +658,11 @@ desktop/views/components/note-detail.vue:
|
|||||||
private: "이 글은 비공개입니다"
|
private: "이 글은 비공개입니다"
|
||||||
deleted: "이 글은 삭제되었습니다"
|
deleted: "이 글은 삭제되었습니다"
|
||||||
location: "위치 정보"
|
location: "위치 정보"
|
||||||
renote: "Renote"
|
renote: "리노트"
|
||||||
add-reaction: "리액션 추가"
|
add-reaction: "리액션 추가"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reply: "답글 달기"
|
reply: "답글 달기"
|
||||||
renote: "Renote"
|
renote: "리노트"
|
||||||
add-reaction: "리액션 추가"
|
add-reaction: "리액션 추가"
|
||||||
detail: "상세"
|
detail: "상세"
|
||||||
private: "이 글은 비공개입니다"
|
private: "이 글은 비공개입니다"
|
||||||
@ -679,13 +680,13 @@ desktop/views/components/post-form.vue:
|
|||||||
quote-placeholder: "이 글을 인용..."
|
quote-placeholder: "이 글을 인용..."
|
||||||
submit: "글쓰기"
|
submit: "글쓰기"
|
||||||
reply: "답글 달기"
|
reply: "답글 달기"
|
||||||
renote: "Renote"
|
renote: "리노트"
|
||||||
posted: "게시하였습니다!"
|
posted: "게시하였습니다!"
|
||||||
replied: "답글을 달았습니다!"
|
replied: "답글을 달았습니다!"
|
||||||
reposted: "Renote 하였습니다!"
|
reposted: "리노트 하였습니다!"
|
||||||
note-failed: "게시에 실패하였습니다"
|
note-failed: "게시에 실패하였습니다"
|
||||||
reply-failed: "답글을 달지 못했습니다"
|
reply-failed: "답글을 달지 못했습니다"
|
||||||
renote-failed: "Renote에 실패하였습니다"
|
renote-failed: "리노트에 실패하였습니다"
|
||||||
posting: "게시중"
|
posting: "게시중"
|
||||||
attach-media-from-local: "PC에서 미디어 첨부"
|
attach-media-from-local: "PC에서 미디어 첨부"
|
||||||
attach-media-from-drive: "드라이브에서 미디어 첨부"
|
attach-media-from-drive: "드라이브에서 미디어 첨부"
|
||||||
@ -711,13 +712,13 @@ desktop/views/components/progress-dialog.vue:
|
|||||||
desktop/views/components/renote-form.vue:
|
desktop/views/components/renote-form.vue:
|
||||||
quote: "인용하기..."
|
quote: "인용하기..."
|
||||||
cancel: "취소"
|
cancel: "취소"
|
||||||
renote: "Renote"
|
renote: "리노트"
|
||||||
renote-home: "Renote (Home)"
|
renote-home: "리노트 (홈)"
|
||||||
reposting: "작업중입니다..."
|
reposting: "작업중입니다..."
|
||||||
success: "Renote 성공!"
|
success: "리노트 하였습니다!"
|
||||||
failure: "Renote에 실패하였습니다"
|
failure: "리노트에 실패하였습니다"
|
||||||
desktop/views/components/renote-form-window.vue:
|
desktop/views/components/renote-form-window.vue:
|
||||||
title: "이 게시물을 Renote 하시겠습니까?"
|
title: "이 글을 리노트하시겠습니까?"
|
||||||
desktop/views/pages/user-following-or-followers.vue:
|
desktop/views/pages/user-following-or-followers.vue:
|
||||||
following: "{user}의 팔로잉"
|
following: "{user}의 팔로잉"
|
||||||
followers: "{user}의 팔로워"
|
followers: "{user}의 팔로워"
|
||||||
@ -764,18 +765,24 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "원형 아이콘 사용"
|
circle-icons: "원형 아이콘 사용"
|
||||||
contrasted-acct: "사용자명에 대비 추가"
|
contrasted-acct: "사용자명에 대비 추가"
|
||||||
post-form-on-timeline: "타임라인 상단에 글 작성란을 표시"
|
post-form-on-timeline: "타임라인 상단에 글 작성란을 표시"
|
||||||
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
|
|
||||||
show-clock-on-header: "오른쪽 상단에 시계 표시"
|
show-clock-on-header: "오른쪽 상단에 시계 표시"
|
||||||
show-reply-target: "답글 대상 표시"
|
show-reply-target: "답글 대상 표시"
|
||||||
timeline: "타임라인"
|
timeline: "타임라인"
|
||||||
show-my-renotes: "내 Renote를 타임라인에 보이기"
|
show-my-renotes: "내 리노트를 타임라인에 보이기"
|
||||||
show-renoted-my-notes: "내 글이 Renote될 경우 타임라인에 보이기"
|
show-renoted-my-notes: "내 글이 리노트될 경우 타임라인에 보이기"
|
||||||
show-local-renotes: "로컬 글의 Renote를 타임라인에 보이기"
|
show-local-renotes: "로컬 글의 리노트를 타임라인에 보이기"
|
||||||
show-maps: "지도 자동 표시"
|
show-maps: "지도 자동 표시"
|
||||||
remain-deleted-note: "삭제된 글을 계속 표시"
|
remain-deleted-note: "삭제된 글을 계속 표시"
|
||||||
deck-column-align: "덱의 칼럼 위치"
|
deck-column-align: "덱의 칼럼 위치"
|
||||||
deck-column-align-center: "가운데"
|
deck-column-align-center: "가운데"
|
||||||
deck-column-align-left: "왼쪽"
|
deck-column-align-left: "왼쪽"
|
||||||
|
deck-column-align-flexible: "플렉서블"
|
||||||
|
deck-column-width: "덱의 칼럼 폭"
|
||||||
|
deck-column-width-narrow: "좁음"
|
||||||
|
deck-column-width-narrower: "조금 좁음"
|
||||||
|
deck-column-width-normal: "보통"
|
||||||
|
deck-column-width-wider: "조금 넓음"
|
||||||
|
deck-column-width-wide: "넓음"
|
||||||
sound: "소리"
|
sound: "소리"
|
||||||
enable-sounds: "소리 사용"
|
enable-sounds: "소리 사용"
|
||||||
enable-sounds-desc: "글이나 메시지를 송수신하였을 때 소리를 재생합니다. 이 설정은 브라우저에 저장됩니다."
|
enable-sounds-desc: "글이나 메시지를 송수신하였을 때 소리를 재생합니다. 이 설정은 브라우저에 저장됩니다."
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "다시 한 번 새 비밀번호를 입력하여 주십시오"
|
enter-new-password-again: "다시 한 번 새 비밀번호를 입력하여 주십시오"
|
||||||
not-match: "새 비밀번호가 일치하지 않습니다"
|
not-match: "새 비밀번호가 일치하지 않습니다"
|
||||||
changed: "비밀번호를 변경하였습니다"
|
changed: "비밀번호를 변경하였습니다"
|
||||||
|
failed: "비밀번호 변경을 실패하였습니다."
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "이 글은 비공개입니다"
|
private: "이 글은 비공개입니다"
|
||||||
deleted: "이 글은 삭제되었습니다"
|
deleted: "이 글은 삭제되었습니다"
|
||||||
media-count: "{}개의 미디어"
|
media-count: "{}개의 미디어"
|
||||||
poll: "투표"
|
poll: "투표"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "태그"
|
||||||
|
query: "쿼리 (생략 가능)"
|
||||||
|
add: "추가"
|
||||||
|
save: "저장"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "작업 관리자"
|
title: "작업 관리자"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "인스턴스의 소개"
|
instance-description: "인스턴스의 소개"
|
||||||
host: "관리자"
|
host: "관리자"
|
||||||
banner-url: "배너 이미지 URL"
|
banner-url: "배너 이미지 URL"
|
||||||
|
error-image-url: "오류 이미지 URL"
|
||||||
languages: "인스턴스의 대상 언어"
|
languages: "인스턴스의 대상 언어"
|
||||||
languages-desc: "공백으로 구분하여 여러 개 설정할 수 있습니다."
|
languages-desc: "공백으로 구분하여 여러 개 설정할 수 있습니다."
|
||||||
maintainer-config: "관리자 정보"
|
maintainer-config: "관리자 정보"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "요청"
|
network-requests: "요청"
|
||||||
network-time: "응답시간"
|
network-time: "응답시간"
|
||||||
network-usage: "통신량"
|
network-usage: "통신량"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "정렬"
|
||||||
|
createdAtAsc: "업로드 날짜 오랜 순"
|
||||||
|
createdAtDesc: "업로드 날짜 최신순"
|
||||||
|
sizeAsc: "크기가 작은 순"
|
||||||
|
sizeDesc: "크기가 큰 순"
|
||||||
|
origin:
|
||||||
|
title: "출처"
|
||||||
|
combined: "로컬 + 리모트"
|
||||||
|
local: "로컬"
|
||||||
|
remote: "리모트"
|
||||||
|
delete: "삭제"
|
||||||
|
deleted: "삭제하였습니다"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "작업"
|
operation: "작업"
|
||||||
username-or-userid: "사용자명 혹은 사용자 ID"
|
username-or-userid: "사용자명 혹은 사용자 ID"
|
||||||
@ -1275,7 +1303,7 @@ mobile/views/components/post-form.vue:
|
|||||||
add-visible-user: "사용자 추가"
|
add-visible-user: "사용자 추가"
|
||||||
submit: "글쓰기"
|
submit: "글쓰기"
|
||||||
reply: "답글 달기"
|
reply: "답글 달기"
|
||||||
renote: "Renote"
|
renote: "리노트"
|
||||||
quote-placeholder: "이 글을 인용... (선택적)"
|
quote-placeholder: "이 글을 인용... (선택적)"
|
||||||
reply-placeholder: "이 글에 답글..."
|
reply-placeholder: "이 글에 답글..."
|
||||||
cw-placeholder: "내용 주석 (선택적)"
|
cw-placeholder: "내용 주석 (선택적)"
|
||||||
@ -1369,9 +1397,9 @@ mobile/views/pages/settings.vue:
|
|||||||
contrasted-acct: "사용자명에 대비 추가"
|
contrasted-acct: "사용자명에 대비 추가"
|
||||||
timeline: "타임라인"
|
timeline: "타임라인"
|
||||||
show-reply-target: "답글 대상 표시"
|
show-reply-target: "답글 대상 표시"
|
||||||
show-my-renotes: "자신이 한 Renote 표시"
|
show-my-renotes: "자신이 한 리노트 표시"
|
||||||
show-renoted-my-notes: "자신의 글이 Renote된 것을 표시"
|
show-renoted-my-notes: "자신의 글이 리노트된 것을 표시"
|
||||||
show-local-renotes: "로컬 글의 Renote 표시"
|
show-local-renotes: "로컬 글의 리노트 표시"
|
||||||
post-style: "글 표시 스타일"
|
post-style: "글 표시 스타일"
|
||||||
post-style-standard: "표준"
|
post-style-standard: "표준"
|
||||||
post-style-smart: "스마트"
|
post-style-smart: "스마트"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "작성하는 글에 \"모바일에서 작성함\" 을 붙이지 않음"
|
disable-via-mobile: "작성하는 글에 \"모바일에서 작성함\" 을 붙이지 않음"
|
||||||
load-raw-images: "첨부 이미지를 고품질로 표시"
|
load-raw-images: "첨부 이미지를 고품질로 표시"
|
||||||
load-remote-media: "원격 서버의 미디어를 표시"
|
load-remote-media: "원격 서버의 미디어를 표시"
|
||||||
twitter: "Twitter 연동"
|
|
||||||
twitter-connect: "Twitter 계정에 연결"
|
|
||||||
twitter-reconnect: "다시 연결"
|
|
||||||
twitter-disconnect: "연결 끊기"
|
|
||||||
github: "GitHub 연동"
|
|
||||||
github-connect: "GitHub 계정에 연결"
|
|
||||||
github-reconnect: "다시 연결"
|
|
||||||
github-disconnect: "연결 끊기"
|
|
||||||
discord: "Discord 연동"
|
|
||||||
discord-connect: "Discord 계정에 연동"
|
|
||||||
discord-reconnect: "다시 연결"
|
|
||||||
discord-disconnect: "연결 끊기"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "버전:"
|
version: "버전:"
|
||||||
latest-version: "최신 버전:"
|
latest-version: "최신 버전:"
|
||||||
@ -1431,8 +1447,8 @@ mobile/views/pages/user.vue:
|
|||||||
unblock: "차단 해제"
|
unblock: "차단 해제"
|
||||||
years-old: "{age}세"
|
years-old: "{age}세"
|
||||||
push-to-list: "리스트에 추가"
|
push-to-list: "리스트에 추가"
|
||||||
select-list: "リストを選択してください"
|
select-list: "목록을 선택하여 주십시오"
|
||||||
list-pushed: "{user}を{list}に追加しました"
|
list-pushed: "{user}을(를) {list}에 추가하였습니다"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "최근 글"
|
recent-notes: "최근 글"
|
||||||
images: "이미지"
|
images: "이미지"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd."
|
my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Gebruiker zoeken"
|
search-user: "Gebruiker zoeken"
|
||||||
you: "Jij"
|
you: "Jij"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Bezig met verbinden"
|
connecting: "Bezig met verbinden"
|
||||||
reconnecting: "Bezig met herverbinden"
|
reconnecting: "Bezig met herverbinden"
|
||||||
connected: "Verbonden"
|
connected: "Verbonden"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Als je je Twitter-account verbindt met je Misskey-account, dan kun je je Twitter-accountinformatie terugzien op je profiel en kun je inloggen met Twitter."
|
title: "サービス連携"
|
||||||
connected-to: "Je bent verbonden met dit Twitter-account"
|
connect: "接続する"
|
||||||
detail: "Details..."
|
disconnect: "切断する"
|
||||||
reconnect: "Opnieuw verbinden"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "Koppel je Twitter-account"
|
|
||||||
disconnect: "Verbinding verbreken"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Donatie"
|
|
||||||
text: "Om Misskey draaiende te houden, geven we geld uit aan onze domeinnaam, servers, enz. We maken hier geen winst op, dus we zouden het fijn vinden als je een donatie wilt doen. Neem in dat geval contact op via {}. Bedankt voor je bijdrage!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Fotostream"
|
title: "Fotostream"
|
||||||
no-photos: "Geen foto's"
|
no-photos: "Geen foto's"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "Ronde pictogrammen gebruiken"
|
circle-icons: "Ronde pictogrammen gebruiken"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen"
|
post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Antwoord-knop tonen"
|
show-reply-target: "Antwoord-knop tonen"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Kaart tonen"
|
show-maps: "Kaart tonen"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "Geluid"
|
sound: "Geluid"
|
||||||
enable-sounds: "Geluid inschakelen"
|
enable-sounds: "Geluid inschakelen"
|
||||||
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
|
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "Peilingen"
|
poll: "Peilingen"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Taakbeheer"
|
title: "Taakbeheer"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "Zonder 'mobiele berichten'"
|
disable-via-mobile: "Zonder 'mobiele berichten'"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter-integratie"
|
|
||||||
twitter-connect: "Mijn Twitter-account verbinden"
|
|
||||||
twitter-reconnect: "Opnieuw verbinden"
|
|
||||||
twitter-disconnect: "Verbinding verbreken"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey-update"
|
update: "Misskey-update"
|
||||||
version: "Huidige versie:"
|
version: "Huidige versie:"
|
||||||
latest-version: "Nieuwste versie:"
|
latest-version: "Nieuwste versie:"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
|
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "アンケート"
|
polls: "アンケート"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "サーバー情報"
|
server: "サーバー情報"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "Tips"
|
tips: "Tips"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "Skjul"
|
hide: "Skjul"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "Du"
|
you: "Du"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Tilkobler"
|
connecting: "Tilkobler"
|
||||||
reconnecting: "Kobler til på nytt"
|
reconnecting: "Kobler til på nytt"
|
||||||
connected: "Tilkoblet"
|
connected: "Tilkoblet"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connect: "接続する"
|
||||||
detail: "Detaljer..."
|
disconnect: "切断する"
|
||||||
reconnect: "Koble til på nytt"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "Koble fra"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "I dag:"
|
today: "I dag:"
|
||||||
this-month: "Denne måneden:"
|
this-month: "Denne måneden:"
|
||||||
this-year: "Dette året:"
|
this-year: "Dette året:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "Lyd"
|
sound: "Lyd"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "Koble til på nytt"
|
|
||||||
twitter-disconnect: "Koble fra"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
@ -10,14 +10,14 @@ common:
|
|||||||
title: "Czym jest Misskey?"
|
title: "Czym jest Misskey?"
|
||||||
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
|
||||||
features: "特徴"
|
features: "特徴"
|
||||||
rich-contents: "投稿"
|
rich-contents: "Wpis"
|
||||||
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
|
rich-contents-desc: "Po prostu opublikuj swój pomysł, gorące tematy i wszystko, co chcesz udostępnić. Możesz ozdobić swoje słowa, dołączyć swoje ulubione zdjęcia, wysłać pliki, w tym filmy i utworzyć ankietę - to są rzeczy, które możesz zrobić w Misskey!"
|
||||||
reaction: "Reakcje"
|
reaction: "Reakcje"
|
||||||
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
|
||||||
ui: "Interfejs"
|
ui: "Interfejs"
|
||||||
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
|
||||||
drive: "Dysk"
|
drive: "Dysk"
|
||||||
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
|
drive-desc: "Chcesz opublikować zdjęcie, które już przesłałeś? Chcesz uporządkować, nazwać i utworzyć folder dla przesłanych plików? Dysk Misskey to najlepsze rozwiązanie dla Ciebie. Bardzo łatwo udostępniać swoje pliki online."
|
||||||
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Spróbuj wyłączyć blokadę reklam."
|
detected: "Spróbuj wyłączyć blokadę reklam."
|
||||||
@ -25,8 +25,8 @@ common:
|
|||||||
application-authorization: "アプリの連携"
|
application-authorization: "アプリの連携"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||||
load-more: "もっと読み込む"
|
load-more: "Załaduj więcej"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "Wprowadź Hasło"
|
||||||
got-it: "Rozumiem!"
|
got-it: "Rozumiem!"
|
||||||
customization-tips:
|
customization-tips:
|
||||||
title: "Wskazówki o dostosowywaniu"
|
title: "Wskazówki o dostosowywaniu"
|
||||||
@ -54,7 +54,7 @@ common:
|
|||||||
month-and-day: "{month}-{day}"
|
month-and-day: "{month}-{day}"
|
||||||
trash: "Kosz"
|
trash: "Kosz"
|
||||||
drive: "Dysk"
|
drive: "Dysk"
|
||||||
messaging: "トーク"
|
messaging: "Rozmowy"
|
||||||
weekday-short:
|
weekday-short:
|
||||||
sunday: "N"
|
sunday: "N"
|
||||||
monday: "Pn"
|
monday: "Pn"
|
||||||
@ -72,7 +72,7 @@ common:
|
|||||||
friday: "Piątek"
|
friday: "Piątek"
|
||||||
saturday: "Sobota"
|
saturday: "Sobota"
|
||||||
reactions:
|
reactions:
|
||||||
like: "いいね"
|
like: "Lubię"
|
||||||
love: "Kocham"
|
love: "Kocham"
|
||||||
laugh: "Śmieszne"
|
laugh: "Śmieszne"
|
||||||
hmm: "Hmm…?"
|
hmm: "Hmm…?"
|
||||||
@ -83,17 +83,17 @@ common:
|
|||||||
rip: "RIP"
|
rip: "RIP"
|
||||||
pudding: "Pudding"
|
pudding: "Pudding"
|
||||||
note-visibility:
|
note-visibility:
|
||||||
public: "公開"
|
public: "Publiczny"
|
||||||
home: "ホーム"
|
home: "Lokalny"
|
||||||
home-desc: "ホームタイムラインにのみ公開"
|
home-desc: "Widoczny tylko na tej instancji"
|
||||||
followers: "フォロワー"
|
followers: "Dla śledzących"
|
||||||
followers-desc: "自分のフォロワーにのみ公開"
|
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||||
specified: "ダイレクト"
|
specified: "Bezpośredni"
|
||||||
specified-desc: "指定したユーザーにのみ公開"
|
specified-desc: "Tylko dla określonych użytkowników"
|
||||||
private: "非公開"
|
private: "Prywatny"
|
||||||
local-public: "公開 (ローカルのみ)"
|
local-public: "Publiczny (tylko lokalnie)"
|
||||||
local-home: "ホーム (ローカルのみ)"
|
local-home: "ホーム (ローカルのみ)"
|
||||||
local-followers: "フォロワー (ローカルのみ)"
|
local-followers: "Dla śledzących (tylko lokalnie)"
|
||||||
note-placeholders:
|
note-placeholders:
|
||||||
a: "Co robisz?"
|
a: "Co robisz?"
|
||||||
b: "Co się wydarzyło?"
|
b: "Co się wydarzyło?"
|
||||||
@ -110,31 +110,32 @@ common:
|
|||||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||||
i-like-sushi: "Wolę sushi od puddingu"
|
i-like-sushi: "Wolę sushi od puddingu"
|
||||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "Zweryfikowane konto"
|
||||||
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-show-nsfw: "Zawszę pokazuj zawartość NSFW"
|
||||||
|
always-mark-nsfw: "Zawsze oznaczaj posty z multimediami jako NSFW"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
show-via: "viaを表示する"
|
show-via: "viaを表示する"
|
||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "Zredukuj ruch w UI"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "Użyj domyślnych Emoji systemowych"
|
||||||
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "Informacje o użytkowniku są kopiowane."
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "正確な情報を見る"
|
||||||
renoted-by: "{user}がRenote"
|
renoted-by: "{user} udostępnił(a)"
|
||||||
error:
|
error:
|
||||||
title: '問題が発生しました'
|
title: 'Coś poszło nie tak'
|
||||||
retry: 'やり直す'
|
retry: 'Ponów próbę'
|
||||||
reversi:
|
reversi:
|
||||||
drawn: "Remis"
|
drawn: "Remis"
|
||||||
my-turn: "Twoja kolej"
|
my-turn: "Twoja kolej"
|
||||||
opponent-turn: "Kolej na przeciwnika"
|
opponent-turn: "Kolej na przeciwnika"
|
||||||
turn-of: "{name}のターンです"
|
turn-of: "{name}のターンです"
|
||||||
past-turn-of: "{name}のターン"
|
past-turn-of: "{name}のターン"
|
||||||
won: "{name}の勝ち"
|
won: "{name} wygrał(a)"
|
||||||
black: "Czarny"
|
black: "Czarny"
|
||||||
white: "Biały"
|
white: "Biały"
|
||||||
total: "Łącznie"
|
total: "Łącznie"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Ankiety"
|
polls: "Ankiety"
|
||||||
post-form: "Formularz tworzenia"
|
post-form: "Formularz tworzenia"
|
||||||
server: "Informacje o serwerze"
|
server: "Informacje o serwerze"
|
||||||
donation: "Dotacje"
|
|
||||||
nav: "Nawigacja"
|
nav: "Nawigacja"
|
||||||
tips: "Wskazówki"
|
tips: "Wskazówki"
|
||||||
hashtags: "Hashtagi"
|
hashtags: "Hashtagi"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "Ty"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
|
||||||
@ -261,41 +262,43 @@ common/views/components/media-banner.vue:
|
|||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "Jasny Motyw"
|
||||||
dark-themes: "暗いテーマ"
|
dark-themes: "Ciemny motyw"
|
||||||
install-a-theme: "テーマのインストール"
|
install-a-theme: "Zainstaluj motyw"
|
||||||
theme-code: "テーマコード"
|
theme-code: "Kod motywu"
|
||||||
install: "インストール"
|
install: "Zainstaluj"
|
||||||
installed: "「{}」をインストールしました"
|
installed: "\"{}\" został zainstalowany"
|
||||||
create-a-theme: "テーマの作成"
|
create-a-theme: "Stwórz motyw"
|
||||||
save-created-theme: "テーマを保存"
|
save-created-theme: "Zapisz motyw"
|
||||||
primary-color: "プライマリ カラー"
|
primary-color: "Kolor podstawowy"
|
||||||
secondary-color: "セカンダリ カラー"
|
secondary-color: "Kolor dodatkowy"
|
||||||
text-color: "文字色"
|
text-color: "Kolor tekstu"
|
||||||
base-theme: "ベーステーマ"
|
base-theme: "Podstawowy motyw"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Jasny"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Ciemny"
|
||||||
theme-name: "テーマ名"
|
theme-name: "Nazwa motywu"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "Pokaż podgląd"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
already-installed: "既にそのテーマはインストールされています。"
|
already-installed: "Ten motyw jest już zainstalowany"
|
||||||
saved: "保存しました"
|
saved: "Zapisano"
|
||||||
manage-themes: "テーマの管理"
|
manage-themes: "Zarządzanie motywami"
|
||||||
builtin-themes: "標準テーマ"
|
builtin-themes: "Standardowe motywy"
|
||||||
my-themes: "マイテーマ"
|
my-themes: "Moje motywy"
|
||||||
installed-themes: "インストールされたテーマ"
|
installed-themes: "Zainstalowane motywy"
|
||||||
select-theme: "テーマを選択してください"
|
select-theme: "テーマを選択してください"
|
||||||
uninstall: "アンインストール"
|
uninstall: "Odinstaluj"
|
||||||
uninstalled: "「{}」をアンインストールしました"
|
uninstalled: "\"{}\" został odinstalowany"
|
||||||
author: "作者"
|
author: "Author"
|
||||||
desc: "説明"
|
desc: "Opis"
|
||||||
export: "エクスポート"
|
export: "エクスポート"
|
||||||
import: "インポート"
|
import: "Importuj"
|
||||||
import-by-code: "またはコードをペースト"
|
import-by-code: "lub wklej kod"
|
||||||
theme-name-required: "テーマ名は必須です。"
|
theme-name-required: "Nazwa motywu jest obowiązkowa."
|
||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "Ukryj"
|
hide: "Ukryj"
|
||||||
show: "Pokaż więcej"
|
show: "Pokaż więcej"
|
||||||
|
chars: "{count} znaków"
|
||||||
|
files: "{count} plików"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Znajdź użytkownika"
|
search-user: "Znajdź użytkownika"
|
||||||
you: "Ty"
|
you: "Ty"
|
||||||
@ -325,12 +328,12 @@ 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: "詳細"
|
detail: "Szczegóły"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "Skopiuj adres"
|
||||||
favorite: "Dodaj do ulubionych"
|
favorite: "Dodaj do ulubionych"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "Usuń z ulubionych"
|
||||||
pin: "Przypnij do profilu"
|
pin: "Przypnij do profilu"
|
||||||
unpin: "ピン留め解除"
|
unpin: "Odepnij"
|
||||||
delete: "Usuń"
|
delete: "Usuń"
|
||||||
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
|
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
|
||||||
remote: "Pokaż oryginał"
|
remote: "Pokaż oryginał"
|
||||||
@ -350,15 +353,15 @@ common/views/components/poll-editor.vue:
|
|||||||
common/views/components/reaction-picker.vue:
|
common/views/components/reaction-picker.vue:
|
||||||
choose-reaction: "Wybierz reakcję"
|
choose-reaction: "Wybierz reakcję"
|
||||||
common/views/components/emoji-picker.vue:
|
common/views/components/emoji-picker.vue:
|
||||||
custom-emoji: "カスタム絵文字"
|
custom-emoji: "Niestandardowe Emoji"
|
||||||
people: "Ludzie"
|
people: "Ludzie"
|
||||||
animals-and-nature: "動物&自然"
|
animals-and-nature: "Zwierzęta i Natura"
|
||||||
food-and-drink: "食べ物&飲み物"
|
food-and-drink: "Żywność i napoje"
|
||||||
activity: "アクティビティ"
|
activity: "Aktywność"
|
||||||
travel-and-places: "場所"
|
travel-and-places: "Podróże i Miejsca"
|
||||||
objects: "物"
|
objects: "Rzeczy"
|
||||||
symbols: "記号"
|
symbols: "Symbole"
|
||||||
flags: "旗"
|
flags: "Flagi"
|
||||||
common/views/components/signin.vue:
|
common/views/components/signin.vue:
|
||||||
username: "Nazwa użytkownika"
|
username: "Nazwa użytkownika"
|
||||||
password: "Hasło"
|
password: "Hasło"
|
||||||
@ -400,25 +403,23 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "Łączenie"
|
connecting: "Łączenie"
|
||||||
reconnecting: "Ponowne łączenie"
|
reconnecting: "Ponowne łączenie"
|
||||||
connected: "Połączono"
|
connected: "Połączono"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "Jeżeli połączysz konto Twittera z kontem Misskey, informacje z Twittera będą widoczne na Twoim profilu i będziesz mógł logować się z użyciem Twittera."
|
title: "サービス連携"
|
||||||
connected-to: "Jesteś połączony z tym kontem Twittera"
|
connect: "Połącz"
|
||||||
detail: "Szczegóły…"
|
disconnect: "切断する"
|
||||||
reconnect: "Połącz ponownie"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "Połącz z kontem Twittera"
|
|
||||||
disconnect: "Rozłącz"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
detail: "詳細..."
|
detail: "Więcej..."
|
||||||
reconnect: "再接続する"
|
reconnect: "Połącz ponownie"
|
||||||
connect: "GitHubと接続する"
|
connect: "GitHubと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/discord-setting.vue:
|
common/views/components/discord-setting.vue:
|
||||||
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のDiscordアカウントに接続されています"
|
connected-to: "次のDiscordアカウントに接続されています"
|
||||||
detail: "詳細..."
|
detail: "Szczegóły…"
|
||||||
reconnect: "再接続する"
|
reconnect: "Połącz ponownie"
|
||||||
connect: "Discordと接続する"
|
connect: "Discordと接続する"
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
common/views/components/uploader.vue:
|
common/views/components/uploader.vue:
|
||||||
@ -435,38 +436,39 @@ common/views/components/visibility-chooser.vue:
|
|||||||
local-public: "公開 (ローカルのみ)"
|
local-public: "公開 (ローカルのみ)"
|
||||||
local-public-desc: "リモートへは公開しない"
|
local-public-desc: "リモートへは公開しない"
|
||||||
local-home: "ホーム (ローカルのみ)"
|
local-home: "ホーム (ローカルのみ)"
|
||||||
local-followers: "フォロワー (ローカルのみ)"
|
local-followers: "Dla śledzących (tylko lokalnie)"
|
||||||
common/views/components/trends.vue:
|
common/views/components/trends.vue:
|
||||||
count: "{}人が投稿"
|
count: "{}人が投稿"
|
||||||
empty: "トレンドなし"
|
empty: "トレンドなし"
|
||||||
common/views/components/language-settings.vue:
|
common/views/components/language-settings.vue:
|
||||||
title: "表示言語"
|
title: "Język"
|
||||||
pick-language: "言語を選択"
|
pick-language: "Wybierz język"
|
||||||
recommended: "推奨"
|
recommended: "Zalecane"
|
||||||
auto: "自動"
|
auto: "Automatyczny"
|
||||||
specify-language: "言語を指定"
|
specify-language: "言語を指定"
|
||||||
info: "変更はページの再度読み込み後に反映されます。"
|
info: "Musisz odświeżyć stronę, aby zmiany zostały uwzględnione."
|
||||||
common/views/components/profile-editor.vue:
|
common/views/components/profile-editor.vue:
|
||||||
title: "プロフィール"
|
title: "Twój profil"
|
||||||
name: "名前"
|
name: "Nazwa"
|
||||||
account: "アカウント"
|
account: "Konto"
|
||||||
location: "場所"
|
location: "Lokalizacja"
|
||||||
description: "自己紹介"
|
description: "O mnie"
|
||||||
birthday: "誕生日"
|
language: "Język"
|
||||||
avatar: "アイコン"
|
birthday: "Data urodzenia"
|
||||||
banner: "バナー"
|
avatar: "Awatar"
|
||||||
is-cat: "このアカウントはCatです"
|
banner: "Baner"
|
||||||
is-bot: "このアカウントはBotです"
|
is-cat: "To konto jest prowadzone przez kota"
|
||||||
is-locked: "フォローを承認制にする"
|
is-bot: "To konto jest prowadzone przez bota"
|
||||||
|
is-locked: "Żądanania śledzenia wymagają zatwierdzenia"
|
||||||
careful-bot: "Botからのフォローだけ承認制にする"
|
careful-bot: "Botからのフォローだけ承認制にする"
|
||||||
advanced: "その他"
|
advanced: "Inne"
|
||||||
privacy: "プライバシー"
|
privacy: "Prywatność"
|
||||||
save: "保存"
|
save: "Zapisz"
|
||||||
saved: "プロフィールを保存しました"
|
saved: "Pomyślnie zaktualizowano profil"
|
||||||
uploading: "アップロード中"
|
uploading: "アップロード中"
|
||||||
upload-failed: "アップロードに失敗しました"
|
upload-failed: "アップロードに失敗しました"
|
||||||
email: "メール設定"
|
email: "メール設定"
|
||||||
email-address: "メールアドレス"
|
email-address: "Adres e-mail"
|
||||||
email-verified: "メールアドレスが確認されました"
|
email-verified: "メールアドレスが確認されました"
|
||||||
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||||
common/views/widgets/broadcast.vue:
|
common/views/widgets/broadcast.vue:
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "Dzisiaj:"
|
today: "Dzisiaj:"
|
||||||
this-month: "Ten miesiąc:"
|
this-month: "Ten miesiąc:"
|
||||||
this-year: "Ten rok:"
|
this-year: "Ten rok:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "Dotacje"
|
|
||||||
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Photostream"
|
title: "Photostream"
|
||||||
no-photos: "Brak zdjęć"
|
no-photos: "Brak zdjęć"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskey zaczął działać w 2014."
|
tips-line24: "Misskey zaczął działać w 2014."
|
||||||
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
|
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Zalogowany jako {}"
|
signed-in-as: "Zalogowany jako {}"
|
||||||
following: "Śledzisz"
|
following: "Śledzisz"
|
||||||
@ -557,7 +558,7 @@ desktop/views/components/calendar.vue:
|
|||||||
next: "Następny miesiąc"
|
next: "Następny miesiąc"
|
||||||
go: "Naciśnij, aby przejść"
|
go: "Naciśnij, aby przejść"
|
||||||
desktop/views/components/choose-file-from-drive-window.vue:
|
desktop/views/components/choose-file-from-drive-window.vue:
|
||||||
chosen-files: "{count}ファイル選択中"
|
chosen-files: "Wybrano {count} Plik(ów)"
|
||||||
upload: "Wyślij pliki z Twojego komputera"
|
upload: "Wyślij pliki z Twojego komputera"
|
||||||
cancel: "Anuluj"
|
cancel: "Anuluj"
|
||||||
ok: "OK"
|
ok: "OK"
|
||||||
@ -575,7 +576,7 @@ desktop/views/components/drive-window.vue:
|
|||||||
desktop/views/components/drive.file.vue:
|
desktop/views/components/drive.file.vue:
|
||||||
avatar: "Awatar"
|
avatar: "Awatar"
|
||||||
banner: "Baner"
|
banner: "Baner"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "NSFW"
|
||||||
contextmenu:
|
contextmenu:
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
|
||||||
@ -657,13 +658,13 @@ desktop/views/components/note-detail.vue:
|
|||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
location: "Informacje o lokalizacji"
|
location: "Informacje o lokalizacji"
|
||||||
renote: "Udostępnienie"
|
renote: "Udostępnij"
|
||||||
add-reaction: "Dodaj reakcję"
|
add-reaction: "Dodaj reakcję"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reply: "返信"
|
reply: "Odpowiedz"
|
||||||
renote: "Renote"
|
renote: "Udostępnij"
|
||||||
add-reaction: "リアクション"
|
add-reaction: "Dodaj reakcję"
|
||||||
detail: "詳細"
|
detail: "Szczegóły"
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
desktop/views/components/notes.vue:
|
desktop/views/components/notes.vue:
|
||||||
@ -727,8 +728,8 @@ desktop/views/components/settings.vue:
|
|||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
notification: "Powiadomienia"
|
notification: "Powiadomienia"
|
||||||
apps: "Aplikacje"
|
apps: "Aplikacje"
|
||||||
tags: "ハッシュタグ"
|
tags: "Hashtagi"
|
||||||
mute-and-block: "ミュート/ブロック"
|
mute-and-block: "Wycisz / Zablokuj"
|
||||||
blocking: "ブロック"
|
blocking: "ブロック"
|
||||||
security: "Bezpieczeństwo"
|
security: "Bezpieczeństwo"
|
||||||
signin: "Historia logowań"
|
signin: "Historia logowań"
|
||||||
@ -736,15 +737,15 @@ desktop/views/components/settings.vue:
|
|||||||
2fa: "Uwierzytelnianie dwuetapowe"
|
2fa: "Uwierzytelnianie dwuetapowe"
|
||||||
other: "Inne"
|
other: "Inne"
|
||||||
license: "Licencja"
|
license: "Licencja"
|
||||||
theme: "テーマ"
|
theme: "Motyw"
|
||||||
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: "投稿の公開範囲"
|
note-visibility: "Widoczność wpisów"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "Domyślna widoczność"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "Zapamiętaj widoczność wpisów"
|
||||||
web-search-engine: "ウェブ検索エンジン"
|
web-search-engine: "Wyszukiwarka internetowa"
|
||||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
web-search-engine-desc: "Np: https://www.google.com/?#q={{query}}"
|
||||||
auto-popout: "Automatycznie pojawiające się okna"
|
auto-popout: "Automatycznie pojawiające się okna"
|
||||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||||
advanced: "Ustawienia zaawansowane"
|
advanced: "Ustawienia zaawansowane"
|
||||||
@ -752,30 +753,36 @@ desktop/views/components/settings.vue:
|
|||||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||||
deck-nav: "デッキ内ナビゲーション"
|
deck-nav: "デッキ内ナビゲーション"
|
||||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||||
deck-default: "デッキをデフォルトのUIにする"
|
deck-default: "Użyj Talię jako domyślne UI"
|
||||||
display: "Wygląd i wyświetlanie"
|
display: "Wygląd i wyświetlanie"
|
||||||
customize: "Dostosuj stronę główną"
|
customize: "Dostosuj stronę główną"
|
||||||
wallpaper: "壁紙"
|
wallpaper: "Tapeta"
|
||||||
choose-wallpaper: "Wybierz tło"
|
choose-wallpaper: "Wybierz tło"
|
||||||
delete-wallpaper: "Usuń tło"
|
delete-wallpaper: "Usuń tło"
|
||||||
dark-mode: "Tryb ciemny"
|
dark-mode: "Tryb ciemny"
|
||||||
use-shadow: "UIに影を使用"
|
use-shadow: "Użyj cieni w UI"
|
||||||
rounded-corners: "UIの角を丸める"
|
rounded-corners: "Zaokrąglaj rogi w UI"
|
||||||
circle-icons: "Używaj okrągłych ikon"
|
circle-icons: "Używaj okrągłych ikon"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
timeline: "タイムライン"
|
timeline: "Oś czasu"
|
||||||
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: "Pokazuj moje udostępnione wpisy na osi czasu"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "Automatycznie pokazuj mapę"
|
show-maps: "Automatycznie pokazuj mapę"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "Lewo"
|
||||||
|
deck-column-align-flexible: "Elastyczne"
|
||||||
|
deck-column-width: "Szerokość kolumn w talii"
|
||||||
|
deck-column-width-narrow: "Wąska"
|
||||||
|
deck-column-width-narrower: "Trochę wąska"
|
||||||
|
deck-column-width-normal: "Normalna"
|
||||||
|
deck-column-width-wider: "Trochę szeroka"
|
||||||
|
deck-column-width-wide: "Szeroka"
|
||||||
sound: "Dźwięk"
|
sound: "Dźwięk"
|
||||||
enable-sounds: "Włącz dźwięk"
|
enable-sounds: "Włącz dźwięk"
|
||||||
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
|
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
|
||||||
@ -810,10 +817,10 @@ desktop/views/components/settings.vue:
|
|||||||
tools: "Narzędzia"
|
tools: "Narzędzia"
|
||||||
task-manager: "Menedżer zadań"
|
task-manager: "Menedżer zadań"
|
||||||
third-parties: "Autorzy trzeci"
|
third-parties: "Autorzy trzeci"
|
||||||
navbar-position: "ナビゲーションバーの位置"
|
navbar-position: "Pozycja paska nawigacji"
|
||||||
navbar-position-top: "上"
|
navbar-position-top: "Góra"
|
||||||
navbar-position-left: "左"
|
navbar-position-left: "Lewo"
|
||||||
navbar-position-right: "右"
|
navbar-position-right: "Prawo"
|
||||||
desktop/views/components/settings.2fa.vue:
|
desktop/views/components/settings.2fa.vue:
|
||||||
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
|
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
|
||||||
detail: "Zobacz szczegóły…"
|
detail: "Zobacz szczegóły…"
|
||||||
@ -833,48 +840,54 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
||||||
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
||||||
common/views/components/api-settings.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "Wygeneruj nowy token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "Wprowadź hasło"
|
||||||
console:
|
console:
|
||||||
title: 'APIコンソール'
|
title: 'Konsola API'
|
||||||
endpoint: 'エンドポイント'
|
endpoint: 'エンドポイント'
|
||||||
parameter: 'パラメータ'
|
parameter: 'Parametry'
|
||||||
credential-info: "「i」パラメータは自動で付与されます。"
|
credential-info: "「i」パラメータは自動で付与されます。"
|
||||||
send: '送信'
|
send: 'Wyślij'
|
||||||
sending: '応答待ち'
|
sending: '応答待ち'
|
||||||
response: '結果'
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Brak zautoryzowanych aplikacji"
|
no-apps: "Brak zautoryzowanych aplikacji"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "容量"
|
max: "Max"
|
||||||
in-use: "使用中"
|
in-use: "użyto"
|
||||||
stats: "統計"
|
stats: "Statystyki"
|
||||||
common/views/components/mute-and-block.vue:
|
common/views/components/mute-and-block.vue:
|
||||||
mute-and-block: "ミュートとブロック"
|
mute-and-block: "Wycisz / Zablokuj"
|
||||||
mute: "ミュート"
|
mute: "Wycisz"
|
||||||
block: "ブロック"
|
block: "Zablokuj"
|
||||||
no-muted-users: "ミュートしているユーザーはいません"
|
no-muted-users: "Brak wyciszonych użytkowników"
|
||||||
no-blocked-users: "ブロックしているユーザーはいません"
|
no-blocked-users: "Brak zablokowanych użytkowników"
|
||||||
word-mute: "ワードミュート"
|
word-mute: "Wyciszenie słowa"
|
||||||
muted-words: "ミュートされたキーワード"
|
muted-words: "Wyciszone słowa kluczowe"
|
||||||
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
|
||||||
save: "保存"
|
save: "Zapisz"
|
||||||
common/views/components/password-settings.vue:
|
common/views/components/password-settings.vue:
|
||||||
reset: "パスワードを変更する"
|
reset: "Zmień hasło"
|
||||||
enter-current-password: "現在のパスワードを入力してください"
|
enter-current-password: "現在のパスワードを入力してください"
|
||||||
enter-new-password: "新しいパスワードを入力してください"
|
enter-new-password: "新しいパスワードを入力してください"
|
||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "ten wpis jest prywatny"
|
private: "ten wpis jest prywatny"
|
||||||
deleted: "ten wpis został usunięty"
|
deleted: "ten wpis został usunięty"
|
||||||
media-count: "{}zawartości multimedialnej"
|
media-count: "{}zawartości multimedialnej"
|
||||||
poll: "Ankieta"
|
poll: "Ankieta"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "Tagi"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "Dodaj"
|
||||||
|
save: "Zapisz"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "Menedżer zadań"
|
title: "Menedżer zadań"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -882,12 +895,12 @@ desktop/views/components/timeline.vue:
|
|||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
hybrid: "Społeczność"
|
hybrid: "Społeczność"
|
||||||
global: "Globalne"
|
global: "Globalne"
|
||||||
mentions: "あなた宛て"
|
mentions: "Wspomnienia"
|
||||||
messages: "メッセージ"
|
messages: "Wiadomości"
|
||||||
list: "Listy"
|
list: "Listy"
|
||||||
hashtag: "ハッシュタグ"
|
hashtag: "Hashtag"
|
||||||
add-tag-timeline: "ハッシュタグを追加"
|
add-tag-timeline: "Dodaj hashtag"
|
||||||
add-list: "リストを追加"
|
add-list: "Dodaj listę"
|
||||||
list-name: "リスト名"
|
list-name: "リスト名"
|
||||||
desktop/views/components/ui.header.vue:
|
desktop/views/components/ui.header.vue:
|
||||||
welcome-back: "Witaj ponownie,"
|
welcome-back: "Witaj ponownie,"
|
||||||
@ -898,7 +911,7 @@ desktop/views/components/ui.header.account.vue:
|
|||||||
lists: "Listy"
|
lists: "Listy"
|
||||||
follow-requests: "Prośby o śledzenie"
|
follow-requests: "Prośby o śledzenie"
|
||||||
customize: "Dostosuj stronę główną"
|
customize: "Dostosuj stronę główną"
|
||||||
admin: "管理"
|
admin: "Admin"
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
signout: "Wyloguj się"
|
signout: "Wyloguj się"
|
||||||
dark: "Sprowadź ciemność"
|
dark: "Sprowadź ciemność"
|
||||||
@ -934,19 +947,19 @@ desktop/views/components/window.vue:
|
|||||||
popout: "Pop-out"
|
popout: "Pop-out"
|
||||||
close: "Zamknij"
|
close: "Zamknij"
|
||||||
admin/views/index.vue:
|
admin/views/index.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "Kokpit"
|
||||||
instance: "インスタンス"
|
instance: "Instancja"
|
||||||
emoji: "カスタム絵文字"
|
emoji: "Emoji"
|
||||||
moderators: "モデレーター"
|
moderators: "Moderatorzy"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
federation: "連合"
|
federation: "連合"
|
||||||
announcements: "Ogłoszenia"
|
announcements: "Ogłoszenia"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "Hashtagi"
|
||||||
back-to-misskey: "Misskeyに戻る"
|
back-to-misskey: "Misskeyに戻る"
|
||||||
admin/views/dashboard.vue:
|
admin/views/dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
accounts: "アカウント"
|
accounts: "Konta"
|
||||||
notes: "投稿"
|
notes: "Wpisy"
|
||||||
drive: "ドライブ"
|
drive: "ドライブ"
|
||||||
instances: "インスタンス"
|
instances: "インスタンス"
|
||||||
this-instance: "このインスタンス"
|
this-instance: "このインスタンス"
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -996,13 +1010,13 @@ admin/views/instance.vue:
|
|||||||
max-note-text-length: "投稿の最大文字数"
|
max-note-text-length: "投稿の最大文字数"
|
||||||
disable-registration: "ユーザー登録の受付を停止する"
|
disable-registration: "ユーザー登録の受付を停止する"
|
||||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||||
invite: "招待"
|
invite: "Zaproś"
|
||||||
save: "保存"
|
save: "Zapisz"
|
||||||
saved: "保存しました"
|
saved: "Zapisano"
|
||||||
user-recommendation-config: "おすすめユーザー"
|
user-recommendation-config: "Polecani użytkownicy"
|
||||||
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
|
||||||
external-user-recommendation-engine: "エンジン"
|
external-user-recommendation-engine: "Silnik"
|
||||||
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
external-user-recommendation-engine-desc: "Np: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
|
||||||
external-user-recommendation-timeout: "タイムアウト"
|
external-user-recommendation-timeout: "タイムアウト"
|
||||||
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
|
||||||
email-config: "メールサーバーの設定"
|
email-config: "メールサーバーの設定"
|
||||||
@ -1020,10 +1034,10 @@ admin/views/charts.vue:
|
|||||||
per-day: "1日ごと"
|
per-day: "1日ごと"
|
||||||
per-hour: "1時間ごと"
|
per-hour: "1時間ごと"
|
||||||
federation: "フェデレーション"
|
federation: "フェデレーション"
|
||||||
notes: "投稿"
|
notes: "Wpisy"
|
||||||
users: "ユーザー"
|
users: "Użytkownicy"
|
||||||
drive: "ドライブ"
|
drive: "Dysk"
|
||||||
network: "ネットワーク"
|
network: "Sieć"
|
||||||
charts:
|
charts:
|
||||||
federation-instances: "インスタンスの増減"
|
federation-instances: "インスタンスの増減"
|
||||||
federation-instances-total: "インスタンスの積算"
|
federation-instances-total: "インスタンスの積算"
|
||||||
@ -1037,9 +1051,23 @@ admin/views/charts.vue:
|
|||||||
drive-total: "ドライブ使用量の積算"
|
drive-total: "ドライブ使用量の積算"
|
||||||
drive-files: "ドライブのファイル数の増減"
|
drive-files: "ドライブのファイル数の増減"
|
||||||
drive-files-total: "ドライブのファイル数の積算"
|
drive-files-total: "ドライブのファイル数の積算"
|
||||||
network-requests: "リクエスト"
|
network-requests: "Żądania"
|
||||||
network-time: "応答時間"
|
network-time: "Czas reakcji"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "Źródło"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "Usuń"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1056,55 +1084,55 @@ admin/views/users.vue:
|
|||||||
unverify: "公式アカウントを解除する"
|
unverify: "公式アカウントを解除する"
|
||||||
unverified: "公式アカウントを解除しました"
|
unverified: "公式アカウントを解除しました"
|
||||||
users:
|
users:
|
||||||
title: "ユーザー"
|
title: "Użytkownicy"
|
||||||
sort:
|
sort:
|
||||||
title: "ソート"
|
title: "Sortuj"
|
||||||
createdAtAsc: "登録日時が古い順"
|
createdAtAsc: "登録日時が古い順"
|
||||||
createdAtDesc: "登録日時が新しい順"
|
createdAtDesc: "登録日時が新しい順"
|
||||||
updatedAtAsc: "更新日時が古い順"
|
updatedAtAsc: "更新日時が古い順"
|
||||||
updatedAtDesc: "更新日時が新しい順"
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
origin:
|
origin:
|
||||||
title: "オリジン"
|
title: "Źródło"
|
||||||
combined: "ローカル+リモート"
|
combined: "ローカル+リモート"
|
||||||
local: "ローカル"
|
local: "Lokalny"
|
||||||
remote: "リモート"
|
remote: "Zdalny"
|
||||||
createdAt: "登録日時"
|
createdAt: "Utworzono"
|
||||||
updatedAt: "更新日時"
|
updatedAt: "更新日時"
|
||||||
admin/views/moderators.vue:
|
admin/views/moderators.vue:
|
||||||
add-moderator:
|
add-moderator:
|
||||||
title: "モデレーターの登録"
|
title: "モデレーターの登録"
|
||||||
add: "登録"
|
add: "Zarejestruj się"
|
||||||
added: "モデレーターを登録しました"
|
added: "モデレーターを登録しました"
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
title: "絵文字の登録"
|
title: "絵文字の登録"
|
||||||
name: "絵文字名"
|
name: "Nazwa Emoji"
|
||||||
name-desc: "a~z 0~9 _ の文字が使えます。"
|
name-desc: "a~z 0~9 _ の文字が使えます。"
|
||||||
aliases: "エイリアス"
|
aliases: "Aliasy"
|
||||||
aliases-desc: "スペースで区切って複数設定できます。"
|
aliases-desc: "スペースで区切って複数設定できます。"
|
||||||
url: "絵文字画像URL"
|
url: "絵文字画像URL"
|
||||||
add: "追加"
|
add: "Dodaj"
|
||||||
info: "50KB以下のPNG画像をおすすめします。"
|
info: "50KB以下のPNG画像をおすすめします。"
|
||||||
added: "絵文字を登録しました"
|
added: "絵文字を登録しました"
|
||||||
emojis:
|
emojis:
|
||||||
title: "絵文字一覧"
|
title: "絵文字一覧"
|
||||||
update: "更新"
|
update: "Aktualizuj"
|
||||||
remove: "削除"
|
remove: "Usuń"
|
||||||
updated: "更新しました"
|
updated: "Zaktualizowano"
|
||||||
remove-emoji:
|
remove-emoji:
|
||||||
are-you-sure: "「$1」を削除しますか?"
|
are-you-sure: "Usunąć \"$1\"?"
|
||||||
removed: "削除しました"
|
removed: "Usunięto"
|
||||||
admin/views/announcements.vue:
|
admin/views/announcements.vue:
|
||||||
announcements: "Ogłoszenia"
|
announcements: "Ogłoszenia"
|
||||||
save: "保存"
|
save: "Zapisz"
|
||||||
remove: "削除"
|
remove: "Usuń"
|
||||||
add: "追加"
|
add: "Dodaj"
|
||||||
title: "タイトル"
|
title: "Tytuł"
|
||||||
text: "内容"
|
text: "内容"
|
||||||
saved: "保存しました"
|
saved: "Zapisano"
|
||||||
_remove:
|
_remove:
|
||||||
are-you-sure: "「$1」を削除しますか?"
|
are-you-sure: "Usunąć \"$1\"?"
|
||||||
removed: "削除しました"
|
removed: "Usunięto"
|
||||||
admin/views/hashtags.vue:
|
admin/views/hashtags.vue:
|
||||||
hided-tags: "Hidden Tags"
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/welcome.vue:
|
desktop/views/pages/welcome.vue:
|
||||||
@ -1162,7 +1190,7 @@ desktop/views/pages/user/user.profile.vue:
|
|||||||
mute: "Wycisz"
|
mute: "Wycisz"
|
||||||
muted: "Wyciszyłeś"
|
muted: "Wyciszyłeś"
|
||||||
unmute: "Cofnij wyciszenie"
|
unmute: "Cofnij wyciszenie"
|
||||||
block: "ブロックする"
|
block: "Zablokuj"
|
||||||
unblock: "ブロック解除"
|
unblock: "ブロック解除"
|
||||||
block-confirm: "このユーザーをブロックしますか?"
|
block-confirm: "このユーザーをブロックしますか?"
|
||||||
push-to-a-list: "Dodaj do listy"
|
push-to-a-list: "Dodaj do listy"
|
||||||
@ -1173,9 +1201,9 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
is-bot: "To konto jest botem"
|
is-bot: "To konto jest botem"
|
||||||
years-old: "{age} lat"
|
years-old: "{age} lat"
|
||||||
year: "年"
|
year: "/"
|
||||||
month: "月"
|
month: "/"
|
||||||
day: "日"
|
day: "-"
|
||||||
desktop/views/pages/user/user.timeline.vue:
|
desktop/views/pages/user/user.timeline.vue:
|
||||||
default: "Wpisy"
|
default: "Wpisy"
|
||||||
with-replies: "Wpisy i odpowiedzi"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
@ -1223,14 +1251,14 @@ mobile/views/components/drive-file-chooser.vue:
|
|||||||
mobile/views/components/drive-folder-chooser.vue:
|
mobile/views/components/drive-folder-chooser.vue:
|
||||||
select-folder: "Wybierz katalog"
|
select-folder: "Wybierz katalog"
|
||||||
mobile/views/components/drive.file.vue:
|
mobile/views/components/drive.file.vue:
|
||||||
nsfw: "閲覧注意"
|
nsfw: "NSFW"
|
||||||
mobile/views/components/drive.file-detail.vue:
|
mobile/views/components/drive.file-detail.vue:
|
||||||
download: "Pobierz"
|
download: "Pobierz"
|
||||||
rename: "Zmień nazwę"
|
rename: "Zmień nazwę"
|
||||||
move: "Przenieś"
|
move: "Przenieś"
|
||||||
hash: "Hash (md5)"
|
hash: "Hash (md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "閲覧注意"
|
nsfw: "NSFW"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "閲覧注意に設定"
|
||||||
unmark-as-sensitive: "閲覧注意を解除"
|
unmark-as-sensitive: "閲覧注意を解除"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
@ -1303,7 +1331,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
game: "Gry"
|
game: "Gry"
|
||||||
darkmode: "Tryb ciemny"
|
darkmode: "Tryb ciemny"
|
||||||
settings: "Ustawienia"
|
settings: "Ustawienia"
|
||||||
admin: "管理"
|
admin: "Admin"
|
||||||
about: "O Misskey"
|
about: "O Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
|
||||||
@ -1327,8 +1355,8 @@ mobile/views/pages/home.vue:
|
|||||||
local: "Lokalne"
|
local: "Lokalne"
|
||||||
hybrid: "Społeczność"
|
hybrid: "Społeczność"
|
||||||
global: "Globalne"
|
global: "Globalne"
|
||||||
mentions: "あなた宛て"
|
mentions: "Wspomnienia"
|
||||||
messages: "メッセージ"
|
messages: "Wiadomości"
|
||||||
mobile/views/pages/tag.vue:
|
mobile/views/pages/tag.vue:
|
||||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||||
mobile/views/pages/welcome.vue:
|
mobile/views/pages/welcome.vue:
|
||||||
@ -1370,37 +1398,25 @@ mobile/views/pages/settings.vue:
|
|||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||||
show-renoted-my-notes: "自分の投稿のRenoteを表示する"
|
show-renoted-my-notes: "Pokazuj moje udostępnione wpisy"
|
||||||
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
show-local-renotes: "ローカルの投稿のRenoteを表示する"
|
||||||
post-style: "Styl wpisów"
|
post-style: "Styl wpisów"
|
||||||
post-style-standard: "Standardowy"
|
post-style-standard: "Standardowy"
|
||||||
post-style-smart: "Inteligentny"
|
post-style-smart: "Inteligentny"
|
||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "Dół"
|
||||||
notification-position-top: "上"
|
notification-position-top: "Góra"
|
||||||
theme: "テーマ"
|
theme: "Motyw"
|
||||||
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: "投稿の公開範囲"
|
note-visibility: "Widoczność wpisów"
|
||||||
default-note-visibility: "デフォルトの公開範囲"
|
default-note-visibility: "Domyślna widoczność"
|
||||||
remember-note-visibility: "投稿の公開範囲を記憶する"
|
remember-note-visibility: "Zapamiętaj widoczność wpisów"
|
||||||
web-search-engine: "ウェブ検索エンジン"
|
web-search-engine: "Wyszukiwarka internetowa"
|
||||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
web-search-engine-desc: "Np: https://www.google.com/?#q={{query}}"
|
||||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||||
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
||||||
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
||||||
twitter: "Połączenie z Twitterem"
|
|
||||||
twitter-connect: "Połącz z Twitterem"
|
|
||||||
twitter-reconnect: "Połącz ponownie"
|
|
||||||
twitter-disconnect: "Rozłącz"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Aktualizacja Misskey"
|
update: "Aktualizacja Misskey"
|
||||||
version: "Wersja:"
|
version: "Wersja:"
|
||||||
latest-version: "Najnowsza wersja:"
|
latest-version: "Najnowsza wersja:"
|
||||||
@ -1412,10 +1428,10 @@ 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: "サウンド"
|
sound: "Dźwięk"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "Włącz dźwięk"
|
||||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
password: "パスワード"
|
password: "Hasło"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "Śledzi Cię"
|
follows-you: "Śledzi Cię"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
@ -1425,13 +1441,13 @@ mobile/views/pages/user.vue:
|
|||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
media: "Multimedia"
|
media: "Multimedia"
|
||||||
is-suspended: "To konto zostało zablokowane"
|
is-suspended: "To konto zostało zablokowane"
|
||||||
mute: "ミュート"
|
mute: "Wycisz"
|
||||||
unmute: "ミュート解除"
|
unmute: "ミュート解除"
|
||||||
block: "ブロック"
|
block: "Zablokuj"
|
||||||
unblock: "ブロック解除"
|
unblock: "Odblokuj"
|
||||||
years-old: "{age} lat"
|
years-old: "{age} lat"
|
||||||
push-to-list: "リストに追加"
|
push-to-list: "Dodaj do listy"
|
||||||
select-list: "リストを選択してください"
|
select-list: "Wybierz listę"
|
||||||
list-pushed: "{user}を{list}に追加しました"
|
list-pushed: "{user}を{list}に追加しました"
|
||||||
mobile/views/pages/user/home.vue:
|
mobile/views/pages/user/home.vue:
|
||||||
recent-notes: "Ostatnie wpisy"
|
recent-notes: "Ostatnie wpisy"
|
||||||
@ -1451,38 +1467,38 @@ mobile/views/pages/user/home.notes.vue:
|
|||||||
mobile/views/pages/user/home.photos.vue:
|
mobile/views/pages/user/home.photos.vue:
|
||||||
no-photos: "Brak zdjęć"
|
no-photos: "Brak zdjęć"
|
||||||
deck:
|
deck:
|
||||||
widgets: "ウィジェット"
|
widgets: "Widżety"
|
||||||
home: "ホーム"
|
home: "Strona główna"
|
||||||
local: "ローカル"
|
local: "Lokalne"
|
||||||
hybrid: "ソーシャル"
|
hybrid: "Społeczność"
|
||||||
hashtag: "ハッシュタグ"
|
hashtag: "Hashtag"
|
||||||
global: "グローバル"
|
global: "Globalne"
|
||||||
mentions: "あなた宛て"
|
mentions: "Wspomnienia"
|
||||||
direct: "ダイレクト投稿"
|
direct: "Bezpośrednie wpisy"
|
||||||
notifications: "通知"
|
notifications: "Powiadomienia"
|
||||||
list: "リスト"
|
list: "Listy"
|
||||||
swap-left: "左に移動"
|
swap-left: "Przesuń w lewo"
|
||||||
swap-right: "右に移動"
|
swap-right: "Przesuń w prawo"
|
||||||
swap-up: "上に移動"
|
swap-up: "Przenieś w górę"
|
||||||
swap-down: "下に移動"
|
swap-down: "下に移動"
|
||||||
remove: "カラムを削除"
|
remove: "Usuń"
|
||||||
add-column: "カラムを追加"
|
add-column: "Dodaj kolumnę"
|
||||||
rename: "名前を変更"
|
rename: "Zmień nazwę"
|
||||||
stack-left: "左に重ねる"
|
stack-left: "Przypnij do lewej"
|
||||||
pop-right: "右に出す"
|
pop-right: "右に出す"
|
||||||
deck/deck.tl-column.vue:
|
deck/deck.tl-column.vue:
|
||||||
is-media-only: "メディア投稿のみ"
|
is-media-only: "Tylko wpisy z zawartością multimedialną"
|
||||||
is-media-view: "メディアビュー"
|
is-media-view: "Widok multimediów"
|
||||||
edit: "オプション"
|
edit: "Opcje"
|
||||||
deck/deck.user-column.vue:
|
deck/deck.user-column.vue:
|
||||||
posts: "投稿"
|
posts: "Wpisy"
|
||||||
following: "フォロー"
|
following: "Śledzeni"
|
||||||
followers: "フォロワー"
|
followers: "Śledzący"
|
||||||
images: "画像"
|
images: "Zdjęcia"
|
||||||
activity: "アクティビティ"
|
activity: "Aktywność"
|
||||||
timeline: "タイムライン"
|
timeline: "Oś czasu"
|
||||||
pinned-notes: "ピン留めされた投稿"
|
pinned-notes: "Przypięte posty"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "Dodaj do listy"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
|
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
|
||||||
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
|
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
|
||||||
@ -1508,12 +1524,12 @@ docs:
|
|||||||
dev/views/index.vue:
|
dev/views/index.vue:
|
||||||
manage-apps: "Zarządzaj aplikacjami"
|
manage-apps: "Zarządzaj aplikacjami"
|
||||||
dev/views/apps.vue:
|
dev/views/apps.vue:
|
||||||
manage-apps: "アプリを管理"
|
manage-apps: "Zarządzaj aplikacjami"
|
||||||
create-app: "アプリ作成"
|
create-app: "アプリ作成"
|
||||||
app-missing: "アプリなし"
|
app-missing: "Brak aplikacji"
|
||||||
dev/views/new-app.vue:
|
dev/views/new-app.vue:
|
||||||
create-app: "アプリケーションの作成"
|
create-app: "アプリケーションの作成"
|
||||||
app-name: "アプリケーション名"
|
app-name: "Nazwa Aplikacji"
|
||||||
app-name-desc: "あなたのアプリの名称。"
|
app-name-desc: "あなたのアプリの名称。"
|
||||||
app-name-ex: "ex) Misskey for iOS"
|
app-name-ex: "ex) Misskey for iOS"
|
||||||
app-overview: "アプリの概要"
|
app-overview: "アプリの概要"
|
||||||
@ -1521,7 +1537,7 @@ dev/views/new-app.vue:
|
|||||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
app-desc-ex: "ex) Misskey iOSクライアント。"
|
||||||
callback-url: "コールバックURL (オプション)"
|
callback-url: "コールバックURL (オプション)"
|
||||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
||||||
authority: "権限"
|
authority: "Uprawnienia"
|
||||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
||||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報を見る。"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
|
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-white-black-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"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
always-show-nsfw: "常に閲覧注意のメディアを表示する"
|
||||||
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Enquetes"
|
polls: "Enquetes"
|
||||||
post-form: "Formulário de publicação"
|
post-form: "Formulário de publicação"
|
||||||
server: "Informações do servidor"
|
server: "Informações do servidor"
|
||||||
donation: "Doações"
|
|
||||||
nav: "Navegação"
|
nav: "Navegação"
|
||||||
tips: "Dicas"
|
tips: "Dicas"
|
||||||
hashtags: "Hashtags"
|
hashtags: "Hashtags"
|
||||||
dev: "アプリの作成に失敗しました。再度お試しください。"
|
dev: "アプリの作成に失敗しました。再度お試しください。"
|
||||||
ai-chan-kawaii: "藍ちゃかわいい"
|
ai-chan-kawaii: "藍ちゃかわいい"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
|
||||||
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
permission-ask: "Este aplicativo precisa das seguintes permissões:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "Você"
|
you: "Você"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "接続中"
|
connecting: "接続中"
|
||||||
reconnecting: "再接続中"
|
reconnecting: "再接続中"
|
||||||
connected: "接続完了"
|
connected: "接続完了"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connect: "接続する"
|
||||||
detail: "詳細..."
|
|
||||||
reconnect: "再接続する"
|
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
connected-to: "次のアカウントに接続されています"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Conectar à sua conta no Twitter"
|
|
||||||
twitter-reconnect: "Reconectar"
|
|
||||||
twitter-disconnect: "Desconectar"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Atualizar Misskey"
|
update: "Atualizar Misskey"
|
||||||
version: "Versão atual;"
|
version: "Versão atual;"
|
||||||
latest-version: "Última versão:"
|
latest-version: "Última versão:"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "Отключить анимированный текст в постах"
|
disable-animated-mfm: "Отключить анимированный текст в постах"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "Всегда показывать NSFW контент"
|
always-show-nsfw: "Всегда показывать NSFW контент"
|
||||||
always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW"
|
always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW"
|
||||||
show-full-acct: "ユーザー名のホストを省略しない"
|
show-full-acct: "ユーザー名のホストを省略しない"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "Голосования"
|
polls: "Голосования"
|
||||||
post-form: "投稿フォーム"
|
post-form: "投稿フォーム"
|
||||||
server: "Информация о сервере"
|
server: "Информация о сервере"
|
||||||
donation: "寄付のお願い"
|
|
||||||
nav: "ナビゲーション"
|
nav: "ナビゲーション"
|
||||||
tips: "ヒント"
|
tips: "ヒント"
|
||||||
hashtags: "Хэштеги"
|
hashtags: "Хэштеги"
|
||||||
dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз."
|
dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз."
|
||||||
ai-chan-kawaii: "Ai-chan kawaii!"
|
ai-chan-kawaii: "Ai-chan kawaii!"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?"
|
share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?"
|
||||||
permission-ask: "このアプリは次の権限を要求しています:"
|
permission-ask: "このアプリは次の権限を要求しています:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隠す"
|
hide: "隠す"
|
||||||
show: "もっと見る"
|
show: "もっと見る"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "ユーザーを探す"
|
search-user: "ユーザーを探す"
|
||||||
you: "あなた"
|
you: "あなた"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "接続中"
|
connecting: "接続中"
|
||||||
reconnecting: "再接続中"
|
reconnecting: "再接続中"
|
||||||
connected: "接続完了"
|
connected: "接続完了"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
title: "サービス連携"
|
||||||
connected-to: "次のTwitterアカウントに接続されています"
|
connect: "接続する"
|
||||||
detail: "詳細..."
|
|
||||||
reconnect: "再接続する"
|
|
||||||
connect: "Twitterと接続する"
|
|
||||||
disconnect: "切断する"
|
disconnect: "切断する"
|
||||||
|
connected-to: "次のアカウントに接続されています"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
connected-to: "次のGitHubアカウントに接続されています"
|
connected-to: "次のGitHubアカウントに接続されています"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "アカウント"
|
account: "アカウント"
|
||||||
location: "場所"
|
location: "場所"
|
||||||
description: "自己紹介"
|
description: "自己紹介"
|
||||||
|
language: "言語"
|
||||||
birthday: "誕生日"
|
birthday: "誕生日"
|
||||||
avatar: "アイコン"
|
avatar: "アイコン"
|
||||||
banner: "バナー"
|
banner: "バナー"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今日:"
|
today: "今日:"
|
||||||
this-month: "今月:"
|
this-month: "今月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "寄付のお願い"
|
|
||||||
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "フォトストリーム"
|
title: "フォトストリーム"
|
||||||
no-photos: "写真はありません"
|
no-photos: "写真はありません"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "まゆかわいいよまゆ"
|
tips-line23: "まゆかわいいよまゆ"
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "円形のアイコンを使用"
|
circle-icons: "円形のアイコンを使用"
|
||||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
|
||||||
show-clock-on-header: "右上に時計を表示する"
|
show-clock-on-header: "右上に時計を表示する"
|
||||||
show-reply-target: "リプライ先を表示する"
|
show-reply-target: "リプライ先を表示する"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
|
||||||
show-maps: "マップの自動展開"
|
show-maps: "マップの自動展開"
|
||||||
remain-deleted-note: "削除された投稿を表示し続ける"
|
remain-deleted-note: "削除された投稿を表示し続ける"
|
||||||
deck-column-align: "デッキのカラムの位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンドを有効にする"
|
enable-sounds: "サウンドを有効にする"
|
||||||
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||||
not-match: "新しいパスワードが一致しません"
|
not-match: "新しいパスワードが一致しません"
|
||||||
changed: "パスワードを変更しました"
|
changed: "パスワードを変更しました"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "この投稿は非公開です"
|
private: "この投稿は非公開です"
|
||||||
deleted: "この投稿は削除されました"
|
deleted: "この投稿は削除されました"
|
||||||
media-count: "{}つのメディア"
|
media-count: "{}つのメディア"
|
||||||
poll: "アンケート"
|
poll: "アンケート"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "タスクマネージャ"
|
title: "タスクマネージャ"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "インスタンスの紹介"
|
instance-description: "インスタンスの紹介"
|
||||||
host: "ホスト"
|
host: "ホスト"
|
||||||
banner-url: "バナー画像URL"
|
banner-url: "バナー画像URL"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "インスタンスの対象言語"
|
languages: "インスタンスの対象言語"
|
||||||
languages-desc: "スペースで区切って複数設定できます。"
|
languages-desc: "スペースで区切って複数設定できます。"
|
||||||
maintainer-config: "管理者情報"
|
maintainer-config: "管理者情報"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "リクエスト"
|
network-requests: "リクエスト"
|
||||||
network-time: "応答時間"
|
network-time: "応答時間"
|
||||||
network-usage: "通信量"
|
network-usage: "通信量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "ユーザー名またはユーザーID"
|
username-or-userid: "ユーザー名またはユーザーID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
|
||||||
load-raw-images: "添付された画像を高画質で表示する"
|
load-raw-images: "添付された画像を高画質で表示する"
|
||||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||||
twitter: "Twitter連携"
|
|
||||||
twitter-connect: "Twitterアカウントに接続する"
|
|
||||||
twitter-reconnect: "再接続する"
|
|
||||||
twitter-disconnect: "切断する"
|
|
||||||
github: "GitHub連携"
|
|
||||||
github-connect: "GitHubアカウントに接続する"
|
|
||||||
github-reconnect: "再接続する"
|
|
||||||
github-disconnect: "切断する"
|
|
||||||
discord: "Discord連携"
|
|
||||||
discord-connect: "Discordアカウントに接続する"
|
|
||||||
discord-reconnect: "再接続する"
|
|
||||||
discord-disconnect: "切断する"
|
|
||||||
update: "Misskey Update"
|
update: "Misskey Update"
|
||||||
version: "バージョン:"
|
version: "バージョン:"
|
||||||
latest-version: "最新のバージョン:"
|
latest-version: "最新のバージョン:"
|
||||||
|
@ -110,9 +110,10 @@ common:
|
|||||||
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
|
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
|
||||||
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
|
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
|
||||||
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
|
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
|
||||||
use-contrast-reversi-stones: "Make the stone color clear in Reversi"
|
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
||||||
verified-user: "认证用户"
|
verified-user: "认证用户"
|
||||||
disable-animated-mfm: "在帖子中禁用动画文本"
|
disable-animated-mfm: "在帖子中禁用动画文本"
|
||||||
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
always-show-nsfw: "总是显示 NSFW 的内容"
|
always-show-nsfw: "总是显示 NSFW 的内容"
|
||||||
always-mark-nsfw: "总是用 NSFW 来标记附件"
|
always-mark-nsfw: "总是用 NSFW 来标记附件"
|
||||||
show-full-acct: "不要从用户名中忽略主机名"
|
show-full-acct: "不要从用户名中忽略主机名"
|
||||||
@ -158,12 +159,12 @@ common:
|
|||||||
polls: "投票"
|
polls: "投票"
|
||||||
post-form: "投稿形式"
|
post-form: "投稿形式"
|
||||||
server: "服务器信息"
|
server: "服务器信息"
|
||||||
donation: "捐助"
|
|
||||||
nav: "导航"
|
nav: "导航"
|
||||||
tips: "提示"
|
tips: "提示"
|
||||||
hashtags: "标签"
|
hashtags: "标签"
|
||||||
dev: "构建应用程序失败,请再试一次。"
|
dev: "构建应用程序失败,请再试一次。"
|
||||||
ai-chan-kawaii: "Ai-chan kawaii!"
|
ai-chan-kawaii: "Ai-chan kawaii!"
|
||||||
|
you: "あなた"
|
||||||
auth/views/form.vue:
|
auth/views/form.vue:
|
||||||
share-access: "您要允许<i>{name}</i>来访问您的账户吗?"
|
share-access: "您要允许<i>{name}</i>来访问您的账户吗?"
|
||||||
permission-ask: "这个应用程序需要以下权限:"
|
permission-ask: "这个应用程序需要以下权限:"
|
||||||
@ -296,6 +297,8 @@ common/views/components/theme.vue:
|
|||||||
common/views/components/cw-button.vue:
|
common/views/components/cw-button.vue:
|
||||||
hide: "隐藏"
|
hide: "隐藏"
|
||||||
show: "查看更多"
|
show: "查看更多"
|
||||||
|
chars: "{count}文字"
|
||||||
|
files: "{count}ファイル"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "查找用户"
|
search-user: "查找用户"
|
||||||
you: "您"
|
you: "您"
|
||||||
@ -400,13 +403,11 @@ common/views/components/stream-indicator.vue:
|
|||||||
connecting: "连接中"
|
connecting: "连接中"
|
||||||
reconnecting: "重新连接中"
|
reconnecting: "重新连接中"
|
||||||
connected: "已连接"
|
connected: "已连接"
|
||||||
common/views/components/twitter-setting.vue:
|
common/views/components/integration-settings.vue:
|
||||||
description: "当您用Twitter连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用Twitter登录。"
|
title: "サービス連携"
|
||||||
connected-to: "此账户已连接Twitter"
|
connect: "接続する"
|
||||||
detail: "详细信息..."
|
disconnect: "切断する"
|
||||||
reconnect: "重新连接"
|
connected-to: "次のアカウントに接続されています"
|
||||||
connect: "连接您的推特账户"
|
|
||||||
disconnect: "未连接"
|
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "当您用GitHub连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用GitHub登录。"
|
description: "当您用GitHub连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用GitHub登录。"
|
||||||
connected-to: "此账户已连接GitHub"
|
connected-to: "此账户已连接GitHub"
|
||||||
@ -452,6 +453,7 @@ common/views/components/profile-editor.vue:
|
|||||||
account: "账户"
|
account: "账户"
|
||||||
location: "位置"
|
location: "位置"
|
||||||
description: "关于我"
|
description: "关于我"
|
||||||
|
language: "言語"
|
||||||
birthday: "生日"
|
birthday: "生日"
|
||||||
avatar: "头像"
|
avatar: "头像"
|
||||||
banner: "背景"
|
banner: "背景"
|
||||||
@ -481,9 +483,6 @@ common/views/widgets/calendar.vue:
|
|||||||
today: "今天:"
|
today: "今天:"
|
||||||
this-month: "本月:"
|
this-month: "本月:"
|
||||||
this-year: "今年:"
|
this-year: "今年:"
|
||||||
common/views/widgets/donation.vue:
|
|
||||||
title: "请求捐助"
|
|
||||||
text: "为了保持 Misskey 持续运行, 这会对域名,服务器等产生一些费用。 如果您有兴趣提供捐助,请联系{}。感谢您的贡献!"
|
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "图片轮播"
|
title: "图片轮播"
|
||||||
no-photos: "没有图片"
|
no-photos: "没有图片"
|
||||||
@ -524,6 +523,8 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line23: "Mayu的眉毛非常可爱。"
|
tips-line23: "Mayu的眉毛非常可爱。"
|
||||||
tips-line24: "Misskey自2014年开始运营。"
|
tips-line24: "Misskey自2014年开始运营。"
|
||||||
tips-line25: "在与通知功能兼容的浏览器中,您可以在Misskey未打开的情况下接收通知"
|
tips-line25: "在与通知功能兼容的浏览器中,您可以在Misskey未打开的情况下接收通知"
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "用 {}登录"
|
signed-in-as: "用 {}登录"
|
||||||
following: "正在关注"
|
following: "正在关注"
|
||||||
@ -764,7 +765,6 @@ desktop/views/components/settings.vue:
|
|||||||
circle-icons: "使用圆形图标"
|
circle-icons: "使用圆形图标"
|
||||||
contrasted-acct: "增加用户名的对比度"
|
contrasted-acct: "增加用户名的对比度"
|
||||||
post-form-on-timeline: "在时间线顶部显示帖子表单"
|
post-form-on-timeline: "在时间线顶部显示帖子表单"
|
||||||
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
|
|
||||||
show-clock-on-header: "在右上角显示时钟"
|
show-clock-on-header: "在右上角显示时钟"
|
||||||
show-reply-target: "显示回复目标"
|
show-reply-target: "显示回复目标"
|
||||||
timeline: "时间线"
|
timeline: "时间线"
|
||||||
@ -773,9 +773,16 @@ desktop/views/components/settings.vue:
|
|||||||
show-local-renotes: "在时间线中显示Local Renote(s)"
|
show-local-renotes: "在时间线中显示Local Renote(s)"
|
||||||
show-maps: "显示地图以显示位置"
|
show-maps: "显示地图以显示位置"
|
||||||
remain-deleted-note: "继续显示已删除的帖子"
|
remain-deleted-note: "继续显示已删除的帖子"
|
||||||
deck-column-align: "甲板柱的位置"
|
deck-column-align: "デッキのカラムの配置"
|
||||||
deck-column-align-center: "中央"
|
deck-column-align-center: "中央"
|
||||||
deck-column-align-left: "左"
|
deck-column-align-left: "左"
|
||||||
|
deck-column-align-flexible: "フレキシブル"
|
||||||
|
deck-column-width: "デッキのカラムの幅"
|
||||||
|
deck-column-width-narrow: "狭"
|
||||||
|
deck-column-width-narrower: "やや狭"
|
||||||
|
deck-column-width-normal: "普通"
|
||||||
|
deck-column-width-wider: "やや広"
|
||||||
|
deck-column-width-wide: "広"
|
||||||
sound: "声音"
|
sound: "声音"
|
||||||
enable-sounds: "开启声音"
|
enable-sounds: "开启声音"
|
||||||
enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。"
|
enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。"
|
||||||
@ -870,11 +877,17 @@ common/views/components/password-settings.vue:
|
|||||||
enter-new-password-again: "请再次输入新密码"
|
enter-new-password-again: "请再次输入新密码"
|
||||||
not-match: "新密码不匹配"
|
not-match: "新密码不匹配"
|
||||||
changed: "密码已更改"
|
changed: "密码已更改"
|
||||||
|
failed: "パスワード変更に失敗しました"
|
||||||
desktop/views/components/sub-note-content.vue:
|
desktop/views/components/sub-note-content.vue:
|
||||||
private: "这个帖子是私密的"
|
private: "这个帖子是私密的"
|
||||||
deleted: "帖子已删除"
|
deleted: "帖子已删除"
|
||||||
media-count: "附加{}媒体"
|
media-count: "附加{}媒体"
|
||||||
poll: "投票"
|
poll: "投票"
|
||||||
|
desktop/views/components/settings.tags.vue:
|
||||||
|
title: "タグ"
|
||||||
|
query: "クエリ (省略可)"
|
||||||
|
add: "追加"
|
||||||
|
save: "保存"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
title: "任务管理器"
|
title: "任务管理器"
|
||||||
desktop/views/components/timeline.vue:
|
desktop/views/components/timeline.vue:
|
||||||
@ -957,6 +970,7 @@ admin/views/instance.vue:
|
|||||||
instance-description: "实例介绍"
|
instance-description: "实例介绍"
|
||||||
host: "主机名"
|
host: "主机名"
|
||||||
banner-url: "背景图片地址"
|
banner-url: "背景图片地址"
|
||||||
|
error-image-url: "エラー画像URL"
|
||||||
languages: "实例语言"
|
languages: "实例语言"
|
||||||
languages-desc: "您可以添加多个,以空格分隔。"
|
languages-desc: "您可以添加多个,以空格分隔。"
|
||||||
maintainer-config: "管理员信息"
|
maintainer-config: "管理员信息"
|
||||||
@ -1040,6 +1054,20 @@ admin/views/charts.vue:
|
|||||||
network-requests: "请求"
|
network-requests: "请求"
|
||||||
network-time: "响应时间"
|
network-time: "响应时间"
|
||||||
network-usage: "网络流量"
|
network-usage: "网络流量"
|
||||||
|
admin/views/drive.vue:
|
||||||
|
sort:
|
||||||
|
title: "ソート"
|
||||||
|
createdAtAsc: "アップロード日時が古い順"
|
||||||
|
createdAtDesc: "アップロード日時が新しい順"
|
||||||
|
sizeAsc: "サイズが小さい順"
|
||||||
|
sizeDesc: "サイズが大きい順"
|
||||||
|
origin:
|
||||||
|
title: "オリジン"
|
||||||
|
combined: "ローカル+リモート"
|
||||||
|
local: "ローカル"
|
||||||
|
remote: "リモート"
|
||||||
|
delete: "削除"
|
||||||
|
deleted: "削除しました"
|
||||||
admin/views/users.vue:
|
admin/views/users.vue:
|
||||||
operation: "操作"
|
operation: "操作"
|
||||||
username-or-userid: "用户名或用户ID"
|
username-or-userid: "用户名或用户ID"
|
||||||
@ -1389,18 +1417,6 @@ mobile/views/pages/settings.vue:
|
|||||||
disable-via-mobile: "不要将帖子标记为“来自手机”"
|
disable-via-mobile: "不要将帖子标记为“来自手机”"
|
||||||
load-raw-images: "以原始质量显示附加图像"
|
load-raw-images: "以原始质量显示附加图像"
|
||||||
load-remote-media: "显示来自远程服务器的媒体"
|
load-remote-media: "显示来自远程服务器的媒体"
|
||||||
twitter: "Twitter integration"
|
|
||||||
twitter-connect: "连接到您的 Twitter"
|
|
||||||
twitter-reconnect: "重新连接"
|
|
||||||
twitter-disconnect: "未连接"
|
|
||||||
github: "GitHub Integration"
|
|
||||||
github-connect: "连接到您的 GitHub"
|
|
||||||
github-reconnect: "重新连接"
|
|
||||||
github-disconnect: "未连接"
|
|
||||||
discord: "Discord Integration"
|
|
||||||
discord-connect: "连接到您的 Discord"
|
|
||||||
discord-reconnect: "重新连接"
|
|
||||||
discord-disconnect: "未连接"
|
|
||||||
update: "更新 Misskey"
|
update: "更新 Misskey"
|
||||||
version: "当前版本:"
|
version: "当前版本:"
|
||||||
latest-version: "最新版本:"
|
latest-version: "最新版本:"
|
||||||
|
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": "10.60.4",
|
"version": "10.66.1",
|
||||||
"clientVersion": "2.0.12401",
|
"clientVersion": "2.0.12859",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -34,10 +34,9 @@
|
|||||||
"@types/debug": "0.0.31",
|
"@types/debug": "0.0.31",
|
||||||
"@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.28",
|
"@types/elasticsearch": "5.0.29",
|
||||||
"@types/file-type": "5.2.2",
|
"@types/file-type": "5.2.2",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
"@types/gulp-htmlmin": "1.3.32",
|
|
||||||
"@types/gulp-mocha": "0.0.32",
|
"@types/gulp-mocha": "0.0.32",
|
||||||
"@types/gulp-rename": "0.0.33",
|
"@types/gulp-rename": "0.0.33",
|
||||||
"@types/gulp-replace": "0.0.31",
|
"@types/gulp-replace": "0.0.31",
|
||||||
@ -48,7 +47,7 @@
|
|||||||
"@types/js-yaml": "3.11.2",
|
"@types/js-yaml": "3.11.2",
|
||||||
"@types/katex": "0.5.0",
|
"@types/katex": "0.5.0",
|
||||||
"@types/koa": "2.0.47",
|
"@types/koa": "2.0.47",
|
||||||
"@types/koa-bodyparser": "5.0.1",
|
"@types/koa-bodyparser": "5.0.2",
|
||||||
"@types/koa-compress": "2.0.8",
|
"@types/koa-compress": "2.0.8",
|
||||||
"@types/koa-favicon": "2.0.19",
|
"@types/koa-favicon": "2.0.19",
|
||||||
"@types/koa-logger": "3.1.1",
|
"@types/koa-logger": "3.1.1",
|
||||||
@ -83,13 +82,13 @@
|
|||||||
"@types/tinycolor2": "1.4.1",
|
"@types/tinycolor2": "1.4.1",
|
||||||
"@types/tmp": "0.0.33",
|
"@types/tmp": "0.0.33",
|
||||||
"@types/uuid": "3.4.4",
|
"@types/uuid": "3.4.4",
|
||||||
"@types/webpack": "4.4.19",
|
"@types/webpack": "4.4.20",
|
||||||
"@types/webpack-stream": "3.2.10",
|
"@types/webpack-stream": "3.2.10",
|
||||||
"@types/websocket": "0.0.40",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.1",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"apexcharts": "2.2.3",
|
"apexcharts": "2.4.2",
|
||||||
"autobind-decorator": "2.3.1",
|
"autobind-decorator": "2.4.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
@ -107,7 +106,7 @@
|
|||||||
"debug": "4.1.0",
|
"debug": "4.1.0",
|
||||||
"deep-equal": "1.0.1",
|
"deep-equal": "1.0.1",
|
||||||
"deepcopy": "0.6.3",
|
"deepcopy": "0.6.3",
|
||||||
"diskusage": "0.2.5",
|
"diskusage": "1.0.0",
|
||||||
"double-ended-queue": "2.1.0-0",
|
"double-ended-queue": "2.1.0-0",
|
||||||
"elasticsearch": "15.2.0",
|
"elasticsearch": "15.2.0",
|
||||||
"emojilib": "2.4.0",
|
"emojilib": "2.4.0",
|
||||||
@ -115,15 +114,14 @@
|
|||||||
"eslint": "5.8.0",
|
"eslint": "5.8.0",
|
||||||
"eslint-plugin-vue": "4.7.1",
|
"eslint-plugin-vue": "4.7.1",
|
||||||
"eventemitter3": "3.1.0",
|
"eventemitter3": "3.1.0",
|
||||||
|
"feed": "2.0.2",
|
||||||
"file-loader": "2.0.0",
|
"file-loader": "2.0.0",
|
||||||
"file-type": "10.4.0",
|
"file-type": "10.6.0",
|
||||||
"fuckadblock": "3.2.1",
|
"fuckadblock": "3.2.1",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
"gulp-htmlmin": "5.0.1",
|
|
||||||
"gulp-imagemin": "4.1.0",
|
"gulp-imagemin": "4.1.0",
|
||||||
"gulp-mocha": "6.0.0",
|
"gulp-mocha": "6.0.0",
|
||||||
"gulp-pug": "4.0.1",
|
|
||||||
"gulp-rename": "1.4.0",
|
"gulp-rename": "1.4.0",
|
||||||
"gulp-replace": "1.0.0",
|
"gulp-replace": "1.0.0",
|
||||||
"gulp-sourcemaps": "2.6.4",
|
"gulp-sourcemaps": "2.6.4",
|
||||||
@ -158,7 +156,7 @@
|
|||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"langmap": "0.0.16",
|
"langmap": "0.0.16",
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.1.0",
|
||||||
"minio": "7.0.1",
|
"minio": "7.0.2",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
@ -213,12 +211,12 @@
|
|||||||
"ts-loader": "5.3.1",
|
"ts-loader": "5.3.1",
|
||||||
"ts-node": "7.0.1",
|
"ts-node": "7.0.1",
|
||||||
"tslint": "5.10.0",
|
"tslint": "5.10.0",
|
||||||
"typescript": "3.1.6",
|
"typescript": "3.2.2",
|
||||||
"typescript-eslint-parser": "21.0.1",
|
"typescript-eslint-parser": "21.0.2",
|
||||||
"uglify-es": "3.3.9",
|
"uglify-es": "3.3.9",
|
||||||
"url-loader": "1.1.2",
|
"url-loader": "1.1.2",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
"v-animate-css": "0.0.2",
|
"v-animate-css": "0.0.3",
|
||||||
"vue": "2.5.17",
|
"vue": "2.5.17",
|
||||||
"vue-color": "2.7.0",
|
"vue-color": "2.7.0",
|
||||||
"vue-content-loading": "1.5.3",
|
"vue-content-loading": "1.5.3",
|
||||||
@ -228,10 +226,11 @@
|
|||||||
"vue-loader": "15.4.2",
|
"vue-loader": "15.4.2",
|
||||||
"vue-marquee-text-component": "1.1.0",
|
"vue-marquee-text-component": "1.1.0",
|
||||||
"vue-router": "3.0.2",
|
"vue-router": "3.0.2",
|
||||||
|
"vue-sequential-entrance": "1.1.3",
|
||||||
"vue-style-loader": "4.1.2",
|
"vue-style-loader": "4.1.2",
|
||||||
"vue-svg-inline-loader": "1.2.2",
|
"vue-svg-inline-loader": "1.2.4",
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.17.0",
|
||||||
"vuewordcloud": "18.7.11",
|
"vuewordcloud": "18.7.11",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
|
@ -61,11 +61,12 @@ export default abstract class Chart<T> {
|
|||||||
|
|
||||||
constructor(name: string, grouped = false) {
|
constructor(name: string, grouped = false) {
|
||||||
this.collection = db.get<Log<T>>(`chart.${name}`);
|
this.collection = db.get<Log<T>>(`chart.${name}`);
|
||||||
if (grouped) {
|
const keys = {
|
||||||
this.collection.createIndex({ span: -1, date: -1, group: -1 }, { unique: true });
|
span: -1,
|
||||||
} else {
|
date: -1
|
||||||
this.collection.createIndex({ span: -1, date: -1 }, { unique: true });
|
} as { [key: string]: 1 | -1; };
|
||||||
}
|
if (grouped) keys.group = -1;
|
||||||
|
this.collection.createIndex(keys, { unique: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
@ -73,14 +74,14 @@ export default abstract class Chart<T> {
|
|||||||
const query: Obj = {};
|
const query: Obj = {};
|
||||||
|
|
||||||
const dive = (x: Obj, path: string) => {
|
const dive = (x: Obj, path: string) => {
|
||||||
Object.entries(x).forEach(([k, v]) => {
|
for (const [k, v] of Object.entries(x)) {
|
||||||
const p = path ? `${path}.${k}` : k;
|
const p = path ? `${path}.${k}` : k;
|
||||||
if (typeof v === 'number') {
|
if (typeof v === 'number') {
|
||||||
query[p] = v;
|
query[p] = v;
|
||||||
} else {
|
} else {
|
||||||
dive(v, p);
|
dive(v, p);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
dive(x, path);
|
dive(x, path);
|
||||||
@ -333,14 +334,14 @@ export default abstract class Chart<T> {
|
|||||||
* にする
|
* にする
|
||||||
*/
|
*/
|
||||||
const dive = (x: Obj, path?: string) => {
|
const dive = (x: Obj, path?: string) => {
|
||||||
Object.entries(x).forEach(([k, v]) => {
|
for (const [k, v] of Object.entries(x)) {
|
||||||
const p = path ? `${path}.${k}` : k;
|
const p = path ? `${path}.${k}` : k;
|
||||||
if (typeof v == 'object') {
|
if (typeof v == 'object') {
|
||||||
dive(v, p);
|
dive(v, p);
|
||||||
} else {
|
} else {
|
||||||
nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p)));
|
nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
dive(chart[0]);
|
dive(chart[0]);
|
||||||
|
@ -9,6 +9,7 @@ import './style.styl';
|
|||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = 'Admin';
|
document.title = 'Admin';
|
||||||
@ -19,6 +20,7 @@ init(launch => {
|
|||||||
base: '/admin/',
|
base: '/admin/',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/', component: Index },
|
{ path: '/', component: Index },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -56,7 +56,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onLogs(logs) {
|
onLogs(logs) {
|
||||||
logs.reverse().forEach(log => this.onLog(log));
|
for (const log of logs.reverse()) {
|
||||||
|
this.onLog(log)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -132,7 +132,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onStatsLog(statsLog) {
|
onStatsLog(statsLog) {
|
||||||
statsLog.reverse().forEach(stats => this.onStats(stats));
|
for (const stats of statsLog.reverse()) {
|
||||||
|
this.onStats(stats);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -127,12 +127,12 @@ export default Vue.extend({
|
|||||||
this.$root.api('instances', {
|
this.$root.api('instances', {
|
||||||
sort: '+notes'
|
sort: '+notes'
|
||||||
}).then(instances => {
|
}).then(instances => {
|
||||||
instances.forEach(i => {
|
for (const i of instances) {
|
||||||
i.bg = randomColor({
|
i.bg = randomColor({
|
||||||
seed: i.host,
|
seed: i.host,
|
||||||
luminosity: 'dark'
|
luminosity: 'dark'
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
this.instances = instances;
|
this.instances = instances;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
188
src/client/app/admin/views/drive.vue
Normal file
188
src/client/app/admin/views/drive.vue
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
<div class="pwnqwyet">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="faCloud"/> {{ $t('@.drive') }}</div>
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-horizon-group inputs>
|
||||||
|
<ui-select v-model="sort">
|
||||||
|
<span slot="label">{{ $t('sort.title') }}</span>
|
||||||
|
<option value="-createdAt">{{ $t('sort.createdAtAsc') }}</option>
|
||||||
|
<option value="+createdAt">{{ $t('sort.createdAtDesc') }}</option>
|
||||||
|
<option value="-size">{{ $t('sort.sizeAsc') }}</option>
|
||||||
|
<option value="+size">{{ $t('sort.sizeDesc') }}</option>
|
||||||
|
</ui-select>
|
||||||
|
<ui-select v-model="origin">
|
||||||
|
<span slot="label">{{ $t('origin.title') }}</span>
|
||||||
|
<option value="combined">{{ $t('origin.combined') }}</option>
|
||||||
|
<option value="local">{{ $t('origin.local') }}</option>
|
||||||
|
<option value="remote">{{ $t('origin.remote') }}</option>
|
||||||
|
</ui-select>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||||
|
<div class="kidvdlkg" v-for="file in files">
|
||||||
|
<div @click="file._open = !file._open">
|
||||||
|
<div>
|
||||||
|
<div class="thumbnail" :style="thumbnail(file)"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<header>
|
||||||
|
<b>{{ file.name }}</b>
|
||||||
|
<span class="username">@{{ file.user | acct }}</span>
|
||||||
|
</header>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<span style="margin-right:16px;">{{ file.type }}</span>
|
||||||
|
<span>{{ file.datasize | bytes }}</span>
|
||||||
|
</div>
|
||||||
|
<div><mk-time :time="file.createdAt" mode="detail"/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-show="file._open">
|
||||||
|
<ui-horizon-group>
|
||||||
|
<ui-button @click="toggleSensitive(file)" v-if="file.isSensitive"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button>
|
||||||
|
<ui-button @click="toggleSensitive(file)" v-else><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button>
|
||||||
|
<ui-button @click="del(file)"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</sequential-entrance>
|
||||||
|
<ui-button v-if="existMore" @click="fetch">{{ $t('@.load-more') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../i18n';
|
||||||
|
import { faCloud } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faTrashAlt, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('admin/views/drive.vue'),
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sort: '+createdAt',
|
||||||
|
origin: 'combined',
|
||||||
|
limit: 10,
|
||||||
|
offset: 0,
|
||||||
|
files: [],
|
||||||
|
existMore: false,
|
||||||
|
faCloud, faTrashAlt, faEye, faEyeSlash
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
sort() {
|
||||||
|
this.files = [];
|
||||||
|
this.offset = 0;
|
||||||
|
this.fetch();
|
||||||
|
},
|
||||||
|
|
||||||
|
origin() {
|
||||||
|
this.files = [];
|
||||||
|
this.offset = 0;
|
||||||
|
this.fetch();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.fetch();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
fetch() {
|
||||||
|
this.$root.api('admin/drive/files', {
|
||||||
|
origin: this.origin,
|
||||||
|
sort: this.sort,
|
||||||
|
offset: this.offset,
|
||||||
|
limit: this.limit + 1
|
||||||
|
}).then(files => {
|
||||||
|
if (files.length == this.limit + 1) {
|
||||||
|
files.pop();
|
||||||
|
this.existMore = true;
|
||||||
|
} else {
|
||||||
|
this.existMore = false;
|
||||||
|
}
|
||||||
|
for (const x of files) {
|
||||||
|
x._open = false;
|
||||||
|
}
|
||||||
|
this.files = this.files.concat(files);
|
||||||
|
this.offset += this.limit;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
thumbnail(file: any): any {
|
||||||
|
return {
|
||||||
|
'background-color': file.properties.avgColor && file.properties.avgColor.length == 3 ? `rgb(${file.properties.avgColor.join(',')})` : 'transparent',
|
||||||
|
'background-image': `url(${file.thumbnailUrl})`
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
async del(file: any) {
|
||||||
|
const process = async () => {
|
||||||
|
await this.$root.api('drive/files/delete', { fileId: file.id });
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('deleted')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleSensitive(file: any) {
|
||||||
|
this.$root.api('drive/files/update', {
|
||||||
|
fileId: file.id,
|
||||||
|
isSensitive: !file.isSensitive
|
||||||
|
});
|
||||||
|
|
||||||
|
file.isSensitive = !file.isSensitive;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.pwnqwyet
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding 16px
|
||||||
|
|
||||||
|
.kidvdlkg
|
||||||
|
padding 16px 0
|
||||||
|
border-top solid 1px var(--faceDivider)
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
display flex
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
> div:nth-child(1)
|
||||||
|
> .thumbnail
|
||||||
|
display block
|
||||||
|
width 64px
|
||||||
|
height 64px
|
||||||
|
background-size cover
|
||||||
|
background-position center center
|
||||||
|
|
||||||
|
> div:nth-child(2)
|
||||||
|
flex 1
|
||||||
|
padding-left 16px
|
||||||
|
|
||||||
|
@media (max-width 500px)
|
||||||
|
font-size 14px
|
||||||
|
|
||||||
|
> header
|
||||||
|
word-break break-word
|
||||||
|
|
||||||
|
> .username
|
||||||
|
margin-left 8px
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
</style>
|
@ -24,9 +24,12 @@
|
|||||||
|
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
|
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
|
||||||
<section v-for="emoji in emojis">
|
<section v-for="emoji in emojis" class="oryfrbft">
|
||||||
|
<div>
|
||||||
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
|
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
|
||||||
<ui-horizon-group inputs>
|
</div>
|
||||||
|
<div>
|
||||||
|
<ui-horizon-group>
|
||||||
<ui-input v-model="emoji.name">
|
<ui-input v-model="emoji.name">
|
||||||
<span>{{ $t('add-emoji.name') }}</span>
|
<span>{{ $t('add-emoji.name') }}</span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
@ -42,6 +45,7 @@
|
|||||||
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
|
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
|
||||||
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
|
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
</div>
|
</div>
|
||||||
@ -91,7 +95,9 @@ export default Vue.extend({
|
|||||||
fetchEmojis() {
|
fetchEmojis() {
|
||||||
this.$root.api('admin/emoji/list').then(emojis => {
|
this.$root.api('admin/emoji/list').then(emojis => {
|
||||||
emojis.reverse();
|
emojis.reverse();
|
||||||
emojis.forEach(e => e.aliases = (e.aliases || []).join(' '));
|
for (const e of emojis) {
|
||||||
|
e.aliases = (e.aliases || []).join(' ');
|
||||||
|
}
|
||||||
this.emojis = emojis;
|
this.emojis = emojis;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -148,4 +154,21 @@ export default Vue.extend({
|
|||||||
@media (min-width 500px)
|
@media (min-width 500px)
|
||||||
padding 16px
|
padding 16px
|
||||||
|
|
||||||
|
.oryfrbft
|
||||||
|
@media (min-width 500px)
|
||||||
|
display flex
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
@media (max-width 500px)
|
||||||
|
padding-bottom 16px
|
||||||
|
|
||||||
|
> img
|
||||||
|
vertical-align bottom
|
||||||
|
|
||||||
|
> div:last-child
|
||||||
|
flex 1
|
||||||
|
|
||||||
|
@media (min-width 500px)
|
||||||
|
padding-left 16px
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -15,19 +15,18 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="me">
|
<div class="me">
|
||||||
<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/>
|
<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/>
|
||||||
<p class="name">{{ $store.state.i | userName }}</p>
|
<p class="name"><mk-user-name :user="$store.state.i"/></p>
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
|
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
|
||||||
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
|
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
|
||||||
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
|
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
|
||||||
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
|
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
|
||||||
|
<li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li>
|
||||||
<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> -->
|
<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> -->
|
||||||
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
|
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
|
||||||
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
||||||
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
||||||
|
|
||||||
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
|
|
||||||
</ul>
|
</ul>
|
||||||
<div class="back-to-misskey">
|
<div class="back-to-misskey">
|
||||||
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
|
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
|
||||||
@ -45,7 +44,7 @@
|
|||||||
<div v-if="page == 'emoji'"><x-emoji/></div>
|
<div v-if="page == 'emoji'"><x-emoji/></div>
|
||||||
<div v-if="page == 'announcements'"><x-announcements/></div>
|
<div v-if="page == 'announcements'"><x-announcements/></div>
|
||||||
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
||||||
<div v-if="page == 'drive'"></div>
|
<div v-if="page == 'drive'"><x-drive/></div>
|
||||||
<div v-if="page == 'update'"></div>
|
<div v-if="page == 'update'"></div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@ -63,6 +62,7 @@ import XEmoji from "./emoji.vue";
|
|||||||
import XAnnouncements from "./announcements.vue";
|
import XAnnouncements from "./announcements.vue";
|
||||||
import XHashtags from "./hashtags.vue";
|
import XHashtags from "./hashtags.vue";
|
||||||
import XUsers from "./users.vue";
|
import XUsers from "./users.vue";
|
||||||
|
import XDrive from "./drive.vue";
|
||||||
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
|
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
@ -79,7 +79,8 @@ export default Vue.extend({
|
|||||||
XEmoji,
|
XEmoji,
|
||||||
XAnnouncements,
|
XAnnouncements,
|
||||||
XHashtags,
|
XHashtags,
|
||||||
XUsers
|
XUsers,
|
||||||
|
XDrive,
|
||||||
},
|
},
|
||||||
provide: {
|
provide: {
|
||||||
isMobile
|
isMobile
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
||||||
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
||||||
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
||||||
|
<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input>
|
||||||
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section class="fit-bottom">
|
<section class="fit-bottom">
|
||||||
@ -31,8 +32,10 @@
|
|||||||
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
|
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
|
||||||
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
|
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
|
||||||
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
|
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
|
||||||
|
<ui-horizon-group inputs>
|
||||||
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
|
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
|
||||||
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
|
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
|
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
|
||||||
@ -54,6 +57,15 @@
|
|||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
|
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<header><fa :icon="faBolt"/> {{ $t('serviceworker-config') }}</header>
|
||||||
|
<ui-switch v-model="enableServiceWorker">{{ $t('enable-serviceworker') }}<span slot="desc">{{ $t('serviceworker-info') }}</span></ui-switch>
|
||||||
|
<ui-info>{{ $t('vapid-info') }}<br><code>npm i web-push -g<br>web-push generate-vapid-keys</code></ui-info>
|
||||||
|
<ui-horizon-group inputs class="fit-bottom">
|
||||||
|
<ui-input v-model="swPublicKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-publickey') }}</ui-input>
|
||||||
|
<ui-input v-model="swPrivateKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-privatekey') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header>summaly Proxy</header>
|
<header>summaly Proxy</header>
|
||||||
<ui-input v-model="summalyProxy">URL</ui-input>
|
<ui-input v-model="summalyProxy">URL</ui-input>
|
||||||
@ -81,9 +93,11 @@
|
|||||||
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
|
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
|
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
|
||||||
<ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info>
|
<ui-horizon-group>
|
||||||
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
|
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
|
||||||
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
|
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
@ -92,9 +106,11 @@
|
|||||||
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
|
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
|
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
|
||||||
<ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info>
|
<ui-horizon-group>
|
||||||
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
|
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
|
||||||
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
|
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
@ -103,9 +119,11 @@
|
|||||||
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
|
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
|
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
|
||||||
<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info>
|
<ui-horizon-group>
|
||||||
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
|
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
|
||||||
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
|
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
|
||||||
|
</ui-horizon-group>
|
||||||
|
<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info>
|
||||||
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
@ -117,7 +135,7 @@ import Vue from 'vue';
|
|||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
import { url, host } from '../../config';
|
import { url, host } from '../../config';
|
||||||
import { toUnicode } from 'punycode';
|
import { toUnicode } from 'punycode';
|
||||||
import { faHeadset, faShieldAlt, faGhost, faUserPlus } from '@fortawesome/free-solid-svg-icons';
|
import { faHeadset, faShieldAlt, faGhost, faUserPlus, faBolt } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons';
|
import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
@ -132,6 +150,7 @@ export default Vue.extend({
|
|||||||
disableRegistration: false,
|
disableRegistration: false,
|
||||||
disableLocalTimeline: false,
|
disableLocalTimeline: false,
|
||||||
bannerUrl: null,
|
bannerUrl: null,
|
||||||
|
errorImageUrl: null,
|
||||||
name: null,
|
name: null,
|
||||||
description: null,
|
description: null,
|
||||||
languages: null,
|
languages: null,
|
||||||
@ -164,7 +183,10 @@ export default Vue.extend({
|
|||||||
smtpPort: null,
|
smtpPort: null,
|
||||||
smtpUser: null,
|
smtpUser: null,
|
||||||
smtpPass: null,
|
smtpPass: null,
|
||||||
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope
|
enableServiceWorker: false,
|
||||||
|
swPublicKey: null,
|
||||||
|
swPrivateKey: null,
|
||||||
|
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -172,7 +194,10 @@ export default Vue.extend({
|
|||||||
this.$root.getMeta().then(meta => {
|
this.$root.getMeta().then(meta => {
|
||||||
this.maintainerName = meta.maintainer.name;
|
this.maintainerName = meta.maintainer.name;
|
||||||
this.maintainerEmail = meta.maintainer.email;
|
this.maintainerEmail = meta.maintainer.email;
|
||||||
|
this.disableRegistration = meta.disableRegistration;
|
||||||
|
this.disableLocalTimeline = meta.disableLocalTimeline;
|
||||||
this.bannerUrl = meta.bannerUrl;
|
this.bannerUrl = meta.bannerUrl;
|
||||||
|
this.errorImageUrl = meta.errorImageUrl;
|
||||||
this.name = meta.name;
|
this.name = meta.name;
|
||||||
this.description = meta.description;
|
this.description = meta.description;
|
||||||
this.languages = meta.langs.join(' ');
|
this.languages = meta.langs.join(' ');
|
||||||
@ -204,6 +229,9 @@ export default Vue.extend({
|
|||||||
this.smtpPort = meta.smtpPort;
|
this.smtpPort = meta.smtpPort;
|
||||||
this.smtpUser = meta.smtpUser;
|
this.smtpUser = meta.smtpUser;
|
||||||
this.smtpPass = meta.smtpPass;
|
this.smtpPass = meta.smtpPass;
|
||||||
|
this.enableServiceWorker = meta.enableServiceWorker;
|
||||||
|
this.swPublicKey = meta.swPublickey;
|
||||||
|
this.swPrivateKey = meta.swPrivateKey;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -226,6 +254,7 @@ export default Vue.extend({
|
|||||||
disableRegistration: this.disableRegistration,
|
disableRegistration: this.disableRegistration,
|
||||||
disableLocalTimeline: this.disableLocalTimeline,
|
disableLocalTimeline: this.disableLocalTimeline,
|
||||||
bannerUrl: this.bannerUrl,
|
bannerUrl: this.bannerUrl,
|
||||||
|
errorImageUrl: this.errorImageUrl,
|
||||||
name: this.name,
|
name: this.name,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
langs: this.languages.split(' '),
|
langs: this.languages.split(' '),
|
||||||
@ -256,7 +285,10 @@ export default Vue.extend({
|
|||||||
smtpHost: this.smtpHost,
|
smtpHost: this.smtpHost,
|
||||||
smtpPort: parseInt(this.smtpPort, 10),
|
smtpPort: parseInt(this.smtpPort, 10),
|
||||||
smtpUser: this.smtpUser,
|
smtpUser: this.smtpUser,
|
||||||
smtpPass: this.smtpPass
|
smtpPass: this.smtpPass,
|
||||||
|
enableServiceWorker: this.enableServiceWorker,
|
||||||
|
swPublicKey: this.swPublicKey,
|
||||||
|
swPrivateKey: this.swPrivateKey
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$root.dialog({
|
this.$root.dialog({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
<option value="remote">{{ $t('users.origin.remote') }}</option>
|
<option value="remote">{{ $t('users.origin.remote') }}</option>
|
||||||
</ui-select>
|
</ui-select>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
|
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||||
<div class="kofvwchc" v-for="user in users">
|
<div class="kofvwchc" v-for="user in users">
|
||||||
<div>
|
<div>
|
||||||
<a :href="user | userPage(null, true)">
|
<a :href="user | userPage(null, true)">
|
||||||
@ -46,7 +47,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<header>
|
<header>
|
||||||
<b>{{ user | userName }}</b>
|
<b><mk-user-name :user="user"/></b>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
</header>
|
</header>
|
||||||
<div>
|
<div>
|
||||||
@ -57,6 +58,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</sequential-entrance>
|
||||||
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
|
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
@ -274,6 +276,9 @@ export default Vue.extend({
|
|||||||
flex 1
|
flex 1
|
||||||
padding-left 16px
|
padding-left 16px
|
||||||
|
|
||||||
|
@media (max-width 500px)
|
||||||
|
font-size 14px
|
||||||
|
|
||||||
> header
|
> header
|
||||||
> .username
|
> .username
|
||||||
margin-left 8px
|
margin-left 8px
|
||||||
|
@ -10,3 +10,19 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: scaleY(0);
|
transform: scaleY(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.entranceFromTop {
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-name: entranceFromTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes entranceFromTop {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-64px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -9,6 +9,7 @@ import './style.styl';
|
|||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
@ -20,6 +21,7 @@ init(launch => {
|
|||||||
base: '/auth/',
|
base: '/auth/',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/:token', component: Index },
|
{ path: '/:token', component: Index },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
//#region Apply theme
|
//#region Apply theme
|
||||||
const theme = localStorage.getItem('theme');
|
const theme = localStorage.getItem('theme');
|
||||||
if (theme) {
|
if (theme) {
|
||||||
Object.entries(JSON.parse(theme)).forEach(([k, v]) => {
|
for (const [k, v] of Object.entries(JSON.parse(theme))) {
|
||||||
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
@ -160,7 +160,7 @@
|
|||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
|
|
||||||
navigator.serviceWorker.getRegistrations().then(registrations => {
|
navigator.serviceWorker.getRegistrations().then(registrations => {
|
||||||
registrations.forEach(registration => registration.unregister());
|
for (const registration of registrations) registration.unregister();
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
|
@ -53,11 +53,10 @@ export default function<T extends object>(data: {
|
|||||||
mergeProps() {
|
mergeProps() {
|
||||||
if (data.props) {
|
if (data.props) {
|
||||||
const defaultProps = data.props();
|
const defaultProps = data.props();
|
||||||
Object.keys(defaultProps).forEach(prop => {
|
for (const prop of Object.keys(defaultProps)) {
|
||||||
if (!this.props.hasOwnProperty(prop)) {
|
if (this.props.hasOwnProperty(prop)) continue;
|
||||||
Vue.set(this.props, prop, defaultProps[prop]);
|
Vue.set(this.props, prop, defaultProps[prop]);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -28,15 +28,15 @@ const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): a
|
|||||||
shift: false
|
shift: false
|
||||||
} as pattern;
|
} as pattern;
|
||||||
|
|
||||||
part.trim().split('+').forEach(key => {
|
const keys = part.trim().split('+').map(x => x.trim().toLowerCase());
|
||||||
key = key.trim().toLowerCase();
|
for (const key of keys) {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'ctrl': pattern.ctrl = true; break;
|
case 'ctrl': pattern.ctrl = true; break;
|
||||||
case 'alt': pattern.alt = true; break;
|
case 'alt': pattern.alt = true; break;
|
||||||
case 'shift': pattern.shift = true; break;
|
case 'shift': pattern.shift = true; break;
|
||||||
default: pattern.which = keyCode(key).map(k => k.toLowerCase());
|
default: pattern.which = keyCode(key).map(k => k.toLowerCase());
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
return pattern;
|
return pattern;
|
||||||
});
|
});
|
||||||
@ -77,11 +77,7 @@ export default {
|
|||||||
const matched = match(e, action.patterns);
|
const matched = match(e, action.patterns);
|
||||||
|
|
||||||
if (matched) {
|
if (matched) {
|
||||||
if (el._hotkey_global) {
|
if (el._hotkey_global && match(e, targetReservedKeys)) return;
|
||||||
if (match(e, targetReservedKeys)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
@ -14,9 +14,10 @@ export default async function($root: any, force = false, silent = false) {
|
|||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage('clear');
|
||||||
}
|
}
|
||||||
|
|
||||||
navigator.serviceWorker.getRegistrations().then(registrations => {
|
const registrations = await navigator.serviceWorker.getRegistrations();
|
||||||
registrations.forEach(registration => registration.unregister());
|
for (const registration of registrations) {
|
||||||
});
|
registration.unregister();
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ export default function(type, data): Notification {
|
|||||||
|
|
||||||
case 'unreadMessagingMessage':
|
case 'unreadMessagingMessage':
|
||||||
return {
|
return {
|
||||||
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
|
title: '%i18n:common.notification.message-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split('{}')[1] ,
|
||||||
body: data.text, // TODO: getMessagingMessageSummary(data),
|
body: data.text, // TODO: getMessagingMessageSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
@ -30,7 +30,7 @@ export default function(type, data): Notification {
|
|||||||
case 'reversiInvited':
|
case 'reversiInvited':
|
||||||
return {
|
return {
|
||||||
title: '%i18n:common.notification.reversi-invited%',
|
title: '%i18n:common.notification.reversi-invited%',
|
||||||
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],
|
body: '%i18n:common.notification.reversi-invited-by%'.split('{}')[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split('{}')[1],
|
||||||
icon: data.parent.avatarUrl
|
icon: data.parent.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -38,21 +38,21 @@ export default function(type, data): Notification {
|
|||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case 'mention':
|
case 'mention':
|
||||||
return {
|
return {
|
||||||
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
|
title: '%i18n:common.notification.notified-by%'.split('{}')[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split('{}')[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'reply':
|
case 'reply':
|
||||||
return {
|
return {
|
||||||
title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1],
|
title: '%i18n:common.notification.reply-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split('{}')[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'quote':
|
case 'quote':
|
||||||
return {
|
return {
|
||||||
title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1],
|
title: '%i18n:common.notification.quoted-by%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split('{}')[1],
|
||||||
body: getNoteSummary(data),
|
body: getNoteSummary(data),
|
||||||
icon: data.user.avatarUrl
|
icon: data.user.avatarUrl
|
||||||
};
|
};
|
||||||
|
25
src/client/app/common/scripts/format-uptime.ts
Normal file
25
src/client/app/common/scripts/format-uptime.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* Format like the uptime command
|
||||||
|
*/
|
||||||
|
export default function(sec) {
|
||||||
|
if (!sec) return sec;
|
||||||
|
|
||||||
|
const day = Math.floor(sec / 86400);
|
||||||
|
const tod = sec % 86400;
|
||||||
|
|
||||||
|
// Days part in string: 2 days, 1 day, null
|
||||||
|
const d = day >= 2 ? `${day} days` : day >= 1 ? `${day} day` : null;
|
||||||
|
|
||||||
|
// Time part in string: 1 sec, 1 min, 1:01
|
||||||
|
const t
|
||||||
|
= tod < 60 ? `${Math.floor(tod)} sec`
|
||||||
|
: tod < 3600 ? `${Math.floor(tod / 60)} min`
|
||||||
|
: `${Math.floor(tod / 60 / 60)}:${Math.floor((tod / 60) % 60).toString().padStart(2, '0')}`;
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
if (d) str += `${d}, `;
|
||||||
|
str += t;
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
export default (data: ArrayBuffer) => {
|
export default (data: ArrayBuffer) => {
|
||||||
//const buf = new Buffer(data);
|
//const buf = new Buffer(data);
|
||||||
//const hash = crypto.createHash("md5");
|
//const hash = crypto.createHash('md5');
|
||||||
//hash.update(buf);
|
//hash.update(buf);
|
||||||
//return hash.digest("hex");
|
//return hash.digest('hex');
|
||||||
return '';
|
return '';
|
||||||
};
|
};
|
||||||
|
@ -80,8 +80,8 @@ export default (opts: Opts = {}) => ({
|
|||||||
const ast = parse(this.appearNote.text);
|
const ast = parse(this.appearNote.text);
|
||||||
// TODO: 再帰的にURL要素がないか調べる
|
// TODO: 再帰的にURL要素がないか調べる
|
||||||
return unique(ast
|
return unique(ast
|
||||||
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.props.silent))
|
.filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent))
|
||||||
.map(t => t.props.url));
|
.map(t => t.node.props.url));
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -2,27 +2,8 @@ export default function(me, settings, note) {
|
|||||||
const isMyNote = note.userId == me.id;
|
const isMyNote = note.userId == me.id;
|
||||||
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
|
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
|
||||||
|
|
||||||
if (settings.showMyRenotes === false) {
|
return settings.showMyRenotes === false && isMyNote && isPureRenote ||
|
||||||
if (isMyNote && isPureRenote) {
|
settings.showRenotedMyNotes === false && isPureRenote && note.renote.userId == me.id ||
|
||||||
return true;
|
settings.showLocalRenotes === false && isPureRenote && note.renote.user.host == null ||
|
||||||
}
|
!isMyNote && note.text && settings.mutedWords.some(q => q.length > 0 && !q.some(word => !note.text.includes(word)));
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.showRenotedMyNotes === false) {
|
|
||||||
if (isPureRenote && (note.renote.userId == me.id)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.showLocalRenotes === false) {
|
|
||||||
if (isPureRenote && (note.renote.user.host == null)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isMyNote && note.text && settings.mutedWords.some(q => q.length > 0 && !q.some(word => !note.text.includes(word)))) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
@ -75,12 +75,10 @@ export default class Stream extends EventEmitter {
|
|||||||
|
|
||||||
// チャンネル再接続
|
// チャンネル再接続
|
||||||
if (isReconnect) {
|
if (isReconnect) {
|
||||||
this.sharedConnectionPools.forEach(p => {
|
for (const p of this.sharedConnectionPools)
|
||||||
p.connect();
|
p.connect();
|
||||||
});
|
for (const c of this.nonSharedConnections)
|
||||||
this.nonSharedConnections.forEach(c => {
|
|
||||||
c.connect();
|
c.connect();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,9 +111,9 @@ export default class Stream extends EventEmitter {
|
|||||||
connections = [this.nonSharedConnections.find(c => c.id === id)];
|
connections = [this.nonSharedConnections.find(c => c.id === id)];
|
||||||
}
|
}
|
||||||
|
|
||||||
connections.filter(c => c != null).forEach(c => {
|
for (const c of connections.filter(c => c != null)) {
|
||||||
c.emit(body.type, body.body);
|
c.emit(body.type, body.body);
|
||||||
});
|
}
|
||||||
} else {
|
} else {
|
||||||
this.emit(type, body);
|
this.emit(type, body);
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import { themeColor } from '../../../config';
|
import * as tinycolor from 'tinycolor2';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: {
|
props: {
|
||||||
@ -75,7 +75,7 @@ export default Vue.extend({
|
|||||||
return this.dark ? '#fff' : '#777';
|
return this.dark ? '#fff' : '#777';
|
||||||
},
|
},
|
||||||
hHandColor(): string {
|
hHandColor(): string {
|
||||||
return themeColor;
|
return tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--primary')).toHexString();
|
||||||
},
|
},
|
||||||
|
|
||||||
ms(): number {
|
ms(): number {
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
<ol class="users" ref="suggests" v-if="users.length > 0">
|
<ol class="users" ref="suggests" v-if="users.length > 0">
|
||||||
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
|
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
|
||||||
<img class="avatar" :src="user.avatarUrl" alt=""/>
|
<img class="avatar" :src="user.avatarUrl" alt=""/>
|
||||||
<span class="name">{{ user | userName }}</span>
|
<span class="name">
|
||||||
|
<mk-user-name :user="user"/>
|
||||||
|
</span>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
@ -42,8 +44,9 @@ const lib = Object.entries(emojilib.lib).filter((x: any) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const char2file = (char: string) => {
|
const char2file = (char: string) => {
|
||||||
let codes = [...char].map(x => x.codePointAt(0).toString(16));
|
let codes = Array.from(char).map(x => x.codePointAt(0).toString(16));
|
||||||
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
||||||
|
codes = codes.filter(x => x && x.length);
|
||||||
return codes.join('-');
|
return codes.join('-');
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -54,18 +57,18 @@ const emjdb: EmojiDef[] = lib.map((x: any) => ({
|
|||||||
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
||||||
}));
|
}));
|
||||||
|
|
||||||
lib.forEach((x: any) => {
|
for (const x of lib as any) {
|
||||||
if (x[1].keywords) {
|
if (x[1].keywords) {
|
||||||
x[1].keywords.forEach(k => {
|
for (const k of x[1].keywords) {
|
||||||
emjdb.push({
|
emjdb.push({
|
||||||
emoji: x[1].char,
|
emoji: x[1].char,
|
||||||
name: k,
|
name: k,
|
||||||
aliasOf: x[0],
|
aliasOf: x[0],
|
||||||
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
|
||||||
emjdb.sort((a, b) => a.name.length - b.name.length);
|
emjdb.sort((a, b) => a.name.length - b.name.length);
|
||||||
|
|
||||||
@ -117,7 +120,7 @@ export default Vue.extend({
|
|||||||
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
|
||||||
const emojiDefinitions: EmojiDef[] = [];
|
const emojiDefinitions: EmojiDef[] = [];
|
||||||
|
|
||||||
customEmojis.forEach(x => {
|
for (const x of customEmojis) {
|
||||||
emojiDefinitions.push({
|
emojiDefinitions.push({
|
||||||
name: x.name,
|
name: x.name,
|
||||||
emoji: `:${x.name}:`,
|
emoji: `:${x.name}:`,
|
||||||
@ -126,7 +129,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (x.aliases) {
|
if (x.aliases) {
|
||||||
x.aliases.forEach(alias => {
|
for (const alias of x.aliases) {
|
||||||
emojiDefinitions.push({
|
emojiDefinitions.push({
|
||||||
name: alias,
|
name: alias,
|
||||||
aliasOf: x.name,
|
aliasOf: x.name,
|
||||||
@ -134,9 +137,9 @@ export default Vue.extend({
|
|||||||
url: x.url,
|
url: x.url,
|
||||||
isCustomEmoji: true
|
isCustomEmoji: true
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
|
||||||
emojiDefinitions.sort((a, b) => a.name.length - b.name.length);
|
emojiDefinitions.sort((a, b) => a.name.length - b.name.length);
|
||||||
|
|
||||||
@ -145,9 +148,9 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.textarea.addEventListener('keydown', this.onKeydown);
|
this.textarea.addEventListener('keydown', this.onKeydown);
|
||||||
|
|
||||||
Array.from(document.querySelectorAll('body *')).forEach(el => {
|
for (const el of Array.from(document.querySelectorAll('body *'))) {
|
||||||
el.addEventListener('mousedown', this.onMousedown);
|
el.addEventListener('mousedown', this.onMousedown);
|
||||||
});
|
}
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.exec();
|
this.exec();
|
||||||
@ -163,18 +166,18 @@ export default Vue.extend({
|
|||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
this.textarea.removeEventListener('keydown', this.onKeydown);
|
this.textarea.removeEventListener('keydown', this.onKeydown);
|
||||||
|
|
||||||
Array.from(document.querySelectorAll('body *')).forEach(el => {
|
for (const el of Array.from(document.querySelectorAll('body *'))) {
|
||||||
el.removeEventListener('mousedown', this.onMousedown);
|
el.removeEventListener('mousedown', this.onMousedown);
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
exec() {
|
exec() {
|
||||||
this.select = -1;
|
this.select = -1;
|
||||||
if (this.$refs.suggests) {
|
if (this.$refs.suggests) {
|
||||||
Array.from(this.items).forEach(el => {
|
for (const el of Array.from(this.items)) {
|
||||||
el.removeAttribute('data-selected');
|
el.removeAttribute('data-selected');
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.type == 'user') {
|
if (this.type == 'user') {
|
||||||
@ -313,9 +316,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
applySelect() {
|
applySelect() {
|
||||||
Array.from(this.items).forEach(el => {
|
for (const el of Array.from(this.items)) {
|
||||||
el.removeAttribute('data-selected');
|
el.removeAttribute('data-selected');
|
||||||
});
|
}
|
||||||
|
|
||||||
this.items[this.select].setAttribute('data-selected', 'true');
|
this.items[this.select].setAttribute('data-selected', 'true');
|
||||||
(this.items[this.select] as any).focus();
|
(this.items[this.select] as any).focus();
|
||||||
|
@ -1,21 +1,36 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">{{ value ? this.$t('hide') : this.$t('show') }}</button>
|
<button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">
|
||||||
|
<b>{{ value ? this.$t('hide') : this.$t('show') }}</b>
|
||||||
|
<span v-if="!value">
|
||||||
|
<span v-if="note.text">{{ this.$t('chars', { count: length(note.text) }) | number }}</span>
|
||||||
|
<span v-if="note.text && note.files && note.files.length > 0"> / </span>
|
||||||
|
<span v-if="note.files && note.files.length > 0">{{ this.$t('files', { count: note.files.length }) }}</span>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
|
import { length } from 'stringz';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/cw-button.vue'),
|
i18n: i18n('common/views/components/cw-button.vue'),
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
note: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
length,
|
||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
this.$emit('input', !this.value);
|
this.$emit('input', !this.value);
|
||||||
}
|
}
|
||||||
@ -37,4 +52,12 @@ export default Vue.extend({
|
|||||||
&:hover
|
&:hover
|
||||||
background var(--cwButtonHoverBg)
|
background var(--cwButtonHoverBg)
|
||||||
|
|
||||||
|
> span
|
||||||
|
margin-left 4px
|
||||||
|
|
||||||
|
&:before
|
||||||
|
content '('
|
||||||
|
&:after
|
||||||
|
content ')'
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -114,11 +114,11 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onScroll(e) {
|
onScroll(e) {
|
||||||
const section = this.categories.forEach(x => {
|
for (const x of this.categories) {
|
||||||
const top = e.target.scrollTop;
|
const top = e.target.scrollTop;
|
||||||
const el = this.$refs[x.ref][0];
|
const el = this.$refs[x.ref][0];
|
||||||
x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top;
|
x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top;
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
chosen(emoji) {
|
chosen(emoji) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<img v-if="customEmoji" class="fvgwvorwhxigeolkkrcderjzcawqrscl custom" :src="url" :alt="alt" :title="alt"/>
|
<img v-if="customEmoji" class="fvgwvorwhxigeolkkrcderjzcawqrscl custom" :class="{ normal: normal }" :src="url" :alt="alt" :title="alt"/>
|
||||||
<img v-else-if="char && !useOsDefaultEmojis" class="fvgwvorwhxigeolkkrcderjzcawqrscl" :src="url" :alt="alt" :title="alt"/>
|
<img v-else-if="char && !useOsDefaultEmojis" class="fvgwvorwhxigeolkkrcderjzcawqrscl" :src="url" :alt="alt" :title="alt"/>
|
||||||
<span v-else-if="char && useOsDefaultEmojis">{{ char }}</span>
|
<span v-else-if="char && useOsDefaultEmojis">{{ char }}</span>
|
||||||
<span v-else>:{{ name }}:</span>
|
<span v-else>:{{ name }}:</span>
|
||||||
@ -20,6 +20,11 @@ export default Vue.extend({
|
|||||||
type: String,
|
type: String,
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
|
normal: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
customEmojis: {
|
customEmojis: {
|
||||||
required: false,
|
required: false,
|
||||||
default: () => []
|
default: () => []
|
||||||
@ -61,8 +66,9 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.char) {
|
if (this.char) {
|
||||||
let codes = [...this.char].map(x => x.codePointAt(0).toString(16));
|
let codes = Array.from(this.char).map(x => x.codePointAt(0).toString(16));
|
||||||
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
if (!codes.includes('200d')) codes = codes.filter(x => x != 'fe0f');
|
||||||
|
codes = codes.filter(x => x && x.length);
|
||||||
|
|
||||||
this.url = `https://twemoji.maxcdn.com/2/svg/${codes.join('-')}.svg`;
|
this.url = `https://twemoji.maxcdn.com/2/svg/${codes.join('-')}.svg`;
|
||||||
}
|
}
|
||||||
@ -83,4 +89,11 @@ export default Vue.extend({
|
|||||||
&:hover
|
&:hover
|
||||||
transform scale(1.2)
|
transform scale(1.2)
|
||||||
|
|
||||||
|
&.normal
|
||||||
|
height 1.25em
|
||||||
|
vertical-align -0.25em
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
transform none
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -48,7 +48,7 @@ export default Vue.extend({
|
|||||||
iconAndText(): any[] {
|
iconAndText(): any[] {
|
||||||
return (
|
return (
|
||||||
(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] :
|
(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] :
|
||||||
(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['hourglass-start', this.$t('follow-processing')] :
|
(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['spinner', this.$t('follow-processing')] :
|
||||||
(this.isFollowing) ? ['minus', this.$t('following')] :
|
(this.isFollowing) ? ['minus', this.$t('following')] :
|
||||||
(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] :
|
(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] :
|
||||||
(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] :
|
(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] :
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||||
<button class="go-index" v-if="selfNav" @click="goIndex"><fa icon="arrow-left"/></button>
|
<button class="go-index" v-if="selfNav" @click="goIndex"><fa icon="arrow-left"/></button>
|
||||||
<header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>({{ $t('@.reversi.black') }}) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>({{ $t('@.reversi.white') }})</header>
|
<header><b><router-link :to="blackUser | userPage"><mk-user-name :user="blackUser"/></router-link></b>({{ $t('@.reversi.black') }}) vs <b><router-link :to="whiteUser | userPage"><mk-user-name :user="whiteUser"/></router-link></b>({{ $t('@.reversi.white') }})</header>
|
||||||
|
|
||||||
<div style="overflow: hidden; line-height: 28px;">
|
<div style="overflow: hidden; line-height: 28px;">
|
||||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ $t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) }) }}<mk-ellipsis/></p>
|
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ $t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) }) }}<mk-ellipsis/></p>
|
||||||
@ -10,7 +10,7 @@
|
|||||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">{{ $t('@.reversi.my-turn') }}</p>
|
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">{{ $t('@.reversi.my-turn') }}</p>
|
||||||
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
||||||
<template v-if="game.winner">
|
<template v-if="game.winner">
|
||||||
<span>{{ $t('@.reversi.won', { name: $options.filters.userName(game.winner) }) }}</span>
|
<misskey-flavored-markdown :text="$t('@.reversi.won', { name: $options.filters.userName(game.winner) })" :shouldBreak="false" :plainText="true" :custom-emojis="game.winner.emojis"/>
|
||||||
<span v-if="game.surrendered != null"> ({{ $t('surrendered') }})</span>
|
<span v-if="game.surrendered != null"> ({{ $t('surrendered') }})</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>{{ $t('@.reversi.drawn') }}</template>
|
<template v-else>{{ $t('@.reversi.drawn') }}</template>
|
||||||
@ -30,8 +30,14 @@
|
|||||||
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
||||||
@click="set(i)"
|
@click="set(i)"
|
||||||
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
||||||
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }">
|
<template v-if="!$store.state.settings.games.reversi.useWhiteBlackStones">
|
||||||
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }">
|
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black">
|
||||||
|
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white">
|
||||||
|
</template>
|
||||||
|
<template v-if="$store.state.settings.games.reversi.useWhiteBlackStones">
|
||||||
|
<fa v-if="stone === true" :icon="fasCircle"/>
|
||||||
|
<fa v-if="stone === false" :icon="farCircle"/>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
<div class="labels-y" v-if="this.$store.state.settings.games.reversi.showBoardLabels">
|
||||||
@ -74,6 +80,8 @@ import * as CRC32 from 'crc-32';
|
|||||||
import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
import Reversi, { Color } from '../../../../../../../games/reversi/core';
|
||||||
import { url } from '../../../../../config';
|
import { url } from '../../../../../config';
|
||||||
import { faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons';
|
import { faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/games/reversi/reversi.game.vue'),
|
i18n: i18n('common/views/components/games/reversi/reversi.game.vue'),
|
||||||
@ -99,7 +107,7 @@ export default Vue.extend({
|
|||||||
logs: [],
|
logs: [],
|
||||||
logPos: 0,
|
logPos: 0,
|
||||||
pollingClock: null,
|
pollingClock: null,
|
||||||
faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight
|
faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight, fasCircle, farCircle
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -177,9 +185,9 @@ export default Vue.extend({
|
|||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
});
|
});
|
||||||
|
|
||||||
this.game.logs.forEach(log => {
|
for (const log of this.game.logs) {
|
||||||
this.o.put(log.color, log.pos);
|
this.o.put(log.color, log.pos);
|
||||||
});
|
}
|
||||||
|
|
||||||
this.logs = this.game.logs;
|
this.logs = this.game.logs;
|
||||||
this.logPos = this.logs.length;
|
this.logPos = this.logs.length;
|
||||||
@ -279,9 +287,9 @@ export default Vue.extend({
|
|||||||
loopedBoard: this.game.settings.loopedBoard
|
loopedBoard: this.game.settings.loopedBoard
|
||||||
});
|
});
|
||||||
|
|
||||||
this.game.logs.forEach(log => {
|
for (const log of this.game.logs) {
|
||||||
this.o.put(log.color, log.pos, true);
|
this.o.put(log.color, log.pos, true);
|
||||||
});
|
}
|
||||||
|
|
||||||
this.logs = this.game.logs;
|
this.logs = this.game.logs;
|
||||||
this.logPos = this.logs.length;
|
this.logPos = this.logs.length;
|
||||||
@ -412,17 +420,15 @@ export default Vue.extend({
|
|||||||
&.none
|
&.none
|
||||||
border-color transparent !important
|
border-color transparent !important
|
||||||
|
|
||||||
> img
|
> svg
|
||||||
display block
|
display block
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
|
|
||||||
&.contrast
|
> img
|
||||||
&[alt="black"]
|
display block
|
||||||
filter brightness(.5)
|
width 100%
|
||||||
|
height 100%
|
||||||
&[alt="white"]
|
|
||||||
filter brightness(2)
|
|
||||||
|
|
||||||
> .graph
|
> .graph
|
||||||
display grid
|
display grid
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<h2>{{ $t('invitations') }}</h2>
|
<h2>{{ $t('invitations') }}</h2>
|
||||||
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
|
||||||
<mk-avatar class="avatar" :user="i.parent"/>
|
<mk-avatar class="avatar" :user="i.parent"/>
|
||||||
<span class="name"><b>{{ i.parent | userName }}</b></span>
|
<span class="name"><b><mk-user-name :user="i.parent"/></b></span>
|
||||||
<span class="username">@{{ i.parent.username }}</span>
|
<span class="username">@{{ i.parent.username }}</span>
|
||||||
<mk-time :time="i.createdAt"/>
|
<mk-time :time="i.createdAt"/>
|
||||||
</div>
|
</div>
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||||
<mk-avatar class="avatar" :user="g.user1"/>
|
<mk-avatar class="avatar" :user="g.user1"/>
|
||||||
<mk-avatar class="avatar" :user="g.user2"/>
|
<mk-avatar class="avatar" :user="g.user2"/>
|
||||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
<span><b><mk-user-name :user="g.user1"/></b> vs <b><mk-user-name :user="g.user2"/></b></span>
|
||||||
<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span>
|
<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span>
|
||||||
<mk-time :time="g.createdAt" />
|
<mk-time :time="g.createdAt" />
|
||||||
</a>
|
</a>
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
|
||||||
<mk-avatar class="avatar" :user="g.user1"/>
|
<mk-avatar class="avatar" :user="g.user1"/>
|
||||||
<mk-avatar class="avatar" :user="g.user2"/>
|
<mk-avatar class="avatar" :user="g.user2"/>
|
||||||
<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
|
<span><b><mk-user-name :user="g.user1"/></b> vs <b><mk-user-name :user="g.user2"/></b></span>
|
||||||
<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span>
|
<span class="state">{{ g.isEnded ? $t('game-state.ended') : $t('game-state.playing') }}</span>
|
||||||
<mk-time :time="g.createdAt" />
|
<mk-time :time="g.createdAt" />
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="urbixznjwwuukfsckrwzwsqzsxornqij">
|
<div class="urbixznjwwuukfsckrwzwsqzsxornqij">
|
||||||
<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header>
|
<header><b><mk-user-name :user="game.user1"/></b> vs <b><mk-user-name :user="game.user2"/></b></header>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<p>{{ $t('settings-of-the-game') }}</p>
|
<p>{{ $t('settings-of-the-game') }}</p>
|
||||||
@ -36,8 +36,8 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">{{ $t('random') }}</form-radio>
|
<form-radio v-model="game.settings.bw" value="random" @change="updateSettings">{{ $t('random') }}</form-radio>
|
||||||
<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b>{{ game.user1 | userName }}</b>{{ this.$t('black-is').split('{}')[1] }}</form-radio>
|
<form-radio v-model="game.settings.bw" :value="1" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b><mk-user-name :user="game.user1"/></b>{{ this.$t('black-is').split('{}')[1] }}</form-radio>
|
||||||
<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b>{{ game.user2 | userName }}</b>{{ this.$t('black-is').split('{}')[1] }}</form-radio>
|
<form-radio v-model="game.settings.bw" :value="2" @change="updateSettings">{{ this.$t('black-is').split('{}')[0] }}<b><mk-user-name :user="game.user2"/></b>{{ this.$t('black-is').split('{}')[1] }}</form-radio>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<template v-for="item in form">
|
<template v-for="item in form">
|
||||||
<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</ui-switch>
|
<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" @change="onChangeForm(item)">{{ item.label || item.desc || '' }}</ui-switch>
|
||||||
|
|
||||||
<div class="card" v-if="item.type == 'radio'" :key="item.id">
|
<div class="card" v-if="item.type == 'radio'" :key="item.id">
|
||||||
<header>
|
<header>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/>
|
<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="matching" v-else-if="matching">
|
<div class="matching" v-else-if="matching">
|
||||||
<h1>{{ this.$t('matching.waiting-for').split('{}')[0] }}<b>{{ matching | userName }}</b>{{ this.$t('matching.waiting-for').split('{}')[1] }}<mk-ellipsis/></h1>
|
<h1>{{ this.$t('matching.waiting-for').split('{}')[0] }}<b><mk-user-name :user="matching"/></b>{{ this.$t('matching.waiting-for').split('{}')[1] }}<mk-ellipsis/></h1>
|
||||||
<div class="cancel">
|
<div class="cancel">
|
||||||
<form-button round @click="cancel">{{ $t('matching.cancel') }}</form-button>
|
<form-button round @click="cancel">{{ $t('matching.cancel') }}</form-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
import userName from './user-name.vue';
|
||||||
import followButton from './follow-button.vue';
|
import followButton from './follow-button.vue';
|
||||||
import error from './error.vue';
|
import error from './error.vue';
|
||||||
import noteSkeleton from './note-skeleton.vue';
|
import noteSkeleton from './note-skeleton.vue';
|
||||||
@ -44,6 +45,7 @@ import uiInfo from './ui/info.vue';
|
|||||||
import formButton from './ui/form/button.vue';
|
import formButton from './ui/form/button.vue';
|
||||||
import formRadio from './ui/form/radio.vue';
|
import formRadio from './ui/form/radio.vue';
|
||||||
|
|
||||||
|
Vue.component('mk-user-name', userName);
|
||||||
Vue.component('mk-follow-button', followButton);
|
Vue.component('mk-follow-button', followButton);
|
||||||
Vue.component('mk-error', error);
|
Vue.component('mk-error', error);
|
||||||
Vue.component('mk-note-skeleton', noteSkeleton);
|
Vue.component('mk-note-skeleton', noteSkeleton);
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
<template>
|
<template>
|
||||||
<ui-card>
|
<ui-card v-if="enableTwitterIntegration || enableDiscordIntegration || enableGithubIntegration">
|
||||||
<div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div>
|
<div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div>
|
||||||
|
|
||||||
<section>
|
<section v-if="enableTwitterIntegration">
|
||||||
<header><fa :icon="['fab', 'twitter']"/> Twitter</header>
|
<header><fa :icon="['fab', 'twitter']"/> Twitter</header>
|
||||||
<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
|
||||||
<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button>
|
<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button>
|
||||||
<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button>
|
<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section v-if="enableDiscordIntegration">
|
||||||
<header><fa :icon="['fab', 'discord']"/> Discord</header>
|
<header><fa :icon="['fab', 'discord']"/> Discord</header>
|
||||||
<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discord.com/${$store.state.i.discord.screenName}`" target="_blank">@{{ $store.state.i.discord.screenName }}</a></p>
|
<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
|
||||||
<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button>
|
<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button>
|
||||||
<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button>
|
<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section v-if="enableGithubIntegration">
|
||||||
<header><fa :icon="['fab', 'github']"/> GitHub</header>
|
<header><fa :icon="['fab', 'github']"/> GitHub</header>
|
||||||
<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.screenName}`" target="_blank">@{{ $store.state.i.github.screenName }}</a></p>
|
<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
|
||||||
<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button>
|
<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button>
|
||||||
<ui-button v-else @click="connectGithub">{{ $t('connect') }}</ui-button>
|
<ui-button v-else @click="connectGithub">{{ $t('connect') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
@ -39,14 +39,32 @@ export default Vue.extend({
|
|||||||
twitterForm: null,
|
twitterForm: null,
|
||||||
discordForm: null,
|
discordForm: null,
|
||||||
githubForm: null,
|
githubForm: null,
|
||||||
|
enableTwitterIntegration: false,
|
||||||
|
enableDiscordIntegration: false,
|
||||||
|
enableGithubIntegration: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
this.enableTwitterIntegration = meta.enableTwitterIntegration;
|
||||||
|
this.enableDiscordIntegration = meta.enableDiscordIntegration;
|
||||||
|
this.enableGithubIntegration = meta.enableGithubIntegration;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
document.cookie = `i=${this.$store.state.i.token}`;
|
||||||
this.$watch('$store.state.i', () => {
|
this.$watch('$store.state.i', () => {
|
||||||
if (this.$store.state.i.twitter) {
|
if (this.$store.state.i.twitter) {
|
||||||
if (this.twitterForm) this.twitterForm.close();
|
if (this.twitterForm) this.twitterForm.close();
|
||||||
}
|
}
|
||||||
|
if (this.$store.state.i.discord) {
|
||||||
|
if (this.discordForm) this.discordForm.close();
|
||||||
|
}
|
||||||
|
if (this.$store.state.i.github) {
|
||||||
|
if (this.githubForm) this.githubForm.close();
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
deep: true
|
deep: true
|
||||||
});
|
});
|
||||||
|
70
src/client/app/common/views/components/mention.vue
Normal file
70
src/client/app/common/views/components/mention.vue
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<template>
|
||||||
|
<router-link class="ldlomzub" :to="`/@${ canonical }`" v-user-preview="canonical">
|
||||||
|
<span class="me" v-if="isMe">{{ $t('@.you') }}</span>
|
||||||
|
<span class="main">
|
||||||
|
<span class="username">@{{ username }}</span>
|
||||||
|
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="(host != localHost) || $store.state.settings.showFullAcct">@{{ toUnicode(host) }}</span>
|
||||||
|
</span>
|
||||||
|
</router-link>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import { toUnicode } from 'punycode';
|
||||||
|
import { host as localHost } from '../../../config';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n(),
|
||||||
|
props: {
|
||||||
|
username: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
host: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
localHost
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
canonical(): string {
|
||||||
|
return `@${this.username}@${toUnicode(this.host)}`;
|
||||||
|
},
|
||||||
|
isMe(): boolean {
|
||||||
|
return this.$store.getters.isSignedIn && this.canonical.toLowerCase() === `@${this.$store.state.i.username}@${toUnicode(localHost)}`.toLowerCase();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toUnicode
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.ldlomzub
|
||||||
|
color var(--mfmMention)
|
||||||
|
|
||||||
|
> .me
|
||||||
|
pointer-events none
|
||||||
|
user-select none
|
||||||
|
padding 0 4px
|
||||||
|
background var(--primary)
|
||||||
|
border solid 1px var(--primary)
|
||||||
|
border-radius 4px 0 0 4px
|
||||||
|
color var(--primaryForeground)
|
||||||
|
|
||||||
|
& + .main
|
||||||
|
padding 0 4px
|
||||||
|
border solid 1px var(--primary)
|
||||||
|
border-radius 0 4px 4px 0
|
||||||
|
|
||||||
|
> .main
|
||||||
|
> .host.fade
|
||||||
|
opacity 0.5
|
||||||
|
|
||||||
|
</style>
|
@ -9,7 +9,7 @@
|
|||||||
@keypress="onKeypress"
|
@keypress="onKeypress"
|
||||||
@paste="onPaste"
|
@paste="onPaste"
|
||||||
:placeholder="$t('input-message-here')"
|
:placeholder="$t('input-message-here')"
|
||||||
v-autocomplete="'text'"
|
v-autocomplete="{ model: 'text' }"
|
||||||
></textarea>
|
></textarea>
|
||||||
<div class="file" @click="file = null" v-if="file">{{ file.name }}</div>
|
<div class="file" @click="file = null" v-if="file">{{ file.name }}</div>
|
||||||
<mk-uploader ref="uploader" @uploaded="onUploaded"/>
|
<mk-uploader ref="uploader" @uploaded="onUploaded"/>
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||||
<div class="file" v-if="message.file">
|
<div class="file" v-if="message.file">
|
||||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||||
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
|
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"
|
||||||
|
:style="{ backgroundColor: message.file.properties.avgColor && message.file.properties.avgColor.length == 3 ? `rgb(${message.file.properties.avgColor.join(',')})` : 'transparent' }"/>
|
||||||
<p v-else>{{ message.file.name }}</p>
|
<p v-else>{{ message.file.name }}</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -51,8 +52,8 @@ export default Vue.extend({
|
|||||||
if (this.message.text) {
|
if (this.message.text) {
|
||||||
const ast = parse(this.message.text);
|
const ast = parse(this.message.text);
|
||||||
return unique(ast
|
return unique(ast
|
||||||
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.silent))
|
.filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent))
|
||||||
.map(t => t.props.url));
|
.map(t => t.node.props.url));
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -150,7 +151,6 @@ export default Vue.extend({
|
|||||||
> a
|
> a
|
||||||
display block
|
display block
|
||||||
max-width 100%
|
max-width 100%
|
||||||
max-height 512px
|
|
||||||
border-radius 16px
|
border-radius 16px
|
||||||
overflow hidden
|
overflow hidden
|
||||||
text-decoration none
|
text-decoration none
|
||||||
@ -165,7 +165,8 @@ export default Vue.extend({
|
|||||||
display block
|
display block
|
||||||
margin 0
|
margin 0
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
max-height 512px
|
||||||
|
object-fit contain
|
||||||
|
|
||||||
> p
|
> p
|
||||||
padding 30px
|
padding 30px
|
||||||
|
@ -196,12 +196,12 @@ export default Vue.extend({
|
|||||||
|
|
||||||
onRead(ids) {
|
onRead(ids) {
|
||||||
if (!Array.isArray(ids)) ids = [ids];
|
if (!Array.isArray(ids)) ids = [ids];
|
||||||
ids.forEach(id => {
|
for (const id of ids) {
|
||||||
if (this.messages.some(x => x.id == id)) {
|
if (this.messages.some(x => x.id == id)) {
|
||||||
const exist = this.messages.map(x => x.id).indexOf(id);
|
const exist = this.messages.map(x => x.id).indexOf(id);
|
||||||
this.messages[exist].isRead = true;
|
this.messages[exist].isRead = true;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isBottom() {
|
isBottom() {
|
||||||
@ -248,13 +248,13 @@ export default Vue.extend({
|
|||||||
|
|
||||||
onVisibilitychange() {
|
onVisibilitychange() {
|
||||||
if (document.hidden) return;
|
if (document.hidden) return;
|
||||||
this.messages.forEach(message => {
|
for (const message of this.messages) {
|
||||||
if (message.userId !== this.$store.state.i.id && !message.isRead) {
|
if (message.userId !== this.$store.state.i.id && !message.isRead) {
|
||||||
this.connection.send('read', {
|
this.connection.send('read', {
|
||||||
id: message.id
|
id: message.id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
>
|
>
|
||||||
<mk-avatar class="avatar" :user="user"/>
|
<mk-avatar class="avatar" :user="user"/>
|
||||||
<span class="name">{{ user | userName }}</span>
|
<span class="name"><mk-user-name :user="user"/></span>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
@ -33,7 +33,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<mk-avatar class="avatar" :user="isMe(message) ? message.recipient : message.user"/>
|
<mk-avatar class="avatar" :user="isMe(message) ? message.recipient : message.user"/>
|
||||||
<header>
|
<header>
|
||||||
<span class="name">{{ isMe(message) ? message.recipient : message.user | userName }}</span>
|
<span class="name"><mk-user-name :user="isMe(message) ? message.recipient : message.user"/></span>
|
||||||
<span class="username">@{{ isMe(message) ? message.recipient : message.user | acct }}</span>
|
<span class="username">@{{ isMe(message) ? message.recipient : message.user | acct }}</span>
|
||||||
<mk-time :time="message.createdAt"/>
|
<mk-time :time="message.createdAt"/>
|
||||||
</header>
|
</header>
|
||||||
@ -103,10 +103,10 @@ export default Vue.extend({
|
|||||||
this.messages.unshift(message);
|
this.messages.unshift(message);
|
||||||
},
|
},
|
||||||
onRead(ids) {
|
onRead(ids) {
|
||||||
ids.forEach(id => {
|
for (const id of ids) {
|
||||||
const found = this.messages.find(m => m.id == id);
|
const found = this.messages.find(m => m.id == id);
|
||||||
if (found) found.isRead = true;
|
if (found) found.isRead = true;
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
search() {
|
search() {
|
||||||
if (this.q == '') {
|
if (this.q == '') {
|
||||||
|
@ -1,38 +1,19 @@
|
|||||||
import Vue, { VNode } from 'vue';
|
import Vue, { VNode } from 'vue';
|
||||||
import { length } from 'stringz';
|
import { length } from 'stringz';
|
||||||
import { Node } from '../../../../../mfm/parser';
|
import { MfmForest } from '../../../../../mfm/parser';
|
||||||
import parse from '../../../../../mfm/parse';
|
import parse from '../../../../../mfm/parse';
|
||||||
import MkUrl from './url.vue';
|
import MkUrl from './url.vue';
|
||||||
import { concat } from '../../../../../prelude/array';
|
import MkMention from './mention.vue';
|
||||||
|
import { concat, sum } from '../../../../../prelude/array';
|
||||||
import MkFormula from './formula.vue';
|
import MkFormula from './formula.vue';
|
||||||
import MkGoogle from './google.vue';
|
import MkGoogle from './google.vue';
|
||||||
import { toUnicode } from 'punycode';
|
|
||||||
import syntaxHighlight from '../../../../../mfm/syntax-highlight';
|
import syntaxHighlight from '../../../../../mfm/syntax-highlight';
|
||||||
|
import { host } from '../../../config';
|
||||||
|
import { preorderF, countNodesF } from '../../../../../prelude/tree';
|
||||||
|
|
||||||
function getTextCount(tokens: Node[]): number {
|
function sumTextsLength(ts: MfmForest): number {
|
||||||
let count = 0;
|
const textNodes = preorderF(ts).filter(n => n.type === 'text');
|
||||||
const extract = (tokens: Node[]) => {
|
return sum(textNodes.map(x => length(x.props.text)));
|
||||||
tokens.filter(x => x.name === 'text').forEach(x => {
|
|
||||||
count += length(x.props.text);
|
|
||||||
});
|
|
||||||
tokens.filter(x => x.children).forEach(x => {
|
|
||||||
extract(x.children);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
extract(tokens);
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getChildrenCount(tokens: Node[]): number {
|
|
||||||
let count = 0;
|
|
||||||
const extract = (tokens: Node[]) => {
|
|
||||||
tokens.filter(x => x.children).forEach(x => {
|
|
||||||
count++;
|
|
||||||
extract(x.children);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
extract(tokens);
|
|
||||||
return count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Vue.component('misskey-flavored-markdown', {
|
export default Vue.component('misskey-flavored-markdown', {
|
||||||
@ -41,14 +22,14 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
ast: {
|
|
||||||
type: [],
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
shouldBreak: {
|
shouldBreak: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
},
|
},
|
||||||
|
plainText: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
author: {
|
author: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: null
|
default: null
|
||||||
@ -65,22 +46,15 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
render(createElement) {
|
render(createElement) {
|
||||||
if (this.text == null || this.text == '') return;
|
if (this.text == null || this.text == '') return;
|
||||||
|
|
||||||
let ast: Node[];
|
const ast = parse(this.text, this.plainText);
|
||||||
|
|
||||||
if (this.ast == null) {
|
|
||||||
// Parse text to ast
|
|
||||||
ast = parse(this.text);
|
|
||||||
} else {
|
|
||||||
ast = this.ast as Node[];
|
|
||||||
}
|
|
||||||
|
|
||||||
let bigCount = 0;
|
let bigCount = 0;
|
||||||
let motionCount = 0;
|
let motionCount = 0;
|
||||||
|
|
||||||
const genEl = (ast: Node[]) => concat(ast.map((token): VNode[] => {
|
const genEl = (ast: MfmForest) => concat(ast.map((token): VNode[] => {
|
||||||
switch (token.name) {
|
switch (token.node.type) {
|
||||||
case 'text': {
|
case 'text': {
|
||||||
const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n');
|
const text = token.node.props.text.replace(/(\r\n|\n|\r)/g, '\n');
|
||||||
|
|
||||||
if (this.shouldBreak) {
|
if (this.shouldBreak) {
|
||||||
const x = text.split('\n')
|
const x = text.split('\n')
|
||||||
@ -96,9 +70,21 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement('b', genEl(token.children))];
|
return [createElement('b', genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'strike': {
|
||||||
|
return [createElement('del', genEl(token.children))];
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'italic': {
|
||||||
|
return (createElement as any)('i', {
|
||||||
|
attrs: {
|
||||||
|
style: 'font-style: oblique;'
|
||||||
|
},
|
||||||
|
}, genEl(token.children));
|
||||||
|
}
|
||||||
|
|
||||||
case 'big': {
|
case 'big': {
|
||||||
bigCount++;
|
bigCount++;
|
||||||
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
|
const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
|
||||||
const isMany = bigCount > 3;
|
const isMany = bigCount > 3;
|
||||||
return (createElement as any)('strong', {
|
return (createElement as any)('strong', {
|
||||||
attrs: {
|
attrs: {
|
||||||
@ -111,6 +97,10 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}, genEl(token.children));
|
}, genEl(token.children));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'small': {
|
||||||
|
return [createElement('small', genEl(token.children))];
|
||||||
|
}
|
||||||
|
|
||||||
case 'center': {
|
case 'center': {
|
||||||
return [createElement('div', {
|
return [createElement('div', {
|
||||||
attrs: {
|
attrs: {
|
||||||
@ -121,7 +111,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
|
|
||||||
case 'motion': {
|
case 'motion': {
|
||||||
motionCount++;
|
motionCount++;
|
||||||
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
|
const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
|
||||||
const isMany = motionCount > 3;
|
const isMany = motionCount > 3;
|
||||||
return (createElement as any)('span', {
|
return (createElement as any)('span', {
|
||||||
attrs: {
|
attrs: {
|
||||||
@ -138,7 +128,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement(MkUrl, {
|
return [createElement(MkUrl, {
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
url: token.props.url,
|
url: token.node.props.url,
|
||||||
target: '_blank',
|
target: '_blank',
|
||||||
style: 'color:var(--mfmLink);'
|
style: 'color:var(--mfmLink);'
|
||||||
}
|
}
|
||||||
@ -149,40 +139,32 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement('a', {
|
return [createElement('a', {
|
||||||
attrs: {
|
attrs: {
|
||||||
class: 'link',
|
class: 'link',
|
||||||
href: token.props.url,
|
href: token.node.props.url,
|
||||||
target: '_blank',
|
target: '_blank',
|
||||||
title: token.props.url,
|
title: token.node.props.url,
|
||||||
style: 'color:var(--mfmLink);'
|
style: 'color:var(--mfmLink);'
|
||||||
}
|
}
|
||||||
}, genEl(token.children))];
|
}, genEl(token.children))];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'mention': {
|
case 'mention': {
|
||||||
const host = token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host;
|
return [createElement(MkMention, {
|
||||||
const canonical = host != null ? `@${token.props.username}@${toUnicode(host)}` : `@${token.props.username}`;
|
|
||||||
return (createElement as any)('router-link', {
|
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
attrs: {
|
props: {
|
||||||
to: `/${canonical}`,
|
host: (token.node.props.host == null && this.author && this.author.host != null ? this.author.host : token.node.props.host) || host,
|
||||||
// TODO
|
username: token.node.props.username
|
||||||
//dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token),
|
}
|
||||||
style: 'color:var(--mfmMention);'
|
})];
|
||||||
},
|
|
||||||
directives: [{
|
|
||||||
name: 'user-preview',
|
|
||||||
value: canonical
|
|
||||||
}]
|
|
||||||
}, canonical);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'hashtag': {
|
case 'hashtag': {
|
||||||
return [createElement('router-link', {
|
return [createElement('router-link', {
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
attrs: {
|
attrs: {
|
||||||
to: `/tags/${encodeURIComponent(token.props.hashtag)}`,
|
to: `/tags/${encodeURIComponent(token.node.props.hashtag)}`,
|
||||||
style: 'color:var(--mfmHashtag);'
|
style: 'color:var(--mfmHashtag);'
|
||||||
}
|
}
|
||||||
}, `#${token.props.hashtag}`)];
|
}, `#${token.node.props.hashtag}`)];
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'blockCode': {
|
case 'blockCode': {
|
||||||
@ -191,7 +173,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
}, [
|
}, [
|
||||||
createElement('code', {
|
createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: syntaxHighlight(token.props.code)
|
innerHTML: syntaxHighlight(token.node.props.code)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
])];
|
])];
|
||||||
@ -200,7 +182,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
case 'inlineCode': {
|
case 'inlineCode': {
|
||||||
return [createElement('code', {
|
return [createElement('code', {
|
||||||
domProps: {
|
domProps: {
|
||||||
innerHTML: syntaxHighlight(token.props.code)
|
innerHTML: syntaxHighlight(token.node.props.code)
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
@ -234,11 +216,12 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement('mk-emoji', {
|
return [createElement('mk-emoji', {
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
attrs: {
|
attrs: {
|
||||||
emoji: token.props.emoji,
|
emoji: token.node.props.emoji,
|
||||||
name: token.props.name
|
name: token.node.props.name
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
customEmojis: this.customEmojis || customEmojis
|
customEmojis: this.customEmojis || customEmojis,
|
||||||
|
normal: this.plainText
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
@ -248,7 +231,7 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement(MkFormula, {
|
return [createElement(MkFormula, {
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
formula: token.props.formula
|
formula: token.node.props.formula
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
@ -258,13 +241,13 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
return [createElement(MkGoogle, {
|
return [createElement(MkGoogle, {
|
||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
q: token.props.query
|
q: token.node.props.query
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
console.log('unknown ast type:', token.name);
|
console.log('unknown ast type:', token.node.type);
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<ui-info v-if="!muteFetching && mute.length == 0">{{ $t('no-muted-users') }}</ui-info>
|
<ui-info v-if="!muteFetching && mute.length == 0">{{ $t('no-muted-users') }}</ui-info>
|
||||||
<div class="users" v-if="mute.length != 0">
|
<div class="users" v-if="mute.length != 0">
|
||||||
<div v-for="user in mute" :key="user.id">
|
<div v-for="user in mute" :key="user.id">
|
||||||
<p><b>{{ user | userName }}</b> @{{ user | acct }}</p>
|
<p><b><mk-user-name :user="user"/></b> @{{ user | acct }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<ui-info v-if="!blockFetching && block.length == 0">{{ $t('no-blocked-users') }}</ui-info>
|
<ui-info v-if="!blockFetching && block.length == 0">{{ $t('no-blocked-users') }}</ui-info>
|
||||||
<div class="users" v-if="block.length != 0">
|
<div class="users" v-if="block.length != 0">
|
||||||
<div v-for="user in block" :key="user.id">
|
<div v-for="user in block" :key="user.id">
|
||||||
<p><b>{{ user | userName }}</b> @{{ user | acct }}</p>
|
<p><b><mk-user-name :user="user"/></b> @{{ user | acct }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
|
||||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">
|
||||||
|
<mk-user-name :user="note.user"/>
|
||||||
|
</router-link>
|
||||||
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||||
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||||
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||||
|
53
src/client/app/common/views/components/particle.vue
Normal file
53
src/client/app/common/views/components/particle.vue
Normal file
File diff suppressed because one or more lines are too long
@ -44,10 +44,18 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.$root.api('i/change_password', {
|
this.$root.api('i/change_password', {
|
||||||
currentPasword: currentPassword,
|
currentPassword,
|
||||||
newPassword: newPassword
|
newPassword
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$notify(this.$t('changed'));
|
this.$root.dialog({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('changed')
|
||||||
|
});
|
||||||
|
}).catch(() => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: this.$t('failed')
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,12 +55,12 @@ export default Vue.extend({
|
|||||||
noteId: this.note.id,
|
noteId: this.note.id,
|
||||||
choice: id
|
choice: id
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.poll.choices.forEach(c => {
|
for (const c of this.poll.choices) {
|
||||||
if (c.id == id) {
|
if (c.id == id) {
|
||||||
c.votes++;
|
c.votes++;
|
||||||
Vue.set(c, 'isVoted', true);
|
Vue.set(c, 'isVoted', true);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
this.showResult = true;
|
this.showResult = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
</ui-input>
|
</ui-input>
|
||||||
|
|
||||||
<ui-input v-model="birthday" type="date">
|
<ui-input v-model="birthday" type="date">
|
||||||
<span>{{ $t('birthday') }}</span>
|
<span slot="title">{{ $t('birthday') }}</span>
|
||||||
<span slot="prefix"><fa icon="birthday-cake"/></span>
|
<span slot="prefix"><fa icon="birthday-cake"/></span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
|
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
<div class="popover" :class="{ compact, big }" ref="popover">
|
<div class="popover" :class="{ compact, big }" ref="popover">
|
||||||
<p v-if="!compact">{{ title }}</p>
|
<p v-if="!compact">{{ title }}</p>
|
||||||
<div ref="buttons" :class="{ showFocus }">
|
<div ref="buttons" :class="{ showFocus }">
|
||||||
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')"><mk-reaction-icon reaction='like'/></button>
|
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')" v-particle><mk-reaction-icon reaction="like"/></button>
|
||||||
<button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')"><mk-reaction-icon reaction='love'/></button>
|
<button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')" v-particle><mk-reaction-icon reaction="love"/></button>
|
||||||
<button @click="react('laugh')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="3" :title="$t('@.reactions.laugh')"><mk-reaction-icon reaction='laugh'/></button>
|
<button @click="react('laugh')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="3" :title="$t('@.reactions.laugh')" v-particle><mk-reaction-icon reaction="laugh"/></button>
|
||||||
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" :title="$t('@.reactions.hmm')"><mk-reaction-icon reaction='hmm'/></button>
|
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" :title="$t('@.reactions.hmm')" v-particle><mk-reaction-icon reaction="hmm"/></button>
|
||||||
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" :title="$t('@.reactions.surprise')"><mk-reaction-icon reaction='surprise'/></button>
|
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" :title="$t('@.reactions.surprise')" v-particle><mk-reaction-icon reaction="surprise"/></button>
|
||||||
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" :title="$t('@.reactions.congrats')"><mk-reaction-icon reaction='congrats'/></button>
|
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" :title="$t('@.reactions.congrats')" v-particle><mk-reaction-icon reaction="congrats"/></button>
|
||||||
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" :title="$t('@.reactions.angry')"><mk-reaction-icon reaction='angry'/></button>
|
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" :title="$t('@.reactions.angry')" v-particle><mk-reaction-icon reaction="angry"/></button>
|
||||||
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" :title="$t('@.reactions.confused')"><mk-reaction-icon reaction='confused'/></button>
|
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" :title="$t('@.reactions.confused')" v-particle><mk-reaction-icon reaction="confused"/></button>
|
||||||
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" :title="$t('@.reactions.rip')"><mk-reaction-icon reaction='rip'/></button>
|
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" :title="$t('@.reactions.rip')" v-particle><mk-reaction-icon reaction="rip"/></button>
|
||||||
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" :title="$t('@.reactions.pudding')"><mk-reaction-icon reaction='pudding'/></button>
|
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" :title="$t('@.reactions.pudding')" v-particle><mk-reaction-icon reaction="pudding"/></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,36 +1,107 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reactions-viewer">
|
<div class="mk-reactions-viewer">
|
||||||
<template v-if="reactions">
|
<template v-if="reactions">
|
||||||
<span :class="{ reacted: note.myReaction == 'like' }" @click="react('like')" v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'like' }" @click="react('like')" v-if="reactions.like" v-particle><mk-reaction-icon reaction="like" ref="like"/><span>{{ reactions.like }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'love' }" @click="react('love')" v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'love' }" @click="react('love')" v-if="reactions.love" v-particle><mk-reaction-icon reaction="love" ref="love"/><span>{{ reactions.love }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'laugh' }" @click="react('laugh')" v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'laugh' }" @click="react('laugh')" v-if="reactions.laugh" v-particle><mk-reaction-icon reaction="laugh" ref="laugh"/><span>{{ reactions.laugh }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'hmm' }" @click="react('hmm')" v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'hmm' }" @click="react('hmm')" v-if="reactions.hmm" v-particle><mk-reaction-icon reaction="hmm" ref="hmm"/><span>{{ reactions.hmm }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'surprise' }" @click="react('surprise')" v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'surprise' }" @click="react('surprise')" v-if="reactions.surprise" v-particle><mk-reaction-icon reaction="surprise" ref="surprise"/><span>{{ reactions.surprise }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'congrats' }" @click="react('congrats')" v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'congrats' }" @click="react('congrats')" v-if="reactions.congrats" v-particle><mk-reaction-icon reaction="congrats" ref="congrats"/><span>{{ reactions.congrats }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'angry' }" @click="react('angry')" v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'angry' }" @click="react('angry')" v-if="reactions.angry" v-particle><mk-reaction-icon reaction="angry" ref="angry"/><span>{{ reactions.angry }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'confused' }" @click="react('confused')" v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'confused' }" @click="react('confused')" v-if="reactions.confused" v-particle><mk-reaction-icon reaction="confused" ref="confused"/><span>{{ reactions.confused }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'rip' }" @click="react('rip')" v-if="reactions.rip"><mk-reaction-icon reaction="rip"/><span>{{ reactions.rip }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'rip' }" @click="react('rip')" v-if="reactions.rip" v-particle><mk-reaction-icon reaction="rip" ref="rip"/><span>{{ reactions.rip }}</span></span>
|
||||||
<span :class="{ reacted: note.myReaction == 'pudding' }" @click="react('pudding')" v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
|
<span :class="{ reacted: note.myReaction == 'pudding' }" @click="react('pudding')" v-if="reactions.pudding" v-particle><mk-reaction-icon reaction="pudding" ref="pudding"/><span>{{ reactions.pudding }}</span></span>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
import Icon from './reaction-icon.vue';
|
||||||
|
import * as anime from 'animejs';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
props: ['note'],
|
props: ['note'],
|
||||||
computed: {
|
computed: {
|
||||||
reactions(): number {
|
reactions(): any {
|
||||||
return this.note.reactionCounts;
|
return this.note.reactionCounts;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
'reactions.like'() {
|
||||||
|
this.anime('like');
|
||||||
|
},
|
||||||
|
'reactions.love'() {
|
||||||
|
this.anime('love');
|
||||||
|
},
|
||||||
|
'reactions.laugh'() {
|
||||||
|
this.anime('laugh');
|
||||||
|
},
|
||||||
|
'reactions.hmm'() {
|
||||||
|
this.anime('hmm');
|
||||||
|
},
|
||||||
|
'reactions.surprise'() {
|
||||||
|
this.anime('surprise');
|
||||||
|
},
|
||||||
|
'reactions.congrats'() {
|
||||||
|
this.anime('congrats');
|
||||||
|
},
|
||||||
|
'reactions.angry'() {
|
||||||
|
this.anime('angry');
|
||||||
|
},
|
||||||
|
'reactions.confused'() {
|
||||||
|
this.anime('confused');
|
||||||
|
},
|
||||||
|
'reactions.rip'() {
|
||||||
|
this.anime('rip');
|
||||||
|
},
|
||||||
|
'reactions.pudding'() {
|
||||||
|
this.anime('pudding');
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
react(reaction: string) {
|
react(reaction: string) {
|
||||||
this.$root.api('notes/reactions/create', {
|
this.$root.api('notes/reactions/create', {
|
||||||
noteId: this.note.id,
|
noteId: this.note.id,
|
||||||
reaction: reaction
|
reaction: reaction
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
anime(reaction: string) {
|
||||||
|
if (this.$store.state.device.reduceMotion) return;
|
||||||
|
if (document.hidden) return;
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
const rect = this.$refs[reaction].$el.getBoundingClientRect();
|
||||||
|
|
||||||
|
const x = rect.left;
|
||||||
|
const y = rect.top;
|
||||||
|
|
||||||
|
const icon = new Icon({
|
||||||
|
parent: this,
|
||||||
|
propsData: {
|
||||||
|
reaction: reaction
|
||||||
|
}
|
||||||
|
}).$mount();
|
||||||
|
|
||||||
|
icon.$el.style.position = 'absolute';
|
||||||
|
icon.$el.style.zIndex = 100;
|
||||||
|
icon.$el.style.top = (y + window.scrollY) + 'px';
|
||||||
|
icon.$el.style.left = (x + window.scrollX) + 'px';
|
||||||
|
icon.$el.style.fontSize = window.getComputedStyle(this.$refs[reaction].$el).fontSize;
|
||||||
|
|
||||||
|
document.body.appendChild(icon.$el);
|
||||||
|
|
||||||
|
anime({
|
||||||
|
targets: icon.$el,
|
||||||
|
opacity: [1, 0],
|
||||||
|
translateY: [0, -64],
|
||||||
|
duration: 1000,
|
||||||
|
easing: 'linear',
|
||||||
|
complete: () => {
|
||||||
|
icon.destroyDom();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
<mk-avatar class="avatar" :user="note.user"/>
|
<mk-avatar class="avatar" :user="note.user"/>
|
||||||
<fa icon="retweet"/>
|
<fa icon="retweet"/>
|
||||||
<i18n path="@.renoted-by" tag="span">
|
<i18n path="@.renoted-by" tag="span">
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId" place="user">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId" place="user">
|
||||||
|
<mk-user-name :user="note.user"/>
|
||||||
|
</router-link>
|
||||||
</i18n>
|
</i18n>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span>
|
<span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span>
|
||||||
|
@ -26,6 +26,7 @@ import { toUnicode } from 'punycode';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/signin.vue'),
|
i18n: i18n('common/views/components/signin.vue'),
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
withAvatar: {
|
withAvatar: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -33,6 +34,7 @@ export default Vue.extend({
|
|||||||
default: true
|
default: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
signing: false,
|
signing: false,
|
||||||
@ -45,11 +47,13 @@ export default Vue.extend({
|
|||||||
meta: null
|
meta: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.$root.getMeta().then(meta => {
|
this.$root.getMeta().then(meta => {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onUsernameChange() {
|
onUsernameChange() {
|
||||||
this.$root.api('users/show', {
|
this.$root.api('users/show', {
|
||||||
@ -60,6 +64,7 @@ export default Vue.extend({
|
|||||||
this.user = null;
|
this.user = null;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
this.signing = true;
|
this.signing = true;
|
||||||
|
|
||||||
@ -80,8 +85,6 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
||||||
|
|
||||||
.mk-signin
|
.mk-signin
|
||||||
color #555
|
color #555
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ import { toUnicode } from 'punycode';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/signup.vue'),
|
i18n: i18n('common/views/components/signup.vue'),
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
host: toUnicode(host),
|
host: toUnicode(host),
|
||||||
@ -64,6 +65,7 @@ export default Vue.extend({
|
|||||||
meta: null
|
meta: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
shouldShowProfileUrl(): boolean {
|
shouldShowProfileUrl(): boolean {
|
||||||
return (this.username != '' &&
|
return (this.username != '' &&
|
||||||
@ -72,17 +74,20 @@ export default Vue.extend({
|
|||||||
this.usernameState != 'max-range');
|
this.usernameState != 'max-range');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.$root.getMeta().then(meta => {
|
this.$root.getMeta().then(meta => {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
const head = document.getElementsByTagName('head')[0];
|
const head = document.getElementsByTagName('head')[0];
|
||||||
const script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
||||||
head.appendChild(script);
|
head.appendChild(script);
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onChangeUsername() {
|
onChangeUsername() {
|
||||||
if (this.username == '') {
|
if (this.username == '') {
|
||||||
@ -111,6 +116,7 @@ export default Vue.extend({
|
|||||||
this.usernameState = 'error';
|
this.usernameState = 'error';
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onChangePassword() {
|
onChangePassword() {
|
||||||
if (this.password == '') {
|
if (this.password == '') {
|
||||||
this.passwordStrength = '';
|
this.passwordStrength = '';
|
||||||
@ -120,6 +126,7 @@ export default Vue.extend({
|
|||||||
const strength = getPasswordStrength(this.password);
|
const strength = getPasswordStrength(this.password);
|
||||||
this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low';
|
this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low';
|
||||||
},
|
},
|
||||||
|
|
||||||
onChangePasswordRetype() {
|
onChangePasswordRetype() {
|
||||||
if (this.retypedPassword == '') {
|
if (this.retypedPassword == '') {
|
||||||
this.passwordRetypeState = null;
|
this.passwordRetypeState = null;
|
||||||
@ -128,6 +135,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.passwordRetypeState = this.password == this.retypedPassword ? 'match' : 'not-match';
|
this.passwordRetypeState = this.password == this.retypedPassword ? 'match' : 'not-match';
|
||||||
},
|
},
|
||||||
|
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
this.$root.api('signup', {
|
this.$root.api('signup', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
@ -138,8 +146,9 @@ export default Vue.extend({
|
|||||||
this.$root.api('signin', {
|
this.$root.api('signin', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password
|
password: this.password
|
||||||
}, true).then(() => {
|
}, true).then(res => {
|
||||||
location.href = '/';
|
localStorage.setItem('i', res.i);
|
||||||
|
location.reload();
|
||||||
});
|
});
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert(this.$t('some-error'));
|
alert(this.$t('some-error'));
|
||||||
@ -154,8 +163,6 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
|
|
||||||
|
|
||||||
.mk-signup
|
.mk-signup
|
||||||
min-width 302px
|
min-width 302px
|
||||||
</style>
|
</style>
|
||||||
|
@ -33,14 +33,7 @@ export default Vue.extend({
|
|||||||
return typeof this.time == 'string' ? new Date(this.time) : this.time;
|
return typeof this.time == 'string' ? new Date(this.time) : this.time;
|
||||||
},
|
},
|
||||||
absolute(): string {
|
absolute(): string {
|
||||||
const time = this._time;
|
return this._time.toLocaleString();
|
||||||
return (
|
|
||||||
time.getFullYear() + '年' +
|
|
||||||
(time.getMonth() + 1) + '月' +
|
|
||||||
time.getDate() + '日' +
|
|
||||||
' ' +
|
|
||||||
time.getHours() + '時' +
|
|
||||||
time.getMinutes() + '分');
|
|
||||||
},
|
},
|
||||||
relative(): string {
|
relative(): string {
|
||||||
const time = this._time;
|
const time = this._time;
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<component class="dmtdnykelhudezerjlfpbhgovrgnqqgr"
|
<component class="dmtdnykelhudezerjlfpbhgovrgnqqgr"
|
||||||
:is="link ? 'a' : 'button'"
|
:is="link ? 'a' : 'button'"
|
||||||
:class="[styl, { inline, primary }]"
|
:class="{ inline, primary, wait }"
|
||||||
:type="type"
|
:type="type"
|
||||||
@click="$emit('click')"
|
@click="$emit('click')"
|
||||||
|
@mousedown="onMousedown"
|
||||||
>
|
>
|
||||||
|
<div ref="ripples" class="ripples"></div>
|
||||||
|
<div class="content">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
|
</div>
|
||||||
</component>
|
</component>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -44,11 +48,11 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
wait: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
},
|
},
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
styl: 'fill'
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (this.autofocus) {
|
if (this.autofocus) {
|
||||||
@ -56,6 +60,47 @@ export default Vue.extend({
|
|||||||
this.$el.focus();
|
this.$el.focus();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onMousedown(e: MouseEvent) {
|
||||||
|
function distance(p, q) {
|
||||||
|
const sqrt = Math.sqrt, pow = Math.pow;
|
||||||
|
return sqrt(pow(p.x - q.x, 2) + pow(p.y - q.y, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
function calcCircleScale(boxW, boxH, circleCenterX, circleCenterY) {
|
||||||
|
const origin = {x: circleCenterX, y: circleCenterY};
|
||||||
|
const dist1 = distance({x: 0, y: 0}, origin);
|
||||||
|
const dist2 = distance({x: boxW, y: 0}, origin);
|
||||||
|
const dist3 = distance({x: 0, y: boxH}, origin);
|
||||||
|
const dist4 = distance({x: boxW, y: boxH }, origin);
|
||||||
|
return Math.max(dist1, dist2, dist3, dist4) * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rect = e.target.getBoundingClientRect();
|
||||||
|
|
||||||
|
const ripple = document.createElement('div');
|
||||||
|
ripple.style.top = (e.clientY - rect.top - 1).toString() + 'px';
|
||||||
|
ripple.style.left = (e.clientX - rect.left - 1).toString() + 'px';
|
||||||
|
|
||||||
|
this.$refs.ripples.appendChild(ripple);
|
||||||
|
|
||||||
|
const circleCenterX = e.clientX - rect.left;
|
||||||
|
const circleCenterY = e.clientY - rect.top;
|
||||||
|
|
||||||
|
const scale = calcCircleScale(e.target.clientWidth, e.target.clientHeight, circleCenterX, circleCenterY);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
ripple.style.transform = 'scale(' + (scale / 2) + ')';
|
||||||
|
}, 1);
|
||||||
|
setTimeout(() => {
|
||||||
|
ripple.style.transition = 'all 1s ease';
|
||||||
|
ripple.style.opacity = '0';
|
||||||
|
}, 1000);
|
||||||
|
setTimeout(() => {
|
||||||
|
if (this.$refs.ripples) this.$refs.ripples.removeChild(ripple);
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@ -76,6 +121,24 @@ export default Vue.extend({
|
|||||||
box-shadow none
|
box-shadow none
|
||||||
text-decoration none
|
text-decoration none
|
||||||
user-select none
|
user-select none
|
||||||
|
color var(--text)
|
||||||
|
background var(--buttonBg)
|
||||||
|
|
||||||
|
&:not(:disabled):hover
|
||||||
|
background var(--buttonHoverBg)
|
||||||
|
|
||||||
|
&:not(:disabled):active
|
||||||
|
background var(--buttonActiveBg)
|
||||||
|
|
||||||
|
&.primary
|
||||||
|
color var(--primaryForeground)
|
||||||
|
background var(--primary)
|
||||||
|
|
||||||
|
&:not(:disabled):hover
|
||||||
|
background var(--primaryLighten5)
|
||||||
|
|
||||||
|
&:not(:disabled):active
|
||||||
|
background var(--primaryDarken5)
|
||||||
|
|
||||||
*
|
*
|
||||||
pointer-events none
|
pointer-events none
|
||||||
@ -107,34 +170,50 @@ export default Vue.extend({
|
|||||||
&.primary
|
&.primary
|
||||||
font-weight bold
|
font-weight bold
|
||||||
|
|
||||||
&.fill
|
&.wait
|
||||||
color var(--text)
|
background linear-gradient(
|
||||||
background var(--buttonBg)
|
45deg,
|
||||||
|
var(--primaryDarken10) 25%,
|
||||||
|
var(--primary) 25%,
|
||||||
|
var(--primary) 50%,
|
||||||
|
var(--primaryDarken10) 50%,
|
||||||
|
var(--primaryDarken10) 75%,
|
||||||
|
var(--primary) 75%,
|
||||||
|
var(--primary)
|
||||||
|
)
|
||||||
|
background-size 32px 32px
|
||||||
|
animation stripe-bg 1.5s linear infinite
|
||||||
|
opacity 0.7
|
||||||
|
cursor wait
|
||||||
|
|
||||||
&:not(:disabled):hover
|
@keyframes stripe-bg
|
||||||
background var(--buttonHoverBg)
|
from {background-position: 0 0;}
|
||||||
|
to {background-position: -64px 32px;}
|
||||||
|
|
||||||
&:not(:disabled):active
|
> .ripples
|
||||||
background var(--buttonActiveBg)
|
position absolute
|
||||||
|
z-index 0
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
border-radius 6px
|
||||||
|
overflow hidden
|
||||||
|
|
||||||
&.primary
|
>>> div
|
||||||
color var(--primaryForeground)
|
position absolute
|
||||||
background var(--primary)
|
width 2px
|
||||||
|
height 2px
|
||||||
|
border-radius 100%
|
||||||
|
background rgba(0, 0, 0, 0.1)
|
||||||
|
opacity 1
|
||||||
|
transform scale(1)
|
||||||
|
transition all 0.5s cubic-bezier(0, .5, .5, 1)
|
||||||
|
|
||||||
&:not(:disabled):hover
|
&.primary > .ripples >>> div
|
||||||
background var(--primaryLighten5)
|
background rgba(0, 0, 0, 0.15)
|
||||||
|
|
||||||
&:not(:disabled):active
|
> .content
|
||||||
background var(--primaryDarken5)
|
z-index 1
|
||||||
|
|
||||||
&:not(.fill)
|
|
||||||
color var(--primary)
|
|
||||||
background none
|
|
||||||
|
|
||||||
&:not(:disabled):hover
|
|
||||||
color var(--primaryDarken5)
|
|
||||||
|
|
||||||
&:not(:disabled):active
|
|
||||||
background var(--primaryAlpha03)
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<div class="value" ref="passwordMetar"></div>
|
<div class="value" ref="passwordMetar"></div>
|
||||||
</div>
|
</div>
|
||||||
<span class="label" ref="label"><slot></slot></span>
|
<span class="label" ref="label"><slot></slot></span>
|
||||||
|
<span class="title" ref="title"><slot name="title"></slot></span>
|
||||||
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
|
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
|
||||||
<template v-if="type != 'file'">
|
<template v-if="type != 'file'">
|
||||||
<input ref="input"
|
<input ref="input"
|
||||||
@ -281,6 +282,20 @@ root(fill)
|
|||||||
transform-origin top left
|
transform-origin top left
|
||||||
transform scale(1)
|
transform scale(1)
|
||||||
|
|
||||||
|
> .title
|
||||||
|
position absolute
|
||||||
|
z-index 1
|
||||||
|
top fill ? -24px : -17px
|
||||||
|
left 0 !important
|
||||||
|
pointer-events none
|
||||||
|
font-size 16px
|
||||||
|
line-height 32px
|
||||||
|
color var(--inputLabel)
|
||||||
|
pointer-events none
|
||||||
|
//will-change transform
|
||||||
|
transform-origin top left
|
||||||
|
transform scale(.75)
|
||||||
|
|
||||||
> input
|
> input
|
||||||
display block
|
display block
|
||||||
width 100%
|
width 100%
|
||||||
|
@ -94,7 +94,7 @@ root(fill)
|
|||||||
width 24px
|
width 24px
|
||||||
text-align center
|
text-align center
|
||||||
line-height 32px
|
line-height 32px
|
||||||
color rgba(#000, 0.54)
|
color var(--inputLabel)
|
||||||
|
|
||||||
&:not(:empty) + .input
|
&:not(:empty) + .input
|
||||||
margin-left 28px
|
margin-left 28px
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ui-textarea" :class="{ focused, filled, tall }">
|
<div class="ui-textarea" :class="{ focused, filled, tall, pre }">
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<span class="label" ref="label"><slot></slot></span>
|
<span class="label" ref="label"><slot></slot></span>
|
||||||
<textarea ref="input"
|
<textarea ref="input"
|
||||||
@ -46,6 +46,11 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
pre: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -175,6 +180,11 @@ root(fill)
|
|||||||
> textarea
|
> textarea
|
||||||
min-height 200px
|
min-height 200px
|
||||||
|
|
||||||
|
&.pre
|
||||||
|
> .input
|
||||||
|
> textarea
|
||||||
|
white-space pre
|
||||||
|
|
||||||
.ui-textarea.fill
|
.ui-textarea.fill
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
@ -170,6 +170,9 @@ export default Vue.extend({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (url.hostname === 'music.youtube.com')
|
||||||
|
url.hostname = 'youtube.com';
|
||||||
|
|
||||||
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) return;
|
if (info.url == null) return;
|
||||||
|
150
src/client/app/common/views/components/user-list-editor.vue
Normal file
150
src/client/app/common/views/components/user-list-editor.vue
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<template>
|
||||||
|
<div class="cudqjmnl">
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="faList"/> {{ list.title }}</div>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<ui-button @click="rename"><fa :icon="faICursor"/> {{ $t('rename') }}</ui-button>
|
||||||
|
<ui-button @click="del"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title"><fa :icon="faUsers"/> {{ $t('users') }}</div>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||||
|
<div class="phcqulfl" v-for="user in users">
|
||||||
|
<div>
|
||||||
|
<a :href="user | userPage">
|
||||||
|
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<header>
|
||||||
|
<b><mk-user-name :user="user"/></b>
|
||||||
|
<span class="username">@{{ user | acct }}</span>
|
||||||
|
</header>
|
||||||
|
<div>
|
||||||
|
<a @click="remove(user)">{{ $t('remove-user') }}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</sequential-entrance>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
import { faList, faICursor, faUsers } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/components/user-list-editor.vue'),
|
||||||
|
|
||||||
|
props: {
|
||||||
|
list: {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
users: [],
|
||||||
|
faList, faICursor, faTrashAlt, faUsers
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.fetchUsers();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
fetchUsers() {
|
||||||
|
this.$root.api('users/show', {
|
||||||
|
userIds: this.list.userIds
|
||||||
|
}).then(users => {
|
||||||
|
this.users = users;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
rename() {
|
||||||
|
this.$root.dialog({
|
||||||
|
title: this.$t('rename'),
|
||||||
|
input: {
|
||||||
|
default: this.list.title
|
||||||
|
}
|
||||||
|
}).then(({ canceled, result: title }) => {
|
||||||
|
if (canceled) return;
|
||||||
|
this.$root.api('users/lists/update', {
|
||||||
|
listId: this.list.id,
|
||||||
|
title: title
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
del() {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'warning',
|
||||||
|
text: this.$t('delete-are-you-sure').replace('$1', this.list.title),
|
||||||
|
showCancelButton: true
|
||||||
|
}).then(({ canceled }) => {
|
||||||
|
if (canceled) return;
|
||||||
|
|
||||||
|
this.$root.api('users/lists/delete', {
|
||||||
|
listId: this.list.id
|
||||||
|
}).then(() => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('deleted')
|
||||||
|
});
|
||||||
|
}).catch(e => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: e
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
remove(user: any) {
|
||||||
|
this.$root.api('users/lists/pull', {
|
||||||
|
listId: this.list.id,
|
||||||
|
userId: user.id
|
||||||
|
}).then(() => {
|
||||||
|
this.fetchUsers();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.cudqjmnl
|
||||||
|
.phcqulfl
|
||||||
|
display flex
|
||||||
|
padding 16px 0
|
||||||
|
border-top solid 1px var(--faceDivider)
|
||||||
|
|
||||||
|
> div:first-child
|
||||||
|
> a
|
||||||
|
> .avatar
|
||||||
|
width 64px
|
||||||
|
height 64px
|
||||||
|
|
||||||
|
> div:last-child
|
||||||
|
flex 1
|
||||||
|
padding-left 16px
|
||||||
|
|
||||||
|
@media (max-width 500px)
|
||||||
|
font-size 14px
|
||||||
|
|
||||||
|
> header
|
||||||
|
> .username
|
||||||
|
margin-left 8px
|
||||||
|
opacity 0.7
|
||||||
|
|
||||||
|
</style>
|
16
src/client/app/common/views/components/user-name.vue
Normal file
16
src/client/app/common/views/components/user-name.vue
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<misskey-flavored-markdown :text="user.name || user.username" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
user: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
@ -5,7 +5,9 @@
|
|||||||
<mk-avatar class="avatar" :user="note.user" target="_blank"/>
|
<mk-avatar class="avatar" :user="note.user" target="_blank"/>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<header>
|
<header>
|
||||||
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
|
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">
|
||||||
|
<mk-user-name :user="note.user"/>
|
||||||
|
</router-link>
|
||||||
<span class="username">@{{ note.user | acct }}</span>
|
<span class="username">@{{ note.user | acct }}</span>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<router-link class="created-at" :to="note | notePage">
|
<router-link class="created-at" :to="note | notePage">
|
||||||
@ -14,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :custom-emojis="note.emojis"/>
|
<misskey-flavored-markdown v-if="note.text" :text="note.cw != null ? note.cw : note.text" :author="note.user" :custom-emojis="note.emojis"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,21 +21,24 @@ class Autocomplete {
|
|||||||
private suggestion: any;
|
private suggestion: any;
|
||||||
private textarea: any;
|
private textarea: any;
|
||||||
private vm: any;
|
private vm: any;
|
||||||
private model: any;
|
|
||||||
private currentType: string;
|
private currentType: string;
|
||||||
|
private opts: {
|
||||||
|
model: string;
|
||||||
|
};
|
||||||
|
private opening: boolean;
|
||||||
|
|
||||||
private get text(): string {
|
private get text(): string {
|
||||||
return this.vm[this.model];
|
return this.vm[this.opts.model];
|
||||||
}
|
}
|
||||||
|
|
||||||
private set text(text: string) {
|
private set text(text: string) {
|
||||||
this.vm[this.model] = text;
|
this.vm[this.opts.model] = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 対象のテキストエリアを与えてインスタンスを初期化します。
|
* 対象のテキストエリアを与えてインスタンスを初期化します。
|
||||||
*/
|
*/
|
||||||
constructor(textarea, vm, model) {
|
constructor(textarea, vm, opts) {
|
||||||
//#region BIND
|
//#region BIND
|
||||||
this.onInput = this.onInput.bind(this);
|
this.onInput = this.onInput.bind(this);
|
||||||
this.complete = this.complete.bind(this);
|
this.complete = this.complete.bind(this);
|
||||||
@ -45,7 +48,8 @@ class Autocomplete {
|
|||||||
this.suggestion = null;
|
this.suggestion = null;
|
||||||
this.textarea = textarea;
|
this.textarea = textarea;
|
||||||
this.vm = vm;
|
this.vm = vm;
|
||||||
this.model = model;
|
this.opts = opts;
|
||||||
|
this.opening = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -126,6 +130,8 @@ class Autocomplete {
|
|||||||
if (type != this.currentType) {
|
if (type != this.currentType) {
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
|
if (this.opening) return;
|
||||||
|
this.opening = true;
|
||||||
this.currentType = type;
|
this.currentType = type;
|
||||||
|
|
||||||
//#region サジェストを表示すべき位置を計算
|
//#region サジェストを表示すべき位置を計算
|
||||||
@ -141,6 +147,8 @@ class Autocomplete {
|
|||||||
this.suggestion.x = x;
|
this.suggestion.x = x;
|
||||||
this.suggestion.y = y;
|
this.suggestion.y = y;
|
||||||
this.suggestion.q = q;
|
this.suggestion.q = q;
|
||||||
|
|
||||||
|
this.opening = false;
|
||||||
} else {
|
} else {
|
||||||
const MkAutocomplete = await import('../components/autocomplete.vue').then(m => m.default);
|
const MkAutocomplete = await import('../components/autocomplete.vue').then(m => m.default);
|
||||||
|
|
||||||
@ -160,6 +168,8 @@ class Autocomplete {
|
|||||||
|
|
||||||
// 要素追加
|
// 要素追加
|
||||||
document.body.appendChild(this.suggestion.$el);
|
document.body.appendChild(this.suggestion.$el);
|
||||||
|
|
||||||
|
this.opening = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
import autocomplete from './autocomplete';
|
import autocomplete from './autocomplete';
|
||||||
|
import particle from './particle';
|
||||||
|
|
||||||
Vue.directive('autocomplete', autocomplete);
|
Vue.directive('autocomplete', autocomplete);
|
||||||
|
Vue.directive('particle', particle);
|
||||||
|
24
src/client/app/common/views/directives/particle.ts
Normal file
24
src/client/app/common/views/directives/particle.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import Particle from '../components/particle.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
bind(el, binding, vn) {
|
||||||
|
if (vn.context.$store.state.device.reduceMotion) return;
|
||||||
|
|
||||||
|
el.addEventListener('click', () => {
|
||||||
|
const rect = el.getBoundingClientRect();
|
||||||
|
|
||||||
|
const x = rect.left + (el.clientWidth / 2);
|
||||||
|
const y = rect.top + (el.clientHeight / 2);
|
||||||
|
|
||||||
|
const particle = new Particle({
|
||||||
|
parent: vn.context,
|
||||||
|
propsData: {
|
||||||
|
x,
|
||||||
|
y
|
||||||
|
}
|
||||||
|
}).$mount();
|
||||||
|
|
||||||
|
document.body.appendChild(particle.$el);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -1,6 +1,3 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
Vue.filter('number', (n) => {
|
Vue.filter('number', n => n == null ? 'N/A' : n.toLocaleString());
|
||||||
if (n == null) return 'N/A';
|
|
||||||
return n.toLocaleString();
|
|
||||||
});
|
|
||||||
|
65
src/client/app/common/views/pages/404.vue
Normal file
65
src/client/app/common/views/pages/404.vue
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<figure class="megtcxgu">
|
||||||
|
<img :src="src" alt="">
|
||||||
|
<figcaption>
|
||||||
|
<h1><span>Not found</span></h1>
|
||||||
|
<p><span>{{ $t('page-not-found') }}</span></p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue'
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/pages/404.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
src: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
if (meta.errorImageUrl)
|
||||||
|
this.src = meta.errorImageUrl;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.megtcxgu
|
||||||
|
align-items center
|
||||||
|
bottom 0
|
||||||
|
display flex
|
||||||
|
justify-content center
|
||||||
|
left 0
|
||||||
|
margin auto
|
||||||
|
position fixed
|
||||||
|
right 0
|
||||||
|
top 0
|
||||||
|
|
||||||
|
> img
|
||||||
|
width 500px
|
||||||
|
|
||||||
|
> figcaption
|
||||||
|
margin 8px
|
||||||
|
|
||||||
|
h1,
|
||||||
|
p
|
||||||
|
color var(--text)
|
||||||
|
display flex
|
||||||
|
flex-flow column
|
||||||
|
|
||||||
|
*
|
||||||
|
position relative
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
@media (max-width: 767px)
|
||||||
|
flex-flow column
|
||||||
|
|
||||||
|
> figcaption
|
||||||
|
text-align center
|
||||||
|
|
||||||
|
</style>
|
@ -6,10 +6,12 @@
|
|||||||
<div class="banner" :style="bannerStyle"></div>
|
<div class="banner" :style="bannerStyle"></div>
|
||||||
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
|
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
|
<router-link :to="user | userPage" class="name">
|
||||||
|
<mk-user-name :user="user"/>
|
||||||
|
</router-link>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i"/>
|
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@ -20,7 +22,7 @@
|
|||||||
:disabled="followWait">
|
:disabled="followWait">
|
||||||
<template v-if="!followWait">
|
<template v-if="!followWait">
|
||||||
<template v-if="user.hasPendingFollowRequestFromYou && user.isLocked"><fa icon="hourglass-half"/> {{ $t('request-pending') }}</template>
|
<template v-if="user.hasPendingFollowRequestFromYou && user.isLocked"><fa icon="hourglass-half"/> {{ $t('request-pending') }}</template>
|
||||||
<template v-else-if="user.hasPendingFollowRequestFromYou && !user.isLocked"><fa icon="hourglass-start"/> {{ $t('follow-processing') }}</template>
|
<template v-else-if="user.hasPendingFollowRequestFromYou && !user.isLocked"><fa icon="spinner"/> {{ $t('follow-processing') }}</template>
|
||||||
<template v-else-if="user.isFollowing"><fa icon="minus"/> {{ $t('following') }}</template>
|
<template v-else-if="user.isFollowing"><fa icon="minus"/> {{ $t('following') }}</template>
|
||||||
<template v-else-if="!user.isFollowing && user.isLocked"><fa icon="plus"/> {{ $t('follow-request') }}</template>
|
<template v-else-if="!user.isFollowing && user.isLocked"><fa icon="plus"/> {{ $t('follow-request') }}</template>
|
||||||
<template v-else-if="!user.isFollowing && !user.isLocked"><fa icon="plus"/> {{ $t('follow') }}</template>
|
<template v-else-if="!user.isFollowing && !user.isLocked"><fa icon="plus"/> {{ $t('follow') }}</template>
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<mk-widget-container :show-header="false">
|
|
||||||
<article class="dolfvtibguprpxxhfndqaosjitixjohx">
|
|
||||||
<h1><fa icon="heart"/>{{ $t('title') }}</h1>
|
|
||||||
<p v-if="meta">
|
|
||||||
{{ this.$t('text').substr(0, this.$t('text').indexOf('{')) }}
|
|
||||||
<a :href="'mailto:' + meta.maintainer.email">{{ meta.maintainer.name }}</a>
|
|
||||||
{{ this.$t('text').substr(this.$t('text').indexOf('}') + 1) }}
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
</mk-widget-container>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import define from '../../../common/define-widget';
|
|
||||||
import i18n from '../../../i18n';
|
|
||||||
|
|
||||||
export default define({
|
|
||||||
name: 'donation'
|
|
||||||
}).extend({
|
|
||||||
i18n: i18n('common/views/widgets/donation.vue'),
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
meta: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.$root.getMeta().then(meta => {
|
|
||||||
this.meta = meta;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
.dolfvtibguprpxxhfndqaosjitixjohx
|
|
||||||
padding 20px
|
|
||||||
background var(--donationBg)
|
|
||||||
color var(--donationFg)
|
|
||||||
|
|
||||||
> h1
|
|
||||||
margin 0 0 5px 0
|
|
||||||
font-size 1em
|
|
||||||
|
|
||||||
> [data-icon]
|
|
||||||
margin-right 0.25em
|
|
||||||
|
|
||||||
> p
|
|
||||||
display block
|
|
||||||
z-index 1
|
|
||||||
margin 0
|
|
||||||
font-size 0.8em
|
|
||||||
|
|
||||||
</style>
|
|
@ -11,7 +11,6 @@ import wCalendar from './calendar.vue';
|
|||||||
import wPhotoStream from './photo-stream.vue';
|
import wPhotoStream from './photo-stream.vue';
|
||||||
import wSlideshow from './slideshow.vue';
|
import wSlideshow from './slideshow.vue';
|
||||||
import wTips from './tips.vue';
|
import wTips from './tips.vue';
|
||||||
import wDonation from './donation.vue';
|
|
||||||
import wNav from './nav.vue';
|
import wNav from './nav.vue';
|
||||||
import wHashtags from './hashtags.vue';
|
import wHashtags from './hashtags.vue';
|
||||||
|
|
||||||
@ -21,7 +20,6 @@ Vue.component('mkw-calendar', wCalendar);
|
|||||||
Vue.component('mkw-photo-stream', wPhotoStream);
|
Vue.component('mkw-photo-stream', wPhotoStream);
|
||||||
Vue.component('mkw-slideshow', wSlideshow);
|
Vue.component('mkw-slideshow', wSlideshow);
|
||||||
Vue.component('mkw-tips', wTips);
|
Vue.component('mkw-tips', wTips);
|
||||||
Vue.component('mkw-donation', wDonation);
|
|
||||||
Vue.component('mkw-broadcast', wBroadcast);
|
Vue.component('mkw-broadcast', wBroadcast);
|
||||||
Vue.component('mkw-server', wServer);
|
Vue.component('mkw-server', wServer);
|
||||||
Vue.component('mkw-posts-monitor', wPostsMonitor);
|
Vue.component('mkw-posts-monitor', wPostsMonitor);
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
:style="`background-image: url(${image.thumbnailUrl || image.url})`"
|
:style="`background-image: url(${image.thumbnailUrl || image.url})`"
|
||||||
draggable="true"
|
draggable="true"
|
||||||
@dragstart="onDragstart(image, $event)"
|
@dragstart="onDragstart(image, $event)"
|
||||||
@dragend="onDragend"
|
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<p :class="$style.empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
|
<p :class="$style.empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
|
||||||
@ -78,10 +77,6 @@ export default define({
|
|||||||
e.dataTransfer.effectAllowed = 'move';
|
e.dataTransfer.effectAllowed = 'move';
|
||||||
e.dataTransfer.setData('mk_drive_file', JSON.stringify(file));
|
e.dataTransfer.setData('mk_drive_file', JSON.stringify(file));
|
||||||
},
|
},
|
||||||
|
|
||||||
onDragend(e) {
|
|
||||||
this.browser.isDragSource = false;
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -164,7 +164,7 @@ export default define({
|
|||||||
this.draw();
|
this.draw();
|
||||||
},
|
},
|
||||||
onStatsLog(statsLog) {
|
onStatsLog(statsLog) {
|
||||||
statsLog.forEach(stats => this.onStats(stats));
|
for (const stats of statsLog) this.onStats(stats);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user