Compare commits

...

229 Commits

Author SHA1 Message Date
f96c60c1a0 Merge branch 'develop' 2021-05-11 14:39:40 +09:00
99234632b2 12.81.0 2021-05-11 14:39:26 +09:00
3a7393e1dd New Crowdin updates (#7501)
* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Czech)
2021-05-11 14:39:08 +09:00
2d12f8b49e Improve rendering performance 2021-05-11 14:38:34 +09:00
3461f0ffc9 コントロールパネルでログ見れるように 2021-05-11 14:31:20 +09:00
f24f7f14c3 🎨 2021-05-11 12:55:38 +09:00
917e57d475 Fix #7431 (#7432)
* Fix #7431

* fix
2021-05-11 12:41:02 +09:00
6b43c5c18c change dom order: down elements cover upper ones (#7509) 2021-05-11 12:39:10 +09:00
7cd7059fbc 🎨 2021-05-10 21:22:51 +09:00
591a5c277c Add queue types (#7504) 2021-05-08 18:56:21 +09:00
164959a0c5 Create get-index-stats.ts 2021-05-08 12:51:23 +09:00
47fa7bb22a Improve ad 2021-05-08 12:50:11 +09:00
5b250c15f8 fix bug 2021-05-08 12:07:30 +09:00
b60f9fbc00 Improve ad 2021-05-07 14:22:13 +09:00
8accb78fa9 Merge branch 'develop' 2021-05-05 19:05:50 +09:00
3d7c3c39ff 12.80.3 2021-05-05 19:05:33 +09:00
dd628006ec Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-05-05 19:05:21 +09:00
6cec662ec4 Improve ad 2021-05-05 19:05:19 +09:00
588b838deb APIドキュメントが見れなくなっているのを修正など (#7500)
* Test api.json

* Fix typo

* Fix api-doc
2021-05-05 19:02:30 +09:00
05203e2cf0 Merge branch 'develop' 2021-05-05 15:17:53 +09:00
80f8c2de78 12.80.2 2021-05-05 15:17:45 +09:00
d011aeefc5 New Crowdin updates (#7496)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Japanese, Kansai)
2021-05-05 15:17:12 +09:00
44627c3b5f Update date-separated-list.vue 2021-05-05 15:16:47 +09:00
925a61e4d7 🎨 2021-05-05 14:06:57 +09:00
d8b17daf9d fix style 2021-05-04 23:43:26 +09:00
5e40930f11 Fix style 2021-05-04 23:39:17 +09:00
b6c9ab0c15 Merge branch 'develop' 2021-05-04 23:12:53 +09:00
1a8f41010e 12.80.1 2021-05-04 23:12:45 +09:00
67f58b5217 fix bug 2021-05-04 23:12:36 +09:00
cdef5cd1ad Merge branch 'develop' 2021-05-04 22:53:25 +09:00
2efae80b97 12.80.0 2021-05-04 22:53:13 +09:00
1157df1407 New Crowdin updates (#7489)
* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations create-plugin.md (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations stream.md (French)

* New translations reversi-bot.md (French)

* New translations ja-JP.yml (English)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (French)

* New translations reversi-bot.md (French)

* New translations reversi-bot.md (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations stream.md (French)

* New translations stream.md (French)

* New translations ja-JP.yml (French)

* New translations stream.md (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations theme.md (Italian)

* New translations theme.md (French)

* New translations theme.md (English)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations ja-JP.yml (Chinese Simplified)

* New translations deck.md (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (French)

* New translations theme.md (French)

* New translations theme.md (French)

* New translations deck.md (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations aiscript.md (Spanish)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)
2021-05-04 22:52:02 +09:00
94ac0a7797 🎨 2021-05-04 21:27:36 +09:00
35cf05d6ca 🎨 2021-05-04 21:21:02 +09:00
18e1efc7ec Ad (#7495)
* wip

* Update ad.vue

* Update default.widgets.vue

* wip

* Create 1620019354680-ad.ts

* wip

* Update ads.vue

* wip

* Update ad.vue
2021-05-04 21:15:57 +09:00
71ebb068f7 メールアドレスの設定を促すように 2021-05-04 17:09:57 +09:00
e9170e630c リアクションピッカーの設定がリアルタイムで反映されない問題を修正 2021-05-04 17:02:14 +09:00
6ae642245e Password reset (#7494)
* wip

* wip

* Update well-known.ts

* wip

* clean up

* Update request-reset-password.ts

* Update forgot-password.vue

* Update reset-password.ts

* Update request-reset-password.ts
2021-05-04 15:05:34 +09:00
a34d8549d0 Fix style 2021-04-30 12:55:30 +09:00
52e1df2df3 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-29 12:31:55 +09:00
d7a5efbd36 Improve usability 2021-04-29 12:31:47 +09:00
9f5123d176 Fix path 2021-04-29 11:18:08 +09:00
ea7d4d323e Merge branch 'develop' 2021-04-28 18:37:48 +09:00
18da55bd81 12.79.3 2021-04-28 18:37:31 +09:00
25424fe62e New Crowdin updates (#7485)
* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (French)
2021-04-28 18:36:21 +09:00
c7e60cfd0c Fix style 2021-04-28 18:36:07 +09:00
3e19bcb6cb Fix #7488 2021-04-28 18:32:55 +09:00
6573c3b522 Use Node.js v16 2021-04-28 09:22:01 +09:00
17fff8c665 Merge branch 'develop' 2021-04-26 13:00:10 +09:00
fa9f0d9ff9 12.79.2 2021-04-26 13:00:01 +09:00
77ccf3b929 Fix #7483 2021-04-26 12:47:54 +09:00
4b205aee91 Fix #7480 2021-04-26 12:34:41 +09:00
d348e211d4 New Crowdin updates (#7482)
* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations reversi-bot.md (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)
2021-04-26 11:12:34 +09:00
42539575a6 ギャラリー投稿の編集と削除 2021-04-26 11:10:45 +09:00
8bce241170 🎨 2021-04-26 10:46:55 +09:00
c039665a97 Fix #7481 2021-04-25 22:32:46 +09:00
92977f303d Merge branch 'develop' 2021-04-25 15:20:39 +09:00
0038f3b244 12.79.1 2021-04-25 15:20:32 +09:00
2f1fb9fe2d New Crowdin updates (#7479)
* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)
2021-04-25 15:19:56 +09:00
8c6d5408eb Update default sidebar definition 2021-04-25 15:19:34 +09:00
3f6a55aabd Tweak UI 2021-04-25 15:14:26 +09:00
f37c25d00e Update api-permissions.ts 2021-04-25 12:33:55 +09:00
23821d6fad Improve client 2021-04-25 12:31:11 +09:00
c384c4ca6c Tweak UI 2021-04-25 12:01:00 +09:00
946ba2a8ae Improve usability 2021-04-25 12:00:56 +09:00
55b673cc6f Update deps 2021-04-25 11:30:02 +09:00
8043409d38 Merge branch 'develop' 2021-04-24 23:04:59 +09:00
6d145bc4cb 12.79.0 2021-04-24 23:04:49 +09:00
26b2a4de36 Tweak style 2021-04-24 23:04:31 +09:00
99b7f4d26e Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-24 22:56:35 +09:00
f413339e75 Update yarn.lock 2021-04-24 22:56:26 +09:00
8a5567796f New Crowdin updates (#7459)
* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations timelines.md (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations keyboard-shortcut.md (Italian)

* New translations keyboard-shortcut.md (Italian)

* New translations keyboard-shortcut.md (Italian)

* New translations keyboard-shortcut.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (Italian)

* New translations theme.md (French)

* New translations theme.md (Italian)

* New translations deck.md (Italian)

* New translations deck.md (Italian)

* New translations deck.md (Italian)

* New translations deck.md (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Kannada)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Indonesian)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Ukrainian)
2021-04-24 22:56:15 +09:00
112c68cd0c refactor init (#7464) 2021-04-24 22:55:18 +09:00
4e5e542fb0 update mfm.js (#7476) 2021-04-24 22:52:32 +09:00
7bfc41c6e1 fix bug 2021-04-24 22:52:07 +09:00
fec3c70886 Gallery (#7194)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip
2021-04-24 22:38:24 +09:00
ccf063709e Tweak UI 2021-04-24 22:36:28 +09:00
9cab2cd940 Tweak animation 2021-04-24 18:38:38 +09:00
37dc1c9a82 Merge branch 'develop' 2021-04-23 18:25:44 +09:00
3286c93c8f Update package.json 2021-04-23 18:24:04 +09:00
b918b6383b improve client 2021-04-23 17:57:48 +09:00
9d8ffe9911 Tweak anime 2021-04-23 15:53:35 +09:00
24fa788609 Update style.scss 2021-04-23 15:48:22 +09:00
1edb8cf0e9 add animation 2021-04-23 15:33:33 +09:00
25da4a6a79 fix bug 2021-04-23 14:59:21 +09:00
e1e5283963 Improve usability 2021-04-23 14:43:40 +09:00
bc074abeba Update ja-JP.yml 2021-04-23 13:04:04 +09:00
70a8dd30e0 Improve client 2021-04-23 13:01:52 +09:00
d61a74fb88 fix style 2021-04-23 12:17:04 +09:00
dfa341e1c0 Make admin/update-remote-user public 2021-04-23 12:05:15 +09:00
e825d3be83 Tweak UI 2021-04-23 12:00:07 +09:00
b5c8dc0fe3 Tweak UI 2021-04-23 11:31:43 +09:00
ebb2fe068c Update package.json 2021-04-22 22:30:04 +09:00
246693b848 インスタンス管理画面作り直し (#7473)
* wip

* wip

* wip

* wip
2021-04-22 22:29:33 +09:00
ec75600e1c fix style 2021-04-21 12:06:02 +09:00
ec7242576e 12.78.0-beta.2 2021-04-21 03:33:13 +09:00
83a53c1008 fix bug 2021-04-21 03:32:16 +09:00
878b154604 nodejs v16で動くように 2021-04-21 03:24:53 +09:00
03101f001c chore 2021-04-21 03:17:51 +09:00
a5bbb6732d Update Misskey description 2021-04-20 23:26:17 +09:00
11349561d6 Use FontAwesome as web font instead of vue component (#7469)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update yarn.lock

* wip

* wip
2021-04-20 23:22:59 +09:00
8bb6ed625b Tweak style 2021-04-20 16:58:05 +09:00
046c263f13 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-20 11:36:08 +09:00
1043020f27 update mfm.js (#7468) 2021-04-20 10:29:08 +09:00
17f2e39084 fix #7466 2021-04-20 00:15:53 +09:00
4d9e3b9012 Improve client 2021-04-19 20:06:23 +09:00
135ff280b9 Update index.ts (#7463) 2021-04-19 12:17:22 +09:00
631091940b Merge branch 'develop' 2021-04-18 23:25:55 +09:00
53d257ef0f 12.77.1 2021-04-18 23:25:46 +09:00
9e012dbc1a New Crowdin updates (#7452)
* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Korean)

* New translations reaction.md (Korean)

* New translations reversi-bot.md (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)
2021-04-18 23:24:33 +09:00
7da5eead8a Resolve #7457 2021-04-18 22:51:35 +09:00
f984f56459 精度を高めるためストリーミング接続中に定期的にlastActiveDateを更新するように 2021-04-18 22:35:47 +09:00
203799871c Update yarn.lock 2021-04-18 16:36:01 +09:00
ad826bf088 update MFM (#7456) 2021-04-18 16:35:34 +09:00
e81c466d74 fix #7454 2021-04-18 16:35:22 +09:00
e04d866b20 Tweak UI 2021-04-18 14:29:31 +09:00
d7a042b95d Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-18 11:55:46 +09:00
5c51185388 refactoring 2021-04-18 11:55:44 +09:00
926266c7af fix style 2021-04-18 11:55:38 +09:00
1bcf123dd5 update secret message 2021-04-18 11:16:57 +09:00
7c26fbbb2e New Crowdin updates (#7451)
* New translations ja-JP.yml (English)

* New translations theme.md (English)

* New translations ja-JP.yml (Ukrainian)

* New translations ja-JP.yml (Chinese Traditional)

* New translations theme.md (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations mfm.md (Czech)

* New translations timelines.md (Czech)

* New translations theme.md (Czech)

* New translations reaction.md (Czech)

* New translations pages.md (Czech)

* New translations mute.md (Czech)

* New translations follow.md (Czech)

* New translations ja-JP.yml (Italian)

* New translations theme.md (German)

* New translations ja-JP.yml (German)

* New translations keyboard-shortcut.md (Czech)

* New translations custom-emoji.md (Czech)

* New translations ja-JP.yml (Spanish)

* New translations theme.md (French)

* New translations stream.md (French)

* New translations reversi-bot.md (French)

* New translations create-plugin.md (Czech)

* New translations aiscript.md (Czech)

* New translations ja-JP.yml (Czech)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Russian)

* New translations mute.md (Korean)

* New translations keyboard-shortcut.md (Korean)

* New translations follow.md (Korean)

* New translations custom-emoji.md (Korean)

* New translations create-plugin.md (Korean)

* New translations api.md (Korean)

* New translations ja-JP.yml (Korean)

* New translations reaction.md (Korean)

* New translations pages.md (Korean)

* New translations reversi-bot.md (Korean)

* New translations stream.md (Korean)

* New translations deck.md (Korean)

* New translations timelines.md (Korean)

* New translations theme.md (Korean)
2021-04-18 00:23:38 +09:00
938fcb3e5e Merge branch 'develop' 2021-04-18 00:07:33 +09:00
3553f3be4e 12.77.0 2021-04-18 00:07:20 +09:00
8c4662e6e5 Improve tooltip behaviour 2021-04-17 23:53:05 +09:00
e7610b2467 display online status 2021-04-17 23:52:54 +09:00
79e60afd42 Update Dockerfile 2021-04-17 18:37:10 +09:00
3da93e7bf9 Create .yarnrc 2021-04-17 17:35:44 +09:00
1700154f00 Update package.json 2021-04-17 15:34:19 +09:00
68571d8f57 Implement user online status
Resolve #7422
Fix #7424
2021-04-17 15:30:26 +09:00
61461b7f59 Improve client 2021-04-17 14:06:32 +09:00
c27c3817a9 Tweak UI 2021-04-17 11:40:47 +09:00
08e1db45a9 Improve client 2021-04-17 11:29:44 +09:00
27c373ddf4 Tweak UI 2021-04-17 00:12:50 +09:00
e62d7bc1ba Tweak UI 2021-04-16 23:26:01 +09:00
0d680b060e Tweak UI 2021-04-16 23:19:39 +09:00
0f054aed88 Tweak UI 2021-04-16 23:04:25 +09:00
b4308ecb91 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-16 21:47:15 +09:00
e68ff28649 Improve client 2021-04-16 21:47:12 +09:00
cb946772b4 Update package.json 2021-04-16 18:34:56 +09:00
f169585a55 Tweak style 2021-04-16 17:52:45 +09:00
e5fbc68e0e 詳細ユーザー情報ページなど 2021-04-16 17:34:06 +09:00
f32cad2667 Tweak UI 2021-04-16 15:44:17 +09:00
503f23ad3b Tweak UI 2021-04-16 12:17:22 +09:00
481b46ac9e Tweak UI 2021-04-16 12:06:54 +09:00
9c34ef7d74 Improve UI 2021-04-16 09:41:56 +09:00
18fbaee9df fix 2021-04-16 09:05:32 +09:00
94b59e8b6f update commander 2021-04-16 09:03:17 +09:00
e9c5cd543e update dependencies 2021-04-16 08:51:38 +09:00
5e1d17dff2 Merge branch 'develop' 2021-04-16 00:21:56 +09:00
526838c77c 12.76.1 2021-04-16 00:21:46 +09:00
ef6b370d0e Improve usability 2021-04-16 00:13:20 +09:00
38896205c8 fix bug 2021-04-15 23:49:05 +09:00
7221684337 Improve usability 2021-04-15 23:38:34 +09:00
99e936bf2b Tweak style 2021-04-15 23:34:12 +09:00
138fee9b52 fix theme 2021-04-15 23:27:33 +09:00
a19c1535e8 タイトルバー非表示オプション削除 2021-04-15 23:27:28 +09:00
05ba1d0fd4 fix style 2021-04-15 20:55:54 +09:00
c2b3436770 better list rendering 2021-04-15 20:26:02 +09:00
a0fd3aef98 update mfm-js 2021-04-15 20:25:32 +09:00
b112341d91 🎨 2021-04-15 18:02:55 +09:00
0dba5607a8 refactor 2021-04-15 17:36:09 +09:00
7378c4a9d8 fix #7444 2021-04-15 12:37:58 +09:00
89e7ef36dc Update yarn.lock 2021-04-15 12:37:32 +09:00
39ed02bc53 apply hotfix of MFM parser (#7446) 2021-04-15 12:10:16 +09:00
449dc17df8 Merge branch 'develop' 2021-04-14 16:39:53 +09:00
5cb3d86a1b 12.76.0 2021-04-14 16:39:38 +09:00
a3687dd653 theme description 2021-04-14 16:24:07 +09:00
fbc5b8ceb7 fix bug 2021-04-14 15:49:48 +09:00
4c545fbba5 refactor 2021-04-14 15:35:04 +09:00
7fda726bbe Tweak UI 2021-04-14 14:12:29 +09:00
e404e5e2de Tweak UI 2021-04-14 03:34:56 +09:00
930127348a Tweak UI 2021-04-14 03:23:29 +09:00
3db37e1d52 Tweak UI 2021-04-14 02:12:46 +09:00
b9c4a582ac Tweak UI 2021-04-14 01:41:49 +09:00
a085d9fbd7 Revert "Improve performance" (#7441)
This reverts commit 1dbce5e3e2.
2021-04-13 16:00:40 +09:00
7f2356ba4b Tweak UI 2021-04-13 12:43:19 +09:00
7a7f668879 fix bug 2021-04-13 01:59:18 +09:00
69a05aa5de Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop 2021-04-12 23:14:00 +09:00
c0c64a2d5d Tweak UI 2021-04-12 23:13:58 +09:00
3c3b4eb2af Fix undefined user page title (#7436) 2021-04-12 23:07:12 +09:00
1019e0bcfd Add prop validations in MkAcct (#7439) 2021-04-12 23:04:10 +09:00
faf2c007aa fix bug 2021-04-12 22:07:32 +09:00
43678ac801 Tweak UI 2021-04-12 14:16:30 +09:00
f22d5aa46d Tweak UI 2021-04-12 13:20:04 +09:00
d599c1e740 Tweak UI 2021-04-12 13:06:00 +09:00
0cc4519fc0 Tweak UI 2021-04-12 00:14:27 +09:00
0265c85ba3 full view 2021-04-12 00:05:13 +09:00
7ec0670748 Tweak UI 2021-04-11 23:49:13 +09:00
d06517265f Tweak UI 2021-04-11 21:31:38 +09:00
a88e486468 Tweak UI 2021-04-11 21:09:35 +09:00
c22ff4c556 Resolve #7425 2021-04-11 12:42:48 +09:00
d4c4e30fe4 Tweak UI 2021-04-11 12:31:24 +09:00
1ec3338d2e update mfm.js (#7435)
* use mfm.js 0.14.0

* use mfm.extract

* use mfm.extract

* use mfm.extract
2021-04-11 00:18:29 +09:00
bffcfd92da Tweak UI 2021-04-11 00:03:31 +09:00
f44517f4af Tweak UI 2021-04-10 23:52:45 +09:00
5087a5af21 Tweak UI 2021-04-10 18:17:42 +09:00
3a6331693a refactor mfm extract (#7434)
* refactor extractCustomEmojisFromMfm()

* refactor extract-hashtags

* refactor extract-mentions

* refactor extract-hashtags

* refactor extract-url-from-mfm

* refactor extract-mentions
2021-04-10 17:50:18 +09:00
56a28923ca Tweak UI 2021-04-10 14:37:29 +09:00
fb8ed718ce Improve UI 2021-04-10 13:38:24 +09:00
45e5d89353 refactor(client): Use symbol 2021-04-10 12:54:12 +09:00
d3fe02fb3e Default UI redesign (#7429)
* wip

* wip

* wip

* wip

* Update default.sidebar.vue

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update sticky-sidebar.ts

* wip

* wip

* Update messaging-room.form.vue

* Update timeline.vue
2021-04-10 12:40:50 +09:00
7d2126e2b2 Fix punycode deprecation warning (#7426) 2021-04-04 13:00:39 +09:00
1f4ae2f63a Use mfm-js for MFM parsing (#7415)
* wip

* Update mfm.ts

* wip

* update mfmjs

* refactor

* nanka

* Update mfm.ts

* Update to-html.ts

* Update to-html.ts

* wip

* fix test

* fix test
2021-04-02 10:36:11 +09:00
b378066ebf tweak avatar generation 2021-04-02 10:00:05 +09:00
2210d1053a Update vue 2021-03-27 11:08:15 +09:00
bb6cd258f3 syuilo/misskey --> misskey-dev/misskey 2021-03-24 12:23:05 +09:00
b5adb02eb8 Update 01_bug-report.md 2021-03-24 12:01:37 +09:00
8b702bcfa0 Update README.md 2021-03-24 11:57:12 +09:00
3e11011229 Merge branch 'develop' 2021-03-24 11:34:29 +09:00
e5ba475147 12.75.1 2021-03-24 11:33:55 +09:00
3cd537ecf2 Remove url loadrr (#7396) 2021-03-24 11:32:23 +09:00
d7c7bc5d8e fix type 2021-03-24 11:28:56 +09:00
9191b9e736 Fix #7390 2021-03-24 11:26:51 +09:00
ce340aba7a Refactor (#7394)
* wip

* wip

* wip

* wip

* wip

* Update define.ts

* Update update.ts

* Update user.ts

* wip

* wip

* Update request.ts

* URL

* wip

* wip

* wip

* wip

* Update invite.ts

* Update create.ts
2021-03-24 11:05:37 +09:00
62cc14c93b fix bug 2021-03-23 21:44:12 +09:00
a284e8c5eb fix test 2021-03-23 17:54:43 +09:00
834c6df9eb Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2021-03-23 17:43:20 +09:00
c74fe3c6e2 refactor: Use path alias 2021-03-23 17:43:07 +09:00
ca542f8677 Merge pull request #7386 from syuilo/dependabot/npm_and_yarn/webpack-5.27.2 2021-03-23 08:36:33 +00:00
d6e23b803b refactor: Tweak path alias of client 2021-03-23 17:30:14 +09:00
8b327fbc82 build(deps): bump webpack from 5.26.3 to 5.27.2
Bumps [webpack](https://github.com/webpack/webpack) from 5.26.3 to 5.27.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.26.3...v5.27.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-23 08:27:29 +00:00
8432c2c9ea refactor(build): gulpを経由しないでTypeScriptのビルドを行うように
path aliasをサーバーサイドでも使ったりしたいため
2021-03-23 17:24:40 +09:00
94fd5485b6 Use TRUNCATE (#7385) 2021-03-23 15:22:31 +09:00
cd4680b422 fix 2021-03-23 15:12:47 +09:00
7e4a800352 noteのread処理 2021-03-23 15:06:56 +09:00
00bc097abb コミット忘れ 2021-03-23 14:56:01 +09:00
5c3a56b283 fix bug
48ea805999 (commitcomment-48584326)
2021-03-23 14:54:09 +09:00
48ea805999 perf(server): Redis接続をストリーミング接続ごとに作らず、プロセス全体で共有するように 2021-03-23 11:53:25 +09:00
6b753b05d6 perf(server): Cache user instance actor 2021-03-22 22:28:09 +09:00
985 changed files with 18326 additions and 10869 deletions

View File

@ -7,6 +7,11 @@ assignees: ''
---
<!--
Thanks for reporting!
First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported.
-->
## 💡 Summary
<!-- Tell us what the bug is -->

View File

@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
node-version: [12.x, 14.x, 15.x]
node-version: [14.x, 16.x]
services:
postgres:

View File

@ -1,6 +1,6 @@
{
"extension": ["ts","js","cjs","mjs"],
"require": "ts-node/register",
"require": ["ts-node/register", "tsconfig-paths/register"],
"slow": 1000,
"timeout": 30000,
"exit": true

View File

@ -1 +1 @@
v14.15.5
v16.0.0

1
.yarnrc Normal file
View File

@ -0,0 +1 @@
network-timeout 600000

View File

@ -1 +1 @@
see [releases](https://github.com/syuilo/misskey/releases)
see [releases](https://github.com/misskey-dev/misskey/releases)

View File

@ -8,7 +8,7 @@
- 温度感高めで見てほしいものは責付いてください。
## Issues
Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues .
Feature suggestions and bug reports are filed in https://github.com/misskey-dev/misskey/issues .
* Please search existing issues to avoid duplication. If your issue is already filed, please add your reaction or comment to the existing one.
* If you have multiple independent issues, please submit them separately.
@ -50,7 +50,7 @@ Configuration files are located in [`/.circleci`](/.circleci).
* Your PR should include all source files (e.g. `.png`, `.blend`) of your models (for later editing).
* Your PR must include the glTF binary files (`.glb`) of your models.
* Add a locale key `room.furnitures.YOUR_ITEM` at [`/locales/ja-JP.yml`](/locales/ja-JP.yml).
* Add a furniture definition at [`/src/client/app/common/scripts/room/furnitures.json5`](/src/client/app/common/scripts/room/furnitures.json5).
* Add a furniture definition at [`src/client/scripts/room/furnitures.json5`](src/client/scripts/room/furnitures.json5).
If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/).
You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html).

View File

@ -1,4 +1,4 @@
FROM node:14.15.5-alpine3.13 AS base
FROM node:16.0.0-alpine3.13 AS base
ENV NODE_ENV=production
@ -22,7 +22,7 @@ RUN apk add --no-cache \
vips-dev \
vips
COPY package.json yarn.lock ./
COPY package.json yarn.lock .yarnrc ./
RUN yarn install
COPY . ./
RUN yarn build

View File

@ -4,8 +4,8 @@
<div align="center">
[![CircleCI](https://img.shields.io/circleci/project/github/syuilo/misskey.svg?style=for-the-badge&logo=circleci)](https://circleci.com/gh/syuilo/misskey)
[![Dependencies](https://img.shields.io/david/syuilo/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/syuilo/misskey)
[![CircleCI](https://img.shields.io/circleci/project/github/misskey-dev/misskey.svg?style=for-the-badge&logo=circleci)](https://circleci.com/gh/misskey-dev/misskey)
[![Dependencies](https://img.shields.io/david/misskey-dev/misskey.svg?style=for-the-badge&logo=npm)](https://david-dm.org/misskey-dev/misskey)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=github)](http://makeapullrequest.com)
[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)
@ -22,11 +22,16 @@ Why don't you take a short break from the hustle and bustle of the city, and div
---
Do you have a question? Or are you experiencing trouble?
Visit [our forum](https://forum.misskey.io/)!
---
![](https://ja.mstdn.wiki/images/e/ed/Deck.jpg)
:sparkles: Features
----------------------------------------------------------------
<a href="https://xn--931a.moe/"><img src="https://github.com/syuilo/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a>
<a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a>
<h3>Posting</h3>
<p>

View File

@ -12,13 +12,13 @@ This guide describes how to install and setup Misskey with Docker.
----------------------------------------------------------------
1. Clone Misskey repository's master branch.
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
2. Move to misskey directory.
`cd misskey`
3. Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag.
3. Checkout to the [latest release](https://github.com/misskey-dev/misskey/releases/latest) tag.
`git checkout master`

View File

@ -13,13 +13,13 @@ Ce guide explique comment installer et configurer Misskey avec Docker.
----------------------------------------------------------------
1. Clone le dépôt de Misskey sur la branche master.
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
2. Naviguez dans le dossier du dépôt.
`cd misskey`
3. Checkout sur le tag de la [dernière version](https://github.com/syuilo/misskey/releases/latest).
3. Checkout sur le tag de la [dernière version](https://github.com/misskey-dev/misskey/releases/latest).
`git checkout master`

View File

@ -12,13 +12,13 @@ Dockerを使ったMisskey構築方法
----------------------------------------------------------------
1. masterブランチからMisskeyレポジトリをクローン
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
2. misskeyディレクトリに移動
`cd misskey`
3. [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
3. [最新のリリース](https://github.com/misskey-dev/misskey/releases/latest)を確認
`git checkout master`

View File

@ -12,13 +12,13 @@ Docker 部署指南
----------------------------------------------------------------
1. 克隆 Misskey 项目的 master 分支。
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
2. 进入 misskey 文件夹。
`cd misskey`
3. 检查 [最新发布版](https://github.com/syuilo/misskey/releases/latest) 标签。
3. 检查 [最新发布版](https://github.com/misskey-dev/misskey/releases/latest) 标签。
`git checkout master`

View File

@ -40,13 +40,13 @@ Please install and setup these softwares:
2. Clone the misskey repo from master branch.
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
3. Navigate to misskey directory
`cd misskey`
4. Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
4. Checkout to the [latest release](https://github.com/misskey-dev/misskey/releases/latest)
`git checkout master`

View File

@ -41,13 +41,13 @@ Installez les paquets suivants :
2. Clonez la branche master du dépôt misskey.
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
3. Accédez au dossier misskey.
`cd misskey`
4. Checkout sur le tag de la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
4. Checkout sur le tag de la [version la plus récente](https://github.com/misskey-dev/misskey/releases/latest)
`git checkout master`

View File

@ -42,13 +42,13 @@ adduser --disabled-password --disabled-login misskey
2. masterブランチからMisskeyレポジトリをクローン
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
3. misskeyディレクトリに移動
`cd misskey`
4. [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
4. [最新のリリース](https://github.com/misskey-dev/misskey/releases/latest)を確認
`git checkout master`

View File

@ -40,13 +40,13 @@ adduser --disabled-password --disabled-login misskey
2. 克隆 Misskey 项目的 master 分支。
`git clone -b master git://github.com/syuilo/misskey.git`
`git clone -b master git://github.com/misskey-dev/misskey.git`
3. 进入 misskey 文件夹。
`cd misskey`
4. 检查 [最新发布版](https://github.com/syuilo/misskey/releases/latest) 标签。
4. 检查 [最新发布版](https://github.com/misskey-dev/misskey/releases/latest) 标签。
`git checkout master`

View File

@ -4,25 +4,14 @@
import * as fs from 'fs';
import * as gulp from 'gulp';
import * as ts from 'gulp-typescript';
import * as rimraf from 'rimraf';
import * as replace from 'gulp-replace';
const replace = require('gulp-replace');
const terser = require('gulp-terser');
const cssnano = require('gulp-cssnano');
const locales: { [x: string]: any } = require('./locales');
const meta = require('./package.json');
gulp.task('build:ts', () => {
const tsProject = ts.createProject('./src/tsconfig.json');
return tsProject
.src()
.pipe(tsProject())
.on('error', () => {})
.pipe(gulp.dest('./built/'));
});
gulp.task('build:copy:views', () =>
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
);
@ -78,7 +67,6 @@ gulp.task('cleanall', gulp.parallel('clean', cb =>
));
gulp.task('build', gulp.parallel(
'build:ts',
'build:copy',
));

View File

@ -1,6 +1,6 @@
# **DO NOT edit locale files** except `ja-JP.yml`.
When you add text to the ja-JP file (of syuilo/misskey), it will automatically be applied to other language files.
When you add text to the ja-JP file (of misskey-dev/misskey), it will automatically be applied to other language files.
Translations added in ja-JP file should contain the original Japanese strings.
Please see [Contribution guide](../CONTRIBUTING.md) for more information.

View File

@ -111,7 +111,6 @@ customEmojis: "إيموجي مخصص"
addEmoji: "إضافة إيموجي"
cacheRemoteFiles: "خزن مؤقتا الملفات البعيدة"
autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة"
addAcount: "إضافة حساب"
loginFailed: "فشل الولوج"
showOnRemote: "رؤيته على مثيل الخادم البُعدي"
general: "الرئيسية"
@ -354,7 +353,6 @@ category: "الفئات"
tags: "الوسوم"
docSource: "مصدر هذا المستند"
createAccount: "أنشئ حسابًا"
existingAcount: "الحسابات الموجودة"
regenerate: "أعِد التوليد"
fontSize: "حجم الخط"
openImageInNewTab: "إفتح الصورة بصفحة جديدة"
@ -429,6 +427,11 @@ latestVersion: "آخر نسخة مستقرة"
usageAmount: "الإستخدام"
capacity: "السعة"
inUse: "مستخدم"
info: "عن"
user: "المستخدمون"
administration: "إدارة "
expiration: "ينتهي استطلاع الرأي في"
middle: "متوسط"
_email:
_follow:
title: "يتابعك"

View File

@ -1,2 +1,484 @@
---
_lang_: "Čeština"
headlineMisskey: "Síť propojená poznámkami"
introMisskey: "Vítejte! Misskey je otevřený a decentralizovaný microblogový servis.\n\"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. 📡\nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. 👍\nPojďte objevovat nový svět! 🚀"
monthAndDay: "{day}. {month}."
search: "Vyhledávání"
notifications: "Oznámení"
username: "Uživatelské jméno"
password: "Heslo"
forgotPassword: "Zapomenuté heslo"
fetchingAsApObject: "Načítám data z Fediversu..."
ok: "Potvrdit"
gotIt: "Rozumím!"
cancel: "Zrušit"
enterUsername: "Zadej uživatelské jméno"
renotedBy: "{user} přeposla/a"
noNotes: "Žádné poznámky"
noNotifications: "Žádná oznámení"
instance: "Instance"
settings: "Nastavení"
basicSettings: "Obecná nastavení"
otherSettings: "Rozšířená nastavení"
openInWindow: "Otevřít v novém okně"
profile: "Váš profil"
timeline: "Časová osa"
noAccountDescription: "Tento uživatel zatím nenapsal svou biografii."
login: "Přihlásit se"
loggingIn: "Probíhá přihlašování"
logout: "Odhlásit"
signup: "Registrace"
uploading: "Nahrávám"
save: "Uložit"
users: "Uživatelé"
addUser: "Přidat uživatele"
favorite: "Oblíbené"
favorites: "Oblíbené"
unfavorite: "Odebrat z oblízených"
favorited: "Přidáno do oblíbených"
alreadyFavorited: "Už je mezi oblíbenými"
cantFavorite: "Nepodařilo se přidat mezi oblíbené."
pin: "Připnout"
unpin: "Odepnout"
copyContent: "Zkopírovat obsah"
copyLink: "Kopírovat odkaz"
delete: "Smazat"
deleteAndEdit: "Smazat a upravit"
deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji? Ztratíte tím všechny reakce, sdílení a odpovědi na ni."
addToList: "Přidat do seznamu"
sendMessage: "Odeslat zprávu"
copyUsername: "Kopírovat uživatelské jméno"
searchUser: "Vyhledat uživatele"
reply: "Odpovědět"
loadMore: "Zobrazit více"
showMore: "Zobrazit více"
mention: "Zmínění"
mentions: "Zmínění"
importAndExport: "Import a export"
import: "Importovat"
export: "Exportovat"
files: "Soubor(ů)"
download: "Stáhnout"
unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?"
importRequested: "Požádali jste o export. To může chvilku trvat."
lists: "Seznamy"
noLists: "Nemáte žádné seznamy"
note: "Poznámka"
notes: "Poznámky"
following: "Sledovaní"
followers: "Sledující"
followsYou: "Sledují vás"
createList: "Vytvořit seznam"
manageLists: "Spravovat seznam"
error: "Chyba"
somethingHappened: "Jejda. Něco se nepovedlo."
retry: "Opakovat"
pageLoadError: "Nepodařilo se načíst stránku"
enterListName: "Jméno seznamu"
privacy: "Soukromí"
follow: "Sledovaní"
unfollow: "Přestat sledovat"
renote: "Přeposlat"
cantReRenote: "Odpověď nemůže být odstraněna."
quote: "Citovat"
pinned: "Připnout"
you: "Vy"
clickToShow: "Klikněte pro zobrazení"
sensitive: "NSFW"
add: "Přidat"
reaction: "Reakce"
reactionSettingDescription: "Vyberte Vaší oblíbenou reakci, kterou chcete připnout ve výběru."
reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte \"+\" k přidání"
rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky"
attachCancel: "Odstranit přílohu"
markAsSensitive: "Označit jako NSFW"
unmarkAsSensitive: "Odznačit jako NSFW"
enterFileName: "Zadejte název souboru"
mute: "Ztlumit"
unmute: "Odmlčet"
block: "Zablokovat"
unblock: "Odblokovat"
suspend: "Zmrazit"
unsuspend: "Odmrazit"
blockConfirm: "Jste si jistí že chcete zablokovat tento účet?"
unblockConfirm: "Jste si jistí že chcete odblokovat tento účet?"
suspendConfirm: "Jste si jistí že chcete suspendovat tenhle účet?"
unsuspendConfirm: "Jste si jistí že chcete obnovit tenhle účet?"
selectList: "Vybrat seznam"
selectAntenna: "Vyberte Anténu"
selectWidget: "Zvolte widget"
editWidgets: "Upravit widget"
editWidgetsExit: "Hotovo"
customEmojis: "Vlastní emoji"
emoji: "Emoji"
emojiName: "Jméno emoji"
emojiUrl: "URL obrázku"
addEmoji: "Přidat emoji"
settingGuide: "Doporučené nastavení"
cacheRemoteFiles: "Ukládání vzdálených souborů do mezipaměti"
cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště na serveru, ale zvýší se provoz, protože se negenerují miniatury."
flagAsBot: "Tento účet je bot"
flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím s ostatními boty a upraví Misskey systém aby se choval k tomuhle účtu jako bot."
flagAsCat: "Tenhle účet je kočka"
flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka."
autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete"
addAccount: "Přidat účet"
loginFailed: "Přihlášení se nezdařilo."
showOnRemote: "Více na původním profilu"
general: "Obecně"
wallpaper: "Obrázek na pozadí"
setWallpaper: "Nastavení obrázku na pozadí"
removeWallpaper: "Odstranit pozadí"
youHaveNoLists: "Nemáte žádné seznamy"
proxyAccount: "Proxy účet"
proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže místo toho bude uživatele sledovat účet proxy."
host: "Hostitel"
selectUser: "Vyberte uživatele"
recipient: "Pro"
annotation: "Komentáře"
instances: "Instance"
registeredAt: "Registrován"
latestRequestSentAt: "Poslední požadavek poslán"
latestRequestReceivedAt: "Poslední požadavek přijat"
latestStatus: "Poslední status"
storageUsage: "Využití úložiště"
charts: "Grafy"
perHour: "za hodinu"
perDay: "za den"
blockThisInstance: "Blokovat tuto instanci"
operations: "Operace"
software: "Software"
version: "Verze"
metadata: "Metadata"
withNFiles: "{n} soubor(ů)"
monitor: "Monitorovat"
jobQueue: "Fronta úloh"
cpuAndMemory: "CPU a paměť"
network: "Síť"
disk: "Disk"
instanceInfo: "Informace o instanci"
statistics: "Statistiky"
clearQueue: "Vyčistit frontu"
clearQueueConfirmTitle: "Jste si jisti že zrušit všechny úlohy ve frontě?"
clearCachedFiles: "Vyprázdnit mezipaměť"
blockedInstances: "Blokované instance"
editProfile: "Upravit můj profil"
pinLimitExceeded: "Nemůžete připnout další poznámky."
intro: "Instalace Misskey byla dokončena! Prosím vytvořte admina."
done: "Hotovo"
processing: "Zpracovávám"
preview: "Náhled"
default: "Výchozí"
blocked: "Blokováno"
suspended: "Suspendováno"
all: "Vše"
subscribing: "Odebíráte"
publishing: "Publikuji"
notResponding: "Neodpovídá"
instanceFollowing: "Následovníci na instanci"
instanceFollowers: "Následovníci na instanci"
instanceUsers: "Uživatelé této instance"
changePassword: "Změnit heslo"
security: "Zabezpečení"
currentPassword: "Současné heslo"
newPassword: "Nové heslo"
newPasswordRetype: "Nové heslo (znovu)"
attachFile: "Přiložit soubor"
more: "Více!"
featured: "Oblíbené poznámky"
usernameOrUserId: "Uživatelské jméno nebo uživatelské id"
noSuchUser: "Uživatel nebyl nalezen"
announcements: "Oznámení"
imageUrl: "URL obrázku"
remove: "Smazat"
removed: "Smazáno"
removeAreYouSure: "Jste si jistí že chcete smazat \"{x}\"?"
deleteAreYouSure: "Jste si jistí že chcete smazat \"{x}\"?"
resetAreYouSure: "Opravdu resetovat?"
saved: "Uloženo"
messaging: "Zprávy"
upload: "Nahrát soubory"
fromDrive: "Z disku"
fromUrl: "Z URL"
uploadFromUrl: "Nahrát z URL adresy"
uploadFromUrlDescription: "URL adresa souboru, který chcete nahrát"
uploadFromUrlMayTakeTime: "Může trvat nějakou dobu, dokud nebude dokončeno nahrávání."
explore: "Objevovat"
games: "Misskey hry"
messageRead: "Přečtené"
noMoreHistory: "To je vše"
startMessaging: "Zahájit chat"
nUsersRead: "přečteno {n} uživateli"
agreeTo: "Souhlasím s {0}"
tos: "Podmínky užívání"
start: "Začít"
home: "Domů"
remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené instance."
activity: "Aktivita"
images: "Obrázky"
birthday: "Datum narození"
yearsOld: "{age} let"
registeredDate: "Datum registrace"
location: "Lokace"
theme: "Vzhled"
themeForLightMode: "Vzhled pro použití ve světlém režimu"
themeForDarkMode: "Vzhled k použití v tmavém režimu"
light: "Světlý"
dark: "Tmavý"
lightThemes: "Světlý vzhled"
darkThemes: "Tmavý vzhled"
syncDeviceDarkMode: "Synchronizovat tmavý vzhled s nastavením Vašeho systému"
drive: "Úložiště"
fileName: "Název souboru"
selectFile: "Vybrat soubor"
selectFiles: "Vybrat soubory"
selectFolder: "Vyberte složku"
selectFolders: "Vyberte složky"
renameFile: "Přejmenovat soubor"
folderName: "Název složky"
createFolder: "Vytvořit složku"
renameFolder: "Přejmenovat složku"
deleteFolder: "Odstranit složku"
addFile: "Přidat soubor"
emptyFolder: "Tato složka je prázdná"
unableToDelete: "Nelze smazat"
inputNewFileName: "Zadejte nový název"
copyUrl: "Kopírovat URL"
rename: "Přejmenovat"
avatar: "Avatar"
banner: "Baner"
nsfw: "NSFW"
disconnectedFromServer: "Spojení bylo přerušeno"
reload: "Aktualizovat"
doNothing: "Ignorovat"
watch: "Sledovat"
unwatch: "Přestat sledovat"
accept: "Souhlasím"
reject: "Odmítnout"
normal: "Normální"
instanceName: "Název instance"
instanceDescription: "Popis instance"
maintainerName: "Správce"
maintainerEmail: "E-mailová adresa správce"
tosUrl: "URL pro smluvní podmínky"
thisYear: "Tento rok"
thisMonth: "Tento měsíc"
today: "Dnes"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Stránky"
integration: "Integrace"
connectSerice: "Připojit"
disconnectSerice: "Odpojit"
enableLocalTimeline: "Povolit lokální čas"
enableGlobalTimeline: "Povolit globální čas"
registration: "Registrace"
enableRegistration: "Povolit registraci novým uživatelům"
invite: "Pozvat"
inMb: "V megabajtech"
iconUrl: "Favicon URL"
bannerUrl: "Baner URL"
basicInfo: "Základní informace"
hcaptcha: "hCaptcha"
hcaptchaSecretKey: "Tajný Klíč (Secret Key)"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Zapnout ReCAPTCHu"
recaptchaSecretKey: "Tajný Klíč (Secret Key)"
antennas: "Antény"
manageAntennas: "Spravovat Antény"
name: "Jméno"
antennaSource: "Zdroj Antény"
enableServiceworker: "Povolit ServiceWorker"
caseSensitive: "Rozlišuje malá a velká písmena"
connectedTo: "Následující účty jsou připojeny"
userList: "Seznamy"
about: "Informace"
aboutMisskey: "O Misskey"
administrator: "Administrátor"
token: "Token"
twoStepAuthentication: "Dvoufaktorová autentikace"
moderator: "Moderátor"
nUsersMentioned: "{n} uživatelů zmínilo"
securityKey: "Bezpečnostní klíč"
securityKeyName: "Název klíče"
registerSecurityKey: "Registrovat bezpečnostní klíč"
lastUsed: "Naposledy použito"
unregister: "Odstranit"
resetPassword: "Resetovat heslo"
newPasswordIs: "Nové heslo je \"{password}\""
reduceUiAnimation: "Snížit UI animace"
share: "Sdílet"
notFound: "Nenalezeno"
notFoundDescription: "Nebyla nalezená žádná stránka korespondující se zadanou URL."
uploadFolder: "Výchozí lokace pro upload"
cacheClear: "Vymazat cache"
markAsReadAllNotifications: "Označit všechna oznámení za přečtená"
markAsReadAllUnreadNotes: "Označit všechny příspěvky za přečtené"
markAsReadAllTalkMessages: "Označit všechny zprávy za přečtené"
help: "Nápověda"
inputMessageHere: "Sem zadejte zprávu"
close: "Zavřít"
group: "Skupina"
groups: "Skupiny"
createGroup: "Vytvořit skupinu"
ownedGroups: "Vlastněné skupiny"
joinedGroups: "Členství ve skupinách"
invites: "Pozvat"
groupName: "Název skupiny"
members: "Členové"
transfer: "Převod"
title: "Titulek"
text: "Text"
enable: "Povolit"
next: "Další"
retype: "Zadejte znovu"
noteOf: "{user} poznámky"
inviteToGroup: "Pozvat do skupiny"
invitations: "Pozvat"
checking: "Ověřuji"
available: "K dispozici"
unavailable: "Není k dispozici"
usernameInvalidFormat: "Písmena, čísla a _ jsou povolená."
tooShort: "Příliš krátké"
tooLong: "Příliš dlouhé"
weakPassword: "Slabé heslo"
normalPassword: "Dobré heslo"
strongPassword: "Silné heslo"
passwordMatched: "Hesla se schodují"
passwordNotMatched: "Hesla se neschodují"
signinWith: "Přihlásit se s {x}"
signinFailed: "Nelze se přihlásit. Zkontrolujte prosím své uživatelské jméno a heslo."
or: "Nebo"
language: "Jazyk"
uiLanguage: "Jazyk uživatelského rozhraní"
groupInvited: "Pozvat do skupiny"
aboutX: "O {x}"
useOsNativeEmojis: "Použití nativních emoji operačního systému"
youHaveNoGroups: "Nemáte žádné skupiny"
joinOrCreateGroup: "Můžete požádat o pozvání do stávající skupiny nebo vytvořit novou."
noHistory: "Žádná historie"
signinHistory: "Historie přihlášení"
category: "Kategorie"
tags: "Štítky"
createAccount: "Vytvořit účet"
fontSize: "Velikost písma"
openImageInNewTab: "Otevřít obrázek v novém panelu"
dashboard: "Přehled"
local: "Lokální"
total: "Celkem"
weekOverWeekChanges: "Týdně"
dayOverDayChanges: "Denně"
appearance: "Vzhled"
clientSettings: "Nastavení klienta"
accountSettings: "Nastavení účtu"
promotion: "Propagace"
promote: "Propagovat"
numberOfDays: "Počet dní"
chooseEmoji: "Vybrat emotikon"
unableToProcess: "Operace nebyla dokončena."
recentUsed: "Naposledy použité"
install: "Nainstalovat"
uninstall: "Odinstalovat"
installedApps: "Autorizované aplikace"
nothing: "Nic nebylo nalezeno"
lastUsedDate: "Poslední použití"
state: "Stav"
ascendingOrder: "Vzestupně"
descendingOrder: "Sestupně"
scratchpad: "Zápisník"
output: "Výstup"
script: "Skript"
deleteAllFiles: "Smazat všechny soubory"
deleteAllFilesConfirm: "Jste si jistí že chcete smazat všechny soubory?"
userSuspended: "Tomuto uživateli byl pozastaven účet."
sidebar: "Postranní panel"
addItem: "Přidat položku"
rooms: "Místnost"
inboxUrl: "Inbox URL"
deletedNote: "Odstraněné příspěvky"
invisibleNote: "Skryté příspěvky"
smtpHost: "Hostitel"
smtpUser: "Uživatelské jméno"
smtpPass: "Heslo"
clearCache: "Vyprázdnit mezipaměť"
info: "Informace"
user: "Uživatelé"
_mfm:
mention: "Zmínění"
quote: "Citovat"
emoji: "Vlastní emoji"
search: "Vyhledávání"
_reversi:
total: "Celkem"
_sidebar:
icon: "Avatar"
_theme:
keys:
mention: "Zmínění"
renote: "Přeposlat"
_sfx:
note: "Poznámky"
notification: "Oznámení"
chat: "Zprávy"
_widgets:
notifications: "Oznámení"
timeline: "Časová osa"
activity: "Aktivita"
jobQueue: "Fronta úloh"
_cw:
show: "Zobrazit více"
_visibility:
home: "Domů"
followers: "Sledující"
_profile:
name: "Jméno"
username: "Uživatelské jméno"
_exportOrImport:
followingList: "Sledovaní"
muteList: "Ztlumit"
blockingList: "Zablokovat"
userLists: "Seznamy"
_timelines:
home: "Domů"
_rooms:
_roomType:
default: "Výchozí"
_furnitures:
monitor: "Monitorovat"
_pages:
blocks:
image: "Obrázky"
script:
categories:
list: "Seznamy"
blocks:
_join:
arg1: "Seznamy"
_randomPick:
arg1: "Seznamy"
_dailyRandomPick:
arg1: "Seznamy"
_seedRandomPick:
arg2: "Seznamy"
_pick:
arg1: "Seznamy"
_listLen:
arg1: "Seznamy"
types:
array: "Seznamy"
_notification:
youWereInvitedToGroup: "Pozvat do skupiny"
_types:
follow: "Sledovaní"
mention: "Zmínění"
renote: "Přeposlat"
quote: "Citovat"
reaction: "Reakce"
_deck:
_columns:
notifications: "Oznámení"
tl: "Časová osa"
antenna: "Antény"
list: "Seznamy"
mentions: "Zmínění"

View File

@ -7,6 +7,7 @@ search: "Suchen"
notifications: "Benachrichtigungen"
username: "Benutzername"
password: "Passwort"
forgotPassword: "Passwort vergessen"
fetchingAsApObject: "Wird aus dem Fediverse angefragt..."
ok: "OK"
gotIt: "Verstanden!"
@ -134,11 +135,11 @@ settingGuide: "Empfohlene Einstellung"
cacheRemoteFiles: "Dateien von anderen Instanzen im Cache speichern"
cacheRemoteFilesDescription: "Wenn diese Einstellung deaktiviert ist, werden Dateien anderer Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz gespart, aber mehr Bandbreite verbraucht, da keine Vorschaubilder generiert werden."
flagAsBot: "Als Bot markieren"
flagAsBotDescription: "Wenn dieser Account durch ein Programm gesteuert wird, setze diesen Haken. Falls aktiviert, agiert es als Flag für andere Entwickler um endlose Kettenreaktionen mit anderen Bots zu verhindern und lässt Misskey's interne Systeme diesen Account als Bot behandeln."
flagAsBotDescription: "Wenn dieses Benutzerkonto durch ein Programm gesteuert wird, setze diesen Haken. Falls aktiviert, agiert es als Flag für andere Entwickler um endlose Kettenreaktionen mit anderen Bots zu verhindern und lässt Misskey's interne Systeme dieses Benutzerkonto als Bot behandeln."
flagAsCat: "Als Katze markieren"
flagAsCatDescription: "Setze diese Flag um dieses Benutzerkonto als Katze zu markieren."
autoAcceptFollowed: "Follow-Anfragen automatisch akzeptieren"
addAcount: "Benutzerkonto hinzufügen"
addAccount: "Benutzerkonto hinzufügen"
loginFailed: "Login fehlgeschlagen"
showOnRemote: "Auf Ursprungsinstanz ansehen"
general: "Allgemein"
@ -298,8 +299,8 @@ reject: "Ablehnen"
normal: "Normal"
instanceName: "Name der Instanz"
instanceDescription: "Beschreibung der Instanz"
maintainerName: "Betreiber"
maintainerEmail: "Betreiber-Email"
maintainerName: "Administrator"
maintainerEmail: "Administrator-Email"
tosUrl: "URL der Nutzungsbedingungen"
thisYear: "Dieses Jahr"
thisMonth: "Dieser Monat"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "Schlüsselwörter, die ignoriert werden sollen"
antennaKeywordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen."
notifyAntenna: "Über neue Notizen benachrichtigen"
withFileAntenna: "Nur Notizen mit Dateien"
serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorker aktivieren"
antennaUsersDescription: "Benutzernamen getrennt durch Zeilenumbrüche angeben"
caseSensitive: "Groß-/Kleinschreibung unterscheiden"
@ -453,7 +453,7 @@ category: "Kategorie"
tags: "Schlagwörter"
docSource: "Quelle dieses Dokuments"
createAccount: "Benutzerkonto erstellen"
existingAcount: "Bestehendes Benutzerkonto"
existingAccount: "Bestehendes Benutzerkonto"
regenerate: "Regenerieren"
fontSize: "Schriftgröße"
noFollowRequests: "Du hast keine Follow-Anfragen"
@ -568,7 +568,7 @@ pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Ber
notificationType: "Benachrichtigungsart"
edit: "Bearbeiten"
useStarForReactionFallback: "Verwende ★ falls das Reaktions-Emoji unbekannt ist"
emailConfig: "Email-Server Konfiguration"
emailServer: "Email-Server"
enableEmail: "Email-Versand aktivieren"
emailConfigInfo: "Zur Email-Bestätigung bei Registrierung und zum Zurücksetzen des Passworts verwendet"
email: "Email"
@ -687,6 +687,7 @@ textColor: "Text"
saveAs: "Speichern als…"
advanced: "Fortgeschritten"
value: "Wert"
createdAt: "Erstellt am"
updatedAt: "Zuletzt geändert am"
saveConfirm: "Änderungen speichern?"
deleteConfirm: "Wirklich löschen?"
@ -704,12 +705,68 @@ editCode: "Code bearbeiten"
apply: "Anwenden"
receiveAnnouncementFromInstance: "E-Mail-Benachrichtigungen von dieser Instanz empfangen"
emailNotification: "E-Mail-Benachrichtigungen"
publish: "Veröffentlichen"
inChannelSearch: "In Kanal suchen"
useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen"
typingUsers: "{users} ist/sind am schreiben..."
jumpToSpecifiedDate: "Zu bestimmtem Datum springen"
showingPastTimeline: "Momentan wird eine alte Chronik angezeigt"
clear: "Zurückkehren"
markAllAsRead: "Alle als gelesen markieren"
goBack: "Zurück"
unlikeConfirm: "\"Gefällt mir\" wirklich entfernen?"
fullView: "Vollansicht"
quitFullView: "Vollansicht verlassen"
addDescription: "Beschreibung hinzufügen"
userPagePinTip: "Um Notizen hier erscheinen zu lassen, drücke \"Anpinnen\" im Menü individueller Notizen"
notSpecifiedMentionWarning: "Diese Notiz enthält Erwähnungen von Nutzern, die nicht als Empfänger ausgewählt sind"
info: "Über"
userInfo: "Benutzerinformation"
unknown: "Unbekannt"
onlineStatus: "Online-Status"
hideOnlineStatus: "Online-Status verbergen"
hideOnlineStatusDescription: "Das Verbergen deines Online-Statuses reduziert die Nützlichkeit von Funktionen wie der Suche."
online: "Online"
active: "Aktiv"
offline: "Offline"
notRecommended: "Nicht empfohlen"
botProtection: "Bot-Schutz"
selectAccount: "Benutzerkonto auswählen"
enabled: "Aktiviert"
disabled: "Deaktiviert"
user: "Benutzer"
administration: "Verwaltung"
accounts: "Benutzerkonten"
switch: "Wechseln"
noMaintainerInformationWarning: "Administratorinformationen sind nicht konfiguriert."
noBotProtectionWarning: "Bot-Schutz ist nicht konfiguriert."
configure: "Konfigurieren"
postToGallery: "Beitrag zu Galerie hinzufügen"
gallery: "Galerie"
recentPosts: "Neue Beiträge"
popularPosts: "Beliebte Beiträge"
shareWithNote: "Mit Notiz teilen"
ads: "Werbung"
expiration: "Frist"
memo: "Merkzettel"
priority: "Priorität"
high: "Hoch"
middle: "Mittel"
low: "Niedrig"
emailNotConfiguredWarning: "Keine Email-Adresse hinterlegt"
ratio: "Verhältnis"
_ad:
back: "Zurück"
reduceFrequencyOfThisAd: "Diese Werbung weniger anzeigen"
_forgotPassword:
enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese wird ein Link gesendet, mit der du dein Passwort zurücksetzen kannst."
ifNoEmail: "Solltest du bei der Registrierung keine Email-Adresse angegeben haben, wende dich bitte an den Administrator."
contactAdmin: "Diese Instanz unterstützt die Verwendung von Email-Adressen nicht. Wende dich, um dein Passwort zurückzusetzen, an den Administrator."
_gallery:
my: "Meine Galerie"
liked: "Beiträge, die mir gefallen"
like: "Gefällt mir"
unlike: "\"Gefällt mir\" entfernen"
_email:
_follow:
title: "Du hast einen neuen Follower"
@ -865,6 +922,7 @@ _theme:
install: "Thema installieren"
manage: "Themaverwaltung"
code: "Themen-Code"
description: "Beschreibung"
installed: "{name} wurde installiert"
installedThemes: "Installierte Themen"
builtinThemes: "Eingebaute Themen"

View File

@ -7,6 +7,7 @@ search: "Search"
notifications: "Notifications"
username: "Username"
password: "Password"
forgotPassword: "Forgot password"
fetchingAsApObject: "Fetching from Fediverse..."
ok: "OK"
gotIt: "Got it!"
@ -138,7 +139,7 @@ flagAsBotDescription: "If this account is controlled by a program, set this opti
flagAsCat: "This account is a cat"
flagAsCatDescription: "Toggle this flag on for this account to be marked as a cat."
autoAcceptFollowed: "Automatically approve follow requests from users you're following"
addAcount: "Add Account"
addAccount: "Add account"
loginFailed: "Failed to sign in"
showOnRemote: "View on remote instance"
general: "General"
@ -339,7 +340,7 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "Enable reCAPTCHA"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Using multiple Captchas may cause interference. Would you like to disable the other Captcha? You can leave multiple Captchas enabled by press cancel."
avoidMultiCaptchaConfirm: "Using multiple Captchas may cause interferences. Would you like to disable the other Captcha? You can leave multiple Captchas enabled by pressing cancel."
antennas: "Antennas"
manageAntennas: "Manage Antennas"
name: "Name"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "Keywords to exclude"
antennaKeywordsDescription: "Separate with spaces for AND condition. Separate with line breaks for OR."
notifyAntenna: "Notify for new notes"
withFileAntenna: "Filter only notes with file(s) attached"
serviceworker: "ServiceWorker"
enableServiceworker: "Enable ServiceWorker"
antennaUsersDescription: "List one username per line"
caseSensitive: "Case sensitive"
@ -453,7 +453,7 @@ category: "Category"
tags: "Tags"
docSource: "Source of this document"
createAccount: "Create account"
existingAcount: "Existing accounts"
existingAccount: "Existing account"
regenerate: "Regenerate"
fontSize: "Font size"
noFollowRequests: "You don't have any pending follow requests"
@ -568,7 +568,7 @@ pluginTokenRequestedDescription: "This plugin will be able to use the permission
notificationType: "Notification type"
edit: "Edit"
useStarForReactionFallback: "Use ★ as fallback if the reaction emoji is unknown"
emailConfig: "Email server configuration"
emailServer: "Email server"
enableEmail: "Enable email distribution"
emailConfigInfo: "Used to confirm your email during sign-up and if you forget your password"
email: "Email"
@ -679,7 +679,7 @@ onlineUsersCount: "{n} people are online"
nUsers: "{n} Users"
nNotes: "{n} Notes"
sendErrorReports: "Send error reports"
sendErrorReportsDescription: "When turned on, detailed error information will be shared with Misskey when a problem occurs, helping to improve the quality of Misskey."
sendErrorReportsDescription: "When turned on, detailed error information will be shared with Misskey when a problem occurs, helping to improve the quality of Misskey.\nThis may include informations such as your OS and its version, the kind of browser you're using, your activity history, etc."
myTheme: "My theme"
backgroundColor: "Background"
accentColor: "Accent"
@ -687,6 +687,7 @@ textColor: "Text"
saveAs: "Save as..."
advanced: "Advanced"
value: "Value"
createdAt: "Created on"
updatedAt: "Updated at"
saveConfirm: "Save changes?"
deleteConfirm: "Really delete?"
@ -704,12 +705,70 @@ editCode: "Edit code"
apply: "Apply"
receiveAnnouncementFromInstance: "Receive Email notifications from this instance"
emailNotification: "Email notifications"
publish: "Publish"
inChannelSearch: "Search in channel"
useReactionPickerForContextMenu: "Open reaction picker on right-click"
typingUsers: "{users} is/are typing..."
jumpToSpecifiedDate: "Jump to specific date"
showingPastTimeline: "Currently displaying an old timeline"
clear: "Return"
markAllAsRead: "Mark all as read"
goBack: "Back"
unlikeConfirm: "Really remove your like?"
fullView: "Full view"
quitFullView: "Exit full view"
addDescription: "Add description"
userPagePinTip: "You can make notes be displayed here by selecting \"Pin to profile\" from the menu of individual notes"
notSpecifiedMentionWarning: "This note contains mentions of users not included as recipient"
info: "About"
userInfo: "User information"
unknown: "Unknown"
onlineStatus: "Online status"
hideOnlineStatus: "Hide online status"
hideOnlineStatusDescription: "Hiding your online status reduces the convenience of some functions such as search"
online: "Online"
active: "Active"
offline: "Offline"
notRecommended: "Not recommended"
botProtection: "Bot Protection"
instanceBlocking: "Blocked Instances"
selectAccount: "Select account"
enabled: "Enabled"
disabled: "Disabled"
quickAction: "Quick action"
user: "Users"
administration: "Management"
accounts: "Accounts"
switch: "Switch"
noMaintainerInformationWarning: "Maintainer information is not configured."
noBotProtectionWarning: "Bot protection is not configured."
configure: "Configure"
postToGallery: "Post to Gallery"
gallery: "Gallery"
recentPosts: "Recent posts"
popularPosts: "Popular posts"
shareWithNote: "Share with note"
ads: "Advertisements"
expiration: "Deadline"
memo: "Memo"
priority: "Priority"
high: "High"
middle: "Medium"
low: "Low"
emailNotConfiguredWarning: "Email address not set"
ratio: "Ratio"
_ad:
back: "Back"
reduceFrequencyOfThisAd: "Show this ad less"
_forgotPassword:
enterEmail: "Enter the email address you used to register. A link with which you can reset your password will then be sent to it."
ifNoEmail: "If you did not use an email during registration, please contact the administrator instead."
contactAdmin: "This instance does not support using email addresses, please contact the administrator to reset your password instead."
_gallery:
my: "My Gallery"
liked: "Liked Posts"
like: "Like"
unlike: "Undo like"
_email:
_follow:
title: "You've got a new follower"
@ -865,6 +924,7 @@ _theme:
install: "Install theme"
manage: "Themes manager"
code: "Theme code"
description: "Description"
installed: "{name} has been installed"
installedThemes: "Installed themes"
builtinThemes: "Built-in themes"
@ -1026,7 +1086,7 @@ _auth:
permissionAsk: "This application requires following permissions:"
pleaseGoBack: "Please go back to the application"
callback: "Returning back to the application"
denied: "Access Denied"
denied: "Access denied"
_antennaSources:
all: "All notes"
homeTimeline: "Notes from following users"

View File

@ -1,5 +1,6 @@
---
_lang_: "Español"
headlineMisskey: "Red conectada por notas"
introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentralizado de código abierto.\nEscribe \"notas\" para compartir lo que te ocurre ahora o para contar sobre ti a todos 📡\nCon la función de \"reacciones\", puedes también añadir una reacción rápida a las notas de todos 👍\nExplora un nuevo mundo 🚀"
monthAndDay: "{day}/{month}"
search: "Buscar"
@ -137,7 +138,7 @@ flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, a
flagAsCat: "Esta cuenta es un gato"
flagAsCatDescription: "En caso de que declare que esta cuenta es de un gato, active esta opción."
autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los usuarios que sigues"
addAcount: "Agregar cuenta"
addAccount: "Agregar Cuenta"
loginFailed: "Error al iniciar sesión."
showOnRemote: "Ver en una instancia remota"
general: "General"
@ -348,7 +349,6 @@ antennaExcludeKeywords: "Palabras clave para excluir"
antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar con una linea nueva es una declaración OR"
notifyAntenna: "Notificar nueva nota"
withFileAntenna: "Sólo notas con archivos adjuntados"
serviceworker: "ServiceWorker"
enableServiceworker: "Activar ServiceWorker"
antennaUsersDescription: "Elegir nombres de usuarios separados por una linea nueva"
caseSensitive: "Distinguir mayúsculas de minúsculas"
@ -437,6 +437,7 @@ signinWith: "Inicie sesión con {x}"
signinFailed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
tapSecurityKey: "Toque la clave de seguridad"
or: "O"
language: "Idioma"
uiLanguage: "Idioma de visualización de la interfaz"
groupInvited: "Invitado al grupo"
aboutX: "Acerca de {x}"
@ -451,7 +452,7 @@ category: "Categoría"
tags: "Etiqueta"
docSource: "Fuente de este documento"
createAccount: "Crear cuenta"
existingAcount: "Cuentas existentes"
existingAccount: "Cuenta existente"
regenerate: "Regenerar"
fontSize: "Tamaño de la letra"
noFollowRequests: "No hay solicitudes de seguimiento"
@ -566,7 +567,7 @@ pluginTokenRequestedDescription: "Este plugin podrá usar los permisos descritos
notificationType: "Tipo de notificación"
edit: "Editar"
useStarForReactionFallback: "En caso de que los emojis de reacciones no sean claros, usar en su lugar una estrella"
emailConfig: "Configuración del servidor de correos"
emailServer: "Servidor de correo"
enableEmail: "Activar el envío de correos electrónicos"
emailConfigInfo: "Usar en caso de validación de correo electrónico y pedido de contraseña"
email: "Correo"
@ -646,12 +647,30 @@ driveFilesCount: "Cantidad de archivos en el drive"
driveUsage: "Uso del drive"
noCrawle: "Rechazar indexación del crawler"
noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas, páginas, etc."
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto"
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por favor, acceda al enlace proporcionado en el correo electrónico para completar la configuración."
notSet: "Sin especificar"
emailVerified: "Su dirección de correo electrónico ha sido verificada."
noteFavoritesCount: "Número de notas favoritas"
pageLikesCount: "Número de favoritos en la página"
pageLikedCount: "Número de favoritos de su página"
contact: "Contacto"
clips: "Clip"
clearCache: "Limpiar caché"
backgroundColor: "Fondo"
accentColor: "Acento"
textColor: "Texto"
value: "Valores"
goBack: "Deseleccionar"
info: "Información"
user: "Usuarios"
administration: "Administrar"
expiration: "Termina el"
middle: "Mediano"
_ad:
back: "Deseleccionar"
_gallery:
unlike: "Quitar me gusta"
_email:
_follow:
title: "te ha seguido"
@ -745,6 +764,7 @@ _theme:
install: "Instalar tema"
manage: "Gestor de temas"
code: "Código del tema"
description: "Descripción"
installed: "{name} ha sido instalado"
alreadyInstalled: "Este tema ya está instalado"
invalid: "El formato del tema no es válido"

View File

@ -7,6 +7,7 @@ search: "Rechercher"
notifications: "Notifications"
username: "Nom dutilisateur·rice"
password: "Mot de passe"
forgotPassword: "Mot de passe oublié"
fetchingAsApObject: "Récupération depuis le fédiverse …"
ok: "OK"
gotIt: "Jai compris !"
@ -138,7 +139,7 @@ flagAsBotDescription: "Si ce compte est géré de manière automatisée , défin
flagAsCat: "Ce compte est un chat"
flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte."
autoAcceptFollowed: "Accepter automatiquement les demandes dabonnement venant dutilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte"
addAccount: "Ajouter un compte"
loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur linstance distante"
general: "Général"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "Mots clés à exclure"
antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
notifyAntenna: "Je souhaite recevoir les notifications des nouvelles notes"
withFileAntenna: "Notes ayant des attachements uniquement"
serviceworker: "ServiceWorker"
enableServiceworker: "Activer ServiceWorker"
antennaUsersDescription: "Saisissez un seul nom dutilisateur·rice par ligne"
caseSensitive: "Sensible à la casse"
@ -453,7 +453,7 @@ category: "Catégorie"
tags: "Étiquettes"
docSource: "Source de ce document"
createAccount: "Créer un compte"
existingAcount: "Comptes existants"
existingAccount: "Compte existant"
regenerate: "Générer à nouveau"
fontSize: "Taille de la police"
noFollowRequests: "Vous navez aucune demande dabonnement en attente"
@ -487,7 +487,7 @@ objectStorageRegionDesc: "Spécifiez une région comme 'xx-east-1'. Si votre ser
objectStorageUseSSL: "Utiliser SSL"
objectStorageUseSSLDesc: "Désactivez cette option si vous n'utilisez pas HTTPS pour la connexion API"
objectStorageUseProxy: "Se connecter via proxy"
objectStorageUseProxyDesc: "Désactivez cette option si vous n'utilisez pas Proxy pour la connexion API"
objectStorageUseProxyDesc: "Désactivez cette option si vous n'utilisez pas de proxy pour la connexion API"
objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi"
serverLogs: "Journal du serveur"
deleteAll: "Supprimer tout"
@ -541,8 +541,8 @@ enableInfiniteScroll: "Activer le défilement infini"
visibility: "Visibilité"
poll: "Sondage"
useCw: "Masquer le contenu"
enablePlayer: "Activer le lecteur vidéo"
disablePlayer: "Désactiver le lecteur vidéo"
enablePlayer: "Ouvrir dans le lecteur vidéo"
disablePlayer: "Fermer le lecteur vidéo"
expandTweet: "Étendre le tweet"
themeEditor: "Éditeur de thèmes"
description: "Description"
@ -568,7 +568,7 @@ pluginTokenRequestedDescription: "Ce plugin pourra utiliser les autorisations d
notificationType: "Type de notifications"
edit: "Editer"
useStarForReactionFallback: "Utiliser ★ comme alternative si lémoji de réaction est inconnu"
emailConfig: "Configuration du serveur email"
emailServer: "Serveur mail"
enableEmail: "Activer la distribution de courriel"
emailConfigInfo: "Utilisé pour confirmer votre adresse de courriel et la réinitialisation de votre mot de passe en cas doubli."
email: "E-mail "
@ -601,12 +601,13 @@ useGlobalSettingDesc: "S'il est activé, les paramètres de notification de votr
other: "Autre"
regenerateLoginToken: "Régénérer le jeton de connexion"
regenerateLoginTokenDescription: "Générer un nouveau jeton d'authentification. Cette opération ne devrait pas être nécessaire ; lors de la génération d'un nouveau jeton, tous les appareils seront déconnectés. "
setMultipleBySeparatingWithSpace: "Vous pouvez définir plus dun, séparés par des espaces."
setMultipleBySeparatingWithSpace: "Vous pouvez en définir plusieurs, en les séparant par des espaces."
fileIdOrUrl: "ID du fichier ou URL"
chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture"
behavior: "Comportement"
sample: "Exemple"
abuseReports: "Signalements"
reportAbuse: "Signalements"
reportAbuse: "Signaler"
reportAbuseOf: "Signaler {name}"
fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien."
abuseReported: "Le rapport est envoyé. Merci."
@ -678,7 +679,7 @@ onlineUsersCount: "{n} utilisateur(s) en ligne"
nUsers: "{n} utilisateur·rice·s"
nNotes: "{n} Notes"
sendErrorReports: "Envoyer les rapports derreur"
sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey."
sendErrorReportsDescription: "Si vous activez l'envoi des rapports d'erreur, vous contribuerez à améliorer la qualité de Misskey grâce au partage d'informations détaillées sur les erreurs lorsqu'un problème survient.\nCela inclut des informations telles que la version de votre système d'exploitation, le type de navigateur que vous utilisez, votre historique d'activité, etc."
myTheme: "Mes thèmes"
backgroundColor: "Arrière-plan"
accentColor: "Accentuation"
@ -686,6 +687,7 @@ textColor: "Texte"
saveAs: "Enregistrer sous ..."
advanced: "Avancé"
value: "Valeur"
createdAt: "Date de création"
updatedAt: "Mis à jour le"
saveConfirm: "Voulez-vous sauvegarder les modifications?"
deleteConfirm: "Confirmez-vous la suppression?"
@ -703,12 +705,70 @@ editCode: "Modifier le code"
apply: "Appliquer"
receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance"
emailNotification: "Notifications par mail"
publish: "Public"
inChannelSearch: "Chercher dans le canal"
useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions"
typingUsers: "{users} est en train d'écrire"
jumpToSpecifiedDate: "Se rendre à la date"
showingPastTimeline: "Un fil ancien est affiché"
clear: "Effacer"
markAllAsRead: "Tout marquer comme lu"
goBack: "Retour"
unlikeConfirm: "Êtes-vous sûr·e de ne plus vouloir aimer cette publication ?"
fullView: "Plein écran"
quitFullView: "Quitter le plein écran"
addDescription: "Ajouter une description"
userPagePinTip: "Vous pouvez afficher des notes ici en sélectionnant l'option « Épingler au profil » dans le menu de chaque note."
notSpecifiedMentionWarning: "Vous avez mentionné des utilisateur·rice·s qui ne font pas partie de la liste des destinataires"
info: "Informations"
userInfo: "Informations sur l'utilisateur"
unknown: "Inconnu"
onlineStatus: "Statut"
hideOnlineStatus: "Se rendre invisible"
hideOnlineStatusDescription: "Rendre votre statut invisible peut diminuer les performances de certaines fonctionnalités, telles que la Recherche."
online: "En ligne"
active: "Actif·ve"
offline: "Hors ligne"
notRecommended: "Déconseillé"
botProtection: "Protection contre les bots"
instanceBlocking: "Instances bloquées"
selectAccount: "Sélectionner un compte"
enabled: "Activé"
disabled: "Désactivé"
quickAction: "Actions rapides"
user: "Utilisateur·rice·s"
administration: "Gestion"
accounts: "Comptes"
switch: "Remplacer"
noMaintainerInformationWarning: "Informations administrateur non configurées."
noBotProtectionWarning: "La protection contre les bots n'est pas configurée."
configure: "Configurer"
postToGallery: "Publier dans la galerie"
gallery: "Galerie"
recentPosts: "Les plus récentes"
popularPosts: "Les plus consultées"
shareWithNote: "Partager dans une note"
ads: "Publicité"
expiration: "Échéance"
memo: "Pense-bête"
priority: "Priorité"
high: "Haute"
middle: "Moyen"
low: "Basse"
emailNotConfiguredWarning: "Vous n'avez pas configuré d'adresse e-mail."
ratio: "Ratio"
_ad:
back: "Retour"
reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"
_forgotPassword:
enterEmail: "Entrez ici l'adresse e-mail que vous avez enregistrée pour votre compte. Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette adresse."
ifNoEmail: "Si vous n'avez pas enregistré d'adresse e-mail, merci de contacter l'administrateur·rice de votre instance."
contactAdmin: "Cette instance ne permettant pas l'utilisation d'adresses e-mail, prenez contact avec l'administrateur·rice pour procéder à la réinitialisation de votre mot de passe."
_gallery:
my: "Mes publications"
liked: " Publications que j'ai aimées"
like: "J'aime"
unlike: "Je naime pas"
_email:
_follow:
title: "Vous suit"
@ -719,6 +779,7 @@ _plugin:
installWarn: "Ninstallez que des extensions provenant de sources de confiance."
manage: "Gestion des plugins"
_registry:
scope: "Portée"
key: "Clé "
keys: "Clé "
domain: "Domaine"
@ -752,18 +813,38 @@ _mfm:
boldDescription: "Il est possible de mettre le texte en exergue en le mettant en gras."
small: "Diminuer l'emphase"
smallDescription: "Le contenu peut être affiché en petit et fin."
center: "Centrée"
center: "Centrer"
centerDescription: "Le contenu peut être centré"
inlineCode: "Code (inline)"
inlineCodeDescription: "Coloration syntaxique des lignes de code."
blockCode: "Bloc de code"
blockCodeDescription: "Coloration syntaxique des lignes de code pour les blocs multi-lignes."
inlineMath: "Formule mathématique (inline)"
inlineMathDescription: "Afficher les formules mathématiques (KaTeX)."
blockMath: "Formule mathématique (bloc)"
blockMathDescription: "Afficher les formules mathématiques (KaTeX) multi-lignes dans un bloc."
quote: "Citer"
quoteDescription: "Affiche le contenu sous forme de citation."
emoji: "Émojis personnalisés"
emojiDescription: "Entourez le nom de l'émoji personnalisé de deux points pour l'afficher."
search: "Rechercher"
searchDescription: "Affiche une boîte de recherche avec du texte pré-saisi."
flip: "Inverser"
flipDescription: "Rotation verticale ou horizontale du contenu"
jelly: "Animation (Gelée)"
jellyDescription: "Donne une animation d'étirement."
tada: "Animation (Tada)"
tadaDescription: "Donne une animation qui donne une impression de \"Tada !\""
jump: "Animation (Saut)"
jumpDescription: "Donne une animation qui saute."
bounce: "Animation (Rebond)"
bounceDescription: "Donne une animation de rebondissement."
shake: "Animation (Secousse)"
shakeDescription: "Donne une animation tremblante."
twitch: "Animation (Tremblement)"
twitchDescription: "Donne une animation de tremblement intense."
spin: "Animation (Rotation)"
spinDescription: "Donne une animation de rotation."
x2: "Grand"
x2Description: "Afficher le contenu en grand."
x3: "Très grand"
@ -805,6 +886,7 @@ _reversi:
ended: "Fin de partie"
playing: "En cours"
isLlotheo: "Celui ou celle qui a le moins de pièces gagne (Llotheo)"
loopedMap: "Carte en boucle"
canPutEverywhere: "Les pions peuvent être placés partout "
_instanceTicker:
none: "Cacher "
@ -842,6 +924,7 @@ _theme:
install: "Installer un thème"
manage: "Gestion des thèmes"
code: "Code du thème"
description: "Description"
installed: "{name} a été installé"
installedThemes: "Thèmes installés"
builtinThemes: "Thèmes intégrés"
@ -853,17 +936,21 @@ _theme:
constant: "Constante"
defaultValue: "Valeur par défaut"
color: "Couleur"
refConst: "Référencez une constante"
refProp: "Appeler une propriété"
refConst: "Appeler une constante"
key: "Clé "
func: "Fonction"
funcKind: "Type de fonction"
argument: "Argument"
basedProp: "Nom de la propriété référencée"
alpha: "Transparence"
darken: "Assombrir"
darken: "Sombre"
lighten: "Clair"
inputConstantName: "Insérez un nom de constante"
importInfo: "Vous pouvez importer un thème vers léditeur de thèmes en saisissant son code ici."
deleteConstantConfirm: "Êtes-vous sûr·e de vouloir supprimer la constante {const} ?"
keys:
accent: "Accentuation"
bg: "Arrière-plan"
fg: "Texte"
focus: "Mise au point"
@ -881,29 +968,37 @@ _theme:
mention: "Mentionner"
mentionMe: "Mentions (Moi)"
renote: "Partager"
modalBg: "Modal d'arrière-plan"
divider: "Séparateur"
scrollbarHandle: "Poignée de la barre de navigation"
scrollbarHandleHover: "Poignée de la barre de navigation (survolée)"
dateLabelFg: "Texte de l'étiquette de la date"
infoBg: "Arrière-plan pour les informations"
infoFg: "Texte d'information"
infoWarnBg: "Arrière-plan des avertissements"
infoWarnFg: "Texte davertissement"
cwBg: "Arrière-plan du CW"
cwFg: "Texte du bouton CW"
cwHoverBg: "Arrière-plan du bouton CW (survolé)"
toastBg: "Arrière-plan de la bulle de notification"
toastFg: "Texte de la bulle de notification"
buttonBg: "Arrière-plan du bouton"
buttonHoverBg: "Arrière-plan du bouton (survolé)"
inputBorder: "Cadre de la zone de texte"
listItemHoverBg: "Arrière-plan d'item de liste (survolé)"
driveFolderBg: "Arrière-plan du dossier de disque"
wallpaperOverlay: "Superposition de fond d'écran"
badge: "Badge"
messageBg: "Arrière plan de la discussion"
accentDarken: "Plus sombre"
accentLighten: "Plus clair"
fgHighlighted: "Texte mis en évidence"
_sfx:
note: "Nouvelle note"
noteMy: "Ma note"
notification: "Notifications"
chat: "Discuter"
chatBg: "Discuter (De fond)"
chatBg: "Discussion (arrière-plan)"
antenna: "Réception de lantenne"
channel: "Notifications de canal"
reversiPutBlack: "Reversi : les pions noirs ont joué"
@ -936,7 +1031,7 @@ _tutorial:
step3_3: "Remplissez le cadran et cliquez sur le bouton en haut à droite pour envoyer."
step3_4: "Vous navez rien à dire ? Essayez décrire « Jai commencé à utiliser Misskey »."
step4_1: "Avez-vous publié votre première note ?"
step4_2: "Youpi ! Celle-ci est maintenant affiché sur votre fil dactualité."
step4_2: "Youpi ! Celle-ci est maintenant affichée sur votre fil dactualité."
step5_1: "Maintenant, essayons de nous abonner à dautres personnes afin de rendre votre fil plus vivant."
step5_2: "La page {featured} affiche les notes en tendance sur la présente instance et {explore} vous permet de trouver des utilisateur·rice·s en tendance. Essayez de vous abonner aux gens que vous aimez !"
step5_3: "Pour pouvoir suivre dautres utilisateur·rice, cliquez sur leur avatar afin dafficher la page du profil utilisateur ensuite appuyez sur le bouton « Sabonner »."
@ -946,16 +1041,16 @@ _tutorial:
step6_3: "Pour ajouter une réaction à une note, cliquez sur le signe « + » de celle-ci et sélectionnez lémoji souhaité."
step7_1: "Félicitations ! Vous avez atteint la fin du tutoriel de base pour lutilisation de Misskey."
step7_2: "Si vous désirez en savoir plus sur Misskey, jetez un œil sur la section {help}."
step7_3: "Bon courage et amusez-vous bien sur Misskey 🚀"
step7_3: "Bon courage et amusez-vous bien sur Misskey ! 🚀"
_2fa:
alreadyRegistered: "Cette étape à déjà été complétée"
alreadyRegistered: "Configuration déjà achevée."
registerDevice: "Ajouter un nouvel appareil"
registerKey: "Sinscrire la clé"
registerKey: "Enregistrer une clef"
step1: "Tout d'abord, installez une application d'authentification, telle que {a} ou {b}, sur votre appareil."
step2: "Ensuite, scannez le code QR affiché sur lécran."
step3: "Entrez le jeton affiché sur votre application pour compléter la configuration."
step4: "Lorsque vous vous connectez, entrez le jeton de la même manière."
securityKeyInfo: "Vous pouvez configurer l'authentification WebAuthN pour sécuriser davantage le processus de connexion avec non seulement la clé de sécurité matérielle qui prend en charge FIDO2, mais également l'authentification par empreinte digitale ou PIN sur votre appareil."
step4: "À partir de maintenant, ce même jeton vous sera demandé à chacune de vos connexions."
securityKeyInfo: "Vous pouvez configurer l'authentification WebAuthN pour sécuriser davantage le processus de connexion grâce à une clé de sécurité matérielle qui prend en charge FIDO2, ou bien en configurant l'authentification par empreinte digitale ou par code PIN sur votre appareil."
_permissions:
"read:account": "Afficher les informations du compte"
"write:account": "Mettre à jour les informations de votre compte"
@ -967,8 +1062,8 @@ _permissions:
"write:favorites": "Gérer les favoris"
"read:following": "Voir les informations de vos abonnements"
"write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter"
"read:messaging": "Voir vos discussions"
"write:messaging": "Gérer les discussions"
"read:mutes": "Voir les comptes masqués"
"write:mutes": "Gérer les comptes masqués"
"write:notes": "Créer / supprimer des notes"
@ -977,10 +1072,10 @@ _permissions:
"read:reactions": "Lire les réactions"
"write:reactions": "Gérer vos réactions"
"write:votes": "Voter"
"read:pages": "Afficher la page"
"write:pages": "Mettre à jour les Pages"
"read:page-likes": "Voir les favoris sur les Pages"
"write:page-likes": "Mettre à jour les favoris sur les Pages"
"read:pages": "Voir vos pages"
"write:pages": "Gérer les pages"
"read:page-likes": "Voir les mentions « J'aime » des pages"
"write:page-likes": "Gérer les mentions « J'aime » sur les pages"
"read:user-groups": "Voir les groupes d'utilisateur·rice·s"
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
"read:channels": "Lire les canaux"
@ -1069,7 +1164,7 @@ _postForm:
channelPlaceholder: "Publier vers le canal"
_placeholders:
a: "Quoi de neuf ?"
b: "Quoi de neuf ?"
b: "Il s'est passé quelque chose ?"
c: "Quavez-vous en tête ?"
d: "Désirez-vous publier quelques mots ?"
e: "Écrivez ici"
@ -1093,31 +1188,31 @@ _exportOrImport:
blockingList: "Comptes bloqués"
userLists: "Listes"
_charts:
federationInstancesIncDec: "Variation du nombre des instances fédérées"
federationInstancesTotal: "Nombre total des instances fédérées"
federationInstancesIncDec: "Variation du nombre d'instances fédérées"
federationInstancesTotal: "Nombre total d'instances fédérées"
usersIncDec: "Variation du nombre d'utilisateur·rice·s"
usersTotal: "Nombre des utilisateur·rice·s au total"
activeUsers: "Utilisateur·rice·s actif·ve·s"
notesIncDec: "Variation du nombre des notes"
localNotesIncDec: "Variation du nombre de notes local"
remoteNotesIncDec: "Variation du nombre dnotes distant"
localNotesIncDec: "Variation du nombre de notes locales"
remoteNotesIncDec: "Variation du nombre de notes distantes"
notesTotal: "Nombre total des notes"
filesIncDec: "Variation du nombre de fichiers"
filesTotal: "Nombre de fichiers au total"
filesTotal: "Nombre total de fichiers"
storageUsageIncDec: "Variation de l'utilisation du stockage"
storageUsageTotal: "Utilisation totale du stockage"
_instanceCharts:
requests: "Requêtes"
users: "Variation du nombre d'utilisateur·rice·s"
usersTotal: "Nombre d'utilisateur·rice·s au total cumulé"
notes: "Variation du nombre des notes"
usersTotal: "Total cumulé du nombre d'utilisateur·rice·s"
notes: "Variation du nombre de notes"
notesTotal: "Nombre total cumulé des notes"
ff: "Variation des abonné·e·s"
ffTotal: "Nombre d'abonné·e·s au total cumulé"
ff: "Variation des abonné·e·s / abonnements"
ffTotal: "Total cumulé du nombre d'abonné·e·s / abonnements"
cacheSize: "Variation de la taille du cache"
cacheSizeTotal: "La taille du cache au total cumulé"
cacheSizeTotal: "Total cumulé de la taille du cache"
files: "Variation du nombre de fichiers"
filesTotal: "Nombre de fichiers au total cumulé"
filesTotal: "Total cumulé du nombre de fichiers"
_timelines:
home: "Principal"
local: "Local"
@ -1140,7 +1235,7 @@ _rooms:
default: "Par défaut"
washitsu: "Style japonnais"
_furnitures:
milk: "Lait en carton"
milk: "Brique de lait"
bed: "Lit"
low-table: "Table basse"
desk: "Bureau"
@ -1159,7 +1254,7 @@ _rooms:
book: "Livre"
book2: "Livre 2"
piano: "Piano"
facial-tissue: "Mouchoirs en papier"
facial-tissue: "Boîte de mouchoirs"
server: "Serveurs"
moon: "Lune"
corkboard: "Tableau en liège"
@ -1172,7 +1267,7 @@ _rooms:
wall-clock: "Horloge murale"
photoframe: "Cadre photo"
cube: "Cube"
tv: "Téléviseur"
tv: "Télé"
pinguin: "Pingouin"
rubik-cube: "Cube de Rubik"
poster-h: "Affiche (horizontale)"
@ -1188,13 +1283,13 @@ _rooms:
_pages:
newPage: "Créer une page"
editPage: "Modifier une page"
readPage: "Voir la source"
readPage: "Affichage de la source en cours"
created: "La page a été créée !"
updated: "La page a été mise à jour !"
deleted: "La page a bien été supprimée"
deleted: "La page a été supprimée"
pageSetting: "Paramètres de la Page"
nameAlreadyExists: "La URL de page spécifiée existe déjà"
invalidNameTitle: "La URL de la page spécifiée nest pas valide"
nameAlreadyExists: "L'URL de page spécifiée existe déjà"
invalidNameTitle: "L'URL de page spécifiée nest pas valide"
invalidNameText: "Assurez-vous quil nest pas vide"
editThisPage: "Éditer cette page"
viewSource: "Afficher la source"
@ -1209,21 +1304,21 @@ _pages:
content: "Bloc de page"
variables: "Variables"
title: "Titre"
url: "URL de page"
url: "URL de la page"
summary: "Résumé de page"
alignCenter: "Centrée"
hideTitleWhenPinned: "Masquer le titre de la page lorsque celle-ci est épinglée au profil"
font: "Police de caractères"
fontSerif: "Serif"
fontSansSerif: "Sans Serif"
eyeCatchingImageSet: "Définir une image attirante"
eyeCatchingImageRemove: "Supprimer une image attirante"
eyeCatchingImageSet: "Définir une image attractive"
eyeCatchingImageRemove: "Supprimer l'image attractive"
chooseBlock: "Ajouter un bloc"
selectType: "Choisir un type"
enterVariableName: "Veuillez entrer un nom pour votre variable"
variableNameIsAlreadyUsed: "Cette variable est déjà utilisée"
variableNameIsAlreadyUsed: "Ce nom de variable est déjà utilisé"
contentBlocks: "Contenu"
inputBlocks: "Entrée"
inputBlocks: "Blocs d'entrée"
specialBlocks: "Spécial"
blocks:
text: "Texte"
@ -1515,7 +1610,7 @@ _deck:
swapUp: "Déplacer vers le haut"
swapDown: "Déplacer vers le bas"
stackLeft: "Empiler à gauche"
popRight: "Vers la droite"
popRight: "Extraire à droite"
profile: "Profil"
_columns:
main: "Principale"

View File

@ -107,7 +107,6 @@ cacheRemoteFiles: "Tembolokkan berkas remote"
flagAsBot: "Atur akun ini sebagai Bot"
flagAsCat: "Atur akun ini sebagai kucing"
autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang anda ikuti"
addAcount: "Tambahkan akun"
loginFailed: "Gagal untuk masuk"
showOnRemote: "Lihat profil asli"
general: "Umum"
@ -213,6 +212,7 @@ invites: "Undang"
invitations: "Undang"
smtpUser: "Nama Pengguna"
smtpPass: "Kata sandi"
user: "Pengguna"
_email:
_follow:
title: "Sedang mengikuti"

View File

@ -7,6 +7,7 @@ search: "Cerca"
notifications: "Notifiche"
username: "Nome utente"
password: "Password"
forgotPassword: "Hai dimenticato la tua password?"
fetchingAsApObject: "Recuperando dal Fediverso..."
ok: "OK"
gotIt: "Capito!"
@ -47,7 +48,7 @@ deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo?
addToList: "Aggiungi alla lista"
sendMessage: "Invia messaggio"
copyUsername: "Copia nome utente"
searchUser: "Cerca Utente"
searchUser: "Cerca utente"
reply: "Rispondi"
loadMore: "Mostra di più"
showMore: "Mostra di più"
@ -136,7 +137,7 @@ flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche
flagAsCat: "Io sono un gatto"
flagAsCatDescription: "Abilita l'opzione \"Io sono un gatto\" per l'account."
autoAcceptFollowed: "Accetta automaticamente le richieste di follow da utenti che già segui"
addAcount: "Aggiungi account"
addAccount: "Aggiungi account"
loginFailed: "Accesso non riuscito"
showOnRemote: "Sfoglia sull'istanza remota"
general: "Generali"
@ -153,6 +154,9 @@ recipient: "Destinatario"
annotation: "Descrizione"
federation: "Federazione"
instances: "Istanza"
latestRequestSentAt: "Ultima richiesta inviata"
latestRequestReceivedAt: "Ultima richiesta ricevuta"
latestStatus: "Ultimo stato"
storageUsage: "Volume di dischi"
charts: "Grafici"
perHour: "All'ora"
@ -172,6 +176,7 @@ instanceInfo: "Informazioni sull'istanza"
statistics: "Statistiche"
clearQueue: "Svuota coda"
clearQueueConfirmTitle: "Vuoi davvero svuotare la coda?"
clearQueueConfirmText: "Le note ancora non distribuite non verranno rilasciate. Solitamente, non è necessario eseguire questa operazione."
clearCachedFiles: "Svuota cache"
clearCachedFilesConfirm: "Vuoi davvero svuotare la cache da tutti i file remoti?"
blockedInstances: "Istanze bloccate"
@ -329,6 +334,7 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "Abilita reCAPTCHA"
recaptchaSiteKey: "Chiave del sito"
recaptchaSecretKey: "Chiave segreta"
avoidMultiCaptchaConfirm: "Utilizzare diversi Captcha può causare interferenze. Vuoi disattivare l'altro Captcha? Puoi lasciare diversi Captcha attivi premendo \"Cancella\"."
antennas: "Antenne"
manageAntennas: "Gestore delle antenne"
name: "Nome"
@ -338,7 +344,6 @@ antennaExcludeKeywords: "Parole chiavi da escludere"
antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
notifyAntenna: "Invia notifiche delle nuove note"
withFileAntenna: "Solo note con file in allegato"
serviceworker: "ServiceWorker"
enableServiceworker: "Abilita ServiceWorker"
antennaUsersDescription: "Inserisci solo un nome utente per riga"
caseSensitive: "Sensibile alla distinzione tra maiuscole e minuscole"
@ -436,11 +441,12 @@ youHaveNoGroups: "Nessun gruppo"
joinOrCreateGroup: "Puoi creare il tuo gruppo o essere invitat@ a gruppi che già esistono."
noHistory: "Nessuna cronologia"
signinHistory: "Cronologia di accesso all'account"
doing: "In corso..."
category: "Categoria"
tags: "Tag"
docSource: "Sorgente della scheda"
createAccount: "Crea il tuo account"
existingAcount: "Account esistente"
existingAccount: "Account esistente"
regenerate: "Generare di nuovo"
fontSize: "Dimensione carattere"
noFollowRequests: "Non hai alcuna richiesta di follow"
@ -468,6 +474,9 @@ objectStoragePrefixDesc: "I file saranno conservati sotto la directory di questo
objectStorageEndpoint: "Endpoint"
objectStorageRegion: "Region"
objectStorageUseSSL: "Usare SSL"
objectStorageUseProxy: "Usa proxy"
objectStorageUseProxyDesc: "Disabilita quest'opzione se non usi proxy per la connessione API."
objectStorageSetPublicRead: "Imposta \"visibilità pubblica\" al momento di caricare"
serverLogs: "Log del server"
deleteAll: "Cancella cronologia"
showFixedPostForm: "Visualizzare la finestra di pubblicazione in cima alla timeline"
@ -497,7 +506,7 @@ scratchpad: "ScratchPad"
output: "Uscita"
script: "Script"
disablePagesScript: "Disabilita AiScript nelle pagine"
updateRemoteUser: "Aggiornare le informazioni di utente remoto"
updateRemoteUser: "Aggiornare le informazioni di utente remot@"
deleteAllFiles: "Elimina tutti i file"
deleteAllFilesConfirm: "Vuoi davvero eliminare tutti i file?"
removeAllFollowing: "Cancella tutti i follows"
@ -508,6 +517,10 @@ sidebar: "Barra laterale"
divider: "Linea di separazione"
addItem: "Aggiungi elemento"
rooms: "Camera"
relays: "Ripetitori"
addRelay: "Aggiungi ripetitore"
inboxUrl: "Inbox URL"
addedRelays: "Ripetitori configurati"
serviceworkerInfo: "Deve essere abilitato per le notifiche push. "
deletedNote: "Nota eliminata"
invisibleNote: "Nota invisibile"
@ -515,47 +528,80 @@ enableInfiniteScroll: "Abilita scorrimento infinito"
visibility: "Visibilità"
poll: "Sondaggio"
useCw: "Nascondere media"
enablePlayer: "Apri in lettore video"
disablePlayer: "Chiudi lettore video"
expandTweet: "Espandi tweet"
themeEditor: "Editor di temi"
description: "Descrizione"
author: "Autore"
leaveConfirm: "Ci sono delle modifiche ancora non salvate. Vuoi cancellarle?"
manage: "Gestione"
plugins: "Estensioni"
deck: "Deck"
undeck: "Esci dal deck"
useFullReactionPicker: "Usa la totalità del pannello di reazioni"
width: "Larghezza"
height: "Altezza"
large: "Grande"
medium: "Predefinito"
small: "Piccolo"
generateAccessToken: "Genera token di accesso"
permission: "Autorizzazioni "
enableAll: "Abilita tutto"
disableAll: "Disabilita tutto"
tokenRequested: "Autorizza accesso all'account"
pluginTokenRequestedDescription: "Il plugin potrà utilizzare le autorizzazioni impostate qui."
notificationType: "Tipo di notifiche"
edit: "Modifica"
useStarForReactionFallback: "Se è sconosciuto l'emoji di reazione, usare la ★ come alternativa."
emailConfig: "Impostazioni server email"
emailServer: "Server email"
enableEmail: "Abilita consegna email"
emailConfigInfo: "Utilizzato per verificare il tuo indirizzo di posta elettronica e per reimpostare la tua password"
email: "Email"
emailAddress: "Indirizzo di posta elettronica"
smtpConfig: "Impostazioni del server SMTP"
smtpHost: "Server remoto"
smtpPort: "Porta"
smtpUser: "Nome utente"
smtpPass: "Password"
emptyToDisableSmtpAuth: "Lasciare il nome utente e la password vuoti per disabilitare la verifica SMTP"
smtpSecure: "Usare la porta SSL/TLS implicito per le connessioni SMTP"
smtpSecureInfo: "Disabilitare quando è attivo STARTTLS."
testEmail: "Testare la consegna di posta elettronica"
wordMute: "Filtri parole"
userSaysSomething: "{name} ha detto qualcosa"
makeActive: "Attiva"
display: "Visualizza"
copy: "Copia"
metrics: "Statistiche"
overview: "Anteprima"
logs: "Log"
delayed: "Ritardo"
database: "Base di dati"
channel: "Canale"
create: "Crea"
notificationSetting: "Impostazioni notifiche"
notificationSettingDesc: "Seleziona il tipo di notifiche da visualizzare."
useGlobalSetting: "Usa impostazioni generali"
useGlobalSettingDesc: "Se abilitato, le impostazioni notifiche dell'account verranno utilizzate. Se disabilitato, si possono definire diverse singole impostazioni."
other: "Avanzate"
regenerateLoginToken: "Genera di nuovo un token di connessione"
regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi vanno disconnessi."
fileIdOrUrl: "ID o URL del file"
abuseReports: "Segnala"
reportAbuse: "Segnala"
chatOpenBehavior: "Comportamento della finestra di chat quando viene aperta"
behavior: "Comportamento"
abuseReports: "Segnalazioni"
reportAbuse: "Segnalazioni"
reportAbuseOf: "Segnala {name}"
fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione. Se riguarda una nota precisa, si prega di collegare anche l'URL della nota."
abuseReported: "La segnalazione è stata inviata. Grazie."
send: "Inviare"
abuseMarkAsResolved: "Contrassegna la segnalazione come risolta"
openInNewTab: "Apri in una nuova scheda"
openInSideView: "Apri in vista laterale"
defaultNavigationBehaviour: "Navigazione preimpostata"
editTheseSettingsMayBreakAccount: "Modificare queste impostazioni può danneggiare l'account."
instanceTicker: "Informazioni sull'istanza da cui vengono le note"
waitingFor: "Aspettando {x}"
random: "Casuale"
system: "Sistema"
@ -567,6 +613,8 @@ optional: "Opzionale"
createNewClip: "Nuova clip"
public: "Pubblica"
i18nInfo: "Misskey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}."
manageAccessTokens: "Gestisci token di accesso"
accountInfo: "Informazioni account"
notesCount: "Conteggio note"
repliesCount: "Numero di risposte inviate"
renotesCount: "Numero di note che hai ricondiviso"
@ -581,53 +629,158 @@ pollVotedCount: "Numero di voti ricevuti"
yes: "Sì"
no: "No"
driveFilesCount: "Numero di file nel Drive"
driveUsage: "Utilizzazione del Drive"
noCrawle: "Rifiuta l'indicizzazione dai robot."
noCrawleDescription: "Richiedi che i motori di ricerca non indicizzino la tua pagina di profilo, le tue note, pagine, ecc."
lockedAccountInfo: "A meno che non imposti la visibilità delle tue note su \"Solo ai follower\", le tue note sono visibili da tutti, anche se hai configurato l'account per confermare manualmente le richieste di follow."
alwaysMarkSensitive: "Segnare i media come sensibili per impostazione predefinita"
loadRawImages: "Visualizza le intere immagini allegate invece delle miniature."
disableShowingAnimatedImages: "Disabilita le immagini animate"
verificationEmailSent: "Una mail di verifica è stata inviata. Si prega di accedere al collegamento per compiere la verifica."
notSet: "Non impostato"
emailVerified: "Il tuo indirizzo email è stato verificato"
noteFavoritesCount: "Conteggio note tra i preferiti"
pageLikesCount: "Numero di pagine che ti piacciono"
pageLikedCount: "Numero delle tue pagine che hanno ricevuto \"Mi piace\""
reversiCount: "Numero di partite a Reversi"
contact: "Contatti"
useSystemFont: "Usa il carattere predefinito del sistema"
clips: "Clip"
experimentalFeatures: "Funzioni sperimentali"
developer: "Sviluppatore"
makeExplorable: "Account visibile sulla pagina \"Esplora\""
makeExplorableDescription: "Se disabiliti l'opzione, il tuo account non verrà visualizzato sulla pagina \"Esplora\"."
showGapBetweenNotesInTimeline: "Mostrare un intervallo tra le note sulla timeline"
duplicate: "Duplica"
left: "Sinistra"
center: "Centro"
wide: "Largo"
reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricamento della pagina. Vuoi ricaricare adesso?"
showTitlebar: "Visualizza la barra del titolo"
clearCache: "Svuota cache"
onlineUsersCount: "{n} utenti online"
nUsers: "{n} utenti"
nNotes: "{n}Note"
sendErrorReports: "Invia segnalazioni di errori"
sendErrorReportsDescription: "Quando abilitato, se si verifica un problema, informazioni dettagliate sugli errori verranno condivise con Misskey in modo da aiutare a migliorare la qualità del software.\nCiò include informazioni come la versione del sistema operativo, il tipo di navigatore web che usi, la cronologia delle attività, ecc."
myTheme: "I miei temi"
backgroundColor: "Sfondo"
textColor: "Testo"
saveAs: "Salva con nome"
value: "Valore"
createdAt: "Data di creazione"
updatedAt: "Aggiornato il"
saveConfirm: "Vuoi salvare le modifiche?"
deleteConfirm: "Rimuovere?"
invalidValue: "Questo non è un valore valido."
registry: "Registro"
closeAccount: "Disattiva account"
currentVersion: "Versione attuale"
latestVersion: "Ultima versione"
youAreRunningUpToDateClient: "Stai usando la versione più recente del client."
newVersionOfClientAvailable: "Una nuova versione del tuo client è disponibile."
usageAmount: "In utilizzo"
capacity: "Capacità"
inUse: "In utilizzo"
editCode: "Modifica codice"
apply: "Applica"
receiveAnnouncementFromInstance: "Ricevi i messaggi informativi dall'istanza"
emailNotification: "Eventi per notifiche via mail"
publish: "Pubblico"
inChannelSearch: "Cerca in canale"
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello di reazioni"
typingUsers: "{users} sta(nno) scrivendo"
jumpToSpecifiedDate: "Vai alla data "
showingPastTimeline: "Stai visualizzando una vecchia timeline"
clear: "Cancella"
markAllAsRead: "Segna tutti come già letti"
goBack: "Indietro"
unlikeConfirm: "Non ti piace più?"
fullView: "Schermo intero"
quitFullView: "Esci dalla modalità a schermo intero"
addDescription: "Aggiungi descrizione"
userPagePinTip: "Qui puoi appuntare note, premendo \"Fissa sul profilo\" nel menù delle singole note."
notSpecifiedMentionWarning: "Sono menzionati account che non vengono inclusi fra i destinatari"
info: "Informazioni"
userInfo: "Informazioni utente"
unknown: "Sconosciuto"
onlineStatus: "Stato di connessione"
hideOnlineStatus: "Stato invisibile"
hideOnlineStatusDescription: "Abilitare l'opzione di stato invisibile può guastare la praticità di singole funzioni, come la ricerca."
online: "Online"
active: "Attiv@"
offline: "Offline"
notRecommended: "Sconsigliato"
botProtection: "Protezione contro i bot"
instanceBlocking: "Istanze bloccate"
selectAccount: "Scegli account"
enabled: "Attivo"
disabled: "Inattivo"
quickAction: "Azioni rapide"
user: "Utente"
administration: "Gestione"
accounts: "Account"
switch: "Sostituisci"
noMaintainerInformationWarning: "Le informazioni amministratore non sono impostate."
noBotProtectionWarning: "Nessuna protezione impostata contro i bot."
configure: "Imposta"
postToGallery: "Pubblicare nella galleria"
gallery: "Galleria"
recentPosts: "Le più recenti"
popularPosts: "Le più visualizzate"
shareWithNote: "Condividere in nota"
ads: "Pubblicità"
expiration: "Scadenza"
memo: "Promemoria"
priority: "Priorità"
high: "Alta"
middle: "Media"
low: "Bassa"
emailNotConfiguredWarning: "Non hai impostato nessun indirizzo e-mail."
ratio: "Rapporto"
_ad:
back: "Indietro"
reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso"
_forgotPassword:
enterEmail: "Inserisci l'indirizzo di posta elettronica che hai registrato nel tuo profilo. Il collegamento necessario per ripristinare la password verrà inviato a questo indirizzo."
ifNoEmail: "Se nessun indirizzo e-mail è stato registrato, si prega di contattare l'amministratore·trice dell'istanza."
contactAdmin: "Poiché questa istanza non permette l'utilizzo di una mail, si prega di contattare l'amministratore·trice dell'istanza per poter ripristinare la password."
_gallery:
my: "Le mie pubblicazioni"
liked: "Pubblicazioni che mi piacciono"
like: "Mi piace!"
unlike: "Non mi piace più"
_email:
_follow:
title: "Ha iniziato a seguirti"
_receiveFollowRequest:
title: "Hai ricevuto una richiesta di follow"
_plugin:
install: "Installa estensioni"
installWarn: "Si prega di installare soltanto estensioni che provengono da fonti affidabili."
manage: "Gestisci estensioni"
_registry:
key: "Dati"
keys: "Dati"
domain: "Dominio"
createKey: "Crea chiave"
_aboutMisskey:
about: "Misskey è un software libero e open source, sviluppato da syuilo dal 2014."
contributors: "Principali sostenitori"
allContributors: "Tutti i sostenitori"
source: "Codice sorgente"
morePatrons: "Ci sono molti altri che ci sostengono. Grazie 🥰"
translation: "Tradurre Misskey"
donate: "Sostieni Misskey"
morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie mille! 🥰"
patrons: "Sostenitori"
_nsfw:
respect: "Nascondere i media segnati come sensibli"
ignore: "Visualizzare i media segnati come sensibili"
force: "Nascondere tutti i media"
_mfm:
cheatSheet: "Bigliettino MFM"
intro: "MFM è un linguaggio Markdown particolare che si può usare in diverse parti di Misskey. Qui puoi visualizzare a colpo d'occhio tutta la sintassi MFM utile."
dummy: "Il Fediverso si espande con Misskey"
mention: "Menzioni"
mentionDescription: "Si può menzionare un utente specifico digitando il suo nome utente subito dopo il segno @."
hashtag: "Hashtag"
@ -642,7 +795,9 @@ _mfm:
search: "Cerca"
blur: "Sfocatura"
font: "Tipo di carattere"
fontDescription: "Puoi scegliere il tipo di carattere per il contenuto."
_reversi:
reversi: "Reversi"
gameSettings: "Impostazioni di gioco"
botSettings: "Opzioni del bot"
black: "Nero"
@ -653,6 +808,10 @@ _instanceTicker:
none: "Nascondi"
remote: "Mostra solo per gli/le utenti remotə"
always: "Mostra sempre"
_serverDisconnectedBehavior:
reload: "Ricarica automaticamente"
dialog: "Apri avviso in finestra"
quiet: "Visualizza avviso in modo discreto"
_channel:
create: "Nuovo canale"
edit: "Gerisci canale"
@ -664,18 +823,24 @@ _channel:
usersCount: "{n} partecipanti"
notesCount: "{n} note"
_sidebar:
full: "Intera"
icon: "Icone"
hide: "Nascondere"
_wordMute:
muteWords: "Parole da silenziare"
muteWords: "Parole da filtrare"
muteWordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
muteWordsDescription2: "Metti le parole chiavi tra slash per usare espressioni regolari (regexp)."
softDescription: "Nascondi della timeline note che rispondono alle condizioni impostate qui."
hardDescription: "Impedisci alla timeline di caricare le note che rispondono alle condizioni impostate qui. Inoltre, le note scompariranno in modo irreversibile, anche se le condizioni verranno successivamente rimosse."
soft: "Moderato"
hard: "Severo"
mutedNotes: "Note silenziate"
_theme:
explore: "Esplora temi"
install: "Installa un tema"
manage: "Gerisci temi"
code: "Codice tema"
description: "Descrizione"
installed: "{name} è installato"
installedThemes: "Temi installati"
builtinThemes: "Temi integrati"
@ -687,11 +852,15 @@ _theme:
constant: "Costante"
defaultValue: "Valore predefinito"
color: "Colore"
refConst: "Chiama costante"
key: "Chiave"
func: "Funzione"
funcKind: "Tipo di funzione"
argument: "Argomento"
darken: "Scuro"
lighten: "Chiaro"
inputConstantName: "Inserisci un nome per la costante"
deleteConstantConfirm: "Vuoi davvero eliminare la costante {const}?"
keys:
bg: "Sfondo"
fg: "Testo"
@ -708,12 +877,30 @@ _theme:
link: "Link"
hashtag: "Hashtag"
mention: "Menzioni"
mentionMe: "Menzioni (di me)"
renote: "Rinota"
divider: "Interruzione di linea"
infoBg: "Sfondo informazioni"
infoFg: "Testo di informazioni"
infoWarnBg: "Sfondo degli avvisi"
infoWarnFg: "Testo di avviso"
cwBg: "Sfondo del CW"
cwFg: "Testo del pulsante CW"
cwHoverBg: "Sfondo del pulsante CW (sorvolato)"
toastBg: "Sfondo di notifica a comparsa"
toastFg: "Testo di notifica a comparsa"
buttonBg: "Sfondo del pulsante"
buttonHoverBg: "Sfondo del pulsante (sorvolato)"
inputBorder: "Inquadra casella di testo"
listItemHoverBg: "Sfondo della voce di elenco (sorvolato)"
driveFolderBg: "Sfondo della cartella di disco"
messageBg: "Sfondo della chat"
_sfx:
note: "Nota"
noteMy: "Mia nota"
notification: "Notifiche"
chat: "Messaggi"
chatBg: "Chat (sfondo)"
antenna: "Ricezione dell'antenna"
channel: "Notifiche di canale"
_ago:
@ -746,7 +933,7 @@ _tutorial:
step4_1: "Hai pubblicato qualcosa?"
step4_2: "Se puoi visualizzare la tua nota sulla timeline, ce l'hai fatta!"
step5_1: "Adesso, cerca di seguire altre persone per vivacizzare la tua timeline. "
step5_2: "La pagina {featured} mostra le note di tendenza su questa istanza e, sfogliandole, magari toverai degli account che ti piacciono e che vorrai seguire. Oppure, potrai trovare utenti popolari usando {explore}."
step5_2: "La pagina {featured} mostra le note di tendenza su questa istanza, e magari ti aiuterà a trovare account che ti piacciono e che vorrai seguire. Oppure, potrai trovare utenti popolari usando {explore}."
step5_3: "Per seguire altrə utenti, clicca sul loro avatar per aprire la pagina di profilo dove puoi premere il pulsante \"Seguire\". "
step5_4: "Alcunə utenti scelgono di confermare manualmente le richieste di follow che ricevono, quindi a seconda delle persone potrebbe volerci un pò prima che la tua richiesta sia accolta."
step6_1: "Ora, se puoi visualizzare le note di altrə utenti sulla tua timeline, ce l'hai fatta!"
@ -755,13 +942,21 @@ _tutorial:
step7_1: "Complimenti! Sei arrivat@ alla fine dell'esercitazione di base su come usare Misskey. "
step7_2: "Se vuoi saperne di più su Misskey, puoi dare un'occhiata alla sezione {help}."
step7_3: "Da ultimo, buon divertimento su Misskey! 🚀"
_2fa:
registerDevice: "Aggiungi dispositivo"
_permissions:
"read:account": "Visualizzare le informazioni dell'account"
"write:account": "Modificare le informazioni dell'account"
"read:blocks": "Visualizza gli account bloccati"
"write:blocks": "Gestisci gli account bloccati"
"read:drive": "Aprire il Drive"
"write:drive": "Gestire il Drive"
"read:favorites": "Visualizza i tuoi preferiti"
"write:favorites": "Gestisci i tuoi preferiti"
"read:following": "Vedi le informazioni di follow"
"write:following": "Seguiti/ Smetti di seguire"
"read:messaging": "Visualizzare la chat"
"write:messaging": "Gestire la chat"
"read:mutes": "Vedi account silenziati"
"write:mutes": "Gerisci account silenziati"
"write:notes": "Creare / Eliminare note"
@ -769,10 +964,22 @@ _permissions:
"write:notifications": "Gerisci notifiche"
"read:reactions": "Vedi reazioni"
"write:reactions": "Gerisci reazioni"
"write:votes": "Votare"
"read:pages": "Visualizzare pagine"
"write:pages": "Gestire pagine"
"read:page-likes": "Visualizzare i \"Mi piace\" di pagine"
"write:page-likes": "Gestire i \"Mi piace\" di pagine"
"read:user-groups": "Vedi gruppi di utenti"
"write:user-groups": "Gestisci gruppi di utenti"
"read:channels": "Visualizza canali"
"write:channels": "Gerisci canali"
_auth:
shareAccess: "Autorizzare「{name}」ad accedere al tuo account?"
shareAccessAsk: "Vuoi davvero consentire l'accesso al tuo account a questa app'?"
permissionAsk: "Questa app richiede le seguenti autorizzazioni:"
pleaseGoBack: "Si prega di ritornare sulla app"
callback: "Ritornando sulla app"
denied: "Accesso negato"
_antennaSources:
all: "Tutte le note"
homeTimeline: "Note dagli utenti che segui"
@ -799,21 +1006,40 @@ _widgets:
photos: "Foto"
digitalClock: "Orologio digitale"
federation: "Federazione"
postForm: "Finestra di pubblicazione"
slideshow: "Diapositive"
button: "Pulsante"
onlineUsers: "Utenti online"
jobQueue: "Coda di lavoro"
serverMetric: "Statistiche server"
aiscript: "Console AiScript"
_cw:
hide: "Nascondere"
show: "Mostra di più"
chars: "{count} caratteri"
files: "{count} file"
_poll:
noOnlyOneChoice: "Sono necessarie almeno 2 risposte"
choiceN: "Opzione {n}"
noMore: "Hai aggiunto il numero massimo di opzioni."
canMultipleVote: "Risposte multiple"
canMultipleVote: "Possibilità di risposte multiple"
expiration: "Scadenza"
infinite: "Permanente"
infinite: "Non scade"
at: "Seleziona data"
after: "Seleziona durata"
deadlineDate: "Data di scadenza"
deadlineTime: "h"
voted: "Votato"
deadlineTime: "Ora di scadenza"
duration: "Durata"
votesCount: "{n} voti"
totalVotes: "Totale di {n} voti"
vote: "Vota"
showResult: "Visualizza risultati"
voted: "Hai votato"
closed: "Terminato"
remainingDays: "Rimangono {d} giorni e {h} ore"
remainingHours: "Rimangono {h} ore e {m} minuti"
remainingMinutes: "Rimangono {m} minuti e {s} secondi"
remainingSeconds: "Rimangono {s} secondi"
_visibility:
public: "Pubblica"
publicDescription: "Visibile per tutti sul Fediverso"
@ -829,13 +1055,24 @@ _postForm:
replyPlaceholder: "Nota la tua risposta.."
quotePlaceholder: "Cita Nota..."
channelPlaceholder: "Pubblica in canale"
_placeholders:
a: "Che succede?"
b: "È successo qualcosa?"
c: "Che cos'hai in mente?"
d: "Vuoi dire qualcosa?"
e: "Scrivi qualcosa qui"
f: "Aspettando che scriva..."
_profile:
name: "Nome"
username: "Nome utente"
description: "Bio"
metadata: "Metadati"
youCanIncludeHashtags: "Puoi anche includere hashtag."
metadata: "Informazioni aggiuntive"
metadataEdit: "Modifica informazioni aggiuntive"
metadataDescription: "Puoi pubblicare fino a quattro informazioni aggiuntive sul profilo."
metadataLabel: "Etichetta"
metadataContent: "Contenuto"
changeAvatar: "Modifica immagine profilo"
changeBanner: "Cambia intestazione"
_exportOrImport:
allNotes: "Tutte le note"
@ -844,67 +1081,136 @@ _exportOrImport:
blockingList: "Account bloccati"
userLists: "Liste"
_charts:
federationInstancesIncDec: "Variazione del numero di istanze federate"
federationInstancesTotal: "Numero totale di istanze federate"
usersIncDec: "Variazione del numero di utenti"
usersTotal: "Numero totale di utenti"
activeUsers: "Numero di utenti attivi"
notesIncDec: "Variazione del numero di note"
localNotesIncDec: "Variazione del numero di note locali"
remoteNotesIncDec: "Variazione del numero di note distanti"
notesTotal: "Conteggio totale di note"
filesIncDec: "Variazione del numero dei file"
filesTotal: "Numero totale di file"
storageUsageIncDec: "Variazione dell'utilizzo dell'immagazzinamento"
storageUsageTotal: "Utilizzo totale dell'immagazzinamento"
_instanceCharts:
requests: "Richieste"
users: "Variazione del numero di utenti"
usersTotal: "Totale cumulativo di utenti"
notes: "Variazione del numero di note"
notesTotal: "Totale cumulato di note"
ff: "Variazione dei follow/ follower"
ffTotal: "Totale cumulato dei follow/ follower"
cacheSize: "Variazione dello spazio occupato dalla cache"
cacheSizeTotal: "Totale cumulato dello spazio occupato dalla cache"
files: "Variazione del numero di file"
filesTotal: "Totale cumulato del numero di file"
_timelines:
home: "Home"
local: "Locale"
social: "Sociale"
global: "Federata"
_rooms:
roomOf: "Camera di {user}"
addFurniture: "Disponi mobilia"
translate: "Sposta"
rotate: "Ruota"
exit: "Indietro"
remove: "Togli"
clear: "Rimuovi tutto"
clearConfirm: "Sei sicur@ di voler rimuovere tutti i mobili dalla tua camera?"
leaveConfirm: "Hai fatto modifiche ancora non salvate. Vuoi davvero uscire?"
chooseImage: "Seleziona immagine"
roomType: "Tipo di stanza"
carpetColor: "Colore del suolo"
_roomType:
default: "Predefinito"
washitsu: "Washitsu"
_furnitures:
milk: "Cartone del latte"
bed: "Letto"
low-table: "Tavolino Coffee"
low-table: "Tavolino"
desk: "Tavolo"
chair: "Sedia"
chair2: "Sedia 2"
fan: "Ventilatore"
pc: "PC"
pc: "Computer"
plant: "Pianta da appartamento"
plant2: "Pianta da appartamento2"
eraser: "Gomma"
pencil: "Matita"
pudding: "Pudding"
cardboard-box: "Scatola di cartone"
cardboard-box2: "Scatola di cartone 2"
cardboard-box3: "Scatola di cartone 3"
book: "Libro"
book2: "Libro2"
piano: "Pianoforte"
facial-tissue: "Scatola di fazzolettini"
server: "Server"
moon: "Luna"
corkboard: "Bacheca"
mousepad: "Tappetino per il mouse"
monitor: "Monitor "
keyboard: "Tastiera"
carpet-stripe: "Tappeto (a strisce)"
mat: "Zerbino"
color-box: "Libreria"
wall-clock: "Orologio da parete"
photoframe: "Cornice"
cube: "Cubo"
tv: "Televisore"
tv: "TV"
pinguin: "Pinguino"
rubik-cube: "Cubo di Rubik"
poster-h: "Poster (orizzontale)"
poster-v: "Poster (verticale)"
sofa: "Divano"
spiral: "Scale a chiocciola"
bin: "Cestino"
cup-noodle: "Noodle istantanei"
holo-display: "Visualizzazione olografica"
energy-drink: "Bevanda energetica"
doll-ai: "Bambola Ai"
banknote: "Mazzetta di banconote"
_pages:
newPage: "Crea pagina"
editPage: "Modifica pagina"
readPage: "Visualizzando fonte "
created: "Pagina creata!"
updated: "Pagina aggiornata con successo!"
deleted: "Pagina eliminata"
pageSetting: "Impostazioni pagina"
nameAlreadyExists: "Esiste già una pagina con lo stesso URL."
invalidNameTitle: "L'URL di pagina definito non è valido"
invalidNameText: "Verifica che il campo non è vuoto"
editThisPage: "Modifica questa pagina"
viewSource: "Visualizza sorgente"
viewPage: "Visualizza pagina"
like: "Mi piace"
unlike: "Togli Mi piace"
my: "Le mie pagine"
liked: "Pagine che mi piacciono"
featured: "Popolari"
contents: "Contenuto"
content: "Blocco di pagina"
variables: "Variabili"
title: "Titolo"
url: "URL della pagina"
summary: "Riassunto di pagina"
hideTitleWhenPinned: "Nascondere il titolo pagina quando è fissata in cima al profilo."
font: "Tipo di carattere"
fontSerif: "Serif"
fontSansSerif: "Sans serif"
eyeCatchingImageSet: "Imposta un'immagine attrattiva"
eyeCatchingImageRemove: "Elimina l'immagine attrattiva"
chooseBlock: "Aggiungi blocco"
selectType: "Seleziona tipo"
enterVariableName: "Digita un nome di variabile"
variableNameIsAlreadyUsed: "Esiste già una variabile con lo stesso nome"
contentBlocks: "Contenuto"
inputBlocks: "Blocchi di input"
specialBlocks: "Speciale"
blocks:
text: "Testo"
textarea: "Area di testo"
@ -914,16 +1220,20 @@ _pages:
if: "Se"
_if:
variable: "Variabili"
post: "Finestra di pubblicazione"
_post:
text: "Contenuto"
textInput: "Immissione testo"
_textInput:
name: "Nome della variabile"
text: "Titolo"
default: "Valore predefinito"
textareaInput: "Immissione testo a più righe"
_textareaInput:
name: "Nome della variabile"
text: "Titolo"
default: "Valore predefinito"
numberInput: "Immissione numerica"
_numberInput:
name: "Nome della variabile"
text: "Titolo"
@ -936,18 +1246,35 @@ _pages:
id: "ID nota"
idDescription: "Qui puoi anche incollare l'URL della nota che vuoi impostare."
detailed: "Visualizzazione dettagliata"
switch: "Interruttore"
_switch:
name: "Nome della variabile"
text: "Titolo"
default: "Valore predefinito"
counter: "Contatore"
_counter:
name: "Nome della variabile"
text: "Titolo"
inc: "Valore da aggiungere"
_button:
text: "Titolo"
colored: "Colorato"
action: "Operazione da eseguire quando viene premuto il pulsante"
_action:
dialog: "Visualizzare una finestra di dialogo"
_dialog:
content: "Contenuto"
resetRandom: "Ripristinare un numero aleatorio"
pushEvent: "Inviare evento"
_pushEvent:
event: "Nome evento"
message: "Messaggio da visualizzare quando abilitato"
variable: "Variabile da inviare"
no-variable: "Nessun contenuto"
callAiScript: "Chiamare AiScript"
_callAiScript:
functionName: "Nome della funzione"
radioButton: "Opzioni"
_radioButton:
name: "Nome della variabile"
title: "Titolo"
@ -961,6 +1288,8 @@ _pages:
list: "Liste"
blocks:
text: "Testo"
multiLineText: "Testo (a più righe)"
textList: "Lista di testo"
_strLen:
arg1: "Testo"
_strPick:
@ -1015,13 +1344,18 @@ _pages:
arg2: "B"
_if:
arg1: "Se"
arg2: "Se"
random: "Aleatorietà"
_randomPick:
arg1: "Liste"
_dailyRandomPick:
arg1: "Liste"
_seedRandom:
arg2: "Probabilità"
_seedRandomPick:
arg2: "Liste"
_DRPWPM:
arg1: "Lista di testo"
_pick:
arg1: "Liste"
_listLen:
@ -1035,13 +1369,14 @@ _pages:
types:
string: "Testo"
array: "Liste"
stringArray: "Lista di testo"
_notification:
fileUploaded: "File caricato correttamente"
youGotMention: "{name} ti ha menzionato"
youGotReply: "{name} ti ha risposto"
youGotQuote: "{name} ha citato il tuo Nota e ha detto"
youRenoted: "{name} ha rinotato"
youGotPoll: "{name} ha volluto."
youGotPoll: "{name} ha votato"
youGotMessagingMessageFromUser: "{name} ti ha mandato un messaggio"
youGotMessagingMessageFromGroup: "{name} ti ha mandato un messaggio nella chat"
youWereFollowed: "Ha iniziato a seguirti"
@ -1062,7 +1397,21 @@ _notification:
groupInvited: "Invito a un gruppo"
app: "Notifiche da applicazioni"
_deck:
alwaysShowMainColumn: "Mostra sempre la colonna principale"
columnAlign: "Allineare colonne"
columnMargin: "Margine tra le colonne"
columnHeaderHeight: "Dimensioni dell'intestazione della colonna"
addColumn: "Aggiungi colonna"
swapLeft: "Sposta a sinistra"
swapRight: "Sposta a destra"
swapUp: "Sposta in alto"
swapDown: "Sposta in basso"
stackLeft: "Impila a sinistra"
popRight: "Estrai a destra"
profile: "Profilo"
_columns:
main: "Principale"
widgets: "Widget"
notifications: "Notifiche"
tl: "Timeline"
antenna: "Antenne"

View File

@ -7,6 +7,7 @@ search: "検索"
notifications: "通知"
username: "ユーザー名"
password: "パスワード"
forgotPassword: "パスワードを忘れた"
fetchingAsApObject: "連合に照会中"
ok: "OK"
gotIt: "わかった"
@ -138,7 +139,7 @@ flagAsBotDescription: "このアカウントがプログラムによって運用
flagAsCat: "Catとして設定"
flagAsCatDescription: "このアカウントが猫であることを示す場合は、このフラグをオンにします。"
autoAcceptFollowed: "フォロー中ユーザーからのフォロリクを自動承認"
addAcount: "アカウント追加"
addAccount: "アカウント追加"
loginFailed: "ログインに失敗しました"
showOnRemote: "リモートで表示"
general: "全般"
@ -183,7 +184,7 @@ clearQueueConfirmTitle: "キューをクリアしますか?"
clearQueueConfirmText: "未配達の投稿は配送されなくなります。通常この操作を行う必要はありません。"
clearCachedFiles: "キャッシュをクリア"
clearCachedFilesConfirm: "キャッシュされたリモートファイルをすべて削除しますか?"
blockedInstances: "インスタンスブロック"
blockedInstances: "ブロックしたインスタンス"
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定します。ブロックされたインスタンスは、このインスタンスとやり取りできなくなります。"
muteAndBlock: "ミュートとブロック"
mutedUsers: "ミュートしたユーザー"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "除外キーワード"
antennaKeywordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
notifyAntenna: "新しいノートを通知する"
withFileAntenna: "ファイルが添付されたノートのみ"
serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorkerを有効にする"
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
caseSensitive: "大文字小文字を区別する"
@ -453,7 +453,7 @@ category: "カテゴリ"
tags: "タグ"
docSource: "このドキュメントのソース"
createAccount: "アカウントを作成"
existingAcount: "既存のアカウント"
existingAccount: "既存のアカウント"
regenerate: "再生成"
fontSize: "フォントサイズ"
noFollowRequests: "フォロー申請はありません"
@ -568,7 +568,7 @@ pluginTokenRequestedDescription: "このプラグインはここで設定した
notificationType: "通知の種類"
edit: "編集"
useStarForReactionFallback: "リアクション絵文字が不明な場合、代わりに★を使う"
emailConfig: "メールサーバー設定"
emailServer: "メールサーバー"
enableEmail: "メール配信機能を有効化する"
emailConfigInfo: "メールアドレスの確認やパスワードリセットの際に使います"
email: "メール"
@ -687,6 +687,7 @@ textColor: "文字"
saveAs: "名前を付けて保存"
advanced: "高度"
value: "値"
createdAt: "作成日時"
updatedAt: "更新日時"
saveConfirm: "保存しますか?"
deleteConfirm: "削除しますか?"
@ -704,12 +705,73 @@ editCode: "コードを編集"
apply: "適用"
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る"
emailNotification: "メール通知"
publish: "公開"
inChannelSearch: "チャンネル内検索"
useReactionPickerForContextMenu: "右クリックでリアクションピッカーを開く"
typingUsers: "{users}が入力中"
jumpToSpecifiedDate: "特定の日付にジャンプ"
showingPastTimeline: "過去のタイムラインを表示しています"
clear: "クリア"
markAllAsRead: "全て既読にする"
goBack: "戻る"
unlikeConfirm: "いいね解除しますか?"
fullView: "フルビュー"
quitFullView: "フルビュー解除"
addDescription: "説明を追加"
userPagePinTip: "個々のノートのメニューから「ピン留め」を選択することで、ここにノートを表示しておくことができます。"
notSpecifiedMentionWarning: "宛先に含まれていないメンションがあります"
info: "情報"
userInfo: "ユーザー情報"
unknown: "不明"
onlineStatus: "オンライン状態"
hideOnlineStatus: "オンライン状態を隠す"
hideOnlineStatusDescription: "オンライン状態を隠すと、検索などの一部機能において利便性が低下することがあります。"
online: "オンライン"
active: "アクティブ"
offline: "オフライン"
notRecommended: "非推奨"
botProtection: "Bot防御"
instanceBlocking: "インスタンスブロック"
selectAccount: "アカウントを選択"
enabled: "有効"
disabled: "無効"
quickAction: "クイックアクション"
user: "ユーザー"
administration: "管理"
accounts: "アカウント"
switch: "切り替え"
noMaintainerInformationWarning: "管理者情報が設定されていません。"
noBotProtectionWarning: "Bot防御が設定されていません。"
configure: "設定する"
postToGallery: "ギャラリーへ投稿"
gallery: "ギャラリー"
recentPosts: "最近の投稿"
popularPosts: "人気の投稿"
shareWithNote: "ノートで共有"
ads: "広告"
expiration: "期限"
memo: "メモ"
priority: "優先度"
high: "高"
middle: "中"
low: "低"
emailNotConfiguredWarning: "メールアドレスの設定がされていません。"
ratio: "比率"
_ad:
back: "戻る"
reduceFrequencyOfThisAd: "この広告の表示頻度を下げる"
_forgotPassword:
enterEmail: "アカウントに登録したメールアドレスを入力してください。そのアドレス宛てに、パスワードリセット用のリンクが送信されます。"
ifNoEmail: "メールアドレスを登録していない場合は、管理者までお問い合わせください。"
contactAdmin: "このインスタンスではメールがサポートされていないため、パスワードリセットを行う場合は管理者までお問い合わせください。"
_gallery:
my: "自分の投稿"
liked: "いいねした投稿"
like: "いいね!"
unlike: "いいね解除"
_email:
_follow:
@ -878,6 +940,7 @@ _theme:
install: "テーマのインストール"
manage: "テーマの管理"
code: "テーマコード"
description: "説明"
installed: "{name}をインストールしました"
installedThemes: "インストールされたテーマ"
builtinThemes: "標準のテーマ"

View File

@ -1,5 +1,6 @@
---
_lang_: "日本語 (関西弁)"
headlineMisskey: "ノートでつながるネットワーク"
introMisskey: "ようお越しMisskeyは、オープンソースの分散型マイクロブログサービスやねん。\n「ート」を作って、いま起こっとることを共有したり、あんたについて皆に発信しよう📡\n「リアクション」機能で、皆のートに素早く反応を追加したりもできるで✌\nほな新しい世界を探検しよか🚀"
monthAndDay: "{month}月 {day}日"
search: "探す"
@ -54,7 +55,7 @@ youGotNewFollower: "フォローされたで"
receiveFollowRequest: "フォローリクエストされたで"
followRequestAccepted: "フォローが承認されたで"
mention: "メンション"
mentions: "あんた宛て"
mentions: "うち宛て"
directNotes: "ダイレクト投稿"
importAndExport: "インポートとエクスポート"
import: "インポート"
@ -137,7 +138,6 @@ flagAsBotDescription: "もしこのアカウントがプログラムによって
flagAsCat: "Catやで"
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
addAcount: "アカウント追加"
loginFailed: "ログインに失敗してしもうた…"
showOnRemote: "リモートで見る"
general: "全般"
@ -346,7 +346,6 @@ antennaExcludeKeywords: "除外キーワード"
antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や"
notifyAntenna: "新しいノートを追加すんで"
withFileAntenna: "なんか添付されたノートだけ"
serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorkerをつこて"
antennaUsersDescription: "ユーザー名を改行で区切ったってな"
caseSensitive: "大文字と小文字は別もんや"
@ -433,6 +432,7 @@ passwordMatched: "よし!一致や!"
passwordNotMatched: "一致しとらんで?"
signinWith: "{x}でログイン"
or: "それか"
language: "言語"
uiLanguage: "UIの表示言語"
groupInvited: "グループに招待されとるで"
aboutX: "{x}について"
@ -446,7 +446,6 @@ category: "カテゴリ"
tags: "タグ"
docSource: "このドキュメントのソース"
createAccount: "アカウントを作成"
existingAcount: "既存のアカウント"
regenerate: "再生成"
fontSize: "フォントサイズ"
noFollowRequests: "フォロー申請はあらへんで"
@ -454,40 +453,365 @@ openImageInNewTab: "画像を新しいタブで開く"
dashboard: "ダッシュボード"
local: "ローカル"
remote: "リモート"
total: "合計"
weekOverWeekChanges: "前週比"
dayOverDayChanges: "前日比"
appearance: "見た目"
clientSettings: "クライアントの設定"
accountSettings: "アカウントの設定"
promotion: "宣伝"
promote: "宣伝"
numberOfDays: "日数"
hideThisNote: "このノートは表示せんでいい"
showFeaturedNotesInTimeline: "タイムラインにおすすめのノートを表示してや"
objectStorage: "オブジェクトストレージ"
useObjectStorage: "オブジェクトストレージを使う"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCSとかなら: 'https://storage.googleapis.com/<bucket>'。"
objectStorageBucket: "Bucket"
objectStoragePrefix: "Prefix"
objectStorageEndpoint: "Endpoint"
objectStorageRegion: "Region"
objectStorageUseSSL: "SSLを使う"
objectStorageUseProxy: "Proxyを使う"
objectStorageUseProxyDesc: "API接続にproxy使わんのやったら切ってくれへん"
objectStorageSetPublicRead: "アップロードした時に'public-read'を設定してや"
serverLogs: "サーバーログ"
deleteAll: "全て削除してや"
showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?"
newNoteRecived: "新しいノートがあるで"
sounds: "サウンド"
listen: "聴く"
none: "なし"
showInPage: "ページで表示"
popout: "ポップアウト"
volume: "音量"
masterVolume: "全体の音量"
details: "もっと"
chooseEmoji: "絵文字を選ぶ"
unableToProcess: "なんか作業が止まってしまったようやね"
recentUsed: "最近使ったやつ"
install: "インストール"
uninstall: "アンインストール"
installedApps: "インストールされとるアプリ"
nothing: "あらへん"
installedDate: "インストールした日時"
lastUsedDate: "最後に使った日時"
state: "状態"
sort: "仕分ける"
ascendingOrder: "小さい順"
descendingOrder: "大きい順"
scratchpad: "スクラッチパッド"
scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Misskeyに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。"
output: "出力"
script: "スクリプト"
disablePagesScript: "Pagesのスクリプトを無効にしてや"
updateRemoteUser: "リモートユーザー情報の更新してくれん?"
deleteAllFiles: "すべてのファイルを削除"
deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?"
removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのインスタンスが消えて無くなった時とかには便利な機能やで。"
userSuspended: "このユーザーは...凍結されとる。"
userSilenced: "このユーザーは...サイレンスされとる。"
sidebar: "サイドバー"
divider: "分割線"
rooms: "ルーム"
relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
poll: "アンケート"
enablePlayer: "プレイヤーを開く"
disablePlayer: "プレイヤーを閉じる"
expandTweet: "ツイートを展開する"
themeEditor: "テーマエディター"
description: "説明"
author: "作者"
leaveConfirm: "未保存の変更があるで!ほかしてええか?"
manage: "管理"
plugins: "プラグイン"
deck: "デッキ"
undeck: "デッキ解除"
width: "幅"
height: "高さ"
large: "大"
medium: "中"
small: "小"
edit: "編集"
enableEmail: "メール配信を受け取る"
emailConfigInfo: "メールアドレスの確認とかパスワードリセットの時に使うで"
email: "メール"
emailAddress: "メールアドレス"
smtpConfig: "SMTP サーバーの設定"
smtpHost: "ホスト"
smtpPort: "ポート"
smtpUser: "ユーザー名"
smtpPass: "パスワード"
emptyToDisableSmtpAuth: "ユーザー名とパスワードになんも入れんかったら、SMTP認証を無効化するで"
smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
testEmail: "配信テスト"
wordMute: "ワードミュート"
userSaysSomething: "{name}が何か言ったようやで"
makeActive: "使うで"
display: "表示"
copy: "コピー"
metrics: "メトリクス"
overview: "概要"
logs: "ログ"
delayed: "遅延"
database: "データベース"
channel: "チャンネル"
create: "作成"
notificationSetting: "通知設定"
notificationSettingDesc: "表示する通知の種類えらんでや。"
useGlobalSetting: "グローバル設定を使ってや"
other: "その他"
regenerateLoginToken: "ログイントークンを再生成"
behavior: "動作"
sample: "サンプル"
abuseReports: "通報"
reportAbuse: "通報"
reportAbuseOf: "{name}を通報する"
send: "送信"
abuseMarkAsResolved: "対応したで"
openInNewTab: "新しいタブで開く"
openInSideView: "サイドビューで開く"
defaultNavigationBehaviour: "デフォルトのナビゲーション"
editTheseSettingsMayBreakAccount: "このへんの設定をようわからんままイジるとアカウントが壊れて使えんくなるかも知れへんで?"
instanceTicker: "ノートのインスタンス情報"
waitingFor: "{x}を待っとるで"
random: "ランダム"
system: "システム"
switchUi: "UI切り替え"
desktop: "デスクトップ"
clip: "クリップ"
receivedReactionsCount: "リアクションされた数"
pollVotesCount: "アンケートに投票した数"
pollVotedCount: "アンケートに投票された数"
yes: "はい"
no: "いいえ"
driveFilesCount: "ドライブのファイル数"
emailVerified: "メールアドレスは確認されたで"
pageLikesCount: "Pageにええやんと思った数"
pageLikedCount: "Pageにええやんと思ってくれた数"
clips: "クリップ"
duplicate: "複製"
left: "左"
center: "中央"
wide: "広い"
narrow: "狭い"
reloadToApplySetting: "設定はページリロード後に反映されるで。今リロードしとくか?"
showTitlebar: "タイトルバーを見せる"
clearCache: "キャッシュをほかす"
onlineUsersCount: "{n}人が起きとるで"
nUsers: "{n}ユーザー"
nNotes: "{n}ノート"
sendErrorReports: "エラーリポートを送る"
sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がMisskeyに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。"
myTheme: "マイテーマ"
backgroundColor: "背景"
accentColor: "アクセント"
textColor: "文字"
saveAs: "名前を付けて保存"
advanced: "高度"
value: "値"
createdAt: "作成した日"
updatedAt: "更新日時"
saveConfirm: "保存するで?"
deleteConfirm: "ホンマに削除するで?"
registry: "レジストリ"
closeAccount: "アカウントを閉鎖する"
currentVersion: "現在のバージョン"
latestVersion: "最新のバージョン"
youAreRunningUpToDateClient: "今使ってるクライアントが最新やで!"
newVersionOfClientAvailable: "新しいバージョンのクライアントが使えるで。"
usageAmount: "使用量"
capacity: "容量"
inUse: "使用中"
editCode: "コードを編集"
apply: "適用"
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る"
emailNotification: "メール通知"
inChannelSearch: "チャンネル内検索"
useReactionPickerForContextMenu: "右クリックでリアクションピッカーを開くようにする"
typingUsers: "{users}が今書きよるで"
jumpToSpecifiedDate: "特定の日付にジャンプ"
showingPastTimeline: "過去のタイムラインを表示してるで"
clear: "クリア"
markAllAsRead: "もうみな読んでもうたわ"
goBack: "戻る"
info: "情報"
user: "ユーザー"
administration: "管理"
ads: "広告"
expiration: "期限"
memo: "メモ"
high: "高い"
middle: "中"
low: "低い"
_ad:
back: "戻る"
_gallery:
unlike: "良くないわ"
_email:
_follow:
title: "フォローされたで"
_receiveFollowRequest:
title: "フォローリクエストを受け取ったで"
_plugin:
install: "プラグインのインストール"
installWarn: "信頼できへんプラグインはインストールせんとってな"
manage: "プラグインの管理"
_registry:
scope: "スコープ"
key: "キー"
keys: "キー"
domain: "ドメイン"
createKey: "キーを作る"
_aboutMisskey:
about: "Misskeyはsyuiloが2014年からずっと作ってはる、オープンソースなソフトウェアや。"
contributors: "主な貢献者"
allContributors: "全ての貢献者"
source: "ソースコード"
translation: "Misskeyを翻訳"
donate: "Misskeyに寄付"
morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰"
patrons: "支援者"
_mfm:
cheatSheet: "MFMチートシート"
mention: "メンション"
hashtag: "ハッシュタグ"
url: "URL"
link: "リンク"
bold: "太字"
center: "中央寄せ"
inlineCode: "コード(インライン)"
blockCode: "コード(ブロック)"
inlineMath: "数式(インライン)"
quote: "引用"
emoji: "カスタム絵文字"
search: "探す"
shake: "アニメーション(ぶるぶる)"
twitch: "アニメーション(ブレ)"
spin: "アニメーション(回転)"
blur: "ぼかし"
font: "フォント"
_reversi:
reversi: "リバーシ"
gameSettings: "対局の設定"
chooseBoard: "ボードを選択"
blackOrWhite: "先行/後攻"
blackIs: "{name}が黒(先行)"
rules: "ルール"
botSettings: "Botのオプション"
pastTurnOf: "{name}のターン"
surrender: "投了"
surrendered: "投了により"
drawn: "引き分け"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
turnCount: "{count}ターン目"
myGames: "自分の対局"
allGames: "みんなの対局"
ended: "終了"
playing: "対局中"
isLlotheo: "石の少ない方が勝ち(ロセオ)"
loopedMap: "ループマップ"
_instanceTicker:
none: "表示せん"
remote: "リモートユーザーに表示"
always: "常に表示"
_serverDisconnectedBehavior:
reload: "自動でリロード"
dialog: "ダイアログで警告"
_channel:
create: "チャンネルを作る"
edit: "チャンネルを編集"
setBanner: "バナーを設定"
removeBanner: "バナーを削除"
featured: "トレンド"
notesCount: "{n}こ投稿があるで"
_sidebar:
full: "フル"
icon: "アイコン"
hide: "隠す"
_wordMute:
soft: "ソフト"
hard: "ハード"
_theme:
explore: "テーマを探す"
install: "テーマのインストール"
manage: "テーマの管理"
code: "テーマコード"
description: "説明"
installed: "{name}をインストールしたで。"
installedThemes: "インストールされとるテーマ"
builtinThemes: "標準のテーマ"
alreadyInstalled: "そのテーマはもうインストールされとるで?"
make: "テーマを作る"
base: "ベース"
addConstant: "定数を追加"
defaultValue: "デフォルト値"
color: "色"
refProp: "プロパティを参照"
refConst: "定数を参照"
key: "キー"
func: "関数"
funcKind: "関数の種類"
argument: "引数"
basedProp: "元にするプロパティの名前"
alpha: "不透明度"
darken: "暗さ"
lighten: "明るさ"
keys:
accent: "アクセント"
bg: "背景"
fg: "文字"
focus: "フォーカス"
indicator: "インジケーター"
panel: "パネル"
shadow: "影"
header: "ヘッダー"
navBg: "サイドバーの背景"
navFg: "サイドバーの文字"
navHoverFg: "サイドバー文字(ホバー)"
navActive: "サイドバー文字(アクティブ)"
navIndicator: "サイドバーのインジケーター"
link: "リンク"
hashtag: "ハッシュタグ"
mention: "メンション"
mentionMe: "うち宛てのメンション"
renote: "Renote"
modalBg: "モーダルの背景"
divider: "分割線"
scrollbarHandle: "スクロールバーの取っ手"
scrollbarHandleHover: "スクロールバーの取っ手(ホバー)"
dateLabelFg: "日付ラベルの文字"
infoBg: "情報の背景"
infoFg: "情報の文字"
infoWarnBg: "警告の背景"
infoWarnFg: "警告の文字"
cwBg: "CW ボタンの背景"
cwFg: "CW ボタンの文字"
cwHoverBg: "CW ボタンの背景 (ホバー)"
toastBg: "通知トーストの背景"
toastFg: "通知トーストの文字"
buttonBg: "ボタンの背景"
buttonHoverBg: "ボタンの背景 (ホバー)"
inputBorder: "入力ボックスの縁取り"
listItemHoverBg: "リスト項目の背景 (ホバー)"
driveFolderBg: "ドライブフォルダーの背景"
wallpaperOverlay: "壁紙のオーバーレイ"
badge: "バッジ"
messageBg: "チャットの背景"
accentDarken: "アクセント (暗め)"
accentLighten: "アクセント (明るめ)"
fgHighlighted: "強調されとる文字"
_sfx:
note: "ノート"
noteMy: "ノート(自分)"
notification: "通知"
chat: "チャット"
_ago:
@ -511,24 +835,63 @@ _tutorial:
_2fa:
alreadyRegistered: "もう設定終わっとるわ。"
_permissions:
"read:reactions": "リアクションを見る"
"write:votes": "投票する"
"read:pages": "ページを見る"
"read:page-likes": "ページのええやんを見る"
"write:page-likes": "ページのええやんを操作する"
"read:user-groups": "ユーザーグループを見る"
"read:channels": "チャンネルを見る"
_auth:
permissionAsk: "このアプリは次の権限を要求しとるで"
_antennaSources:
all: "みなのノート"
homeTimeline: "フォローしとるユーザーのノート"
_weekday:
sunday: "日曜日"
monday: "月曜日"
tuesday: "火曜日"
wednesday: "水曜日"
thursday: "木曜日"
friday: "金曜日"
saturday: "土曜日"
_widgets:
memo: "付箋"
notifications: "通知"
timeline: "タイムライン"
calendar: "カレンダー"
trends: "トレンド"
clock: "時計"
rss: "RSSリーダー"
activity: "アクティビティ"
photos: "フォト"
digitalClock: "デジタル時計"
federation: "連合"
postForm: "投稿フォーム"
slideshow: "スライドショー"
button: "ボタン"
onlineUsers: "オンラインユーザー"
jobQueue: "ジョブキュー"
serverMetric: "サーバーメトリクス"
aiscript: "AiScriptコンソール"
_cw:
hide: "隠す"
show: "続き見して!"
chars: "{count}文字"
files: "{count}ファイル"
_poll:
choiceN: "選択肢{n}"
noMore: "これ以上追加でけへん"
canMultipleVote: "複数回答可"
expiration: "期限"
infinite: "無期限"
at: "日時指定"
after: "経過指定"
deadlineDate: "期日"
deadlineTime: "時間"
duration: "期間"
votesCount: "{n}票"
vote: "投票する"
_visibility:
publicDescription: "みなのユーザーに公開"
home: "ホーム"
@ -542,44 +905,372 @@ _exportOrImport:
muteList: "ミュート"
blockingList: "ブロック"
userLists: "リスト"
_charts:
usersTotal: "ユーザーの合計"
activeUsers: "アクティブユーザー数"
notesIncDec: "ノートの増減"
localNotesIncDec: "ローカルのノートの増減"
remoteNotesIncDec: "リモートのノートの増減"
notesTotal: "ノートの合計"
filesIncDec: "ファイルの増減"
filesTotal: "ファイルの合計"
storageUsageIncDec: "ストレージ使用量の増減"
storageUsageTotal: "ストレージ使用量の合計"
_instanceCharts:
requests: "リクエスト"
users: "ユーザーの増減"
usersTotal: "ユーザーの累積"
notes: "ノートの増減"
notesTotal: "ノートの累積"
ff: "フォロー/フォロワーの増減"
ffTotal: "フォロー/フォロワーの累積"
cacheSize: "キャッシュサイズの増減"
cacheSizeTotal: "キャッシュサイズの累積"
files: "ファイル数の増減"
filesTotal: "ファイル数の累積"
_timelines:
home: "ホーム"
local: "ローカル"
social: "ソーシャル"
global: "グローバル"
_rooms:
roomOf: "{user}のルーム"
addFurniture: "家具を置く"
translate: "移動"
rotate: "回転"
exit: "戻る"
remove: "しまう"
clear: "片付け"
clearConfirm: "家具ぜんぶしまうけど、ホンマにええん?"
leaveConfirm: "未保存の変更があるけど、移動してええか?"
chooseImage: "画像を選ぶ"
roomType: "部屋のタイプ"
carpetColor: "床の色"
_roomType:
default: "デフォルト"
washitsu: "和室"
_furnitures:
milk: "牛乳パック"
bed: "ベッド"
low-table: "ローテーブル"
desk: "デスク"
chair: "チェア"
chair2: "チェア2"
fan: "換気扇"
pc: "パソコン"
plant: "観葉植物"
plant2: "観葉植物2"
eraser: "消しゴム"
pencil: "鉛筆"
pudding: "プリン"
cardboard-box: "段ボール箱"
cardboard-box2: "段ボール箱2"
cardboard-box3: "段ボール箱3"
book: "本"
book2: "本2"
piano: "ピアノ"
facial-tissue: "ティッシュボックス"
server: "サーバー"
moon: "月"
corkboard: "コルクボード"
mousepad: "マウスパッド"
monitor: "モニター"
keyboard: "キーボード"
carpet-stripe: "カーペット(縞)"
mat: "マット"
color-box: "カラーボックス"
wall-clock: "壁掛け時計"
photoframe: "額縁"
cube: "キューブ"
tv: "テレビ"
pinguin: "ピンギン"
rubik-cube: "ルービックキューブ"
poster-h: "ルービックキューブ"
poster-v: "ポスター(縦長)"
sofa: "ソファ"
spiral: "螺旋階段"
bin: "ゴミ箱"
cup-noodle: "カップ麺"
holo-display: "ホログラフィックディスプレイ"
energy-drink: "エナジードリンク"
doll-ai: "藍ちゃん人形"
banknote: "札束"
_pages:
newPage: "ページを作る"
editPage: "ページの編集"
readPage: "ソースを表示中"
created: "ページを作成したで"
updated: "ページを更新したで"
deleted: "ページを削除したで"
pageSetting: "ページ設定"
viewPage: "ページを見る"
like: "ええやん"
unlike: "良くないわ"
liked: "ええと思ったページ"
contents: "コンテンツ"
summary: "ページの要約"
alignCenter: "中央寄せ"
font: "フォント"
fontSerif: "セリフ"
fontSansSerif: "サンセリフ"
eyeCatchingImageSet: "アイキャッチ画像を設定"
eyeCatchingImageRemove: "アイキャッチ画像を削除"
chooseBlock: "ブロックを追加"
selectType: "種類を選択"
contentBlocks: "コンテンツ"
inputBlocks: "入力"
specialBlocks: "特殊"
blocks:
text: "テキスト"
textarea: "テキストエリア"
section: "セクション"
image: "画像"
button: "ボタン"
if: "もし"
_if:
variable: "変数"
post: "投稿フォーム"
_post:
text: "内容"
canvasId: "キャンバスID"
textInput: "テキスト入力"
_textInput:
name: "変数名"
text: "タイトル"
default: "デフォルト値"
textareaInput: "複数行テキスト入力"
_textareaInput:
name: "変数名"
text: "タイトル"
default: "デフォルト値"
numberInput: "数値入力"
_numberInput:
name: "変数名"
text: "タイトル"
default: "デフォルト値"
canvas: "キャンバス"
_canvas:
id: "キャンバスID"
width: "幅"
height: "高さ"
note: "ノート埋め込み"
_note:
id: "ートID"
detailed: "詳細な表示"
switch: "スイッチ"
_switch:
name: "変数名"
text: "タイトル"
default: "デフォルト値"
counter: "カウンター"
_counter:
name: "変数名"
text: "タイトル"
inc: "増加値"
_button:
text: "タイトル"
colored: "色付き"
action: "ボタンを押したときの動作"
_action:
dialog: "ダイアログを表示する"
_dialog:
content: "内容"
resetRandom: "乱数をリセット"
pushEvent: "イベントを送信させる"
_pushEvent:
event: "イベント名"
no-variable: "なし"
callAiScript: "AiScript呼び出し"
_callAiScript:
functionName: "関数名"
radioButton: "選択肢"
_radioButton:
name: "変数名"
title: "タイトル"
values: "改行で区切った選択肢"
default: "デフォルト値"
script:
categories:
flow: "制御"
logical: "論理演算"
operation: "計算"
comparison: "比較"
random: "ランダム"
value: "値"
fn: "関数"
text: "関数"
convert: "変換"
list: "リスト"
blocks:
text: "テキスト"
multiLineText: "テキスト(複数行)"
textList: "テキストのリスト"
strLen: "テキストの長さ"
_strLen:
arg1: "テキスト"
strPick: "文字取り出し"
_strPick:
arg1: "テキスト"
arg2: "文字の位置"
strReplace: "テキスト置き換え"
_strReplace:
arg1: "テキスト"
arg2: "置き換え前"
arg3: "置き換え後"
strReverse: "テキストを反転"
_strReverse:
arg1: "テキスト"
join: "テキストを連結"
_join:
arg1: "リスト"
arg2: "区切り"
add: "足す"
_add:
arg1: "A"
arg2: "B"
subtract: "引く"
_subtract:
arg1: "A"
arg2: "A"
multiply: "掛ける"
_multiply:
arg1: "A"
arg2: "B"
divide: "割る"
_divide:
arg1: "A"
arg2: "B"
mod: "割った余り"
_mod:
arg1: "A"
arg2: "B"
round: "小数を丸める"
_round:
arg1: "数値"
eq: "AとBが同じ"
_eq:
arg1: "A"
arg2: "B"
notEq: "AとBが異なる"
_notEq:
arg1: "A"
arg2: "B"
and: "AかつB"
_and:
arg1: "A"
arg2: "B"
or: "AまたはB"
_or:
arg1: "A"
arg2: "B"
lt: "< AがBより小さい"
_lt:
arg1: "A"
arg2: "B"
gt: "> AがBより大きい"
_gt:
arg1: "A"
arg2: "B"
ltEq: "<= AがBと同じか小さい"
_ltEq:
arg1: "A"
arg2: "B"
gtEq: ">= AがBと同じか大きい"
_gtEq:
arg1: "A"
arg2: "B"
if: "分岐"
_if:
arg1: "もし"
arg2: "なら"
arg3: "そうでなければ"
not: "否定"
_not:
arg1: "否定"
random: "ランダム"
_random:
arg1: "確率"
rannum: "乱数"
_rannum:
arg1: "最小"
arg2: "最大"
randomPick: "リストからランダムに選ぶ"
_randomPick:
arg1: "リスト"
dailyRandom: "ランダム (ユーザーごとに日替わり)"
_dailyRandom:
arg1: "確率"
dailyRannum: "乱数 (ユーザーごとに日替わり)"
_dailyRannum:
arg1: "最小"
arg2: "最大"
dailyRandomPick: "リストからランダムに選ぶ (ユーザーごとに日替わり)"
_dailyRandomPick:
arg1: "リスト"
seedRandom: "ランダム (シード)"
_seedRandom:
arg1: "シード"
arg2: "確率"
seedRannum: "乱数 (シード)"
_seedRannum:
arg1: "シード"
arg2: "最小"
arg3: "最大"
seedRandomPick: "リストからランダムに選択 (シード)"
_seedRandomPick:
arg1: "シード"
arg2: "リスト"
DRPWPM: "確率付きリストからランダムに選ぶ (ユーザーごとに日替わり)"
_DRPWPM:
arg1: "テキストのリスト"
pick: "リストから選ぶ"
_pick:
arg1: "リスト"
arg2: "位置"
listLen: "リストの長さを取得"
_listLen:
arg1: "リスト"
number: "数値"
stringToNumber: "テキストを数値に"
_stringToNumber:
arg1: "テキスト"
numberToString: "数値をテキストに"
_numberToString:
arg1: "数値"
splitStrByLine: "テキストを行で分割"
_splitStrByLine:
arg1: "テキスト"
ref: "変数"
aiScriptVar: "AiScript変数"
fn: "関数"
_fn:
slots: "スロット"
arg1: "出力"
for: "繰り返し"
_for:
arg1: "回数"
arg2: "処理"
thereIsEmptySlot: "スロット{slot}が空っぽやで!"
types:
string: "テキスト"
number: "数値"
boolean: "フラグ"
array: "リスト"
stringArray: "テキストのリスト"
emptySlot: "空のスロット"
enviromentVariables: "環境変数"
pageVariables: "ページ要素"
argVariables: "入力スロット"
_notification:
fileUploaded: "ファイルが無事アップロードされたで。"
youGotMention: "{name}からのメンション"
youGotReply: "{name}からのリプライ"
youWereFollowed: "フォローされたで"
youReceivedFollowRequest: "フォロー許可してほしいみたいやな"
yourFollowRequestAccepted: "フォローさせてもろたで"
youWereInvitedToGroup: "グループに招待されとるで"
_types:
all: "すべて"
follow: "フォロー"
mention: "メンション"
renote: "Renote"
@ -588,9 +1279,24 @@ _notification:
receiveFollowRequest: "フォロー許可してほしいみたいやで"
followRequestAccepted: "フォローが受理されたで"
_deck:
alwaysShowMainColumn: "いつもメインカラムを表示"
columnAlign: "カラムの寄せ"
columnMargin: "カラム間のマージン"
columnHeaderHeight: "カラムのヘッダー幅"
addColumn: "カラムを追加"
swapLeft: "左に移動"
swapRight: "右に移動"
swapUp: "上に移動"
swapDown: "下に移動"
stackLeft: "左に重ねる"
popRight: "右に出す"
profile: "プロファイル"
_columns:
main: "メイン"
widgets: "ウィジェット"
notifications: "通知"
tl: "タイムライン"
antenna: "アンテナ"
list: "リスト"
mentions: "あんた宛て"
direct: "ダイレクト"

View File

@ -58,6 +58,7 @@ instances: "ನಿದರ್ಶನ"
remove: "ಅಳಿಸು"
smtpUser: "ಬಳಕೆಹೆಸರು"
smtpPass: "ಗುಪ್ತಪದ"
user: "ಬಳಕೆದಾರ"
_email:
_follow:
title: "ಹಿಂಬಾಲಿಸಿದರು"

View File

@ -7,6 +7,7 @@ search: "검색"
notifications: "알림"
username: "유저명"
password: "비밀번호"
forgotPassword: "비밀번호 재설정"
fetchingAsApObject: "연합에서 조회 중"
ok: "OK"
gotIt: "알겠어요"
@ -138,7 +139,7 @@ flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우
flagAsCat: "나는 고양이다냥"
flagAsCatDescription: "이 계정이 고양이라면 활성화 해주세요."
autoAcceptFollowed: "팔로우 중인 유저로부터의 팔로우 요청을 자동 수락"
addAcount: "계정 추가"
addAccount: "계정 추가"
loginFailed: "로그인에 실패했습니다"
showOnRemote: "리모트에서 보기"
general: "일반"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "제외할 키워드"
antennaKeywordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다"
notifyAntenna: "새로운 노트를 알림"
withFileAntenna: "파일이 첨부된 노트만"
serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorker 사용"
antennaUsersDescription: "유저명을 한 줄에 한 명씩 적습니다"
caseSensitive: "대소문자를 구분"
@ -453,7 +453,7 @@ category: "카테고리"
tags: "태그"
docSource: "이 문서의 소스"
createAccount: "계정 만들기"
existingAcount: "기존 계정"
existingAccount: "기존 계정"
regenerate: "재생성"
fontSize: "글자 크기"
noFollowRequests: "처리되지 않은 팔로우 요청이 없습니다"
@ -552,6 +552,8 @@ manage: "관리"
plugins: "플러그인"
deck: "덱"
undeck: "덱 해제"
useBlurEffectForModal: "모달에 흐림 효과 사용"
useFullReactionPicker: "모든 기능이 포함된 리액션 선택기 사용"
width: "폭"
height: "높이"
large: "크게"
@ -566,7 +568,7 @@ pluginTokenRequestedDescription: "이 플러그인은 여기서 설정한 권한
notificationType: "알림 유형"
edit: "편집"
useStarForReactionFallback: "알 수 없는 리액션 이모지 대신 ★ 사용"
emailConfig: "메일 서버 설정"
emailServer: "메일 서버"
enableEmail: "이메일 송신 기능 활성화"
emailConfigInfo: "가입 시 메일 주소 확인이나 비밀번호 초기화 시에 사용합니다."
email: "이메일"
@ -613,6 +615,7 @@ send: "전송"
abuseMarkAsResolved: "해결됨으로 표시"
openInNewTab: "새 탭에서 열기"
openInSideView: "사이드뷰로 열기"
defaultNavigationBehaviour: "기본 탐색 동작"
editTheseSettingsMayBreakAccount: "이 설정을 변경하면 계정이 손상될 수 있습니다."
instanceTicker: "노트의 인스턴스 정보"
waitingFor: "{x}을(를) 기다리고 있습니다"
@ -684,6 +687,7 @@ textColor: "문자 색"
saveAs: "다른 이름으로 저장"
advanced: "고급"
value: "값"
createdAt: "생성된 날짜"
updatedAt: "수정한 날짜"
saveConfirm: "저장하시겠습니까?"
deleteConfirm: "삭제하시겠습니까?"
@ -692,15 +696,88 @@ registry: "레지스트리"
closeAccount: "계정 폐쇄"
currentVersion: "현재 버전"
latestVersion: "최신 버전"
youAreRunningUpToDateClient: "사용 중인 클라이언트는 최신입니다."
newVersionOfClientAvailable: "새로운 버전의 클라이언트를 이용할 수 있습니다."
usageAmount: "사용량"
capacity: "용량"
inUse: "사용중"
editCode: "코드 수정"
apply: "적용"
receiveAnnouncementFromInstance: "이 인스턴스의 알림을 이메일로 수신할게요"
emailNotification: "메일 알림"
publish: "게시"
inChannelSearch: "채널에서 검색"
useReactionPickerForContextMenu: "우클릭하여 리액션 선택기 열기"
typingUsers: "{users} 님이 입력하고 있어요.."
jumpToSpecifiedDate: "특정 날짜로 이동"
showingPastTimeline: "과거의 타임라인을 표시하고 있어요"
clear: "지우기"
markAllAsRead: "모두 읽은 상태로 표시"
goBack: "뒤로"
unlikeConfirm: "좋아요를 취소할까요?"
fullView: "전체 화면"
quitFullView: "전체 화면 해제"
addDescription: "설명 추가"
userPagePinTip: "각 노트의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 노트를 표시해 둘 수 있어요."
notSpecifiedMentionWarning: "수신자가 선택되지 않은 멘션이 있어요"
info: "정보"
userInfo: "유저 정보"
unknown: "알 수 없음"
onlineStatus: "온라인 상태"
hideOnlineStatus: "온라인 상태 숨기기"
hideOnlineStatusDescription: "온라인 상태를 숨기면, 검색과 같은 일부 기능에 영향을 미칠 수 있습니다."
online: "온라인"
active: "최근에 활동함"
offline: "오프라인"
notRecommended: "추천하지 않음"
botProtection: "Bot 방어"
instanceBlocking: "인스턴스 차단"
selectAccount: "계정 선택"
enabled: "활성화"
disabled: "비활성화"
quickAction: "빠른 동작"
user: "유저"
administration: "관리"
accounts: "계정"
switch: "전환"
noMaintainerInformationWarning: "관리자 정보가 설정되어 있지 않습니다."
noBotProtectionWarning: "Bot 방어가 설정되어 있지 않습니다."
configure: "설정하기"
postToGallery: "갤러리에 업로드"
gallery: "갤러리"
recentPosts: "최근 포스트"
popularPosts: "인기 포스트"
shareWithNote: "노트로 공유"
ads: "광고"
expiration: "기한"
memo: "메모"
priority: "우선순위"
high: "높음"
middle: "보통"
low: "낮음"
emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다."
ratio: "비율"
_ad:
back: "뒤로"
reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기"
_forgotPassword:
enterEmail: "여기에 계정에 등록한 메일 주소를 입력해 주세요. 입력한 메일 주소로 비밀번호 재설정 링크를 발송합니다."
ifNoEmail: "메일 주소를 등록하지 않은 경우, 관리자에 문의해 주십시오."
contactAdmin: "이 인스턴스에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오."
_gallery:
my: "내 갤러리"
liked: "좋아요 한 갤러리"
like: "좋아요!"
unlike: "좋아요 취소"
_email:
_follow:
title: "새로운 팔로워가 있습니다"
_receiveFollowRequest:
title: "팔로우 요청을 받았습니다"
_plugin:
install: "플러그인 설치"
installWarn: "신뢰할 수 없는 플러그인은 설치하지 않는 것이 좋습니다."
manage: "플러그인 관리"
_registry:
scope: "범위"
key: "키"
@ -734,6 +811,7 @@ _mfm:
linkDescription: "문장의 특정 범위를 URL로 표시합니다."
bold: "굵음/볼드체"
boldDescription: "문자를 굵게 강조합니다."
small: "눈에 띄지 않음"
smallDescription: "내용을 작고 연하게 보이게 합니다."
center: "가운데 정렬"
centerDescription: "내용을 가운데 정렬로 보이게 합니다."
@ -746,19 +824,35 @@ _mfm:
blockMath: "수식(블록)"
blockMathDescription: "여러 줄의 수식(KaTeX)를 블록으로 보이게 합니다."
quote: "인용"
quoteDescription: "내용을 인용문으로 표시합니다."
emoji: "커스텀 이모지"
emojiDescription: "커스텀 이모지의 이름을 쌍점(:)으로 감싸서 커스텀 이모지를 사용합니다."
search: "검색"
searchDescription: "주어진 키워드가 입력된 검색창을 보이게 합니다."
flip: "플립"
flipDescription: "내용을 상하 또는 좌우로 반전시킵니다."
jelly: "애니메이션 (젤리)"
jellyDescription: "젤리처럼 탱글탱글한 느낌의 효과를 줍니다."
tada: "애니메이션 (짠!)"
tadaDescription: "짠! 하는 느낌의 효과를 줍니다."
jump: "애니메이션(점프)"
jumpDescription: "펄쩍 뛸 듯한 느낌의 효과를 줍니다."
bounce: "애니메이션 (바운스)"
bounceDescription: "통통 튀는 느낌의 효과를 줍니다."
shake: "애니메이션 (부들부들)"
shakeDescription: "부들부들 떠는 느낌의 효과를 줍니다."
twitch: "애니메이션 (경련)"
twitchDescription: "격하게 흔들리는 느낌의 효과를 줍니다."
spin: "애니메이션 (회전)"
spinDescription: "회전 효과를 줍니다."
x2: "크게"
x2Description: "내용을 크게 표시합니다."
x3: "더 크게"
x3Description: "내용을 더 크게 표시합니다."
x4: "매우 크게"
x4Description: "내용을 매우 크게 표시합니다."
blur: "흐림"
blurDescription: "내용이 흐리게 보입니다. 마우스를 위에 올려두면 내용이 보입니다."
font: "폰트"
fontDescription: "내용의 글꼴을 지정할 수 있습니다."
_reversi:
@ -772,6 +866,7 @@ _reversi:
thisGameIsStartedSoon: "잠시 후에 대국이 시작됩니다"
waitingForOther: "상대의 준비가 완료될 때까지 기다리고 있습니다"
waitingForMe: "당신의 준비 완료를 기다리고 있습니다"
waitingBoth: "준비해 주세요"
ready: "준비 완료"
cancelReady: "준비 취소"
opponentTurn: "상대의 차례입니다"
@ -812,6 +907,7 @@ _channel:
usersCount: "{n}명 참여 중"
notesCount: "{n}노트"
_sidebar:
full: "전체"
icon: "아이콘"
hide: "숨기기"
_wordMute:
@ -820,12 +916,15 @@ _wordMute:
muteWordsDescription2: "정규 표현식을 사용하려면 키워드를 빗금표(/)로 감싸 주세요."
softDescription: "지정한 조건의 노트를 타임라인에서 숨깁니다."
hardDescription: "지정한 조건의 노트를 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 노트는 조건을 변경해도 표시되지 않습니다."
soft: "보통"
hard: "보다 높은 수준"
mutedNotes: "뮤트된 노트"
_theme:
explore: "테마 찾아보기"
install: "테마 설치"
manage: "테마 관리"
code: "테마 코드"
description: "설명"
installed: "{name} 테마가 설치되었습니다"
installedThemes: "설치된 테마"
builtinThemes: "표준 테마"
@ -843,17 +942,57 @@ _theme:
func: "함수"
funcKind: "함수 종류"
argument: "매개변수"
basedProp: "기준으로 할 속성 이름"
alpha: "불투명도"
darken: "어두움"
lighten: "밝음"
inputConstantName: "상수 이름을 입력하세요"
importInfo: "여기에 테마 코드를 붙여 넣어 에디터로 불러올 수 있습니다."
deleteConstantConfirm: "상수 {const}를 삭제하시겠습니까?"
keys:
accent: "강조 색상"
bg: "배경"
fg: "텍스트"
focus: "포커스"
indicator: "인디케이터"
panel: "패널"
shadow: "그림자"
header: "헤더"
navBg: "사이드바 배경"
navFg: "사이드바 텍스트"
navHoverFg: "사이드바 텍스트 (호버)"
navActive: "사이드바 텍스트 (활성)"
navIndicator: "사이드바 인디케이터"
link: "링크"
hashtag: "해시태그"
mention: "멘션"
mentionMe: "나에게 보낸 멘션"
renote: "Renote"
modalBg: "모달 배경"
divider: "구분선"
scrollbarHandle: "스크롤바 핸들"
scrollbarHandleHover: "스크롤바 핸들 (호버)"
dateLabelFg: "날짜 레이블 텍스트"
infoBg: "정보창 배경"
infoFg: "정보창 텍스트"
infoWarnBg: "경고창 배경"
infoWarnFg: "경고창 텍스트"
cwBg: "CW 버튼 배경"
cwFg: "CW 버튼 텍스트"
cwHoverBg: "CW 버튼 배경 (호버)"
toastBg: "알림창 배경"
toastFg: "알림창 텍스트"
buttonBg: "버튼 배경"
buttonHoverBg: "버튼 배경 (호버)"
inputBorder: "입력 필드 테두리"
listItemHoverBg: "리스트 항목 배경 (호버)"
driveFolderBg: "드라이브 폴더 배경"
wallpaperOverlay: "배경화면 오버레이"
badge: "배지"
messageBg: "채팅 배경"
accentDarken: "강조 색상 (어두움)"
accentLighten: "강조 색상 (밝음)"
fgHighlighted: "강조된 텍스트"
_sfx:
note: "새 노트"
noteMy: "내 노트"
@ -977,8 +1116,10 @@ _widgets:
postForm: "글 입력란"
slideshow: "슬라이드 쇼"
button: "버튼"
onlineUsers: "온라인 유저"
jobQueue: "작업 대기열"
serverMetric: "서버 통계"
aiscript: "AiScript 콘솔"
_cw:
hide: "숨기기"
show: "더 보기"
@ -1033,8 +1174,13 @@ _profile:
username: "유저명"
description: "자기소개"
youCanIncludeHashtags: "해시 태그를 포함할 수 있습니다."
metadata: "추가 정보"
metadataEdit: "추가 정보 편집"
metadataDescription: "프로필에 최대 4개의 추가 정보를 표시할 수 있어요"
metadataLabel: "라벨"
metadataContent: "내용"
changeAvatar: "아바타 이미지 변경"
changeBanner: "배너 이미지 변경"
_exportOrImport:
allNotes: "모든 노트"
followingList: "팔로잉"
@ -1434,19 +1580,30 @@ _notification:
youGotQuote: "{name}님이 인용함"
youRenoted: "{name}님이 Renote"
youGotPoll: "{name}님이 투표함"
youGotMessagingMessageFromUser: "{name} 님이 보낸 채팅이 있어요"
youGotMessagingMessageFromGroup: "{name}에서 보낸 채팅이 있어요"
youWereFollowed: "새로운 팔로워가 있습니다"
youReceivedFollowRequest: "새로운 팔로우 요청이 있습니다"
yourFollowRequestAccepted: "팔로우 요청이 수락되었습니다"
youWereInvitedToGroup: "그룹에 초대되었습니다"
_types:
all: "전부"
follow: "팔로잉"
mention: "멘션"
reply: "답글"
renote: "Renote"
quote: "인용"
reaction: "리액션"
pollVote: "투표 참여"
receiveFollowRequest: "팔로우 요청을 받았을 때"
followRequestAccepted: "팔로우 요청이 승인되었을 때"
groupInvited: "그룹에 초대되었을 때"
app: "연동된 앱을 통한 알림"
_deck:
alwaysShowMainColumn: "메인 칼럼 항상 표시"
columnAlign: "칼럼 정렬"
columnMargin: "칼럼 간 여백"
columnHeaderHeight: "칼럼 헤더 폭"
addColumn: "칼럼 추가"
swapLeft: "왼쪽으로 이동"
swapRight: "오른쪽으로 이동"

View File

@ -1,6 +1,7 @@
---
_lang_: "język polski"
headlineMisskey: "Sieć połączona wpisami"
introMisskey: "Misskey jest serwisem mikroblogowym typu open source.\nMisskey to opensource'owy serwis mikroblogowy, w którym możesz tworzyć \"notatki\", aby dzielić się tym, co się dzieje i opowiadać wszystkim o sobie.\nMożesz również użyć funkcji \"Reakcje\", aby szybko dodać własne reakcje do notatek innych użytkowników👍.\nOdkrywaj nowy świat🚀!"
monthAndDay: "{month}-{day}"
search: "Szukaj"
notifications: "Powiadomienia"
@ -61,7 +62,9 @@ import: "Importuj"
export: "Eksportuj"
files: "Pliki"
download: "Pobierz"
driveFileDeleteConfirm: "Czy chcesz usunąć plik \"{name}\"? Zniknie również notatka, do której dołączony jest ten plik."
unfollowConfirm: "Czy na pewno chcesz przestać obserwować {name}?"
exportRequested: "Zażądałeś eksportu. Może to zająć trochę czasu. Po zakończeniu eksportu zostanie on dodany do Twoich \"dysków\"."
lists: "Listy"
noLists: "Nie masz żadnych list"
note: "Utwórz wpis"
@ -133,7 +136,6 @@ flagAsBot: "To konto jest botem"
flagAsCat: "To konto jest kotem"
flagAsCatDescription: "Przełącz tę opcję, aby konto było oznaczone jako kot."
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników, których obserwujesz"
addAcount: "Dodaj konto"
loginFailed: "Nie udało się zalogować"
showOnRemote: "Zobacz na zdalnej instancji"
general: "Ogólne"
@ -331,7 +333,6 @@ name: "Nazwa"
antennaSource: "Źródło Anteny"
antennaExcludeKeywords: "Wykluczone słowa kluczowe"
withFileAntenna: "Filtruj tylko wpisy z załączonym plikiem"
serviceworker: "ServiceWorker"
enableServiceworker: "Włącz ServiceWorker"
antennaUsersDescription: "Wypisz po jednej nazwie użytkownika w linii"
caseSensitive: "Wielkość liter ma znaczenie"
@ -431,7 +432,6 @@ category: "Kategoria"
tags: "Tagi"
docSource: "Źródło tego dokumentu"
createAccount: "Utwórz konto"
existingAcount: "Istniejące konta"
regenerate: "Wygeneruj ponownie"
fontSize: "Rozmiar czcionki"
noFollowRequests: "Nie masz żadnych oczekujących próśb o możliwość obserwacji"
@ -540,7 +540,6 @@ pluginTokenRequestedDescription: "Ta wtyczka będzie mogła korzystać z ustawio
notificationType: "Rodzaj powiadomień"
edit: "Edytuj"
useStarForReactionFallback: "Użyj ★ jako zapasowego emoji, gdy emoji reakcji jest nieznane"
emailConfig: "Konfiguracja serwera e-mail"
enableEmail: "Włącz dostarczanie wiadomości e-mail"
emailConfigInfo: "Wykorzystywany do potwierdzenia adresu e-mail w trakcie rejestracji, lub gdy zapomnisz hasła"
email: "Adres e-mail"
@ -644,6 +643,16 @@ backgroundColor: "Tło"
accentColor: "Akcent"
textColor: "Tekst"
value: "Wartość"
goBack: "Wróć"
info: "Informacje"
user: "Użytkownicy"
administration: "Zarządzanie"
expiration: "Ankieta kończy się"
middle: "Średnie"
_ad:
back: "Wróć"
_gallery:
unlike: "Cofnij polubienie"
_email:
_follow:
title: "Zaobserwował(a) Cię"
@ -762,6 +771,7 @@ _theme:
install: "Zainstaluj motyw"
manage: "Zarządzanie motywami"
code: "Kod motywu"
description: "Opis"
installed: "Zainstalowano {name}"
installedThemes: "Zainstalowane motywy"
builtinThemes: "Wbudowane motywy"

View File

@ -138,7 +138,7 @@ flagAsBotDescription: "Включите, если этот аккаунт упр
flagAsCat: "Аккаунт кота"
flagAsCatDescription: "Включите, и этот аккаунт будет помечен как кошачий."
autoAcceptFollowed: "Принимать подписчиков автоматически"
addAcount: "Добавить аккаунт"
addAccount: "Добавить учётную запись"
loginFailed: "Неудачная попытка входа"
showOnRemote: "Перейти к оригиналу на сайт"
general: "Общее"
@ -349,7 +349,6 @@ antennaExcludeKeywords: "Исключения"
antennaKeywordsDescription: "Пишите слова через пробел в одной строке, чтобы ловить их появление вместе; на отдельных строках располагайте слова, или группы слов, чтобы ловить любые из них."
notifyAntenna: "Уведомлять о новых заметках"
withFileAntenna: "Только заметки с вложениями"
serviceworker: "ServiceWorker"
enableServiceworker: "Включить ServiceWorker"
antennaUsersDescription: "Пишите каждое название аккаута на отдельной строке"
caseSensitive: "С учётом регистра"
@ -453,7 +452,7 @@ category: "Категория"
tags: "Метки"
docSource: "Источник документа"
createAccount: "Новая учётная запись"
existingAcount: "Уже существующий"
existingAccount: "Существующая учётная запись"
regenerate: "Создать повторно"
fontSize: "Размер шрифта"
noFollowRequests: "Нерассмотренные запросы на подписку отсутствуют"
@ -568,7 +567,7 @@ pluginTokenRequestedDescription: "Это расширение сможет по
notificationType: "Тип уведомления"
edit: "Изменить"
useStarForReactionFallback: "Ставить ★ в качестве реакции вместо неизвестного эмодзи"
emailConfig: "Настройки почтового сервера"
emailServer: "Сервер электронной почты"
enableEmail: "Включить обмен электронной почтой"
emailConfigInfo: "Используется для подтверждения адреса электронной почты и сброса пароля."
email: "Электронная почта"
@ -623,7 +622,7 @@ random: "Случайные"
system: "Система"
switchUi: "Выбор вида"
desktop: "Стол"
clip: "В подборку"
clip: "Подборка"
createNew: "Новый документ"
optional: "Необязательно"
createNewClip: "Новая подборка"
@ -687,6 +686,7 @@ textColor: "Текст"
saveAs: "Сохранить под названием…"
advanced: "Для продвинутых"
value: "Значения"
createdAt: "Создано"
updatedAt: "Обновлено"
saveConfirm: "Сохранить изменения?"
deleteConfirm: "Удалить?"
@ -704,12 +704,58 @@ editCode: "Редактировать исходный текст"
apply: "Применить"
receiveAnnouncementFromInstance: "Получать оповещения с инстанса"
emailNotification: "Уведомления по электронной почте"
publish: "Опубликовать"
inChannelSearch: "Поиск по каналу"
useReactionPickerForContextMenu: "Открывать палитру реакций правой кнопкой"
typingUsers: "Стук клавиш. Это {users}…"
jumpToSpecifiedDate: "Перейти к заданной дате"
showingPastTimeline: "Отображается старая лента"
clear: "Очистить"
markAllAsRead: "Отметить всё как прочитанное"
goBack: "Выход"
unlikeConfirm: "В самом деле отменить «нравится»?"
fullView: "Полный вид"
quitFullView: "Закрыть полный вид"
addDescription: "Добавить описание"
userPagePinTip: "Можно добавить сюда заметки, выбрав нужную, и включив в её меню пункт «Закрепить в профиле»."
notSpecifiedMentionWarning: "В этой заметке есть упоминание тех, кто не включён в адресаты"
info: "Описание"
userInfo: "Сведения о пользователе"
unknown: "Неизвестно"
onlineStatus: "Присутствие в сети"
hideOnlineStatus: "Скрыть присутствие"
hideOnlineStatusDescription: "Сокрытие присутствия делает некоторые функции, такие как поиск, менее удобными."
online: "В сети"
active: "Действует"
offline: "Не в сети"
notRecommended: "Не рекомендуется"
botProtection: "Ботозащита"
instanceBlocking: "Блокировка инстансов"
selectAccount: "Выберите учётную запись"
enabled: "Вкл."
disabled: "Откл."
quickAction: "Быстрое действие"
user: "Пользователи"
administration: "Управление"
accounts: "Учётные записи"
switch: "Переключение"
noMaintainerInformationWarning: "Не заполнены сведения об администраторах"
noBotProtectionWarning: "Ботозащита не настроена"
configure: "Настроить"
postToGallery: "Опубликовать в галерею"
gallery: "Галерея"
recentPosts: "Недавние публикации"
popularPosts: "Популярные публикации"
shareWithNote: "Поделиться заметкой"
expiration: "Опрос длится"
middle: "Средне"
_ad:
back: "Выход"
_gallery:
my: "Личная"
liked: "Понравившееся"
like: "Нравится!"
unlike: "Отменить «нравится»"
_email:
_follow:
title: "Новый подписчик"
@ -865,6 +911,7 @@ _theme:
install: "Установить тему"
manage: "Менеджер тем"
code: "Код темы"
description: "Описание"
installed: "Тема «{name}» установлена."
installedThemes: "Установленные темы"
builtinThemes: "Встроенные темы"

View File

@ -138,7 +138,6 @@ flagAsBotDescription: "Ввімкніть якщо цей обліковий з
flagAsCat: "Акаунт кота"
flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком."
autoAcceptFollowed: "Автоматично приймати запити на підписку від користувачів, на яких ви підписані"
addAcount: "Додати акаунт"
loginFailed: "Не вдалося увійти"
showOnRemote: "Переглянути в оригіналі"
general: "Загальне"
@ -347,7 +346,6 @@ antennaExcludeKeywords: "Винятки"
antennaKeywordsDescription: "Розділення ключових слів пробілами для \"І\" або з нової лінійки для \"АБО\""
notifyAntenna: "Сповіщати про нові нотатки"
withFileAntenna: "Тільки нотатки з вкладеними файлами"
serviceworker: "ServiceWorker"
enableServiceworker: "Ввімкнути ServiceWorker"
antennaUsersDescription: "Список імя користувачів в стопчик"
caseSensitive: "З урахуванням регістру"
@ -450,7 +448,6 @@ category: "Категорія"
tags: "Теги"
docSource: "Джерело цього документа"
createAccount: "Створити акаунт"
existingAcount: "Існуючий акаунт"
regenerate: "Оновити"
fontSize: "Розмір шрифту"
noFollowRequests: "Немає запитів на підписку"
@ -564,7 +561,6 @@ pluginTokenRequestedDescription: "Цей плагін зможе викорис
notificationType: "Тип сповіщення"
edit: "Редагувати"
useStarForReactionFallback: "Використовувати ★ як запасний варіант, якщо емодзі реакції невідомий"
emailConfig: "Налаштування email сервера"
enableEmail: "Увімкнути функцію доставки пошти"
emailConfigInfo: "Використовується для підтвердження електронної пошти підчас реєстрації, а також для відновлення паролю."
email: "E-mail"
@ -689,6 +685,16 @@ deleteConfirm: "Ви дійсно бажаєте це видалити?"
invalidValue: "Некоректне значення."
registry: "Реєстр"
closeAccount: "Закрити обліковий запис"
goBack: "Назад"
info: "Інформація"
user: "Користувачі"
administration: "Управління"
expiration: "Опитування закінчується"
middle: "Середній"
_ad:
back: "Назад"
_gallery:
unlike: "Не вподобати"
_email:
_follow:
title: "Новий підписник"
@ -830,6 +836,7 @@ _theme:
install: "Встановити тему"
manage: "Керування темами"
code: "Код теми"
description: "Опис"
installed: "Тему {name} встановлено"
installedThemes: "Встановлені теми"
builtinThemes: "Вбудоваі теми"

View File

@ -7,6 +7,7 @@ search: "搜索"
notifications: "通知"
username: "用户名"
password: "密码"
forgotPassword: "忘记密码"
fetchingAsApObject: "联合查询中"
ok: "OK"
gotIt: "我明白了"
@ -138,7 +139,7 @@ flagAsBotDescription: "如果此帐户由程序控制,请启用此项。启用
flagAsCat: "这个账户是Cat"
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。"
autoAcceptFollowed: "自动允许关注"
addAcount: "添加账户"
addAccount: "添加账户"
loginFailed: "登录失败"
showOnRemote: "转到所在实例显示"
general: "常规设置"
@ -173,7 +174,7 @@ metadata: "元数据"
withNFiles: "{n}个文件"
monitor: "监视器"
jobQueue: "作业队列"
cpuAndMemory: "CPU使用量"
cpuAndMemory: "CPU和内存"
network: "网络"
disk: "存储"
instanceInfo: "实例信息"
@ -349,7 +350,6 @@ antennaExcludeKeywords: "排除关键字"
antennaKeywordsDescription: "使用空格分隔会产生AND规范并且使用换行符分隔会产生OR规范"
notifyAntenna: "通知新帖子"
withFileAntenna: "仅带有附件的帖子"
serviceworker: "ServiceWorker"
enableServiceworker: "启用ServiceWorker"
antennaUsersDescription: "指定用户名,用换行符分隔"
caseSensitive: "区分大小写"
@ -453,7 +453,7 @@ category: "类别"
tags: "标签"
docSource: "文件来源"
createAccount: "注册账户"
existingAcount: "现有的帐户"
existingAccount: "现有的帐户"
regenerate: "重新生成"
fontSize: "字体大小"
noFollowRequests: "没有关注申请"
@ -568,7 +568,7 @@ pluginTokenRequestedDescription: "此插件将能够拥有此处设置的权限"
notificationType: "通知类型"
edit: "编辑"
useStarForReactionFallback: "如果回应的是未知表情符号,则使用★作为代替"
emailConfig: "邮件服务器设置"
emailServer: "邮件服务器"
enableEmail: "启用发送邮件功能"
emailConfigInfo: "用于确认电子邮件和密码重置"
email: "邮箱"
@ -584,7 +584,7 @@ smtpSecureInfo: "使用STARTTLS时关闭。"
testEmail: "邮件发送测试"
wordMute: "文字屏蔽"
userSaysSomething: "{name}说了什么"
makeActive: "激活"
makeActive: "启用"
display: "显示"
copy: "复制"
metrics: "指标"
@ -687,6 +687,7 @@ textColor: "文本"
saveAs: "另存为"
advanced: "高级"
value: "值"
createdAt: "创建日期"
updatedAt: "更新时间"
saveConfirm: "确定保存?"
deleteConfirm: "确定删除?"
@ -704,12 +705,70 @@ editCode: "编辑代码"
apply: "应用"
receiveAnnouncementFromInstance: "从实例接收通知"
emailNotification: "邮件通知"
publish: "发布"
inChannelSearch: "频道内搜索"
useReactionPickerForContextMenu: "单击右键打开回应工具栏"
typingUsers: "{users}正在输入"
jumpToSpecifiedDate: "跳转到特定日期"
showingPastTimeline: "显示过去的时间线"
clear: "清除"
markAllAsRead: "全部标记为已读"
goBack: "返回"
unlikeConfirm: "取消赞?"
fullView: "全屏"
quitFullView: "退出全屏"
addDescription: "添加描述"
userPagePinTip: "在帖子的菜单中选择“置顶”,即可显示该条帖子。"
notSpecifiedMentionWarning: "有未指定的提及"
info: "关于"
userInfo: "用户信息"
unknown: "未知"
onlineStatus: "在线状态"
hideOnlineStatus: "隐藏在线状态"
hideOnlineStatusDescription: "隐藏在线状态后,可能会降低例如搜索等功能的便利性。"
online: "在线"
active: "活动"
offline: "离线"
notRecommended: "不推荐"
botProtection: "Bot防御"
instanceBlocking: "被阻拦的实例"
selectAccount: "选择账户"
enabled: "已启用"
disabled: "已禁用 "
quickAction: "快捷操作"
user: "用户"
administration: "管理"
accounts: "账户"
switch: "切换"
noMaintainerInformationWarning: "管理人员信息未设置。"
noBotProtectionWarning: "Bot保护未设置。"
configure: "设置"
postToGallery: "发送到图库"
gallery: "图库"
recentPosts: "最新发布"
popularPosts: "热门投稿"
shareWithNote: "在帖子中分享"
ads: "广告"
expiration: "截止时间"
memo: "便笺"
priority: "优先级"
high: "高"
middle: "中"
low: "低"
emailNotConfiguredWarning: "电子邮件地址未设置。"
ratio: "比率"
_ad:
back: "返回"
reduceFrequencyOfThisAd: "减少此广告的频率"
_forgotPassword:
enterEmail: "请输入您用来注册帐户的电子邮件地址。密码重置链接将发送到该地址。"
ifNoEmail: "如果您没有使用电子邮件地址注册,请联系管理员。"
contactAdmin: "该实例不支持电子邮件。如果您想重设密码,请联系管理员。"
_gallery:
my: "我的图库"
liked: "喜欢的图片"
like: "喜欢"
unlike: "取消喜欢"
_email:
_follow:
title: "你有新的关注者"
@ -865,6 +924,7 @@ _theme:
install: "安装主题"
manage: "主题管理"
code: "主题代码"
description: "描述"
installed: "{name} 已安装"
installedThemes: "已安装的主题"
builtinThemes: "标准主题"
@ -1235,7 +1295,7 @@ _pages:
viewSource: "查看源代码"
viewPage: "查看页面"
like: "赞"
unlike: "取消"
unlike: "取消喜欢"
my: "我的页面"
liked: "喜欢的页面"
featured: "热门"

View File

@ -44,7 +44,7 @@ copyLink: "複製連結"
delete: "刪除"
deleteAndEdit: "刪除並編輯"
deleteAndEditConfirm: "要刪除並再次編輯嗎?此貼文的所有情感、轉發和回覆也將會消失。"
addToList: "新增至清單"
addToList: "加入至清單"
sendMessage: "發送訊息"
copyUsername: "複製用戶名"
searchUser: "搜尋用戶"
@ -56,7 +56,7 @@ receiveFollowRequest: "您有新的追隨請求"
followRequestAccepted: "追隨請求已接受"
mention: "提及"
mentions: "提及"
directNotes: "指定使用者發佈"
directNotes: "私訊"
importAndExport: "匯入與匯出"
import: "匯入"
export: "匯出"
@ -94,7 +94,7 @@ renote: "轉發"
unrenote: "取消轉發"
renoted: "轉發成功"
cantRenote: "無法轉發此貼文。"
cantReRenote: "無法轉發之前已經轉發過的內容"
cantReRenote: "無法轉發之前已經轉發過的內容"
quote: "引用"
pinnedNote: "已置頂的貼文"
pinned: "置頂"
@ -129,7 +129,7 @@ customEmojis: "自訂表情符號"
emoji: "表情符號"
emojiName: "表情符號名稱"
emojiUrl: "表情符號URL"
addEmoji: "新增表情符號"
addEmoji: "加入表情符號"
settingGuide: "推薦設定"
cacheRemoteFiles: "緩存非遠程檔案"
cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外連接數據。"
@ -138,7 +138,7 @@ flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。
flagAsCat: "此使用者是貓"
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示"
autoAcceptFollowed: "自動追隨中使用者的追隨請求"
addAcount: "新增帳戶"
addAccount: "添加帳戶"
loginFailed: "登入失敗"
showOnRemote: "轉到所在實例顯示"
general: "一般"
@ -149,7 +149,7 @@ searchWith: "搜尋: {q}"
youHaveNoLists: "你沒有任何清單"
followConfirm: "你真的要追隨{name}嗎?"
proxyAccount: "代理帳號"
proxyAccountDescription: "代理帳號是在某些情況下充當其他服器用戶的帳號。例如,當用戶將一個來自其他服器的帳號放在列表中時,由於沒有其他用戶關注該帳號,該指令不會傳送到該服器上,因此會由代理帳戶關注。"
proxyAccountDescription: "代理帳號是在某些情況下充當其他服器用戶的帳號。例如,當使用者將一個來自其他服器的帳號放在列表中時,由於沒有其他使用者關注該帳號,該指令不會傳送到該服器上,因此會由代理帳戶關注。"
host: "主機"
selectUser: "選取使用者"
recipient: "收件人"
@ -180,9 +180,9 @@ instanceInfo: "實例資訊"
statistics: "統計"
clearQueue: "清除佇列"
clearQueueConfirmTitle: "確定要清除佇列嗎?"
clearQueueConfirmText: "未發佈的帖子將不會發佈。您通常不需要確認。"
clearQueueConfirmText: "未發佈的貼文將不會發佈。您通常不需要確認。"
clearCachedFiles: "清除快取資料"
clearCachedFilesConfirm: "確定要清除存資料嗎?"
clearCachedFilesConfirm: "確定要清除所有遠端暫存資料嗎?"
blockedInstances: "已封鎖的實例"
blockedInstancesDescription: "請逐行輸入需要封鎖的實例。已封鎖的實例將無法與本實例進行通訊。"
muteAndBlock: "靜音和封鎖"
@ -192,12 +192,12 @@ noUsers: "沒有任何使用者"
editProfile: "編輯個人檔案"
noteDeleteConfirm: "確定刪除此貼文嗎?"
pinLimitExceeded: "不能置頂更多貼文了"
intro: "Misskey 部署完成!請開設管理員帳號!"
intro: "Misskey 部署完成!請建立管理員帳號!"
done: "完成"
processing: "處理中"
preview: "預覽"
default: "預設"
noCustomEmojis: "沒有表情符號"
noCustomEmojis: "沒有自訂的表情符號"
noJobs: "沒有任務"
federating: "整合搜索中"
blocked: "已封鎖"
@ -215,10 +215,10 @@ retypedNotMatch: "兩次輸入不一致。"
currentPassword: "目前密碼"
newPassword: "新密碼"
newPasswordRetype: "確認密碼"
attachFile: "添加附件"
attachFile: "上傳附件"
more: "更多!"
featured: "精選"
usernameOrUserId: "使用者名稱或用戶ID"
usernameOrUserId: "使用者名稱或使用者ID"
noSuchUser: "使用者不存在"
lookup: "查詢"
announcements: "公告"
@ -231,7 +231,7 @@ resetAreYouSure: "確定要重設嗎?"
saved: "已儲存"
messaging: "傳送訊息"
upload: "上傳"
fromDrive: "從雲端"
fromDrive: "從雲端空間"
fromUrl: "從URL"
uploadFromUrl: "從網址上傳"
uploadFromUrlDescription: "您要上傳的文件的URL"
@ -247,7 +247,7 @@ agreeTo: "我同意{0}"
tos: "使用條款"
start: "開始"
home: "首頁"
remoteUserCaution: "由於該用戶來自遠端實例,因此資料用戶並未即時更新。"
remoteUserCaution: "由於該使用者來自遠端實例,因此資訊可能非即時的。"
activity: "動態"
images: "圖片"
birthday: "生日"
@ -256,12 +256,12 @@ registeredDate: "註冊日期"
location: "位置"
theme: "外觀主題"
themeForLightMode: "在淺色模式下使用的主題"
themeForDarkMode: "在深色模式下使用的主題"
themeForDarkMode: "在黑暗模式下使用的主題"
light: "淺色"
dark: "暗"
dark: "暗"
lightThemes: "明亮主題"
darkThemes: "暗主題"
syncDeviceDarkMode: "將深色模式與設備設置同步"
darkThemes: "暗主題"
syncDeviceDarkMode: "將黑暗模式與設備設置同步"
drive: "雲端硬碟"
fileName: "檔案名稱"
selectFile: "選擇檔案"
@ -273,7 +273,7 @@ folderName: "資料夾名稱"
createFolder: "新增資料夾"
renameFolder: "重新命名資料夾"
deleteFolder: "刪除資料夾"
addFile: "加附件"
addFile: "加附件"
emptyDrive: "雲端硬碟為空"
emptyFolder: "資料夾為空"
unableToDelete: "無法刪除"
@ -286,11 +286,11 @@ rename: "重新命名"
avatar: "大頭貼"
banner: "橫幅"
nsfw: "敏感內容"
whenServerDisconnected: "與服器的連接中斷時"
whenServerDisconnected: "與服器的連接中斷時"
disconnectedFromServer: "與伺服器中斷連線"
reload: "重新載入"
reload: "重新整理"
doNothing: "無視"
reloadConfirm: "確定要重新嘗試嗎?"
reloadConfirm: "確定要重新整理嗎?"
watch: "關注"
unwatch: "取消追隨"
accept: "接受"
@ -313,20 +313,20 @@ connectSerice: "連線"
disconnectSerice: "中斷連線"
enableLocalTimeline: "開啟本地時間軸"
enableGlobalTimeline: "啟用公開時間軸"
disablingTimelinesInfo: "即使您禁用了時間線功能,管理員和協調人仍可以繼續使用,以方便您。"
disablingTimelinesInfo: "即使您關閉了時間線功能,管理員和協調人仍可以繼續使用,以方便您。"
registration: "註冊"
enableRegistration: "開啟新用戶註冊"
enableRegistration: "開啟新使用者註冊"
invite: "邀請"
proxyRemoteFiles: "遠端代理檔案"
proxyRemoteFilesDescription: "啟用此設置後,由於超出存儲容量而未保存或刪除的遠程文件將被本地代理,並且將生成預覽圖。這不影響服器的存儲。"
driveCapacityPerLocalAccount: "每個本地用戶的雲端容量"
proxyRemoteFilesDescription: "啟用此設置後,由於超出存儲容量而未保存或刪除的遠程文件將被本地代理,並且將生成預覽圖。這不影響服器的存儲。"
driveCapacityPerLocalAccount: "每個本地用戶的雲端空間大小"
driveCapacityPerRemoteAccount: "每個非本地用戶的雲端容量"
inMb: "以Mbps為單位"
iconUrl: "圖像URL"
bannerUrl: "橫幅圖URL"
bannerUrl: "橫幅圖URL"
basicInfo: "基本資訊"
pinnedUsers: "置頂用戶"
pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的用戶。"
pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的使用者。"
pinnedPages: "釘選頁面"
pinnedPagesDescription: "輸入要固定至實例首頁的頁面路徑,以換行符分隔。"
pinnedClipId: "置頂的摘錄ID"
@ -339,7 +339,7 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "啟用 reCAPTCHA"
recaptchaSiteKey: "網站金鑰"
recaptchaSecretKey: "金鑰"
avoidMultiCaptchaConfirm: "使用多種驗證方式可能會造成干擾,您要禁用其他驗證方式嗎?您可以按“取消”保留多種驗證方式。"
avoidMultiCaptchaConfirm: "使用多種驗證方式可能會造成干擾,您要關閉其他驗證方式嗎?您可以按“取消”保留多種驗證方式。"
antennas: "天線"
manageAntennas: "管理天線"
name: "名稱"
@ -349,7 +349,6 @@ antennaExcludeKeywords: "排除關鍵字"
antennaKeywordsDescription: "用空格分隔指定AND、用換行符分隔指定OR"
notifyAntenna: "通知有新貼文"
withFileAntenna: "僅帶有附件的貼文"
serviceworker: "ServiceWorker"
enableServiceworker: "開啟 ServiceWorker"
antennaUsersDescription: "指定用換行符分隔的用戶名"
caseSensitive: "區分大小寫"
@ -361,11 +360,11 @@ silence: "禁言"
silenceConfirm: "確定要禁言此用戶嗎?"
unsilence: "解除禁言"
unsilenceConfirm: "確定要解除禁言嗎?"
popularUsers: "熱門用戶"
recentlyUpdatedUsers: "最近發文的用戶"
recentlyRegisteredUsers: "新加入用戶"
recentlyDiscoveredUsers: "最近發現的用戶"
exploreUsersCount: "有{count}個用戶"
popularUsers: "熱門使用者"
recentlyUpdatedUsers: "最近發文的使用者"
recentlyRegisteredUsers: "新加入使用者"
recentlyDiscoveredUsers: "最近發現的使用者"
exploreUsersCount: "有{count}個使用者"
exploreFediverse: "探索聯邦世界"
popularTags: "熱門標籤"
userList: "清單"
@ -373,14 +372,14 @@ about: "資訊"
aboutMisskey: "關於 Misskey"
administrator: "管理員"
token: "權杖"
twoStepAuthentication: "雙重身份驗證"
twoStepAuthentication: "兩階段驗證"
moderator: "板主"
nUsersMentioned: "提到了{n}"
securityKey: "安全金鑰"
securityKeyName: "金鑰名稱"
registerSecurityKey: "註冊安全金鑰"
lastUsed: "最後活躍時間"
unregister: "刪除賬戶"
lastUsed: "上次使用"
unregister: "註銷帳號"
passwordLessLogin: "設置無密碼登入"
resetPassword: "重置密碼"
newPasswordIs: "新密碼為「{password}」"
@ -405,7 +404,7 @@ invites: "邀請"
groupName: "群組名稱"
members: "成員"
transfer: "轉讓"
messagingWithUser: "傳送訊息給其他用戶"
messagingWithUser: "傳送訊息給其他使用者"
messagingWithGroup: "發送訊息至群組"
title: "標題"
text: "文字"
@ -419,7 +418,7 @@ quoteAttached: "引用"
quoteQuestion: "是否要引用?"
noMessagesYet: "沒有訊息"
newMessageExists: "有新的訊息"
onlyOneFileCanBeAttached: "只能加一個附件"
onlyOneFileCanBeAttached: "只能加一個附件"
signinRequired: "請先登入"
invitations: "邀請"
invitationCode: "邀請碼"
@ -431,11 +430,11 @@ tooShort: "過短"
tooLong: "過長"
weakPassword: "密碼強度過弱"
normalPassword: "密碼強度普通"
strongPassword: "密碼強度堅強"
strongPassword: "密碼強度"
passwordMatched: "密碼一致"
passwordNotMatched: "密碼不一致"
signinWith: "以{x}登錄"
signinFailed: "登入失敗。 請檢查用戶名和密碼。"
signinFailed: "登入失敗。 請檢查使用者名稱和密碼。"
tapSecurityKey: "點擊安全密鑰"
or: "或者"
language: "語言"
@ -446,14 +445,14 @@ useOsNativeEmojis: "使用OS原生表情符號"
youHaveNoGroups: "找不到群組"
joinOrCreateGroup: "請加入現有群組,或創建新群組。"
noHistory: "沒有歷史紀錄"
signinHistory: "登歷史"
signinHistory: "登歷史"
disableAnimatedMfm: "禁用MFM動畫"
doing: "正在進行"
category: "類別"
tags: "標籤"
docSource: "文件來源"
createAccount: "建立帳戶"
existingAcount: "現有帳戶"
existingAccount: "現有帳戶"
regenerate: "再生"
fontSize: "字體大小"
noFollowRequests: "沒有要求跟隨您的申請"
@ -477,12 +476,12 @@ useObjectStorage: "使用Object Storage"
objectStorageBaseUrl: "Base URL"
objectStorageBucket: "儲存空間Bucket"
objectStoragePrefix: "前綴"
objectStorageEndpoint: "訪問網域名稱Endpoint"
objectStorageEndpointDesc: "如要使用AWS S3請留空。否則請根據伺服器要求以'<host>'或 '<host>:<port>'的形式設定訪問網域名稱Endpoint。"
objectStorageEndpoint: "端點Endpoint"
objectStorageEndpointDesc: "如要使用AWS S3請留空。否則請依照你使用的服務商的說明書進行設定,以'<host>'或 '<host>:<port>'的形式設定端點Endpoint。"
objectStorageRegion: "地域Region"
objectStorageUseSSL: "使用SSL"
objectStorageUseProxy: "使用網路代理"
objectStorageSetPublicRead: "上時設定為\"public-read\""
objectStorageSetPublicRead: "上時設定為\"public-read\""
serverLogs: "伺服器日誌"
deleteAll: "刪除所有記錄"
showFixedPostForm: "於時間軸頁頂顯示「發送貼文」方框"
@ -495,7 +494,7 @@ popout: "彈出型窗口"
volume: "音量"
masterVolume: "主音量"
details: "詳細資訊"
chooseEmoji: "選擇您的表情符號\n"
chooseEmoji: "選擇您的表情符號"
unableToProcess: "操作無法完成"
recentUsed: "最近使用"
install: "安裝"
@ -512,24 +511,24 @@ scratchpad: "暫存記憶體"
output: "輸出"
script: "腳本"
disablePagesScript: "停用頁面的AiScript腳本"
updateRemoteUser: "更新非本地用戶資料"
updateRemoteUser: "更新遠端使用者資訊"
deleteAllFiles: "刪除所有檔案"
deleteAllFilesConfirm: "要删除所有檔案"
removeAllFollowing: "解除所有追"
removeAllFollowingDescription: "解除{host}所有的跟隨。在實例不再存在時執行。"
userSuspended: "該用戶已被凍結"
deleteAllFilesConfirm: "要删除所有檔案"
removeAllFollowing: "解除所有追"
removeAllFollowingDescription: "解除{host}所有的追蹤。在實例不再存在時執行。"
userSuspended: "該使用者已被停用"
userSilenced: "該用戶已被禁言。"
sidebar: "側邊列"
divider: "分割線"
addItem: "新增項目"
rooms: "房間"
relays: "中繼"
addRelay: "添加中繼"
inboxUrl: "私信URL"
addedRelays: "已加的中繼"
addRelay: "新增中繼"
inboxUrl: "收件夾URL"
addedRelays: "已加的中繼"
serviceworkerInfo: "您需要啟用推送通知"
deletedNote: "已删除的貼文"
invisibleNote: "隱藏的帖子"
invisibleNote: "隱藏的貼文"
enableInfiniteScroll: "啟用自動滾動頁面模式"
visibility: "可見性"
poll: "投票"
@ -546,7 +545,7 @@ plugins: "插件"
deck: "多欄模式"
undeck: "取消多欄模式"
useBlurEffectForModal: "在模態框使用模糊效果"
useFullReactionPicker: "使用尺寸的情感選擇"
useFullReactionPicker: "使用尺寸的反應選擇"
width: "寬度"
height: "高度"
large: "大"
@ -555,22 +554,22 @@ small: "小"
permission: "權限"
enableAll: "啟用全部"
disableAll: "停用全部"
tokenRequested: "允許訪問帳號"
tokenRequested: "允許存取帳號"
notificationType: "通知形式"
edit: "編輯"
useStarForReactionFallback: "以★代替未知的表情符號"
emailConfig: "電子郵件伺服器設定"
emailServer: "電伺服器"
enableEmail: "啟用發送電郵功能"
emailConfigInfo: "用於確認電郵地址及密碼重置"
email: "電子郵件"
emailAddress: "電郵地址"
smtpConfig: "SMTP伺服器設定"
smtpHost: "主機"
smtpPort: "端口"
smtpPort: ""
smtpUser: "使用者名稱"
smtpPass: "密碼"
emptyToDisableSmtpAuth: "留空使用者名稱和密碼以禁用SMTP驗證。"
testEmail: "郵件測試發送"
emptyToDisableSmtpAuth: "留空使用者名稱和密碼以關閉SMTP驗證。"
testEmail: "測試郵件發送"
wordMute: "靜音文字"
userSaysSomething: "{name}說了什麼"
makeActive: "啟用"
@ -586,23 +585,26 @@ create: "新增"
notificationSetting: "通知設定"
notificationSettingDesc: "選擇顯示通知的類型"
useGlobalSetting: "使用全域設定"
useGlobalSettingDesc: "啟用時,將使用帳戶通知設定。停用時,則可以單獨設定。"
other: "其他"
regenerateLoginToken: "生登入權杖"
regenerateLoginTokenDescription: "生用於登入的內部權杖。一般情況下是不需要這樣做的。一旦再生,所有裝置將會被登出。"
fileIdOrUrl: "文檔ID或者URL"
regenerateLoginToken: "重新產生登入權杖"
regenerateLoginTokenDescription: "重新產生用於登入的內部權杖。一般情況下是不需要這樣做的。一旦重產,所有裝置將會被登出。"
setMultipleBySeparatingWithSpace: "您可以使用空格分隔多個項目。"
fileIdOrUrl: "檔案ID或URL"
chatOpenBehavior: "開啟聊天窗口時的行為"
behavior: "行為"
sample: "範例 "
sample: "範例"
abuseReports: "檢舉"
reportAbuse: "檢舉"
reportAbuseOf: "檢舉{name}"
fillAbuseReportDescription: "請填寫檢舉的詳細理由。可以的話請附上針對的URL網址。"
abuseReported: "內容已經發送。感謝您的報告。"
abuseReported: "回報已送出。感謝您的報告。"
send: "發送"
abuseMarkAsResolved: "處理完畢"
openInNewTab: "在新分頁中開啟"
openInSideView: "在側欄中開啟"
editTheseSettingsMayBreakAccount: "修改這些設定可能會毀壞您的帳戶"
defaultNavigationBehaviour: "默認導航"
editTheseSettingsMayBreakAccount: "修改這些設定可能會毀損您的帳戶"
instanceTicker: "貼文的實例來源"
waitingFor: "等待{x}"
random: "隨機"
@ -618,7 +620,7 @@ i18nInfo: "Misskey已經被志願者們翻譯成各種語言版本如果想
manageAccessTokens: "管理存取權杖"
accountInfo: "帳戶資訊"
notesCount: "貼文數量"
repliesCount: "回覆數量\n"
repliesCount: "回覆數量"
renotesCount: "轉發數量"
repliedCount: "回覆數量"
renotedCount: "轉發次數"
@ -632,26 +634,30 @@ yes: "確定"
no: "取消"
driveFilesCount: "雲端硬碟檔案數量"
driveUsage: "雲端硬碟使用量"
noCrawleDescription: "請求網路搜尋引擎不要索引你的個人資料頁、貼文及頁面等。"
noCrawle: "拒絕搜尋引擎索引"
noCrawleDescription: "要求網路搜尋引擎不要索引你的個人資料頁、貼文及頁面等。"
lockedAccountInfo: "即使你通過了追隨者請求,除非你將貼文的可見性設定為 「追隨者」,否則任何人都能看見你的貼文。"
loadRawImages: "以原始圖像質量顯示附件圖像的縮略圖"
disableShowingAnimatedImages: "不播放動態圖像"
alwaysMarkSensitive: "默認將圖像/影像標記為敏感內容"
loadRawImages: "以原始圖檔顯示附件圖檔的縮圖"
disableShowingAnimatedImages: "不播放動態圖檔"
verificationEmailSent: "已發送驗證電子郵件。請點擊進入電子郵件中的鏈接完成驗證。"
notSet: "未設定"
emailVerified: "已成功驗證您的電郵"
noteFavoritesCount: "我的最愛貼文的數目"
pageLikesCount: "頁面被喜歡次數"
pageLikedCount: "頁面被喜歡次數"
pageLikesCount: "頁面被按讚次數"
pageLikedCount: "頁面被按讚次數"
reversiCount: "黑白棋對戰次數"
contact: "聯絡人"
useSystemFont: "使用系統默認的字型"
useSystemFont: "使用系統預設的字型"
clips: "摘錄"
experimentalFeatures: "測試中的功能"
experimentalFeatures: "實驗中的功能"
developer: "開發者"
makeExplorable: "自己的帳戶能夠在“探索”版面顯示"
makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"面中。"
makeExplorable: "使自己的帳戶能夠在“探索”頁面中顯示"
makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"面中。"
showGapBetweenNotesInTimeline: "分開顯示時間線上的貼文。"
duplicate: "複製"
left: "左"
center: "向中央"
center: "置中"
wide: "寬"
narrow: "窄"
reloadToApplySetting: "設定將會在頁面重新載入之後生效。要現在就重載頁面嗎?"
@ -660,29 +666,85 @@ clearCache: "清除快取資料"
onlineUsersCount: "{n}人正在線上"
nUsers: "{n}用戶"
nNotes: "{n}貼文"
sendErrorReports: "傳送錯誤報告"
sendErrorReportsDescription: "啟用後問題報告將傳送至開發者以提升軟體品質。問題報告可能包括OS版本瀏覽器類型行為歷史記錄等。"
myTheme: "我的佈景主題"
backgroundColor: "背景"
accentColor: "重點色彩"
textColor: "文"
textColor: "文"
saveAs: "另存為..."
advanced: "進階"
value: "數值 "
value: "數值"
createdAt: "建立於"
updatedAt: "最後更新"
saveConfirm: "您要儲存變更嗎?"
deleteConfirm: "你確定要刪除嗎?"
invalidValue: "輸入值無效。"
registry: "登錄表"
closeAccount: "停用帳戶"
currentVersion: "前版本"
currentVersion: "前版本"
latestVersion: "最新版本"
youAreRunningUpToDateClient: "您所使用的用戶端已經是最新的。"
newVersionOfClientAvailable: "新版本的用戶端可用。"
usageAmount: "使用量"
capacity: "容量"
inUse: "已使用"
editCode: "編輯代碼"
apply: "套用"
receiveAnnouncementFromInstance: "接收由本實例發出的電郵通知"
emailNotification: "郵件通知"
publish: "發佈"
inChannelSearch: "頻道内搜尋"
useReactionPickerForContextMenu: "點擊右鍵開啟回應工具欄"
typingUsers: "{users}輸入中..."
jumpToSpecifiedDate: "跳轉到特定日期"
showingPastTimeline: "顯示過往的時間線"
clear: "清除"
markAllAsRead: "全部標示為已讀"
goBack: "返回"
unlikeConfirm: "要取消按讚嗎?"
fullView: "全熒幕顯示"
quitFullView: "退出全熒幕顯示"
addDescription: "添加描述"
userPagePinTip: "在貼文的選單中選擇\"置頂\",即可置頂該貼文至您的個人檔案頁面。"
notSpecifiedMentionWarning: "此貼文有未指定的提及"
info: "資訊"
userInfo: "用戶資料"
unknown: "未知"
onlineStatus: "在線狀態"
hideOnlineStatus: "隱藏在線狀態"
hideOnlineStatusDescription: "隱藏在線狀態後,可能會降低檢索等功能的便利性。"
online: "線上"
active: "最近活躍"
offline: "離線"
notRecommended: "不推薦"
botProtection: "Bot防護"
instanceBlocking: "已封鎖的實例"
selectAccount: "選擇帳戶"
enabled: "已啟用"
disabled: "已停用"
quickAction: "快捷操作"
user: "使用者"
administration: "管理"
accounts: "帳戶"
switch: "切換"
noMaintainerInformationWarning: "尚未設定管理員信息。"
noBotProtectionWarning: "尚未設定Bot防護。"
configure: "設定"
expiration: "期限"
middle: "中"
_ad:
back: "返回"
_gallery:
unlike: "收回喜歡"
_email:
_follow:
title: "您有新的追隨者"
_receiveFollowRequest:
title: "收到追隨請求"
_plugin:
install: "安裝外掛組件"
installWarn: "請不要安裝來源不明的外掛組件。"
manage: "管理插件"
_registry:
scope: "範圍"
@ -691,13 +753,13 @@ _registry:
domain: "域"
createKey: "新增機碼"
_aboutMisskey:
about: "Misskey是由syuilo2014年開發的開源軟。"
about: "Misskey是由syuilo2014年開發的開源軟。"
contributors: "主要貢獻者"
allContributors: "全體貢獻人員"
source: "原始碼"
translation: "翻譯Misskey"
donate: "捐贈給Misskey"
morePatrons: "感謝你們的支持、 幫助。 🥰"
donate: "贊助Misskey"
morePatrons: "還有許許多多幫助我們的其他人,非常感謝你們。 🥰"
patrons: "贊助者"
_nsfw:
respect: "隱藏敏感內容"
@ -706,11 +768,13 @@ _nsfw:
_mfm:
cheatSheet: "MFM代碼小抄"
intro: "MFM是Misskey專用的標記語言可以在Misskey中的各個位置使用。 您可以這裏看到MFM可用語法列表。"
dummy: "通過Misskey擴展Fediverse的世界"
dummy: "Misskey拓展了Fediverse的世界"
mention: "提及"
mentionDescription: "透過 @+用戶名 來標示特定使用者。"
hashtag: "#tag"
hashtagDescription: "可以使用\"#\"符號後加文字表示話題標籤。"
url: "URL"
urlDescription: "可以展示URL位址。"
link: "鏈接"
bold: "粗體"
small: "縮小"
@ -741,7 +805,7 @@ _mfm:
x4Description: "將顯示內容放至最大。"
blur: "模糊"
font: "字型"
fontDescription: "可設置顯示內容所使用的字型"
fontDescription: "您可以設定顯示內容的字型"
_reversi:
reversi: "黑白棋"
gameSettings: "對弈設定"
@ -762,7 +826,7 @@ _reversi:
pastTurnOf: "{name}的回合"
surrender: "認輸"
surrendered: "對手認輸"
drawn: "平"
drawn: "平"
won: "{name}獲勝"
black: "黑"
white: "白"
@ -772,6 +836,7 @@ _reversi:
allGames: "所有對弈"
ended: "已結束"
playing: "正在對弈"
loopedMap: "循環棋盤"
_instanceTicker:
none: "隱藏"
remote: "向遠端使用者顯示"
@ -783,16 +848,16 @@ _serverDisconnectedBehavior:
_channel:
create: "建立頻道"
edit: "編輯頻道"
setBanner: "設定橫幅"
removeBanner: "移除封面圖"
featured: "發燒內容"
setBanner: "設定橫幅圖像"
removeBanner: "移除橫幅圖像"
featured: "熱門貼文"
owned: "管理中"
following: "關注中"
usersCount: "有{n}人參與"
notesCount: "有{n}個帖子"
notesCount: "有{n}個貼文"
_sidebar:
full: "全部"
icon: "頭像"
icon: "大頭貼"
hide: "隱藏"
_wordMute:
muteWords: "加入靜音文字"
@ -803,6 +868,7 @@ _theme:
install: "安裝佈景主題"
manage: "佈景主題管理員"
code: "主題代碼"
description: "描述"
installed: "{name}已安裝"
installedThemes: "已經安裝的主題"
builtinThemes: "標準主題"
@ -822,16 +888,18 @@ _theme:
keys:
bg: "背景"
fg: "文本"
panel: "面板"
shadow: "陰影"
navActive: "側邊欄文本 (活動)"
navIndicator: "側邊欄指示符"
link: "鏈接"
hashtag: "#tag"
mention: "提"
mentionMe: "提我"
mention: "提"
mentionMe: "提到了我"
renote: "轉發貼文"
divider: "分割線"
scrollbarHandle: "動條"
scrollbarHandleHover: "動條 (漂浮)"
scrollbarHandle: "動條"
scrollbarHandleHover: "動條 (漂浮)"
dateLabelFg: "日期標籤文字"
infoBg: "資訊背景"
infoFg: "資訊內容"
@ -840,13 +908,16 @@ _theme:
cwBg: "CW 按鈕背景"
cwFg: "CW 按鈕文本"
cwHoverBg: "CW 按鈕背景 (漂浮)"
toastBg: "通知背景"
toastFg: "通知文本"
buttonBg: "按鈕背景"
buttonHoverBg: "按鈕背景 (漂浮)"
inputBorder: "輸入框邊框"
listItemHoverBg: "列表物品背景 (漂浮)"
driveFolderBg: "雲端硬碟文件夾背景"
wallpaperOverlay: "壁紙覆蓋層"
badge: "獎章"
messageBg: "私背景"
messageBg: "私背景"
accentDarken: "強調色(偏暗)"
accentLighten: "強調色(明亮)"
fgHighlighted: "高亮顯示文本"
@ -855,6 +926,7 @@ _sfx:
noteMy: "我的貼文"
notification: "通知"
chat: "傳送訊息"
chatBg: "聊天背景"
antenna: "天線接收"
channel: "頻道通知"
_ago:
@ -880,18 +952,19 @@ _tutorial:
step1_3: "由於你沒有發佈任何貼文,也沒有追隨任何人,所以你的時間軸目前是空的。"
step2_1: "在發文或追隨其他人之前先讓我們設定一下個人資料吧。"
step2_2: "提供一些關於自己的資訊來讓其他人更有追隨你的意願。"
step3_1: "個人資料都打理好了嗎?"
step3_2: "下一步讓我們來試試看發個文,按一下畫面上的鉛筆圖示來開始"
step3_1: "個人資料都設定好了嗎?"
step3_2: "接下來,讓我們來試試看發個文,按一下畫面上的鉛筆圖示來開始"
step3_3: "輸入完內容後,按視窗右上角的按鈕來發文"
step3_4: "不知道該寫什麼內容嗎試試看「開始使用Misskey了」如何。"
step4_1: "貼文發出去了嗎?"
step4_2: "如果你的貼文出現在時間軸上,就代表發文成功。"
step5_1: "現在試試看追隨其他人來讓你的時間軸變得更生動吧。"
step5_2: "你會在{featured}上看到受歡迎的貼文,你也可以從列表中追隨你喜歡的人,或者在{explore}上找到熱門使用者。"
step5_3: "想要追隨其他人,只要點擊他們的頭像並按「追隨」即可。"
step5_3: "想要追隨其他人,只要點擊他們的大頭貼並按「追隨」即可。"
step5_4: "如果使用者的名字旁有鎖頭的圖示,代表他們需要手動核准你的追隨請求。"
step6_1: "現在你可以在時間軸上看到其他用戶的貼文。"
step6_2: "你也可以對別人的貼文作出「情感」,作出簡單的回覆。"
step6_3: "在他人的貼文按下\"+\"圖標,即可選擇喜好的表情符號進行回應。"
step7_1: "以上為Misskey的基本操作說明教學在此告一段落。辛苦了。"
step7_2: "歡迎到{help}來瞭解更多Misskey相關介紹。"
step7_3: "那麼祝您在Misskey玩的開心~ 🚀"
@ -899,16 +972,17 @@ _2fa:
alreadyRegistered: "此設備已經被註冊過了"
registerDevice: "註冊裝置"
step1: "首先,在您的設備上安裝二步驗證程式,例如{a}或{b}。"
step2: "然後,掃描幕上的QR code。"
step2: "然後,掃描幕上的QR code。"
_permissions:
"read:account": "查看帳戶信息"
"write:account": "更改帳戶信息"
"read:blocks": "已封鎖用戶名單"
"write:blocks": "編輯已封鎖用戶名單"
"read:drive": "存取雲端硬碟\n"
"read:drive": "存取雲端硬碟"
"write:drive": "編輯雲端硬碟的檔案"
"read:favorites": "瀏覽我的最愛"
"write:favorites": "編輯我的最愛列表"
"read:following": "查看追隨中的用戶資訊"
"write:following": "追隨/解除追隨"
"read:messaging": "顯示訊息"
"write:messaging": "撰寫或刪除私人訊息"
@ -922,7 +996,7 @@ _permissions:
"write:votes": "投票"
"read:pages": "顯示頁面"
"write:pages": "編輯頁面"
"read:page-likes": "顯示頁面的已喜歡"
"read:page-likes": "顯示已按讚的頁面"
"write:page-likes": "編輯頁面上喜歡"
"read:user-groups": "顯示使用者群組"
"write:user-groups": "編輯使用者群組"
@ -964,7 +1038,7 @@ _widgets:
postForm: "發佈窗口"
slideshow: "幻燈片"
button: "按鈕"
onlineUsers: "線上的用戶"
onlineUsers: "線上的用戶"
jobQueue: "佇列"
_cw:
hide: "隱藏"
@ -975,6 +1049,7 @@ _poll:
noOnlyOneChoice: "至少需要兩個選項。"
choiceN: "選擇{n}"
noMore: "沒辦法再添加選項了"
canMultipleVote: "可以多次投票"
expiration: "期限"
infinite: "無期限"
at: "結束時間"
@ -1018,6 +1093,8 @@ _profile:
metadataEdit: "編輯進階資訊"
metadataLabel: "標籤"
metadataContent: "内容"
changeAvatar: "更換大頭貼"
changeBanner: "變更橫幅圖像"
_exportOrImport:
allNotes: "所有貼文"
followingList: "追隨中"
@ -1401,7 +1478,7 @@ _notification:
reply: "回覆"
renote: "轉發貼文"
quote: "引用"
reaction: "情感"
reaction: "反應"
pollVote: "統計已投票數"
receiveFollowRequest: "已收到追隨請求"
followRequestAccepted: "追隨請求已接受"

View File

@ -4,8 +4,8 @@ export class AddSomeUrls1557761316509 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "meta" ADD "ToSUrl" character varying(512)`);
await queryRunner.query(`ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) NOT NULL DEFAULT 'https://github.com/syuilo/misskey'`);
await queryRunner.query(`ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://github.com/syuilo/misskey/issues/new'`);
await queryRunner.query(`ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) NOT NULL DEFAULT 'https://github.com/misskey-dev/misskey'`);
await queryRunner.query(`ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://github.com/misskey-dev/misskey/issues/new'`);
}
public async down(queryRunner: QueryRunner): Promise<any> {

View File

@ -0,0 +1,40 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class gallery1611397665007 implements MigrationInterface {
name = 'gallery1611397665007'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TABLE "gallery_post" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, "title" character varying(256) NOT NULL, "description" character varying(2048), "userId" character varying(32) NOT NULL, "fileIds" character varying(32) array NOT NULL DEFAULT '{}'::varchar[], "isSensitive" boolean NOT NULL DEFAULT false, "likedCount" integer NOT NULL DEFAULT '0', "tags" character varying(128) array NOT NULL DEFAULT '{}'::varchar[], CONSTRAINT "PK_8e90d7b6015f2c4518881b14753" PRIMARY KEY ("id")); COMMENT ON COLUMN "gallery_post"."createdAt" IS 'The created date of the GalleryPost.'; COMMENT ON COLUMN "gallery_post"."updatedAt" IS 'The updated date of the GalleryPost.'; COMMENT ON COLUMN "gallery_post"."userId" IS 'The ID of author.'; COMMENT ON COLUMN "gallery_post"."isSensitive" IS 'Whether the post is sensitive.'`);
await queryRunner.query(`CREATE INDEX "IDX_8f1a239bd077c8864a20c62c2c" ON "gallery_post" ("createdAt") `);
await queryRunner.query(`CREATE INDEX "IDX_f631d37835adb04792e361807c" ON "gallery_post" ("updatedAt") `);
await queryRunner.query(`CREATE INDEX "IDX_985b836dddd8615e432d7043dd" ON "gallery_post" ("userId") `);
await queryRunner.query(`CREATE INDEX "IDX_3ca50563facd913c425e7a89ee" ON "gallery_post" ("fileIds") `);
await queryRunner.query(`CREATE INDEX "IDX_f2d744d9a14d0dfb8b96cb7fc5" ON "gallery_post" ("isSensitive") `);
await queryRunner.query(`CREATE INDEX "IDX_1a165c68a49d08f11caffbd206" ON "gallery_post" ("likedCount") `);
await queryRunner.query(`CREATE INDEX "IDX_05cca34b985d1b8edc1d1e28df" ON "gallery_post" ("tags") `);
await queryRunner.query(`CREATE TABLE "gallery_like" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "postId" character varying(32) NOT NULL, CONSTRAINT "PK_853ab02be39b8de45cd720cc15f" PRIMARY KEY ("id"))`);
await queryRunner.query(`CREATE INDEX "IDX_8fd5215095473061855ceb948c" ON "gallery_like" ("userId") `);
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_df1b5f4099e99fb0bc5eae53b6" ON "gallery_like" ("userId", "postId") `);
await queryRunner.query(`ALTER TABLE "gallery_post" ADD CONSTRAINT "FK_985b836dddd8615e432d7043ddb" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE "gallery_like" ADD CONSTRAINT "FK_8fd5215095473061855ceb948cf" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
await queryRunner.query(`ALTER TABLE "gallery_like" ADD CONSTRAINT "FK_b1cb568bfe569e47b7051699fc8" FOREIGN KEY ("postId") REFERENCES "gallery_post"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "gallery_like" DROP CONSTRAINT "FK_b1cb568bfe569e47b7051699fc8"`);
await queryRunner.query(`ALTER TABLE "gallery_like" DROP CONSTRAINT "FK_8fd5215095473061855ceb948cf"`);
await queryRunner.query(`ALTER TABLE "gallery_post" DROP CONSTRAINT "FK_985b836dddd8615e432d7043ddb"`);
await queryRunner.query(`DROP INDEX "IDX_df1b5f4099e99fb0bc5eae53b6"`);
await queryRunner.query(`DROP INDEX "IDX_8fd5215095473061855ceb948c"`);
await queryRunner.query(`DROP TABLE "gallery_like"`);
await queryRunner.query(`DROP INDEX "IDX_05cca34b985d1b8edc1d1e28df"`);
await queryRunner.query(`DROP INDEX "IDX_1a165c68a49d08f11caffbd206"`);
await queryRunner.query(`DROP INDEX "IDX_f2d744d9a14d0dfb8b96cb7fc5"`);
await queryRunner.query(`DROP INDEX "IDX_3ca50563facd913c425e7a89ee"`);
await queryRunner.query(`DROP INDEX "IDX_985b836dddd8615e432d7043dd"`);
await queryRunner.query(`DROP INDEX "IDX_f631d37835adb04792e361807c"`);
await queryRunner.query(`DROP INDEX "IDX_8f1a239bd077c8864a20c62c2c"`);
await queryRunner.query(`DROP TABLE "gallery_post"`);
}
}

View File

@ -0,0 +1,16 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userLastActiveDate1618637372000 implements MigrationInterface {
name = 'userLastActiveDate1618637372000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" ADD "lastActiveDate" TIMESTAMP WITH TIME ZONE DEFAULT NULL`);
await queryRunner.query(`CREATE INDEX "IDX_seoignmeoprigmkpodgrjmkpormg" ON "user" ("lastActiveDate") `);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_seoignmeoprigmkpodgrjmkpormg"`);
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "lastActiveDate"`);
}
}

View File

@ -0,0 +1,14 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userHideOnlineStatus1618639857000 implements MigrationInterface {
name = 'userHideOnlineStatus1618639857000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" ADD "hideOnlineStatus" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "hideOnlineStatus"`);
}
}

View File

@ -0,0 +1,20 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class passwordReset1619942102890 implements MigrationInterface {
name = 'passwordReset1619942102890'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TABLE "password_reset_request" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "token" character varying(256) NOT NULL, "userId" character varying(32) NOT NULL, CONSTRAINT "PK_fcf4b02eae1403a2edaf87fd074" PRIMARY KEY ("id"))`);
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0b575fa9a4cfe638a925949285" ON "password_reset_request" ("token") `);
await queryRunner.query(`CREATE INDEX "IDX_4bb7fd4a34492ae0e6cc8d30ac" ON "password_reset_request" ("userId") `);
await queryRunner.query(`ALTER TABLE "password_reset_request" ADD CONSTRAINT "FK_4bb7fd4a34492ae0e6cc8d30ac8" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "password_reset_request" DROP CONSTRAINT "FK_4bb7fd4a34492ae0e6cc8d30ac8"`);
await queryRunner.query(`DROP INDEX "IDX_4bb7fd4a34492ae0e6cc8d30ac"`);
await queryRunner.query(`DROP INDEX "IDX_0b575fa9a4cfe638a925949285"`);
await queryRunner.query(`DROP TABLE "password_reset_request"`);
}
}

View File

@ -0,0 +1,18 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class ad1620019354680 implements MigrationInterface {
name = 'ad1620019354680'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TABLE "ad" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "expiresAt" TIMESTAMP WITH TIME ZONE NOT NULL, "place" character varying(32) NOT NULL, "priority" character varying(32) NOT NULL, "url" character varying(1024) NOT NULL, "imageUrl" character varying(1024) NOT NULL, "memo" character varying(8192) NOT NULL, CONSTRAINT "PK_0193d5ef09746e88e9ea92c634d" PRIMARY KEY ("id")); COMMENT ON COLUMN "ad"."createdAt" IS 'The created date of the Ad.'; COMMENT ON COLUMN "ad"."expiresAt" IS 'The expired date of the Ad.'`);
await queryRunner.query(`CREATE INDEX "IDX_1129c2ef687fc272df040bafaa" ON "ad" ("createdAt") `);
await queryRunner.query(`CREATE INDEX "IDX_2da24ce20ad209f1d9dc032457" ON "ad" ("expiresAt") `);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_2da24ce20ad209f1d9dc032457"`);
await queryRunner.query(`DROP INDEX "IDX_1129c2ef687fc272df040bafaa"`);
await queryRunner.query(`DROP TABLE "ad"`);
}
}

View File

@ -0,0 +1,14 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class ad21620364649428 implements MigrationInterface {
name = 'ad21620364649428'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "ad" ADD "ratio" integer NOT NULL DEFAULT '1'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "ad" DROP COLUMN "ratio"`);
}
}

View File

@ -1,11 +1,11 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.75.0",
"version": "12.81.0",
"codename": "indigo",
"repository": {
"type": "git",
"url": "https://github.com/syuilo/misskey.git"
"url": "https://github.com/misskey-dev/misskey.git"
},
"main": "./index.js",
"private": true,
@ -15,11 +15,13 @@
"ormconfig": "node ./built/ormconfig.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
"migrateandstart": "npm run migrate && npm run start",
"build": "npm run build-webpack && npm run build-gulp",
"build": "npm run build-webpack && npm run build-ts && npm run build-gulp",
"build-webpack": "webpack",
"build-ts": "tsc -p src/tsconfig.json || echo done. && tsc-alias -p src/tsconfig.json",
"build-gulp": "gulp build",
"watch": "concurrently \"npm:watch-*\"",
"watch-webpack": "webpack --watch",
"watch-ts": "tsc -w -p src/tsconfig.json && tsc-alias -w -p src/tsconfig.json",
"watch-gulp": "gulp watch",
"clean": "gulp clean",
"cleanall": "gulp cleanall",
@ -30,37 +32,30 @@
"resolutions": {
"chokidar": "^3.3.1",
"constantinople": "^4.0.1",
"gulp/gulp-cli/yargs/yargs-parser": "5.0.0-security.0",
"jsonld/rdf-canonize/node-forge": "0.10.0",
"lodash": "^4.17.20"
},
"dependencies": {
"@babel/plugin-transform-runtime": "7.13.10",
"@babel/plugin-transform-runtime": "7.13.15",
"@elastic/elasticsearch": "7.11.0",
"@fortawesome/fontawesome-svg-core": "1.2.35",
"@fortawesome/free-brands-svg-icons": "5.15.3",
"@fortawesome/free-regular-svg-icons": "5.15.3",
"@fortawesome/free-solid-svg-icons": "5.15.3",
"@fortawesome/vue-fontawesome": "3.0.0-3",
"@koa/cors": "3.1.0",
"@koa/multer": "3.0.0",
"@koa/router": "9.0.1",
"@sentry/browser": "5.29.2",
"@sentry/tracing": "5.29.2",
"@sinonjs/fake-timers": "7.0.2",
"@sinonjs/fake-timers": "7.0.5",
"@syuilo/aiscript": "0.11.1",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.0",
"@types/bull": "3.15.1",
"@types/cbor": "5.0.1",
"@types/dateformat": "3.0.1",
"@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.3",
"@types/gulp": "4.0.8",
"@types/gulp-rename": "2.0.0",
"@types/gulp-replace": "0.0.31",
"@types/is-url": "1.2.28",
"@types/js-yaml": "4.0.0",
"@types/jsdom": "16.2.7",
"@types/js-yaml": "4.0.1",
"@types/jsdom": "16.2.10",
"@types/jsonld": "1.5.5",
"@types/katex": "0.11.0",
"@types/koa": "2.13.1",
@ -75,10 +70,10 @@
"@types/koa__multer": "2.0.2",
"@types/koa__router": "8.0.4",
"@types/markdown-it": "12.0.1",
"@types/matter-js": "0.14.10",
"@types/mocha": "8.2.1",
"@types/node": "14.14.35",
"@types/node-fetch": "2.5.8",
"@types/matter-js": "0.14.11",
"@types/mocha": "8.2.2",
"@types/node": "14.14.41",
"@types/node-fetch": "2.5.10",
"@types/nodemailer": "6.4.1",
"@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1",
@ -86,6 +81,7 @@
"@types/parsimmon": "1.10.6",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/punycode": "2.1.0",
"@types/qrcode": "1.4.0",
"@types/random-seed": "0.3.3",
"@types/ratelimiter": "3.4.1",
@ -94,7 +90,7 @@
"@types/request-stats": "3.0.0",
"@types/rimraf": "3.0.0",
"@types/seedrandom": "2.4.28",
"@types/sharp": "0.27.1",
"@types/sharp": "0.28.0",
"@types/sinonjs__fake-timers": "6.0.2",
"@types/speakeasy": "2.0.5",
"@types/throttle-debounce": "2.1.0",
@ -102,42 +98,41 @@
"@types/tmp": "0.2.0",
"@types/uuid": "8.3.0",
"@types/web-push": "3.3.0",
"@types/webpack": "4.41.26",
"@types/webpack-stream": "3.2.11",
"@types/webpack": "5.28.0",
"@types/webpack-stream": "3.2.12",
"@types/websocket": "1.0.2",
"@types/ws": "7.4.0",
"@typescript-eslint/parser": "4.18.0",
"@vue/compiler-sfc": "3.0.7",
"@types/ws": "7.4.1",
"@typescript-eslint/parser": "4.22.0",
"@vue/compiler-sfc": "3.0.11",
"abort-controller": "3.0.0",
"apexcharts": "3.26.0",
"apexcharts": "3.26.1",
"autobind-decorator": "2.4.0",
"autosize": "4.0.2",
"autwh": "0.1.0",
"aws-sdk": "2.867.0",
"aws-sdk": "2.892.0",
"bcryptjs": "2.4.3",
"blurhash": "1.1.3",
"broadcast-channel": "3.5.3",
"bull": "3.21.1",
"bull": "3.22.3",
"cafy": "15.2.1",
"cbor": "7.0.4",
"chalk": "4.1.0",
"cbor": "7.0.5",
"chalk": "4.1.1",
"chart.js": "2.9.4",
"cli-highlight": "2.1.10",
"commander": "4.1.1",
"concurrently": "6.0.0",
"cli-highlight": "2.1.11",
"commander": "7.2.0",
"concurrently": "6.0.2",
"content-disposition": "0.5.3",
"core-js": "3.9.1",
"core-js": "3.11.0",
"crc-32": "1.2.0",
"css-loader": "5.1.3",
"cssnano": "4.1.10",
"css-loader": "5.2.4",
"cssnano": "5.0.1",
"dateformat": "4.5.1",
"diskusage": "1.1.3",
"escape-regexp": "0.0.1",
"eslint": "7.22.0",
"eslint-plugin-vue": "7.7.0",
"eslint": "7.25.0",
"eslint-plugin-vue": "7.9.0",
"eventemitter3": "4.0.7",
"feed": "4.2.2",
"fibers": "5.0.0",
"file-type": "16.3.0",
"fluent-ffmpeg": "2.1.2",
"glob": "7.1.6",
@ -145,26 +140,25 @@
"gulp": "4.0.2",
"gulp-cssnano": "2.1.3",
"gulp-rename": "2.0.0",
"gulp-replace": "1.0.0",
"gulp-replace": "1.1.1",
"gulp-terser": "2.0.1",
"gulp-tslint": "8.1.4",
"gulp-typescript": "6.0.0-alpha.1",
"hard-source-webpack-plugin": "0.13.1",
"html-minifier": "4.0.0",
"http-proxy-agent": "4.0.1",
"http-signature": "1.3.5",
"https-proxy-agent": "5.0.0",
"idb-keyval": "5.0.4",
"idb-keyval": "5.0.5",
"insert-text-at-cursor": "0.3.0",
"is-root": "2.1.0",
"is-svg": "4.3.1",
"js-yaml": "4.0.0",
"jsdom": "16.5.1",
"js-yaml": "4.1.0",
"jsdom": "16.5.3",
"json5": "2.2.0",
"json5-loader": "4.0.1",
"jsonld": "4.0.1",
"jsrsasign": "8.0.20",
"katex": "0.13.0",
"katex": "0.13.3",
"koa": "2.13.1",
"koa-bodyparser": "4.3.0",
"koa-favicon": "2.1.0",
@ -176,9 +170,10 @@
"koa-views": "7.0.1",
"langmap": "0.0.16",
"lookup-dns-cache": "2.1.0",
"markdown-it": "12.0.4",
"markdown-it": "12.0.6",
"markdown-it-anchor": "7.1.0",
"matter-js": "0.16.1",
"matter-js": "0.17.1",
"mfm-js": "0.16.3",
"mocha": "8.3.2",
"moji": "0.5.1",
"ms": "2.1.3",
@ -189,24 +184,23 @@
"object-assign-deep": "0.4.0",
"os-utils": "0.0.14",
"parse5": "6.0.1",
"parsimmon": "1.16.0",
"pg": "8.5.1",
"pg": "8.6.0",
"portscanner": "2.2.0",
"postcss": "8.2.8",
"postcss": "8.2.12",
"postcss-loader": "5.2.0",
"prismjs": "1.23.0",
"probe-image-size": "7.0.1",
"probe-image-size": "7.1.0",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "3.0.2",
"punycode": "2.1.1",
"pureimage": "0.2.7",
"pureimage": "0.3.2",
"qrcode": "1.4.4",
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.15.9",
"reconnecting-websocket": "4.4.0",
"redis": "3.0.2",
"redis": "3.1.2",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"regenerator-runtime": "0.13.7",
@ -216,51 +210,54 @@
"rimraf": "3.0.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass": "1.32.8",
"sass": "1.32.11",
"sass-loader": "11.0.1",
"seedrandom": "3.0.5",
"sharp": "0.27.2",
"sharp": "0.28.1",
"speakeasy": "2.0.0",
"stringz": "2.1.0",
"style-loader": "2.0.0",
"summaly": "2.4.0",
"syslog-pro": "1.0.0",
"systeminformation": "5.6.7",
"systeminformation": "5.6.12",
"syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0",
"three": "0.117.1",
"throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2",
"tmp": "0.2.1",
"ts-loader": "8.0.18",
"ts-loader": "9.1.1",
"ts-node": "9.1.1",
"tsc-alias": "1.2.10",
"tsconfig-paths": "3.9.0",
"tslint": "6.1.3",
"tslint-sonarts": "1.9.0",
"typeorm": "0.2.31",
"typescript": "4.2.3",
"typeorm": "0.2.32",
"typescript": "4.2.4",
"ulid": "2.3.0",
"url-loader": "4.1.1",
"uuid": "8.3.2",
"v-debounce": "0.1.2",
"vanilla-tilt": "1.7.0",
"vue": "3.0.7",
"vue": "3.0.11",
"vue-color": "2.8.1",
"vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-router": "4.0.5",
"vue-style-loader": "4.1.3",
"vue-svg-loader": "0.17.0-beta.2",
"vuedraggable": "4.0.1",
"web-push": "3.4.4",
"webpack": "5.26.3",
"webpack-cli": "4.5.0",
"websocket": "1.0.33",
"ws": "7.4.4",
"webpack": "5.35.1",
"webpack-cli": "4.6.0",
"websocket": "1.0.34",
"ws": "7.4.5",
"xev": "2.0.1"
},
"devDependencies": {
"@types/chai": "4.2.15",
"@types/fluent-ffmpeg": "2.1.16",
"@redocly/openapi-core": "1.0.0-beta.44",
"@types/chai": "4.2.16",
"@types/fluent-ffmpeg": "2.1.17",
"chai": "4.3.4",
"cross-env": "7.0.3"
}

View File

@ -1,3 +0,0 @@
declare module '*/meta.json' {
const version: string;
}

View File

@ -1,5 +1,7 @@
import * as program from 'commander';
import config from './config';
import { Command } from 'commander';
import config from '@/config';
const program = new Command();
program
.version(config.version)

View File

@ -6,13 +6,13 @@ import * as isRoot from 'is-root';
import { getConnection } from 'typeorm';
import Logger from '../services/logger';
import loadConfig from '../config/load';
import { Config } from '../config/types';
import loadConfig from '@/config/load';
import { Config } from '@/config/types';
import { lessThan } from '../prelude/array';
import { program } from '../argv';
import { showMachineInfo } from '../misc/show-machine-info';
import { showMachineInfo } from '@/misc/show-machine-info';
import { initDb } from '../db/postgre';
import * as meta from '../meta.json';
const meta = require('../meta.json');
const logger = new Logger('core', 'cyan');
const bootLogger = logger.createSubLogger('boot', 'magenta', false);
@ -45,26 +45,15 @@ function greet() {
export async function masterMain() {
let config!: Config;
// initialize app
try {
greet();
// initialize app
config = await init();
if (config.port == null || Number.isNaN(config.port)) {
bootLogger.error('The port is not configured. Please configure port.', null, true);
process.exit(1);
}
if (process.platform === 'linux' && isWellKnownPort(config.port) && !isRoot()) {
bootLogger.error('You need root privileges to listen on well-known port on Linux', null, true);
process.exit(1);
}
if (!await isPortAvailable(config.port)) {
bootLogger.error(`Port ${config.port} is already in use`, null, true);
process.exit(1);
}
showEnvironment();
await showMachineInfo(bootLogger);
showNodejsVersion();
config = loadConfigBoot();
await connectDb();
await validatePort(config);
} catch (e) {
bootLogger.error('Fatal error occurred during initialization', null, true);
process.exit(1);
@ -89,14 +78,6 @@ const runningNodejsVersion = process.version.slice(1).split('.').map(x => parseI
const requiredNodejsVersion = [11, 7, 0];
const satisfyNodejsVersion = !lessThan(runningNodejsVersion, requiredNodejsVersion);
function isWellKnownPort(port: number): boolean {
return port < 1024;
}
async function isPortAvailable(port: number): Promise<boolean> {
return await portscanner.checkPortStatus(port, '127.0.0.1') === 'closed';
}
function showEnvironment(): void {
const env = process.env.NODE_ENV;
const logger = bootLogger.createSubLogger('env');
@ -110,14 +91,7 @@ function showEnvironment(): void {
logger.info(`You ${isRoot() ? '' : 'do not '}have root privileges`);
}
/**
* Init app
*/
async function init(): Promise<Config> {
showEnvironment();
await showMachineInfo(bootLogger);
function showNodejsVersion(): void {
const nodejsLogger = bootLogger.createSubLogger('nodejs');
nodejsLogger.info(`Version ${runningNodejsVersion.join('.')}`);
@ -126,7 +100,9 @@ async function init(): Promise<Config> {
nodejsLogger.error(`Node.js version is less than ${requiredNodejsVersion.join('.')}. Please upgrade it.`, null, true);
process.exit(1);
}
}
function loadConfigBoot(): Config {
const configLogger = bootLogger.createSubLogger('config');
let config;
@ -146,6 +122,10 @@ async function init(): Promise<Config> {
configLogger.succ('Loaded');
return config;
}
async function connectDb(): Promise<void> {
const dbLogger = bootLogger.createSubLogger('db');
// Try to connect to DB
@ -159,8 +139,29 @@ async function init(): Promise<Config> {
dbLogger.error(e);
process.exit(1);
}
}
return config;
async function validatePort(config: Config): Promise<void> {
const isWellKnownPort = (port: number) => port < 1024;
async function isPortAvailable(port: number): Promise<boolean> {
return await portscanner.checkPortStatus(port, '127.0.0.1') === 'closed';
}
if (config.port == null || Number.isNaN(config.port)) {
bootLogger.error('The port is not configured. Please configure port.', null, true);
process.exit(1);
}
if (process.platform === 'linux' && isWellKnownPort(config.port) && !isRoot()) {
bootLogger.error('You need root privileges to listen on well-known port on Linux', null, true);
process.exit(1);
}
if (!await isPortAvailable(config.port)) {
bootLogger.error(`Port ${config.port} is already in use`, null, true);
process.exit(1);
}
}
async function spawnWorkers(limit: number = 1) {

View File

@ -1,7 +1,7 @@
import { reactive } from 'vue';
import { apiUrl } from '@/config';
import { waiting } from '@/os';
import { unisonReload } from '@/scripts/unison-reload';
import { apiUrl } from '@client/config';
import { waiting } from '@client/os';
import { unisonReload } from '@client/scripts/unison-reload';
// TODO: 他のタブと永続化されたstateを同期

View File

@ -1,38 +1,33 @@
<template>
<XWindow ref="window" :initial-width="400" :initial-height="500" :can-resize="true" @closed="$emit('closed')">
<template #header>
<Fa :icon="faExclamationCircle" style="margin-right: 0.5em;"/>
<i class="fas fa-exclamation-circle" style="margin-right: 0.5em;"></i>
<I18n :src="$ts.reportAbuseOf" tag="span">
<template #name>
<b><MkAcct :user="user"/></b>
</template>
</I18n>
</template>
<div class="dpvffvvy">
<div class="dpvffvvy _monolithic_">
<div class="_section">
<div class="_content">
<MkTextarea v-model:value="comment">
<span>{{ $ts.details }}</span>
<template #desc>{{ $ts.fillAbuseReportDescription }}</template>
</MkTextarea>
</div>
</div>
<div class="_section">
<div class="_content">
<MkButton @click="send" primary full :disabled="comment.length === 0">{{ $ts.send }}</MkButton>
</div>
</div>
</div>
</XWindow>
</template>
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import XWindow from '@/components/ui/window.vue';
import MkTextarea from '@/components/ui/textarea.vue';
import MkButton from '@/components/ui/button.vue';
import * as os from '@/os';
import XWindow from '@client/components/ui/window.vue';
import MkTextarea from '@client/components/ui/textarea.vue';
import MkButton from '@client/components/ui/button.vue';
import * as os from '@client/os';
export default defineComponent({
components: {
@ -57,7 +52,6 @@ export default defineComponent({
data() {
return {
comment: this.initialComment || '',
faExclamationCircle,
};
},
@ -80,6 +74,6 @@ export default defineComponent({
<style lang="scss" scoped>
.dpvffvvy {
--section-padding: 16px;
--root-margin: 16px;
}
</style>

View File

@ -36,7 +36,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as tinycolor from 'tinycolor2';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
data() {

View File

@ -29,12 +29,12 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { emojilist } from '../../misc/emojilist';
import contains from '@/scripts/contains';
import { twemojiSvgBase } from '../../misc/twemoji-base';
import { getStaticImageUrl } from '@/scripts/get-static-image-url';
import { acct } from '@/filters/user';
import * as os from '@/os';
import { emojilist } from '@/misc/emojilist';
import contains from '@client/scripts/contains';
import { twemojiSvgBase } from '@/misc/twemoji-base';
import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { acct } from '@client/filters/user';
import * as os from '@client/os';
type EmojiDef = {
emoji: string;

View File

@ -1,14 +1,14 @@
<template>
<div>
<div v-for="user in us" :key="user.id" style="display:inline-block;width:32px;height:32px;margin-right:8px;">
<MkAvatar :user="user" style="width:32px;height:32px;"/>
<MkAvatar :user="user" style="width:32px;height:32px;" :show-indicator="true"/>
</div>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
props: {

View File

@ -6,7 +6,7 @@
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { defineComponent, PropType } from 'vue';
type Captcha = {
render(container: string | Node, options: {
@ -18,7 +18,7 @@ type Captcha = {
getResponse(id: string): string;
};
type CaptchaProvider = 'hcaptcha' | 'grecaptcha';
type CaptchaProvider = 'hcaptcha' | 'recaptcha';
type CaptchaContainer = {
readonly [_ in CaptchaProvider]?: Captcha;
@ -32,7 +32,7 @@ declare global {
export default defineComponent({
props: {
provider: {
type: String,
type: String as PropType<CaptchaProvider>,
required: true,
},
sitekey: {
@ -51,19 +51,25 @@ export default defineComponent({
},
computed: {
loaded() {
return !!window[this.provider as CaptchaProvider];
variable(): string {
switch (this.provider) {
case 'hcaptcha': return 'hcaptcha';
case 'recaptcha': return 'grecaptcha';
}
},
src() {
loaded(): boolean {
return !!window[this.variable];
},
src(): string {
const endpoint = ({
hcaptcha: 'https://hcaptcha.com/1',
grecaptcha: 'https://www.recaptcha.net/recaptcha',
} as Record<PropertyKey, unknown>)[this.provider];
recaptcha: 'https://www.recaptcha.net/recaptcha',
} as Record<CaptchaProvider, string>)[this.provider];
return `${typeof endpoint == 'string' ? endpoint : 'about:invalid'}/api.js?render=explicit`;
return `${typeof endpoint === 'string' ? endpoint : 'about:invalid'}/api.js?render=explicit`;
},
captcha() {
return window[this.provider as CaptchaProvider] || {} as unknown as Captcha;
captcha(): Captcha {
return window[this.variable] || {} as unknown as Captcha;
},
},
@ -94,7 +100,7 @@ export default defineComponent({
methods: {
reset() {
this.captcha?.reset();
if (this.captcha?.reset) this.captcha.reset();
},
requestRender() {
if (this.captcha.render && this.$refs.captcha instanceof Element) {

View File

@ -6,22 +6,21 @@
>
<template v-if="!wait">
<template v-if="isFollowing">
<span v-if="full">{{ $ts.unfollow }}</span><Fa :icon="faMinus"/>
<span v-if="full">{{ $ts.unfollow }}</span><i class="fas fa-minus"></i>
</template>
<template v-else>
<span v-if="full">{{ $ts.follow }}</span><Fa :icon="faPlus"/>
<span v-if="full">{{ $ts.follow }}</span><i class="fas fa-plus"></i>
</template>
</template>
<template v-else>
<span v-if="full">{{ $ts.processing }}</span><Fa :icon="faSpinner" pulse fixed-width/>
<span v-if="full">{{ $ts.processing }}</span><i class="fas fa-spinner fa-pulse fa-fw"></i>
</template>
</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -40,7 +39,6 @@ export default defineComponent({
return {
isFollowing: this.channel.isFollowing,
wait: false,
faSpinner, faPlus, faMinus,
};
},

View File

@ -2,10 +2,10 @@
<MkA :to="`/channels/${channel.id}`" class="eftoefju _panel" tabindex="-1">
<div class="banner" :style="bannerStyle">
<div class="fade"></div>
<div class="name"><Fa :icon="faSatelliteDish"/> {{ channel.name }}</div>
<div class="name"><i class="fas fa-satellite-dish"></i> {{ channel.name }}</div>
<div class="status">
<div>
<Fa :icon="faUsers" fixed-width/>
<i class="fas fa-users fa-fw"></i>
<I18n :src="$ts._channel.usersCount" tag="span" style="margin-left: 4px;">
<template #n>
<b>{{ channel.usersCount }}</b>
@ -13,7 +13,7 @@
</I18n>
</div>
<div>
<Fa :icon="faPencilAlt" fixed-width/>
<i class="fas fa-pencil-alt fa-fw"></i>
<I18n :src="$ts._channel.notesCount" tag="span" style="margin-left: 4px;">
<template #n>
<b>{{ channel.notesCount }}</b>
@ -35,7 +35,6 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSatelliteDish, faUsers, faPencilAlt } from '@fortawesome/free-solid-svg-icons';
export default defineComponent({
props: {
@ -57,7 +56,6 @@ export default defineComponent({
data() {
return {
faSatelliteDish, faUsers, faPencilAlt,
};
},
});
@ -123,7 +121,7 @@ export default defineComponent({
> footer {
padding: 12px 16px;
border-top: solid 1px var(--divider);
border-top: solid 0.5px var(--divider);
> span {
opacity: 0.7;

View File

@ -1,7 +1,6 @@
<script lang="ts">
import { defineComponent, h, TransitionGroup } from 'vue';
import { faAngleUp, faAngleDown } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
import MkAd from '@client/components/global/ad.vue';
export default defineComponent({
props: {
@ -18,17 +17,25 @@ export default defineComponent({
type: Boolean,
required: false,
default: false
}
},
noGap: {
type: Boolean,
required: false,
default: false
},
ad: {
type: Boolean,
required: false,
default: false
},
},
methods: {
focus() {
this.$slots.default[0].elm.focus();
}
},
render() {
const getDateText = (time: string) => {
getDateText(time: string) {
const date = new Date(time).getDate();
const month = new Date(time).getMonth() + 1;
return this.$t('monthAndDay', {
@ -36,15 +43,19 @@ export default defineComponent({
day: date.toString()
});
}
},
render() {
if (this.items.length === 0) return;
return h(this.$store.state.animation ? TransitionGroup : 'div', this.$store.state.animation ? {
class: 'sqadhkmv _list_',
class: 'sqadhkmv' + (this.noGap ? ' noGap _block' : ''),
name: 'list',
tag: 'div',
'data-direction': this.direction,
'data-reversed': this.reversed ? 'true' : 'false',
} : {
class: 'sqadhkmv _list_',
class: 'sqadhkmv' + (this.noGap ? ' noGap _block' : ''),
}, this.items.map((item, i) => {
const el = this.$slots.default({
item: item
@ -53,11 +64,7 @@ export default defineComponent({
if (
i != this.items.length - 1 &&
new Date(item.createdAt).getDate() != new Date(this.items[i + 1].createdAt).getDate() &&
!item._prId_ &&
!this.items[i + 1]._prId_ &&
!item._featuredId_ &&
!this.items[i + 1]._featuredId_
new Date(item.createdAt).getDate() != new Date(this.items[i + 1].createdAt).getDate()
) {
const separator = h('div', {
class: 'separator',
@ -66,25 +73,31 @@ export default defineComponent({
class: 'date'
}, [
h('span', [
h(FontAwesomeIcon, {
class: 'icon',
icon: faAngleUp,
h('i', {
class: 'fas fa-angle-up icon',
}),
getDateText(item.createdAt)
this.getDateText(item.createdAt)
]),
h('span', [
getDateText(this.items[i + 1].createdAt),
h(FontAwesomeIcon, {
class: 'icon',
icon: faAngleDown,
this.getDateText(this.items[i + 1].createdAt),
h('i', {
class: 'fas fa-angle-down icon',
})
])
]));
return [el, separator];
} else {
if (this.ad && item._shouldInsertAd_) {
return [h(MkAd, {
class: 'a', // advertiseの意(ブロッカー対策)
key: item.id + ':ad',
prefer: ['horizontal', 'horizontal-big'],
}), el];
} else {
return el;
}
}
}));
},
});
@ -92,6 +105,10 @@ export default defineComponent({
<style lang="scss">
.sqadhkmv {
> *:empty {
display: none;
}
> *:not(:last-child) {
margin-bottom: var(--margin);
}
@ -117,11 +134,7 @@ export default defineComponent({
transform: translateY(-64px);
}
}
}
</style>
<style lang="scss">
.sqadhkmv {
> .separator {
text-align: center;
@ -154,5 +167,18 @@ export default defineComponent({
}
}
}
&.noGap {
> * {
margin: 0 !important;
border: none;
border-radius: 0;
box-shadow: none;
&:not(:last-child) {
border-bottom: solid 0.5px var(--divider);
}
}
}
}
</style>

View File

@ -2,15 +2,15 @@
<MkModal ref="modal" @click="done(true)" @closed="$emit('closed')">
<div class="mk-dialog">
<div class="icon" v-if="icon">
<Fa :icon="icon"/>
<i :class="icon"></i>
</div>
<div class="icon" v-else-if="!input && !select" :class="type">
<Fa :icon="faCheck" v-if="type === 'success'"/>
<Fa :icon="faTimesCircle" v-if="type === 'error'"/>
<Fa :icon="faExclamationTriangle" v-if="type === 'warning'"/>
<Fa :icon="faInfoCircle" v-if="type === 'info'"/>
<Fa :icon="faQuestionCircle" v-if="type === 'question'"/>
<Fa :icon="faSpinner" pulse v-if="type === 'waiting'"/>
<i v-if="type === 'success'" class="fas fa-check"></i>
<i v-else-if="type === 'error'" class="fas fa-times-circle"></i>
<i v-else-if="type === 'warning'" class="fas fa-exclamation-triangle"></i>
<i v-else-if="type === 'info'" class="fas fa-info-circle"></i>
<i v-else-if="type === 'question'" class="fas fa-question-circle"></i>
<i v-else-if="type === 'waiting'" class="fas fa-spinner fa-pulse"></i>
</div>
<header v-if="title"><Mfm :text="title"/></header>
<div class="body" v-if="text"><Mfm :text="text"/></div>
@ -38,12 +38,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner, faInfoCircle, faExclamationTriangle, faCheck } from '@fortawesome/free-solid-svg-icons';
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
import MkModal from '@/components/ui/modal.vue';
import MkButton from '@/components/ui/button.vue';
import MkInput from '@/components/ui/input.vue';
import MkSelect from '@/components/ui/select.vue';
import MkModal from '@client/components/ui/modal.vue';
import MkButton from '@client/components/ui/button.vue';
import MkInput from '@client/components/ui/input.vue';
import MkSelect from '@client/components/ui/select.vue';
export default defineComponent({
components: {
@ -99,7 +97,6 @@ export default defineComponent({
return {
inputValue: this.input && this.input.default ? this.input.default : null,
selectedValue: this.select ? this.select.default ? this.select.default : this.select.items ? this.select.items[0].value : this.select.groupedItems[0].items[0].value : null,
faTimesCircle, faQuestionCircle, faSpinner, faInfoCircle, faExclamationTriangle, faCheck
};
},

View File

@ -1,33 +1,23 @@
<template>
<div class="zdjebgpv" ref="thumbnail">
<ImgWithBlurhash v-if="isThumbnailAvailable" :hash="file.blurhash" :src="file.thumbnailUrl" :alt="file.name" :title="file.name" :style="`object-fit: ${ fit }`"/>
<Fa :icon="faFileImage" class="icon" v-else-if="is === 'image'"/>
<Fa :icon="faFileVideo" class="icon" v-else-if="is === 'video'"/>
<Fa :icon="faMusic" class="icon" v-else-if="is === 'audio' || is === 'midi'"/>
<Fa :icon="faFileCsv" class="icon" v-else-if="is === 'csv'"/>
<Fa :icon="faFilePdf" class="icon" v-else-if="is === 'pdf'"/>
<Fa :icon="faFileAlt" class="icon" v-else-if="is === 'textfile'"/>
<Fa :icon="faFileArchive" class="icon" v-else-if="is === 'archive'"/>
<Fa :icon="faFile" class="icon" v-else/>
<Fa :icon="faFilm" class="icon-sub" v-if="isThumbnailAvailable && is === 'video'"/>
<i v-else-if="is === 'image'" class="fas fa-file-image icon"></i>
<i v-else-if="is === 'video'" class="fas fa-file-video icon"></i>
<i v-else-if="is === 'audio' || is === 'midi'" class="fas fa-music icon"></i>
<i v-else-if="is === 'csv'" class="fas fa-file-csv icon"></i>
<i v-else-if="is === 'pdf'" class="fas fa-file-pdf icon"></i>
<i v-else-if="is === 'textfile'" class="fas fa-file-alt icon"></i>
<i v-else-if="is === 'archive'" class="fas fa-file-archive icon"></i>
<i v-else class="fas fa-file icon"></i>
<i v-if="isThumbnailAvailable && is === 'video'" class="fas fa-film icon-sub"></i>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import {
faFile,
faFileAlt,
faFileImage,
faMusic,
faFileVideo,
faFileCsv,
faFilePdf,
faFileArchive,
faFilm
} from '@fortawesome/free-solid-svg-icons';
import ImgWithBlurhash from './img-with-blurhash.vue';
import { ColdDeviceStorage } from '@/store';
import ImgWithBlurhash from '@client/components/img-with-blurhash.vue';
import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
components: {
@ -49,15 +39,6 @@ export default defineComponent({
isContextmenuShowing: false,
isDragging: false,
faFile,
faFileAlt,
faFileImage,
faMusic,
faFileVideo,
faFileCsv,
faFilePdf,
faFileArchive,
faFilm
};
},
computed: {

View File

@ -20,8 +20,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XDrive from './drive.vue';
import XModalWindow from '@/components/ui/modal-window.vue';
import number from '@/filters/number';
import XModalWindow from '@client/components/ui/modal-window.vue';
import number from '@client/filters/number';
export default defineComponent({
components: {

View File

@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XDrive from './drive.vue';
import XWindow from '@/components/ui/window.vue';
import XWindow from '@client/components/ui/window.vue';
export default defineComponent({
components: {

View File

@ -32,12 +32,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
import copyToClipboard from '@/scripts/copy-to-clipboard';
import copyToClipboard from '@client/scripts/copy-to-clipboard';
import MkDriveFileThumbnail from './drive-file-thumbnail.vue';
import bytes from '@/filters/bytes';
import * as os from '@/os';
import bytes from '@client/filters/bytes';
import * as os from '@client/os';
export default defineComponent({
components: {
@ -83,26 +81,26 @@ export default defineComponent({
getMenu() {
return [{
text: this.$ts.rename,
icon: faICursor,
icon: 'fas fa-i-cursor',
action: this.rename
}, {
text: this.file.isSensitive ? this.$ts.unmarkAsSensitive : this.$ts.markAsSensitive,
icon: this.file.isSensitive ? faEye : faEyeSlash,
icon: this.file.isSensitive ? 'fas fa-eye' : 'fas fa-eye-slash',
action: this.toggleSensitive
}, null, {
text: this.$ts.copyUrl,
icon: faLink,
icon: 'fas fa-link',
action: this.copyUrl
}, {
type: 'a',
href: this.file.url,
target: '_blank',
text: this.$ts.download,
icon: faDownload,
icon: 'fas fa-download',
download: this.file.name
}, null, {
text: this.$ts.delete,
icon: faTrashAlt,
icon: 'fas fa-trash-alt',
danger: true,
action: this.deleteFile
}];
@ -330,8 +328,8 @@ export default defineComponent({
}
> .thumbnail {
width: 128px;
height: 128px;
width: 110px;
height: 110px;
margin: auto;
}

View File

@ -15,8 +15,8 @@
:title="title"
>
<p class="name">
<template v-if="hover"><Fa :icon="faFolderOpen" fixed-width/></template>
<template v-if="!hover"><Fa :icon="faFolder" fixed-width/></template>
<template v-if="hover"><i class="fas fa-folder-open fa-fw"></i></template>
<template v-if="!hover"><i class="fas fa-folder fa-fw"></i></template>
{{ folder.name }}
</p>
<p class="upload" v-if="$store.state.uploadFolder == folder.id">
@ -28,9 +28,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faFolder, faFolderOpen, faTrashAlt, faWindowRestore } from '@fortawesome/free-regular-svg-icons';
import * as os from '@/os';
import { faICursor } from '@fortawesome/free-solid-svg-icons';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -57,7 +55,6 @@ export default defineComponent({
hover: false,
draghover: false,
isDragging: false,
faFolder, faFolderOpen
};
},
@ -241,7 +238,7 @@ export default defineComponent({
onContextmenu(e) {
os.contextMenu([{
text: this.$ts.openInWindow,
icon: faWindowRestore,
icon: 'fas fa-window-restore',
action: () => {
os.popup(import('./drive-window.vue'), {
initialFolder: this.folder
@ -250,11 +247,11 @@ export default defineComponent({
}
}, null, {
text: this.$ts.rename,
icon: faICursor,
icon: 'fas fa-i-cursor',
action: this.rename
}, null, {
text: this.$ts.delete,
icon: faTrashAlt,
icon: 'fas fa-trash-alt',
danger: true,
action: this.deleteFolder
}], e);
@ -312,7 +309,7 @@ export default defineComponent({
font-size: 0.9em;
color: var(--desktopDriveFolderFg);
> [data-icon] {
> i {
margin-right: 4px;
margin-left: 2px;
text-align: left;

View File

@ -7,15 +7,14 @@
@dragleave="onDragleave"
@drop.stop="onDrop"
>
<i v-if="folder == null"><Fa :icon="faCloud"/></i>
<i v-if="folder == null" class="fas fa-cloud"></i>
<span>{{ folder == null ? $ts.drive : folder.name }}</span>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faCloud } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -29,7 +28,6 @@ export default defineComponent({
return {
hover: false,
draghover: false,
faCloud
};
},

View File

@ -4,14 +4,14 @@
<div class="path" @contextmenu.prevent.stop="() => {}">
<XNavFolder :class="{ current: folder == null }"/>
<template v-for="f in hierarchyFolders">
<span class="separator"><Fa :icon="faAngleRight"/></span>
<span class="separator"><i class="fas fa-angle-right"></i></span>
<XNavFolder :folder="f"/>
</template>
<span class="separator" v-if="folder != null"><Fa :icon="faAngleRight"/></span>
<span class="separator" v-if="folder != null"><i class="fas fa-angle-right"></i></span>
<span class="folder current" v-if="folder != null">{{ folder.name }}</span>
</div>
</nav>
<div class="main _section" :class="{ uploading: uploadings.length > 0, fetching }"
<div class="main" :class="{ uploading: uploadings.length > 0, fetching }"
ref="main"
@dragover.prevent.stop="onDragover"
@dragenter="onDragenter"
@ -47,13 +47,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faAngleRight, faFolderPlus, faICursor, faLink, faUpload } from '@fortawesome/free-solid-svg-icons';
import XNavFolder from './drive.nav-folder.vue';
import XFolder from './drive.folder.vue';
import XFile from './drive.file.vue';
import MkButton from './ui/button.vue';
import * as os from '@/os';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
import * as os from '@client/os';
export default defineComponent({
components: {
@ -125,7 +123,6 @@ export default defineComponent({
),
moreFilesElement: null as Element,
faAngleRight
};
},
@ -606,26 +603,26 @@ export default defineComponent({
type: 'label'
}, {
text: this.$ts.upload,
icon: faUpload,
icon: 'fas fa-upload',
action: () => { this.selectLocalFile(); }
}, {
text: this.$ts.fromUrl,
icon: faLink,
icon: 'fas fa-link',
action: () => { this.urlUpload(); }
}, null, {
text: this.folder ? this.folder.name : this.$ts.drive,
type: 'label'
}, this.folder ? {
text: this.$ts.renameFolder,
icon: faICursor,
icon: 'fas fa-i-cursor',
action: () => { this.renameFolder(this.folder); }
} : undefined, this.folder ? {
text: this.$ts.deleteFolder,
icon: faTrashAlt,
icon: 'fas fa-trash-alt',
action: () => { this.deleteFolder(this.folder); }
} : undefined, {
text: this.$ts.createFolder,
icon: faFolderPlus,
icon: 'fas fa-folder-plus',
action: () => { this.createFolder(); }
}];
},
@ -693,7 +690,7 @@ export default defineComponent({
opacity: 0.5;
cursor: default;
> [data-icon] {
> i {
margin: 0;
}
}
@ -704,6 +701,7 @@ export default defineComponent({
> .main {
flex: 1;
overflow: auto;
padding: var(--margin);
&, * {
user-select: none;
@ -735,7 +733,7 @@ export default defineComponent({
> .folder,
> .file {
flex-grow: 1;
width: 144px;
width: 128px;
margin: 4px;
box-sizing: border-box;
}
@ -743,7 +741,7 @@ export default defineComponent({
> .padding {
flex-grow: 1;
pointer-events: none;
width: 144px + 8px;
width: 128px + 8px;
}
}

View File

@ -6,8 +6,8 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import MkModal from '@/components/ui/modal.vue';
import MkEmojiPicker from '@/components/emoji-picker.vue';
import MkModal from '@client/components/ui/modal.vue';
import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({
components: {
@ -123,7 +123,7 @@ export default defineComponent({
> .index {
min-height: var(--height);
position: relative;
border-bottom: solid 1px var(--divider);
border-bottom: solid 0.5px var(--divider);
> .arrow {
position: absolute;
@ -181,7 +181,7 @@ export default defineComponent({
}
&.result {
border-bottom: solid 1px var(--divider);
border-bottom: solid 0.5px var(--divider);
&:empty {
display: none;

View File

@ -13,8 +13,8 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import MkWindow from '@/components/ui/window.vue';
import MkEmojiPicker from '@/components/emoji-picker.vue';
import MkWindow from '@client/components/ui/window.vue';
import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({
components: {
@ -119,7 +119,7 @@ export default defineComponent({
> .index {
min-height: var(--height);
position: relative;
border-bottom: solid 1px var(--divider);
border-bottom: solid 0.5px var(--divider);
> .arrow {
position: absolute;
@ -177,7 +177,7 @@ export default defineComponent({
}
&.result {
border-bottom: solid 1px var(--divider);
border-bottom: solid 0.5px var(--divider);
&:empty {
display: none;

View File

@ -1,7 +1,7 @@
<template>
<section>
<header class="_acrylic" @click="shown = !shown">
<Fa :icon="shown ? faChevronDown : faChevronUp" :key="shown" fixed-width class="toggle"/> <slot></slot> ({{ emojis.length }})
<i class="toggle fa-fw" :class="shown ? 'fas fa-chevron-down' : 'fas fa-chevron-up'"></i> <slot></slot> ({{ emojis.length }})
</header>
<div v-if="shown">
<button v-for="emoji in emojis"
@ -17,8 +17,7 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
import { getStaticImageUrl } from '@/scripts/get-static-image-url';
import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
export default defineComponent({
props: {
@ -36,7 +35,6 @@ export default defineComponent({
return {
getStaticImageUrl,
shown: this.initialShown,
faChevronUp, faChevronDown,
};
},

View File

@ -35,6 +35,7 @@
class="_button"
@click="chosen(emoji, $event)"
tabindex="0"
:key="emoji"
>
<MkEmoji :emoji="emoji" :normal="true"/>
</button>
@ -42,7 +43,7 @@
</section>
<section>
<header class="_acrylic"><Fa :icon="faClock" fixed-width/> {{ $ts.recentUsed }}</header>
<header class="_acrylic"><i class="far fa-clock fa-fw"></i> {{ $ts.recentUsed }}</header>
<div>
<button v-for="emoji in $store.state.recentlyUsedEmojis"
class="_button"
@ -64,25 +65,23 @@
</div>
</div>
<div class="tabs">
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><Fa :icon="faAsterisk" fixed-width/></button>
<button class="_button tab" :class="{ active: tab === 'custom' }" @click="tab = 'custom'"><Fa :icon="faLaugh" fixed-width/></button>
<button class="_button tab" :class="{ active: tab === 'unicode' }" @click="tab = 'unicode'"><Fa :icon="faLeaf" fixed-width/></button>
<button class="_button tab" :class="{ active: tab === 'tags' }" @click="tab = 'tags'"><Fa :icon="faHashtag" fixed-width/></button>
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><i class="fas fa-asterisk fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'custom' }" @click="tab = 'custom'"><i class="fas fa-laugh fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'unicode' }" @click="tab = 'unicode'"><i class="fas fa-leaf fa-fw"></i></button>
<button class="_button tab" :class="{ active: tab === 'tags' }" @click="tab = 'tags'"><i class="fas fa-hashtag fa-fw"></i></button>
</div>
</div>
</template>
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { emojilist } from '../../misc/emojilist';
import { getStaticImageUrl } from '@/scripts/get-static-image-url';
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice, faGlobe, faClock, faUser, faChevronDown, faShapes, faBicycle, faHashtag } from '@fortawesome/free-solid-svg-icons';
import { faHeart, faFlag, faLaugh } from '@fortawesome/free-regular-svg-icons';
import Particle from '@/components/particle.vue';
import * as os from '@/os';
import { isDeviceTouch } from '@/scripts/is-device-touch';
import { isMobile } from '@/scripts/is-mobile';
import { emojiCategories } from '@/instance';
import { emojilist } from '@/misc/emojilist';
import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import Particle from '@client/components/particle.vue';
import * as os from '@client/os';
import { isDeviceTouch } from '@client/scripts/is-device-touch';
import { isMobile } from '@client/scripts/is-mobile';
import { emojiCategories } from '@client/instance';
import XSection from './emoji-picker.section.vue';
export default defineComponent({
@ -106,7 +105,7 @@ export default defineComponent({
return {
emojilist: markRaw(emojilist),
getStaticImageUrl,
pinned: this.$store.state.reactions,
pinned: this.$store.reactiveState.reactions,
width: this.asReactionPicker ? this.$store.state.reactionPickerWidth : 3,
height: this.asReactionPicker ? this.$store.state.reactionPickerHeight : 2,
big: this.asReactionPicker ? isDeviceTouch : false,
@ -117,7 +116,6 @@ export default defineComponent({
searchResultUnicode: [],
tab: 'index',
categories: ['face', 'people', 'animals_and_nature', 'food_and_drink', 'activity', 'travel_and_places', 'objects', 'symbols', 'flags'],
faGlobe, faClock, faChevronDown, faAsterisk, faLaugh, faUtensils, faLeaf, faShapes, faBicycle, faHashtag,
};
},
@ -402,7 +400,7 @@ export default defineComponent({
> .tab {
flex: 1;
height: 38px;
border-top: solid 1px var(--divider);
border-top: solid 0.5px var(--divider);
&.active {
border-top: solid 1px var(--accent);
@ -425,7 +423,7 @@ export default defineComponent({
> div {
&:not(.index) {
padding: 4px 0 8px 0;
border-top: solid 1px var(--divider);
border-top: solid 0.5px var(--divider);
}
> header {
@ -492,7 +490,7 @@ export default defineComponent({
}
&.result {
border-bottom: solid 1px var(--divider);
border-bottom: solid 0.5px var(--divider);
&:empty {
display: none;

View File

@ -6,7 +6,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
components: {

View File

@ -1,13 +1,12 @@
<template>
<span class="mk-file-type-icon">
<template v-if="kind == 'image'"><Fa :icon="faFileImage"/></template>
<template v-if="kind == 'image'"><i class="fas fa-file-image"></i></template>
</span>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faFileImage } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -18,7 +17,6 @@ export default defineComponent({
},
data() {
return {
faFileImage
};
},
computed: {

View File

@ -6,31 +6,30 @@
>
<template v-if="!wait">
<template v-if="hasPendingFollowRequestFromYou && user.isLocked">
<span v-if="full">{{ $ts.followRequestPending }}</span><Fa :icon="faHourglassHalf"/>
<span v-if="full">{{ $ts.followRequestPending }}</span><i class="fas fa-hourglass-half"></i>
</template>
<template v-else-if="hasPendingFollowRequestFromYou && !user.isLocked"> <!-- つまりリモートフォローの場合 -->
<span v-if="full">{{ $ts.processing }}</span><Fa :icon="faSpinner" pulse/>
<span v-if="full">{{ $ts.processing }}</span><i class="fas fa-spinner fa-pulse"></i>
</template>
<template v-else-if="isFollowing">
<span v-if="full">{{ $ts.unfollow }}</span><Fa :icon="faMinus"/>
<span v-if="full">{{ $ts.unfollow }}</span><i class="fas fa-minus"></i>
</template>
<template v-else-if="!isFollowing && user.isLocked">
<span v-if="full">{{ $ts.followRequest }}</span><Fa :icon="faPlus"/>
<span v-if="full">{{ $ts.followRequest }}</span><i class="fas fa-plus"></i>
</template>
<template v-else-if="!isFollowing && !user.isLocked">
<span v-if="full">{{ $ts.follow }}</span><Fa :icon="faPlus"/>
<span v-if="full">{{ $ts.follow }}</span><i class="fas fa-plus"></i>
</template>
</template>
<template v-else>
<span v-if="full">{{ $ts.processing }}</span><Fa :icon="faSpinner" pulse fixed-width/>
<span v-if="full">{{ $ts.processing }}</span><i class="fas fa-spinner fa-pulse fa-fw"></i>
</template>
</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, faHourglassHalf } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -56,7 +55,6 @@ export default defineComponent({
hasPendingFollowRequestFromYou: this.user.hasPendingFollowRequestFromYou,
wait: false,
connection: null,
faSpinner, faPlus, faMinus, faHourglassHalf
};
},

View File

@ -0,0 +1,71 @@
<template>
<XModalWindow ref="dialog"
:width="370"
:height="400"
@close="$refs.dialog.close()"
@closed="$emit('closed')"
>
<template #header>{{ $ts.forgotPassword }}</template>
<form class="_monolithic_" @submit.prevent="onSubmit" v-if="$instance.enableEmail">
<div class="_section">
<MkInput v-model:value="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required>
<span>{{ $ts.username }}</span>
<template #prefix>@</template>
</MkInput>
<MkInput v-model:value="email" type="email" spellcheck="false" required>
<span>{{ $ts.emailAddress }}</span>
<template #desc>{{ $ts._forgotPassword.enterEmail }}</template>
</MkInput>
<MkButton type="submit" :disabled="processing" primary style="margin: 0 auto;">{{ $ts.send }}</MkButton>
</div>
<div class="_section">
<MkA to="/about" class="_link">{{ $ts._forgotPassword.ifNoEmail }}</MkA>
</div>
</form>
<div v-else>
{{ $ts._forgotPassword.contactAdmin }}
</div>
</XModalWindow>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import XModalWindow from '@client/components/ui/modal-window.vue';
import MkButton from '@client/components/ui/button.vue';
import MkInput from '@client/components/ui/input.vue';
import * as os from '@client/os';
export default defineComponent({
components: {
XModalWindow,
MkButton,
MkInput,
},
emits: ['done', 'closed'],
data() {
return {
username: '',
email: '',
processing: false,
};
},
methods: {
async onSubmit() {
this.processing = true;
await os.apiWithDialog('request-reset-password', {
username: this.username,
email: this.email,
});
this.$emit('done');
this.$refs.dialog.close();
}
}
});
</script>

View File

@ -48,7 +48,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XModalWindow from '@/components/ui/modal-window.vue';
import XModalWindow from '@client/components/ui/modal-window.vue';
import FormBase from './form/base.vue';
import FormInput from './form/input.vue';
import FormTextarea from './form/textarea.vue';

View File

@ -20,12 +20,21 @@ export default defineComponent({
<style lang="scss" scoped>
.rbusrurv {
line-height: 1.4em;
// 他のCSSからも参照されるので消さないように
--formXPadding: 32px;
--formYPadding: 32px;
--formContentHMargin: 16px;
font-size: 95%;
line-height: 1.3em;
background: var(--bg);
padding: 32px;
padding: var(--formYPadding) var(--formXPadding);
max-width: 750px;
margin: 0 auto;
&:not(.wide).max-width_400px {
padding: 32px 0;
--formXPadding: 0px;
> ::v-deep(*) {
._formPanel {
@ -36,16 +45,16 @@ export default defineComponent({
}
._form_group {
> * {
&:not(:first-child) {
> *:not(._formNoConcat) {
&:not(:last-child):not(._formNoConcatPrev) {
&._formPanel, ._formPanel {
border-top: none;
border-bottom: solid 0.5px var(--divider);
}
}
&:not(:last-child) {
&:not(:first-child):not(._formNoConcatNext) {
&._formPanel, ._formPanel {
border-bottom: solid 0.5px var(--divider);
border-top: none;
}
}
}

View File

@ -1,32 +1,48 @@
._formPanel {
background: var(--panel);
border-radius: var(--radius);
transition: background 0.2s ease;
&._formClickable {
&:hover {
//background: var(--panelHighlight);
}
&:active {
background: var(--panelHighlight);
transition: background 0s;
}
}
}
._formLabel,
._formCaption {
font-size: 80%;
color: var(--fgTransparentWeak);
&:empty {
display: none;
}
}
._formLabel {
font-size: 80%;
padding: 0 16px 8px 16px;
opacity: 0.8;
position: sticky;
top: var(--stickyTop, 0px);
z-index: 2;
margin: -8px calc(var(--formXPadding) * -1) 0 calc(var(--formXPadding) * -1);
padding: 8px calc(var(--formContentHMargin) + var(--formXPadding)) 8px calc(var(--formContentHMargin) + var(--formXPadding));
background: var(--X17);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
}
&:empty {
display: none;
}
._themeChanging_ ._formLabel {
transition: none !important;
background: transparent;
}
._formCaption {
font-size: 80%;
padding: 8px 16px 0 16px;
opacity: 0.8;
&:empty {
display: none;
}
padding: 8px var(--formContentHMargin) 0 var(--formContentHMargin);
}
._formItem {

View File

@ -1,7 +1,7 @@
<template>
<div class="vrtktovg _formItem" v-size="{ max: [500] }">
<div class="vrtktovg _formItem _formNoConcat" v-size="{ max: [500] }" v-sticky-container>
<div class="_formLabel"><slot name="label"></slot></div>
<div class="main _form_group">
<div class="main _form_group" ref="child">
<slot></slot>
</div>
<div class="_formCaption"><slot name="caption"></slot></div>
@ -9,33 +9,69 @@
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { defineComponent, onMounted, ref } from 'vue';
export default defineComponent({
setup(props, context) {
const child = ref<HTMLElement | null>(null);
const scanChild = () => {
if (child.value == null) return;
const els = Array.from(child.value.children);
for (let i = 0; i < els.length; i++) {
const el = els[i];
if (el.classList.contains('_formNoConcat')) {
if (els[i - 1]) els[i - 1].classList.add('_formNoConcatPrev');
if (els[i + 1]) els[i + 1].classList.add('_formNoConcatNext');
}
}
};
onMounted(() => {
scanChild();
const observer = new MutationObserver(records => {
scanChild();
});
observer.observe(child.value, {
childList: true,
subtree: false,
attributes: false,
characterData: false,
});
});
return {
child
};
}
});
</script>
<style lang="scss" scoped>
.vrtktovg {
> .main {
> ::v-deep(*) {
> ::v-deep(*):not(._formNoConcat) {
&:not(._formNoConcatNext) {
margin: 0;
&:not(:first-child) {
&._formPanel, ._formPanel {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
&:not(:last-child) {
&:not(:last-child):not(._formNoConcatPrev) {
&._formPanel, ._formPanel {
border-bottom: solid 0.5px var(--divider);
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
}
&:not(:first-child):not(._formNoConcatNext) {
&._formPanel, ._formPanel {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
}
}
}

View File

@ -0,0 +1,47 @@
<template>
<div class="fzenkabp _formItem">
<div class="_formPanel" :class="{ warn }">
<i v-if="warn" class="fas fa-exclamation-triangle"></i>
<i v-else class="fas fa-info-circle"></i>
<slot></slot>
</div>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
props: {
warn: {
type: Boolean,
required: false,
default: false
},
},
data() {
return {
};
}
});
</script>
<style lang="scss" scoped>
.fzenkabp {
> div {
padding: 14px 16px;
font-size: 90%;
background: var(--infoBg);
color: var(--infoFg);
&.warn {
background: var(--infoWarnBg);
color: var(--infoWarnFg);
}
> i {
margin-right: 4px;
}
}
}
</style>

View File

@ -30,13 +30,12 @@
</div>
<template #caption><slot name="desc"></slot></template>
<FormButton v-if="manualSave && changed" @click="updated" primary><Fa :icon="faSave"/> {{ $ts.save }}</FormButton>
<FormButton v-if="manualSave && changed" @click="updated" primary><i class="fas fa-save"></i> {{ $ts.save }}</FormButton>
</FormGroup>
</template>
<script lang="ts">
import { defineComponent, onMounted, onUnmounted, nextTick, ref, watch, computed, toRefs } from 'vue';
import { faExclamationCircle, faSave } from '@fortawesome/free-solid-svg-icons';
import './form.scss';
import FormButton from './button.vue';
import FormGroup from './group.vue';
@ -191,7 +190,6 @@ export default defineComponent({
onInput,
onKeydown,
updated,
faExclamationCircle, faSave,
};
},
});
@ -215,7 +213,7 @@ export default defineComponent({
}
> .input {
$height: 52px;
$height: 48px;
position: relative;
> input {

View File

@ -20,11 +20,19 @@ export default defineComponent({
.anocepby {
display: flex;
align-items: center;
padding: 14px 16px;
padding: 14px var(--formContentHMargin);
> .key {
margin-right: 12px;
white-space: nowrap;
}
> .value {
margin-left: auto;
opacity: 0.7;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
}
</style>

View File

@ -5,7 +5,7 @@
<span class="text"><slot></slot></span>
<span class="right">
<span class="text"><slot name="suffix"></slot></span>
<Fa :icon="faExternalLinkAlt" class="icon"/>
<i class="fas fa-external-link-alt icon"></i>
</span>
</a>
<MkA class="main _button _formPanel _formClickable" :class="{ active }" :to="to" :behavior="behavior" v-else>
@ -13,7 +13,7 @@
<span class="text"><slot></slot></span>
<span class="right">
<span class="text"><slot name="suffix"></slot></span>
<Fa :icon="faChevronRight" class="icon"/>
<i class="fas fa-chevron-right icon"></i>
</span>
</MkA>
</div>
@ -21,7 +21,6 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faChevronRight, faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';
import './form.scss';
export default defineComponent({
@ -45,7 +44,6 @@ export default defineComponent({
},
data() {
return {
faChevronRight, faExternalLinkAlt
};
}
});
@ -66,6 +64,7 @@ export default defineComponent({
&.active {
color: var(--accent);
background: var(--panelHighlight);
}
> .icon {

View File

@ -0,0 +1,102 @@
<template>
<FormGroup class="_formItem">
<template #label><slot></slot></template>
<div class="drooglns _formItem" :class="{ tall }">
<div class="input _formPanel">
<textarea class="_monospace"
v-model="v"
readonly
:spellcheck="false"
></textarea>
</div>
</div>
<template #caption><slot name="desc"></slot></template>
</FormGroup>
</template>
<script lang="ts">
import { defineComponent, ref, toRefs, watch } from 'vue';
import * as JSON5 from 'json5';
import './form.scss';
import FormGroup from './group.vue';
export default defineComponent({
components: {
FormGroup,
},
props: {
value: {
required: false
},
tall: {
type: Boolean,
required: false,
default: false
},
pre: {
type: Boolean,
required: false,
default: false
},
manualSave: {
type: Boolean,
required: false,
default: false
},
},
setup(props, context) {
const { value } = toRefs(props);
const v = ref('');
watch(() => value, newValue => {
v.value = JSON5.stringify(newValue.value, null, '\t');
}, {
immediate: true
});
return {
v,
};
}
});
</script>
<style lang="scss" scoped>
.drooglns {
position: relative;
> .input {
position: relative;
> textarea {
display: block;
width: 100%;
min-width: 100%;
max-width: 100%;
min-height: 130px;
margin: 0;
padding: 16px var(--formContentHMargin);
box-sizing: border-box;
font: inherit;
font-weight: normal;
font-size: 1em;
background: transparent;
border: none;
border-radius: 0;
outline: none;
box-shadow: none;
color: var(--fg);
tab-size: 2;
white-space: pre;
}
}
&.tall {
> .input {
> textarea {
min-height: 200px;
}
}
}
}
</style>

View File

@ -16,7 +16,7 @@
import { defineComponent } from 'vue';
import FormButton from './button.vue';
import FormGroup from './group.vue';
import paging from '@/scripts/paging';
import paging from '@client/scripts/paging';
export default defineComponent({
components: {

View File

@ -1,6 +1,6 @@
<script lang="ts">
import { defineComponent, h } from 'vue';
import MkRadio from '@/components/ui/radio.vue';
import MkRadio from '@client/components/ui/radio.vue';
import './form.scss';
export default defineComponent({
@ -18,6 +18,9 @@ export default defineComponent({
}
},
watch: {
modelValue() {
this.value = this.modelValue;
},
value() {
this.$emit('update:modelValue', this.value);
}
@ -69,8 +72,8 @@ export default defineComponent({
display: inline-block;
vertical-align: bottom;
position: relative;
width: 20px;
height: 20px;
width: 16px;
height: 16px;
margin-right: 8px;
background: none;
border: 2px solid var(--inputBorder);

View File

@ -69,7 +69,7 @@ export default defineComponent({
position: relative;
> .main {
padding: 24px 16px;
padding: 22px 16px;
> input {
display: block;

View File

@ -14,7 +14,7 @@
<slot></slot>
</select>
<div class="suffix">
<Fa :icon="faChevronDown"/>
<i class="fas fa-chevron-down"></i>
</div>
</div>
<div class="_formCaption"><slot name="caption"></slot></div>
@ -23,7 +23,6 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faChevronDown } from '@fortawesome/free-solid-svg-icons';
import './form.scss';
export default defineComponent({
@ -47,7 +46,6 @@ export default defineComponent({
},
data() {
return {
faChevronDown,
};
},
computed: {
@ -97,7 +95,7 @@ export default defineComponent({
font: inherit;
font-weight: normal;
font-size: 1em;
height: 52px;
height: 48px;
background: none;
border: none;
border-radius: 0;

View File

@ -0,0 +1,101 @@
<template>
<transition name="fade" mode="out-in">
<div class="_formItem" v-if="pending">
<div class="_formPanel">
<MkLoading/>
</div>
</div>
<div v-else-if="resolved" class="_formItem">
<slot :result="result"></slot>
</div>
<div class="_formItem" v-else>
<div class="_formPanel eiurkvay">
<div><i class="fas fa-exclamation-triangle"></i> {{ $ts.somethingHappened }}</div>
<MkButton inline @click="retry" class="retry"><i class="fas fa-redo-alt"></i> {{ $ts.retry }}</MkButton>
</div>
</div>
</transition>
</template>
<script lang="ts">
import { defineComponent, PropType, ref, watch } from 'vue';
import './form.scss';
import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
MkButton
},
props: {
p: {
type: Function as PropType<() => Promise<any>>,
required: true,
}
},
setup(props, context) {
const pending = ref(true);
const resolved = ref(false);
const rejected = ref(false);
const result = ref(null);
const process = () => {
if (props.p == null) {
return;
}
const promise = props.p();
pending.value = true;
resolved.value = false;
rejected.value = false;
promise.then((_result) => {
pending.value = false;
resolved.value = true;
result.value = _result;
});
promise.catch(() => {
pending.value = false;
rejected.value = true;
});
};
watch(() => props.p, () => {
process();
}, {
immediate: true
});
const retry = () => {
process();
};
return {
pending,
resolved,
rejected,
result,
retry,
};
}
});
</script>
<style lang="scss" scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.125s ease;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
.eiurkvay {
padding: 16px;
text-align: center;
> .retry {
margin-top: 16px;
}
}
</style>

View File

@ -57,7 +57,7 @@ export default defineComponent({
> .main {
position: relative;
display: flex;
padding: 16px;
padding: 14px 16px;
cursor: pointer;
> * {

View File

@ -18,13 +18,12 @@
</div>
<template #caption><slot name="desc"></slot></template>
<FormButton v-if="manualSave && changed" @click="updated" primary><Fa :icon="faSave"/> {{ $ts.save }}</FormButton>
<FormButton v-if="manualSave && changed" @click="updated" primary><i class="fas fa-save"></i> {{ $ts.save }}</FormButton>
</FormGroup>
</template>
<script lang="ts">
import { defineComponent, ref, toRefs, watch } from 'vue';
import { faSave } from '@fortawesome/free-solid-svg-icons';
import './form.scss';
import FormButton from './button.vue';
import FormGroup from './group.vue';
@ -106,7 +105,6 @@ export default defineComponent({
changed,
focus,
onInput,
faSave,
};
}
});

View File

@ -6,7 +6,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as katex from 'katex';import * as os from '@/os';
import * as katex from 'katex';import * as os from '@client/os';
export default defineComponent({
props: {

View File

@ -3,7 +3,7 @@
</template>
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@/os';
import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@client/os';
export default defineComponent({
components: {

View File

@ -0,0 +1,126 @@
<template>
<MkA :to="`/gallery/${post.id}`" class="ttasepnz _panel" tabindex="-1">
<div class="thumbnail">
<ImgWithBlurhash class="img" :src="post.files[0].thumbnailUrl" :hash="post.files[0].blurhash"/>
</div>
<article>
<header>
<MkAvatar :user="post.user" class="avatar"/>
</header>
<footer>
<span class="title">{{ post.title }}</span>
</footer>
</article>
</MkA>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { userName } from '@client/filters/user';
import ImgWithBlurhash from '@client/components/img-with-blurhash.vue';
import * as os from '@client/os';
export default defineComponent({
components: {
ImgWithBlurhash
},
props: {
post: {
type: Object,
required: true
},
},
methods: {
userName
}
});
</script>
<style lang="scss" scoped>
.ttasepnz {
display: block;
position: relative;
height: 200px;
&:hover {
text-decoration: none;
color: var(--accent);
> .thumbnail {
transform: scale(1.1);
}
> article {
> footer {
&:before {
opacity: 1;
}
}
}
}
> .thumbnail {
width: 100%;
height: 100%;
position: absolute;
transition: all 0.5s ease;
> .img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
> article {
position: absolute;
z-index: 1;
width: 100%;
height: 100%;
> header {
position: absolute;
top: 0;
width: 100%;
padding: 12px;
box-sizing: border-box;
display: flex;
> .avatar {
margin-left: auto;
width: 32px;
height: 32px;
}
}
> footer {
position: absolute;
bottom: 0;
width: 100%;
padding: 16px;
box-sizing: border-box;
color: #fff;
text-shadow: 0 0 8px #000;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
&:before {
content: "";
display: block;
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(rgba(0, 0, 0, 0.4), transparent);
opacity: 0;
transition: opacity 0.5s ease;
}
> .title {
font-weight: bold;
}
}
}
}
</style>

View File

@ -6,13 +6,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExpandAlt, faColumns, faExternalLinkAlt, faLink, faWindowMaximize } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
import copyToClipboard from '@/scripts/copy-to-clipboard';
import { router } from '@/router';
import { url } from '@/config';
import { popout } from '@/scripts/popout';
import { ColdDeviceStorage } from '@/store';
import * as os from '@client/os';
import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { router } from '@client/router';
import { url } from '@client/config';
import { popout } from '@client/scripts/popout';
import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
inject: {
@ -57,31 +56,31 @@ export default defineComponent({
type: 'label',
text: this.to,
}, {
icon: faWindowMaximize,
icon: 'fas fa-window-maximize',
text: this.$ts.openInWindow,
action: () => {
os.pageWindow(this.to);
}
}, this.sideViewHook ? {
icon: faColumns,
icon: 'fas fa-columns',
text: this.$ts.openInSideView,
action: () => {
this.sideViewHook(this.to);
}
} : undefined, {
icon: faExpandAlt,
icon: 'fas fa-expand-alt',
text: this.$ts.showInPage,
action: () => {
this.$router.push(this.to);
}
}, null, {
icon: faExternalLinkAlt,
icon: 'fas fa-external-link-alt',
text: this.$ts.openInNewTab,
action: () => {
window.open(this.to, '_blank');
}
}, {
icon: faLink,
icon: 'fas fa-link',
text: this.$ts.copyLink,
action: () => {
copyToClipboard(`${url}${this.to}`);
@ -93,6 +92,10 @@ export default defineComponent({
os.pageWindow(this.to);
},
modalWindow() {
os.modalPageWindow(this.to);
},
popout() {
popout(this.to);
},
@ -111,6 +114,8 @@ export default defineComponent({
if (this.behavior) {
if (this.behavior === 'window') {
return this.window();
} else if (this.behavior === 'modalWindow') {
return this.modalWindow();
}
}

View File

@ -1,5 +1,5 @@
<template>
<span class="mk-acct" v-once>
<span class="mk-acct">
<span class="name">@{{ user.username }}</span>
<span class="host" v-if="user.host || detail || $store.state.showFullAcct">@{{ user.host || host }}</span>
</span>
@ -7,11 +7,20 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { toUnicode } from 'punycode';
import { host } from '@/config';
import { toUnicode } from 'punycode/';
import { host } from '@client/config';
export default defineComponent({
props: ['user', 'detail'],
props: {
user: {
type: Object,
required: true
},
detail: {
type: Boolean,
default: false
},
},
data() {
return {
host: toUnicode(host),

View File

@ -0,0 +1,200 @@
<template>
<div class="qiivuoyo" v-if="ad">
<div class="main" :class="ad.place" v-if="!showMenu">
<a :href="ad.url" target="_blank">
<img :src="ad.imageUrl">
<button class="_button menu" @click.prevent.stop="toggleMenu"><span class="fas fa-info-circle"></span></button>
</a>
</div>
<div class="menu" v-else>
<div class="body">
<div>Ads by {{ host }}</div>
<!--<MkButton class="button" primary>{{ $ts._ad.like }}</MkButton>-->
<MkButton v-if="ad.ratio !== 0" class="button" @click="reduceFrequency">{{ $ts._ad.reduceFrequencyOfThisAd }}</MkButton>
<button class="_textButton" @click="toggleMenu">{{ $ts._ad.back }}</button>
</div>
</div>
</div>
<div v-else></div>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
import { Instance, instance } from '@client/instance';
import { host } from '@client/config';
import MkButton from '@client/components/ui/button.vue';
import { defaultStore } from '@client/store';
import * as os from '@client/os';
export default defineComponent({
components: {
MkButton
},
props: {
prefer: {
type: Array,
required: true
},
specify: {
type: Object,
required: false
},
},
setup(props) {
const showMenu = ref(false);
const toggleMenu = () => {
showMenu.value = !showMenu.value;
};
const choseAd = (): Instance['ads'][number] | null => {
if (props.specify) {
return props.specify as Instance['ads'][number];
}
const allAds = instance.ads.map(ad => defaultStore.state.mutedAds.includes(ad.id) ? {
...ad,
ratio: 0
} : ad);
let ads = allAds.filter(ad => props.prefer.includes(ad.place));
if (ads.length === 0) {
ads = allAds.filter(ad => ad.place === 'square');
}
const lowPriorityAds = ads.filter(ad => ad.ratio === 0);
ads = ads.filter(ad => ad.ratio !== 0);
if (ads.length === 0) {
if (lowPriorityAds.length !== 0) {
return lowPriorityAds[Math.floor(Math.random() * lowPriorityAds.length)];
} else {
return null;
}
}
const totalFactor = ads.reduce((a, b) => a + b.ratio, 0);
const r = Math.random() * totalFactor;
let stackedFactor = 0;
for (const ad of ads) {
if (r >= stackedFactor && r <= stackedFactor + ad.ratio) {
return ad;
} else {
stackedFactor += ad.ratio;
}
}
return null;
};
const chosen = ref(choseAd());
const reduceFrequency = () => {
if (chosen.value == null) return;
if (defaultStore.state.mutedAds.includes(chosen.value.id)) return;
defaultStore.push('mutedAds', chosen.value.id);
os.success();
chosen.value = choseAd();
showMenu.value = false;
};
return {
ad: chosen,
showMenu,
toggleMenu,
host,
reduceFrequency,
};
}
});
</script>
<style lang="scss" scoped>
.qiivuoyo {
background-size: auto auto;
background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--ad) 8px, var(--ad) 14px );
> .main {
text-align: center;
> a {
display: inline-block;
position: relative;
vertical-align: bottom;
&:hover {
> img {
filter: contrast(120%);
}
}
> img {
display: block;
object-fit: contain;
margin: auto;
}
> .menu {
position: absolute;
top: 0;
right: 0;
background: var(--panel);
}
}
&.square {
> a ,
> a > img {
max-width: min(300px, 100%);
max-height: 300px;
}
}
&.horizontal {
padding: 8px;
> a ,
> a > img {
max-width: min(600px, 100%);
max-height: 80px;
}
}
&.horizontal-big {
padding: 8px;
> a ,
> a > img {
max-width: min(600px, 100%);
max-height: 250px;
}
}
&.vertical {
> a ,
> a > img {
max-width: min(100px, 100%);
}
}
}
> .menu {
padding: 8px;
text-align: center;
> .body {
padding: 8px;
margin: 0 auto;
max-width: 400px;
border: solid 1px var(--divider);
> .button {
margin: 8px auto;
}
}
}
}
</style>

View File

@ -1,19 +1,25 @@
<template>
<span class="eiwwqkts _noSelect" :class="{ cat }" :title="acct(user)" v-if="disableLink" v-user-preview="disablePreview ? undefined : user.id" @click="onClick">
<img class="inner" :src="url" decoding="async"/>
<MkUserOnlineIndicator v-if="showIndicator" class="indicator" :user="user"/>
</span>
<MkA class="eiwwqkts _noSelect" :class="{ cat }" :to="userPage(user)" :title="acct(user)" :target="target" v-else v-user-preview="disablePreview ? undefined : user.id">
<img class="inner" :src="url" decoding="async"/>
<MkUserOnlineIndicator v-if="showIndicator" class="indicator" :user="user"/>
</MkA>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { getStaticImageUrl } from '@/scripts/get-static-image-url';
import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash';
import { acct, userPage } from '@/filters/user';
import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { extractAvgColorFromBlurhash } from '@client/scripts/extract-avg-color-from-blurhash';
import { acct, userPage } from '@client/filters/user';
import MkUserOnlineIndicator from '@client/components/user-online-indicator.vue';
export default defineComponent({
components: {
MkUserOnlineIndicator
},
props: {
user: {
type: Object,
@ -30,6 +36,10 @@ export default defineComponent({
disablePreview: {
required: false,
default: false
},
showIndicator: {
required: false,
default: false
}
},
emits: ['click'],
@ -93,7 +103,7 @@ export default defineComponent({
}
}
.inner {
> .inner {
position: absolute;
bottom: 0;
left: 0;
@ -106,5 +116,14 @@ export default defineComponent({
width: 100%;
height: 100%;
}
> .indicator {
position: absolute;
z-index: 1;
bottom: 0;
left: 0;
width: 20%;
height: 20%;
}
}
</style>

View File

@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { getStaticImageUrl } from '@/scripts/get-static-image-url';
import { twemojiSvgBase } from '@/../misc/twemoji-base';
import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { twemojiSvgBase } from '@client/../misc/twemoji-base';
export default defineComponent({
props: {

View File

@ -2,7 +2,7 @@
<transition :name="$store.state.animation ? 'zoom' : ''" appear>
<div class="mjndxjcg">
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
<p><Fa :icon="faExclamationTriangle"/> {{ $ts.somethingHappened }}</p>
<p><i class="fas fa-exclamation-triangle"></i> {{ $ts.somethingHappened }}</p>
<MkButton @click="() => $emit('retry')" class="button">{{ $ts.retry }}</MkButton>
</div>
</transition>
@ -10,8 +10,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
import MkButton from '@/components/ui/button.vue';
import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
@ -19,7 +18,6 @@ export default defineComponent({
},
data() {
return {
faExclamationTriangle
};
},
});

View File

@ -1,12 +1,11 @@
<template>
<div class="yxspomdl" :class="{ inline }">
<div class="yxspomdl" :class="{ inline, colored }">
<div class="ring"></div>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import * as os from '@/os';
export default defineComponent({
props: {
@ -14,6 +13,11 @@ export default defineComponent({
type: Boolean,
required: false,
default: false
},
colored: {
type: Boolean,
required: false,
default: true
}
}
});
@ -32,6 +36,11 @@ export default defineComponent({
.yxspomdl {
padding: 32px;
text-align: center;
cursor: wait;
&.colored {
color: var(--accent);
}
&.inline {
display: inline;
@ -41,15 +50,23 @@ export default defineComponent({
width: 32px;
height: 32px;
}
> .ring {
&:before,
&:after {
width: 32px;
height: 32px;
}
}
}
> .ring {
position: relative;
display: inline-block;
opacity: 0.7;
vertical-align: middle;
}
> .ring:after {
&:before,
&:after {
content: " ";
display: block;
box-sizing: border-box;
@ -57,8 +74,19 @@ export default defineComponent({
height: 48px;
border-radius: 50%;
border: solid 4px;
}
&:before {
border-color: currentColor;
opacity: 0.3;
}
&:after {
position: absolute;
top: 0;
border-color: currentColor transparent transparent transparent;
animation: ring 0.5s linear infinite;
}
}
}
</style>

View File

@ -4,7 +4,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import MfmCore from '@/components/mfm';
import MfmCore from '@client/components/mfm';
export default defineComponent({
components: {

View File

@ -15,17 +15,16 @@
<span class="pathname" v-if="pathname != ''">{{ self ? pathname.substr(1) : pathname }}</span>
<span class="query">{{ query }}</span>
<span class="hash">{{ hash }}</span>
<Fa :icon="faExternalLinkSquareAlt" v-if="target === '_blank'" class="icon"/>
<i v-if="target === '_blank'" class="fas fa-external-link-square-alt icon"></i>
</component>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { toUnicode as decodePunycode } from 'punycode';
import { url as local } from '@/config';
import { isDeviceTouch } from '@/scripts/is-device-touch';
import * as os from '@/os';
import { toUnicode as decodePunycode } from 'punycode/';
import { url as local } from '@client/config';
import { isDeviceTouch } from '@client/scripts/is-device-touch';
import * as os from '@client/os';
export default defineComponent({
props: {
@ -55,7 +54,6 @@ export default defineComponent({
hideTimer: null,
checkTimer: null,
close: null,
faExternalLinkSquareAlt
};
},
created() {
@ -72,7 +70,7 @@ export default defineComponent({
if (!document.body.contains(this.$el)) return;
if (this.close) return;
const { dispose } = await os.popup(import('@/components/url-preview-popup.vue'), {
const { dispose } = await os.popup(import('@client/components/url-preview-popup.vue'), {
url: this.url,
source: this.$el
});
@ -115,8 +113,6 @@ export default defineComponent({
> .icon {
padding-left: 2px;
font-size: .9em;
font-weight: 400;
font-style: normal;
}
> .self {

Some files were not shown because too many files have changed in this diff Show More