Compare commits

...

759 Commits

Author SHA1 Message Date
3d62bd8007 10.75.0 2019-01-12 13:27:14 +09:00
7ad9560f53 Implement instance info page 2019-01-12 11:27:23 +09:00
c135d02895 Update CHANGELOG.md 2019-01-12 09:42:49 +09:00
0757f67bde [Client] specifiedのアイコンを戻した 2019-01-12 09:40:53 +09:00
c5dc25cb9e Revert "[Client] Renote数の表示を廃止"
This reverts commit d7af18efbd.
2019-01-12 09:38:44 +09:00
0fcf422dec [Client] Improve UI 2019-01-12 09:34:02 +09:00
21e801a325 🎨 2019-01-12 09:17:23 +09:00
183faf3b2a [Client] Resolve #3881 2019-01-12 09:13:35 +09:00
9fc66a2d1e Update terser-webpack-plugin requirement from 1.1.0 to 1.2.1 (#3867)
Updates the requirements on [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) to permit the latest version.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/commits/v1.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-11 19:58:16 +09:00
12cf598e6b Fix bug (for return) (#3878) 2019-01-11 17:53:53 +09:00
dd6cd6332c Update CHANGELOG.md 2019-01-11 16:00:09 +09:00
20ee2118ee モデレーターを凍結できないようにする (#3877) 2019-01-11 08:12:10 +09:00
1546160f6a モデレーター登録を解除できるように (#3876) 2019-01-11 08:11:24 +09:00
dd77a6194e Hide NSFW in Photos (#3875) 2019-01-11 08:10:39 +09:00
203fba0216 管理画面でユーザーを状態でフィルタできるように (#3873) 2019-01-11 08:09:44 +09:00
826a2466b7 管理者がサインイン履歴を参照できるツール (#3870)
* 管理者がサインイン履歴を参照できるツール

* remove debug code
2019-01-11 08:07:09 +09:00
273bc6507a ダイレクトを非公開のように使えるようにする (#3869) 2019-01-11 08:06:05 +09:00
2b13969b26 Supports toggle password in SMTP settings (#3868) 2019-01-11 08:05:36 +09:00
2f10ff1a2e Fix style 2019-01-10 19:23:22 +09:00
1f52aea193 Update CHANGELOG.md 2019-01-10 17:53:56 +09:00
0a0e76679e Add manage and docker docs in french and correct mistake in english (#3863) 2019-01-10 10:24:04 +09:00
845f3436cc Change SMTP password field to have password type (#3861) 2019-01-10 10:23:13 +09:00
f6a8c8cf76 Toggle show/hide password (#3865)
* Toggle show/hide password

* hoverでアンダーラインが中途半端に出てダサいので出さないように

* Update signin.vue
2019-01-10 10:22:45 +09:00
af61a7a17f 10.74.0 2019-01-09 15:32:36 +09:00
667ad8fe96 Update CHANGELOG.md 2019-01-09 15:19:00 +09:00
e1cc2394fa Use cached and asynchronous DNS resolver for AP delivery (#3859) 2019-01-09 15:17:54 +09:00
04e1e48f17 Hide invisible notes from timeline (#3852) 2019-01-08 21:02:00 +09:00
c417e2f4a1 🎨 2019-01-08 18:00:05 +09:00
02a27a8b12 ドライブの管理画面でファイルのオリジナルURLを表示するように 2019-01-08 17:45:16 +09:00
d775e19059 Update CHANGELOG.md 2019-01-08 13:33:50 +09:00
35e7dca2bb Resolve #3847 (#3849)
* Update notifications.ts

* Update notifications.ts

* Update notifications.ts

* Update notifications.ts

* Add missing semicolon

* Improve readability

* Fix typo
2019-01-08 13:32:28 +09:00
6c4ea5e087 Merge pull request #3842 from syuilo/l10n_develop
New Crowdin translations
2019-01-07 18:23:24 +09:00
54a1e500e2 New translations ja-JP.yml (French) 2019-01-07 14:12:02 +09:00
450ed2c471 New translations ja-JP.yml (English) 2019-01-07 07:02:09 +09:00
bf97fcb2fd Update README.md [AUTOGEN] (#3845) 2019-01-07 06:53:25 +09:00
4edeae07a0 Update README.md [AUTOGEN] (#3843) 2019-01-07 06:52:56 +09:00
8e19e4d33b New translations ja-JP.yml (Korean) 2019-01-06 22:22:34 +09:00
2a774c9414 Update update_readme_patreon.sh
Patreon API updates
2019-01-06 18:20:47 +09:00
6f50ed327d New translations ja-JP.yml (Norwegian) 2019-01-06 17:52:52 +09:00
a51d384f19 New translations ja-JP.yml (Dutch) 2019-01-06 17:52:48 +09:00
e2b2e4633a New translations ja-JP.yml (Japanese, Kansai) 2019-01-06 17:52:43 +09:00
46ec773128 New translations ja-JP.yml (Spanish) 2019-01-06 17:52:37 +09:00
1827a65874 New translations ja-JP.yml (Russian) 2019-01-06 17:52:32 +09:00
1b4dd64cbe New translations ja-JP.yml (Portuguese) 2019-01-06 17:52:28 +09:00
95b7d84025 New translations ja-JP.yml (Polish) 2019-01-06 17:52:22 +09:00
137b081b8a New translations ja-JP.yml (Korean) 2019-01-06 17:52:18 +09:00
76af9bbda7 New translations ja-JP.yml (Italian) 2019-01-06 17:52:14 +09:00
17ab07ae9c New translations ja-JP.yml (German) 2019-01-06 17:52:09 +09:00
4c4d06e49b New translations ja-JP.yml (French) 2019-01-06 17:52:05 +09:00
5d9ef68f14 New translations ja-JP.yml (English) 2019-01-06 17:51:59 +09:00
4689cf5591 New translations ja-JP.yml (Chinese Simplified) 2019-01-06 17:51:54 +09:00
58e7edf08a New translations ja-JP.yml (Catalan) 2019-01-06 17:51:50 +09:00
9c6c281ac3 Update CHANGELOG.md 2019-01-06 17:47:05 +09:00
2326d6208b Merge pull request #3811 from syuilo/l10n_develop
New Crowdin translations
2019-01-06 17:46:09 +09:00
cd4be4116b Fix sharedInbox recovery code (#3840) 2019-01-06 17:45:53 +09:00
6697ca243c Update README.md [AUTOGEN] (#3841) 2019-01-06 17:45:34 +09:00
15ce89a88d Resolve #3078 (#3838) 2019-01-06 17:45:14 +09:00
4b13278a41 Update README.md [AUTOGEN] (#3834) 2019-01-06 17:44:36 +09:00
e01167fcab Merge pull request #3816 from syuilo/dependabot/npm_and_yarn/nodemailer-5.0.0
Update nodemailer requirement from 4.7.0 to 5.0.0
2019-01-06 13:29:05 +09:00
719ff26e79 Merge pull request #3830 from syuilo/dependabot/npm_and_yarn/moment-2.23.0
Update moment requirement from 2.22.2 to 2.23.0
2019-01-06 13:28:57 +09:00
2657328ac1 Merge pull request #3831 from syuilo/dependabot/npm_and_yarn/vue-marquee-text-component-1.1.1
Update vue-marquee-text-component requirement from 1.1.0 to 1.1.1
2019-01-06 13:28:49 +09:00
4b7cef239e Merge pull request #3817 from syuilo/dependabot/npm_and_yarn/@fortawesome/fontawesome-svg-core-1.2.12
Update @fortawesome/fontawesome-svg-core requirement from 1.2.8 to 1.2.12
2019-01-06 13:28:39 +09:00
49d9e51f72 Merge branch 'develop' into dependabot/npm_and_yarn/@fortawesome/fontawesome-svg-core-1.2.12 2019-01-06 13:28:33 +09:00
40a5f79d76 Merge pull request #3819 from syuilo/dependabot/npm_and_yarn/@fortawesome/free-brands-svg-icons-5.6.3
Update @fortawesome/free-brands-svg-icons requirement from 5.6.0 to 5.6.3
2019-01-06 13:27:56 +09:00
9cfd0b7351 Merge pull request #3818 from syuilo/dependabot/npm_and_yarn/@types/elasticsearch-5.0.30
Update @types/elasticsearch requirement from 5.0.29 to 5.0.30
2019-01-06 13:27:44 +09:00
2223ecf890 Merge pull request #3832 from syuilo/dependabot/npm_and_yarn/@types/koa-2.0.48
Update @types/koa requirement from 2.0.47 to 2.0.48
2019-01-06 13:27:36 +09:00
06bad9c501 Merge pull request #3833 from syuilo/dependabot/npm_and_yarn/@types/redis-2.8.10
Update @types/redis requirement from 2.8.8 to 2.8.10
2019-01-06 13:27:25 +09:00
a479e65f3e Compact URL preview (#3835)
* Compact url-preview

* fix header

* increase limit

* better limit

* Revert "better limit"

This reverts commit ef396f773394068b0b7e37fccff31c70661b3978.

ハードリミットかけるならサーバー上でかけたほうが良さそう

* Revert "increase limit"

This reverts commit 72c10a456ba37151a4d88d11544b0ff9daabd284.
2019-01-06 12:56:13 +09:00
a2e99e46b9 New translations ja-JP.yml (Polish) 2019-01-06 08:22:03 +09:00
07a27cfb9a New translations ja-JP.yml (Polish) 2019-01-06 08:11:40 +09:00
77f3a0d3a9 New translations ja-JP.yml (Polish) 2019-01-06 08:01:48 +09:00
f9065943c5 Fix #3827 (#3837) 2019-01-06 04:00:30 +09:00
d0aff4409d Locked mark (#3836) 2019-01-05 19:59:10 +09:00
84ea1fbd4d Fix typo: not -> note
1344ffa67d (commitcomment-31817792)
2019-01-05 10:29:46 +09:00
d1d92be09a New translations ja-JP.yml (English) 2019-01-05 02:11:58 +09:00
52b23af97e Update @types/redis requirement from 2.8.8 to 2.8.10
Updates the requirements on [@types/redis](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 20:22:40 +00:00
b76cd18dea Update @types/koa requirement from 2.0.47 to 2.0.48
Updates the requirements on [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 20:20:43 +00:00
cd3b30bf5c Update vue-marquee-text-component requirement from 1.1.0 to 1.1.1
Updates the requirements on [vue-marquee-text-component](https://github.com/EvodiaAut/vue-marquee-text-component) to permit the latest version.
- [Release notes](https://github.com/EvodiaAut/vue-marquee-text-component/releases)
- [Commits](https://github.com/EvodiaAut/vue-marquee-text-component/commits/v1.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 20:18:49 +00:00
b87ebc6f9d Update moment requirement from 2.22.2 to 2.23.0
Updates the requirements on [moment](https://github.com/moment/moment) to permit the latest version.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/commits/2.23.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 20:17:22 +00:00
4d7d119524 Update CHANGELOG.md 2019-01-04 04:54:28 +09:00
b4b6e9548d Rename 2019-01-04 03:52:50 +09:00
ebf9cd18c8 Make instance logo customisable (#3829) 2019-01-04 03:02:40 +09:00
b1ccbb2deb New translations ja-JP.yml (English) 2019-01-04 00:43:55 +09:00
562cd6ad0b Improve readability 2019-01-03 12:34:08 +09:00
a832672b59 Update file-type requirement from 10.6.0 to 10.7.0 (#3815)
Updates the requirements on [file-type](https://github.com/sindresorhus/file-type) to permit the latest version.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/commits/v10.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 11:47:32 +09:00
309058f209 Update webpack requirement from 4.26.1 to 4.28.3 (#3822)
Updates the requirements on [webpack](https://github.com/webpack/webpack) to permit the latest version.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/commits/v4.28.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 08:39:17 +09:00
2a344dfbd8 adds ko-KR な to にゃ (#3820)
* adds ko-KR な to にゃ
- this only take considers pre-composed "Hangul Syllables",
not composable area "Hangul Jamo" which are not used commonly
- 56 is '냐' - '나'

* replace magic number as suggested
2019-01-03 08:38:26 +09:00
866d4cd59a Update vue-i18n requirement from 8.3.2 to 8.6.0 (#3821)
Updates the requirements on [vue-i18n](https://github.com/kazupon/vue-i18n) to permit the latest version.
- [Release notes](https://github.com/kazupon/vue-i18n/releases)
- [Changelog](https://github.com/kazupon/vue-i18n/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/kazupon/vue-i18n/commits/v8.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 08:37:44 +09:00
165350cca6 Update apexcharts requirement from 2.4.2 to 2.5.1 (#3826)
Updates the requirements on [apexcharts](https://github.com/apexcharts/apexcharts.js) to permit the latest version.
- [Release notes](https://github.com/apexcharts/apexcharts.js/releases)
- [Changelog](https://github.com/apexcharts/apexcharts.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apexcharts/apexcharts.js/commits/v2.5.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-03 08:36:00 +09:00
8c21b8a9a6 Update CHANGELOG.md 2019-01-02 18:10:23 +09:00
41e3a9a004 Tune AP URL negotiating with Accept (#3824) 2019-01-02 18:07:32 +09:00
4dc6ec5387 New translations ja-JP.yml (French) 2019-01-02 14:41:41 +09:00
96515c4544 Resolve #3813 (#3814) 2019-01-02 03:35:42 +09:00
b3637b5e8a New translations ja-JP.yml (Korean) 2019-01-02 00:22:17 +09:00
43bcdf397e Update @fortawesome/free-brands-svg-icons requirement
Updates the requirements on [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 20:27:42 +00:00
22c5db7121 Update @types/elasticsearch requirement from 5.0.29 to 5.0.30
Updates the requirements on [@types/elasticsearch](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 20:25:44 +00:00
1c6a8f8691 Update @fortawesome/fontawesome-svg-core requirement
Updates the requirements on [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 20:21:31 +00:00
31b5175bb0 Update nodemailer requirement from 4.7.0 to 5.0.0
Updates the requirements on [nodemailer](https://github.com/nodemailer/nodemailer) to permit the latest version.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/commits/v5.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 20:17:17 +00:00
9add59aca9 2019 🎉 2019-01-01 00:11:07 +09:00
16c65173c1 New translations ja-JP.yml (French) 2018-12-31 06:12:15 +09:00
4f6ae4633f New translations ja-JP.yml (French) 2018-12-31 06:01:44 +09:00
8aa1577713 New translations ja-JP.yml (French) 2018-12-31 05:52:42 +09:00
5bd41704ae 10.73.0 2018-12-31 02:38:13 +09:00
4d0b335748 [Client] Improve theme 🎨 2018-12-31 02:33:03 +09:00
5692ae59a1 [Client] Improve theming 🎨 2018-12-31 01:15:32 +09:00
84f1ce866b [Client] line thiknessの設定はデバイスに保存するように 2018-12-31 00:59:13 +09:00
e68c6175ce Fix bug 2018-12-31 00:50:56 +09:00
0de11c3636 🎨 2018-12-31 00:50:14 +09:00
1f70657d4a Merge pull request #3798 from syuilo/l10n_develop
New Crowdin translations
2018-12-31 00:45:51 +09:00
73646aac9b New translations ja-JP.yml (English) 2018-12-30 19:11:39 +09:00
e72c590c6b 10.72.0 2018-12-30 14:52:41 +09:00
06e026b346 New translations ja-JP.yml (English) 2018-12-30 14:51:40 +09:00
5621d5725c [Client] Fix bug 2018-12-30 14:43:03 +09:00
14d0a07b29 New translations ja-JP.yml (English) 2018-12-30 14:21:40 +09:00
105fefd114 Clean up 2018-12-30 14:19:22 +09:00
f81c10fe62 New translations ja-JP.yml (Norwegian) 2018-12-30 14:13:06 +09:00
86a2aa42a4 New translations ja-JP.yml (Dutch) 2018-12-30 14:13:00 +09:00
42f5c3fe22 New translations ja-JP.yml (Japanese, Kansai) 2018-12-30 14:12:54 +09:00
975740464c New translations ja-JP.yml (Spanish) 2018-12-30 14:12:49 +09:00
c57bffb142 モバイル版にも設定を追加 2018-12-30 14:12:46 +09:00
d92a2cdb55 New translations ja-JP.yml (Russian) 2018-12-30 14:12:43 +09:00
5b91463233 New translations ja-JP.yml (Portuguese) 2018-12-30 14:12:38 +09:00
39eed3378f New translations ja-JP.yml (Polish) 2018-12-30 14:12:33 +09:00
cf98d40a44 New translations ja-JP.yml (Korean) 2018-12-30 14:12:28 +09:00
7d6436c90e New translations ja-JP.yml (Italian) 2018-12-30 14:12:24 +09:00
0acf3a8f6d New translations ja-JP.yml (German) 2018-12-30 14:12:19 +09:00
8b7324c8d3 New translations ja-JP.yml (French) 2018-12-30 14:12:13 +09:00
a0b0d5dff7 New translations ja-JP.yml (English) 2018-12-30 14:12:07 +09:00
bef0e36665 New translations ja-JP.yml (Chinese Simplified) 2018-12-30 14:12:02 +09:00
766e721ff3 New translations ja-JP.yml (Catalan) 2018-12-30 14:11:57 +09:00
93ad4b359e 🎨 2018-12-30 14:08:40 +09:00
b3032ad84d Better setting 2018-12-30 14:05:13 +09:00
4f76acd249 🎨 2018-12-30 14:00:57 +09:00
fcc4b2c704 New translations ja-JP.yml (English) 2018-12-30 13:21:45 +09:00
12286f4915 🎨 2018-12-30 13:19:06 +09:00
193abfdbac New translations ja-JP.yml (Norwegian) 2018-12-30 13:13:01 +09:00
0e13481eb4 New translations ja-JP.yml (Dutch) 2018-12-30 13:12:56 +09:00
b713cac4f1 New translations ja-JP.yml (Japanese, Kansai) 2018-12-30 13:12:51 +09:00
2137c894ef New translations ja-JP.yml (Spanish) 2018-12-30 13:12:47 +09:00
f0d2ce4f19 New translations ja-JP.yml (Russian) 2018-12-30 13:12:42 +09:00
e3a89d302f New translations ja-JP.yml (Portuguese) 2018-12-30 13:12:38 +09:00
d01d2ef65e New translations ja-JP.yml (Polish) 2018-12-30 13:12:32 +09:00
23c550acba New translations ja-JP.yml (Korean) 2018-12-30 13:12:26 +09:00
b9db88f616 New translations ja-JP.yml (Italian) 2018-12-30 13:12:21 +09:00
dee4a18d48 New translations ja-JP.yml (German) 2018-12-30 13:12:16 +09:00
fa5073b042 New translations ja-JP.yml (French) 2018-12-30 13:12:11 +09:00
9dda698dc8 New translations ja-JP.yml (English) 2018-12-30 13:12:06 +09:00
99d0930fba New translations ja-JP.yml (Chinese Simplified) 2018-12-30 13:12:01 +09:00
a599524b5f New translations ja-JP.yml (Catalan) 2018-12-30 13:11:57 +09:00
5f34758e87 [Client] Fix i18n 2018-12-30 13:02:17 +09:00
cdb8e41176 [Client] Update theme setting 2018-12-30 13:02:06 +09:00
d8f3e9d4a3 🎨 2018-12-30 12:45:31 +09:00
da900439a3 Update gruvbox-dark.json5 2018-12-30 11:58:26 +09:00
ad0273ab99 10.71.0 2018-12-30 09:24:03 +09:00
8bbff90aca [Client] Add Monokai theme 🎨 2018-12-30 09:21:23 +09:00
fcb3ba9947 [Client] Separate theme property 2018-12-30 09:21:07 +09:00
23b3e33df6 [Client] Fix bug 2018-12-30 09:15:56 +09:00
9edac2cd74 oops 2018-12-30 09:04:19 +09:00
fbe0d70661 New translations ja-JP.yml (English) 2018-12-30 08:41:38 +09:00
8782a64b18 [Client] Add some themes 🎨 2018-12-30 06:40:48 +09:00
d3b81c3e00 10.70.1 2018-12-30 01:52:28 +09:00
fd816afcd0 Add id to return of users/relation (#3795) 2018-12-30 01:44:26 +09:00
ac423f1ef4 [API] notes/mentions にミュートを適用するように 2018-12-30 01:40:24 +09:00
f11ebafe47 🎨 2018-12-30 01:32:58 +09:00
7947036af9 Make one import per line 2018-12-29 22:26:15 +09:00
b722431720 New translations ja-JP.yml (Norwegian) 2018-12-29 22:13:17 +09:00
295563caad New translations ja-JP.yml (Dutch) 2018-12-29 22:13:13 +09:00
26735815f1 New translations ja-JP.yml (Japanese, Kansai) 2018-12-29 22:13:08 +09:00
c06a52c237 New translations ja-JP.yml (Spanish) 2018-12-29 22:13:04 +09:00
5678adf3b5 New translations ja-JP.yml (Russian) 2018-12-29 22:12:58 +09:00
ac772dd389 New translations ja-JP.yml (Portuguese) 2018-12-29 22:12:53 +09:00
2c4de8475f New translations ja-JP.yml (Polish) 2018-12-29 22:12:49 +09:00
46facaf176 New translations ja-JP.yml (Korean) 2018-12-29 22:12:45 +09:00
eea1b7fc63 New translations ja-JP.yml (Italian) 2018-12-29 22:12:39 +09:00
f0e9386cd0 New translations ja-JP.yml (German) 2018-12-29 22:12:34 +09:00
e4a4238b57 New translations ja-JP.yml (French) 2018-12-29 22:12:28 +09:00
55e126998a New translations ja-JP.yml (English) 2018-12-29 22:12:24 +09:00
608a30d37b New translations ja-JP.yml (Chinese Simplified) 2018-12-29 22:12:19 +09:00
7d22d6255d New translations ja-JP.yml (Catalan) 2018-12-29 22:12:14 +09:00
4e55436339 [Client] Improve 2fa settings 2018-12-29 22:10:54 +09:00
3adadc8a52 Merge pull request #3776 from syuilo/dependabot/npm_and_yarn/@koa/cors-2.2.3
Update @koa/cors requirement from 2.2.2 to 2.2.3
2018-12-29 19:11:09 +09:00
b525af822c Merge pull request #3777 from syuilo/dependabot/npm_and_yarn/@types/dateformat-3.0.0
Update @types/dateformat requirement from 1.0.1 to 3.0.0
2018-12-29 19:11:01 +09:00
bee8a5b065 Merge pull request #3775 from syuilo/dependabot/npm_and_yarn/@types/showdown-1.9.0
Update @types/showdown requirement from 1.7.5 to 1.9.0
2018-12-29 19:10:53 +09:00
f4d80122b3 Merge pull request #3794 from syuilo/dependabot/npm_and_yarn/eslint-5.11.1
Update eslint requirement from 5.8.0 to 5.11.1
2018-12-29 19:09:52 +09:00
2e8ea34413 Merge branch 'develop' into dependabot/npm_and_yarn/eslint-5.11.1 2018-12-29 19:09:42 +09:00
7341d97a00 Update loader-utils requirement from 1.1.0 to 1.2.3 (#3793)
Updates the requirements on [loader-utils](https://github.com/webpack/loader-utils) to permit the latest version.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/commits/v1.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-29 19:07:25 +09:00
964b34bd3b Update eslint-plugin-vue requirement from 4.7.1 to 5.0.0 (#3792)
Updates the requirements on [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) to permit the latest version.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/commits/v5.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-29 19:07:20 +09:00
38e8d4bbea 10.70.0 2018-12-29 06:03:21 +09:00
cb106e6fe4 🎨 2018-12-29 05:55:09 +09:00
61411605b8 Merge pull request #3750 from syuilo/l10n_develop
New Crowdin translations
2018-12-29 05:52:34 +09:00
0ac7682188 Better note filtering 2018-12-29 05:51:17 +09:00
d7af18efbd [Client] Renote数の表示を廃止 2018-12-29 05:43:31 +09:00
64bb6daa43 Update eslint requirement from 5.8.0 to 5.11.1
Updates the requirements on [eslint](https://github.com/eslint/eslint) to permit the latest version.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v5.11.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-28 20:24:50 +00:00
0a1951f24c Update loader-utils requirement from 1.1.0 to 1.2.3
Updates the requirements on [loader-utils](https://github.com/webpack/loader-utils) to permit the latest version.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/commits/v1.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-28 20:21:50 +00:00
8bb388f62a New translations ja-JP.yml (English) 2018-12-29 04:52:33 +09:00
ee36956451 New translations ja-JP.yml (English) 2018-12-29 04:21:50 +09:00
f1a0e95489 Improve usability 2018-12-29 03:12:22 +09:00
de5d9470af New translations ja-JP.yml (Norwegian) 2018-12-29 03:02:56 +09:00
a9838495ce New translations ja-JP.yml (Dutch) 2018-12-29 03:02:51 +09:00
d34c080822 New translations ja-JP.yml (Japanese, Kansai) 2018-12-29 03:02:46 +09:00
59f55a8291 New translations ja-JP.yml (Spanish) 2018-12-29 03:02:42 +09:00
79ace6238a New translations ja-JP.yml (Russian) 2018-12-29 03:02:35 +09:00
89e88802b9 New translations ja-JP.yml (Portuguese) 2018-12-29 03:02:31 +09:00
c7f969a002 New translations ja-JP.yml (Polish) 2018-12-29 03:02:26 +09:00
18b186068d New translations ja-JP.yml (Korean) 2018-12-29 03:02:22 +09:00
037c67cbfb New translations ja-JP.yml (Italian) 2018-12-29 03:02:17 +09:00
c3ccee9097 New translations ja-JP.yml (German) 2018-12-29 03:02:13 +09:00
2449183f44 New translations ja-JP.yml (French) 2018-12-29 03:02:09 +09:00
1c98226621 New translations ja-JP.yml (English) 2018-12-29 03:02:03 +09:00
b405669672 New translations ja-JP.yml (Chinese Simplified) 2018-12-29 03:01:58 +09:00
53fbe675a7 New translations ja-JP.yml (Catalan) 2018-12-29 03:01:53 +09:00
6bcc174456 Clean up 2018-12-29 02:58:04 +09:00
a3493c4f07 Privateの公開範囲を廃止 2018-12-29 02:55:46 +09:00
545ced7826 Make autoAcceptFollowed default 2018-12-29 02:46:57 +09:00
a9a476a0d5 Resolve #3786 (#3788) 2018-12-29 02:04:29 +09:00
8dfd35303c New translations ja-JP.yml (Norwegian) 2018-12-28 21:43:24 +09:00
498ca306e4 New translations ja-JP.yml (Dutch) 2018-12-28 21:43:18 +09:00
5a46e08165 New translations ja-JP.yml (Japanese, Kansai) 2018-12-28 21:43:14 +09:00
c0c57044cc New translations ja-JP.yml (Spanish) 2018-12-28 21:43:09 +09:00
42d00b96c6 New translations ja-JP.yml (Russian) 2018-12-28 21:43:04 +09:00
072360947b New translations ja-JP.yml (Portuguese) 2018-12-28 21:43:00 +09:00
d60ba8e37d New translations ja-JP.yml (Polish) 2018-12-28 21:42:53 +09:00
c10cf60059 New translations ja-JP.yml (Korean) 2018-12-28 21:42:47 +09:00
880689e28a New translations ja-JP.yml (Italian) 2018-12-28 21:42:42 +09:00
ade7050996 New translations ja-JP.yml (German) 2018-12-28 21:42:35 +09:00
71b5fae4d9 New translations ja-JP.yml (French) 2018-12-28 21:42:30 +09:00
d398e87ea1 New translations ja-JP.yml (English) 2018-12-28 21:42:25 +09:00
6256d021e6 New translations ja-JP.yml (Chinese Simplified) 2018-12-28 21:42:20 +09:00
405f242ff9 New translations ja-JP.yml (Catalan) 2018-12-28 21:42:15 +09:00
8823a6c1a1 フォローしているユーザーからのフォローを自動承認するオプション (#3780) 2018-12-28 21:36:58 +09:00
65a82f32be Supports CSS Scrollbars (#3783)
* Supports CSS Scrollbars

* fix
2018-12-28 21:34:35 +09:00
fd593458a6 New translations ja-JP.yml (Korean) 2018-12-28 07:42:07 +09:00
3985fe6b09 Update @types/dateformat requirement from 1.0.1 to 3.0.0
Updates the requirements on [@types/dateformat](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 20:28:49 +00:00
db71a5da62 Update @koa/cors requirement from 2.2.2 to 2.2.3
Updates the requirements on [@koa/cors](https://github.com/koajs/cors) to permit the latest version.
- [Release notes](https://github.com/koajs/cors/releases)
- [Changelog](https://github.com/koajs/cors/blob/master/History.md)
- [Commits](https://github.com/koajs/cors/commits/2.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 20:27:27 +00:00
d76e3e4853 Update @types/showdown requirement from 1.7.5 to 1.9.0
Updates the requirements on [@types/showdown](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 20:25:12 +00:00
eead9fad03 10.69.0 2018-12-28 05:16:24 +09:00
b498072f9d 🎨 2018-12-28 05:14:04 +09:00
f56a961db2 New translations ja-JP.yml (Norwegian) 2018-12-28 05:13:16 +09:00
5d224f4eac New translations ja-JP.yml (Dutch) 2018-12-28 05:13:11 +09:00
5b5edae11c New translations ja-JP.yml (Japanese, Kansai) 2018-12-28 05:13:07 +09:00
bd51154c46 New translations ja-JP.yml (Spanish) 2018-12-28 05:13:03 +09:00
749a1ff8b6 New translations ja-JP.yml (Russian) 2018-12-28 05:12:58 +09:00
b06d46f46f New translations ja-JP.yml (Portuguese) 2018-12-28 05:12:54 +09:00
7146a534df New translations ja-JP.yml (Polish) 2018-12-28 05:12:48 +09:00
ef51e591ee New translations ja-JP.yml (Korean) 2018-12-28 05:12:41 +09:00
9d2f4d3ffb New translations ja-JP.yml (Italian) 2018-12-28 05:12:34 +09:00
f7e0b196eb New translations ja-JP.yml (German) 2018-12-28 05:12:29 +09:00
feb7e58912 New translations ja-JP.yml (French) 2018-12-28 05:12:23 +09:00
fbf04392c9 New translations ja-JP.yml (English) 2018-12-28 05:12:19 +09:00
e650818952 New translations ja-JP.yml (Chinese Simplified) 2018-12-28 05:12:15 +09:00
76fcb1af87 New translations ja-JP.yml (Catalan) 2018-12-28 05:12:09 +09:00
cce3e52642 通知の管理を強化
Resolve #3772
2018-12-28 05:06:25 +09:00
8c762e7b8e 🎵 2018-12-28 04:36:24 +09:00
f0dafa04a5 🎨 2018-12-28 04:30:37 +09:00
81f39b3b36 🎨 2018-12-28 04:28:16 +09:00
b162471d3e 🎨 2018-12-28 04:26:32 +09:00
2736e8d6fa New translations ja-JP.yml (English) 2018-12-28 03:42:36 +09:00
182f6f8faa New translations ja-JP.yml (Norwegian) 2018-12-28 01:03:26 +09:00
ff34655221 New translations ja-JP.yml (Dutch) 2018-12-28 01:03:20 +09:00
f6ce6109f9 New translations ja-JP.yml (Japanese, Kansai) 2018-12-28 01:03:15 +09:00
899ac15d88 New translations ja-JP.yml (Spanish) 2018-12-28 01:03:09 +09:00
7132f2062c New translations ja-JP.yml (Russian) 2018-12-28 01:03:04 +09:00
96b354c7f2 New translations ja-JP.yml (Portuguese) 2018-12-28 01:02:59 +09:00
715664a523 New translations ja-JP.yml (Polish) 2018-12-28 01:02:54 +09:00
e8ddfb4bfe New translations ja-JP.yml (Korean) 2018-12-28 01:02:49 +09:00
2a1229978e New translations ja-JP.yml (Italian) 2018-12-28 01:02:44 +09:00
b8af3515cd New translations ja-JP.yml (German) 2018-12-28 01:02:39 +09:00
f99e3f3d42 New translations ja-JP.yml (French) 2018-12-28 01:02:35 +09:00
d6057bd830 New translations ja-JP.yml (English) 2018-12-28 01:02:30 +09:00
975e57ec48 New translations ja-JP.yml (Chinese Simplified) 2018-12-28 01:02:26 +09:00
bd35965c99 New translations ja-JP.yml (Catalan) 2018-12-28 01:02:20 +09:00
1029bff5ff Undo reaction with clicking minus (#3773)
* Undo reaction with clicking minus

* fix isMyNote
2018-12-28 01:01:58 +09:00
6c1893f869 10.68.0 2018-12-27 23:38:53 +09:00
0a89ba60bd New translations ja-JP.yml (English) 2018-12-27 23:32:01 +09:00
c6e418a242 New translations ja-JP.yml (Norwegian) 2018-12-27 23:23:35 +09:00
d9a6666ba8 New translations ja-JP.yml (Dutch) 2018-12-27 23:23:29 +09:00
ab849fbbef New translations ja-JP.yml (Japanese, Kansai) 2018-12-27 23:23:24 +09:00
9d6b6053a6 New translations ja-JP.yml (Spanish) 2018-12-27 23:23:19 +09:00
ddfd64944d New translations ja-JP.yml (Russian) 2018-12-27 23:23:12 +09:00
51153ed287 New translations ja-JP.yml (Portuguese) 2018-12-27 23:23:07 +09:00
0e7bbd1b32 New translations ja-JP.yml (Polish) 2018-12-27 23:23:03 +09:00
5049791d7f New translations ja-JP.yml (Korean) 2018-12-27 23:22:57 +09:00
1ebcf8d915 New translations ja-JP.yml (Italian) 2018-12-27 23:22:51 +09:00
e01873811a New translations ja-JP.yml (German) 2018-12-27 23:22:45 +09:00
d078b871e1 New translations ja-JP.yml (French) 2018-12-27 23:22:39 +09:00
c6375ae864 New translations ja-JP.yml (English) 2018-12-27 23:22:34 +09:00
483467e32f New translations ja-JP.yml (Chinese Simplified) 2018-12-27 23:22:29 +09:00
c84d43bc5f New translations ja-JP.yml (Catalan) 2018-12-27 23:22:23 +09:00
fdd42fc2d7 user mention (#3771) 2018-12-27 23:14:30 +09:00
8573e258f8 Set cursor default on hover the own reaction
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-27 23:02:32 +09:00
6943c7d2d8 Resolve #3770
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-27 22:54:50 +09:00
4a42bf7b19 New translations ja-JP.yml (Norwegian) 2018-12-27 21:13:13 +09:00
b982f97c05 New translations ja-JP.yml (Dutch) 2018-12-27 21:13:06 +09:00
d9207788d3 New translations ja-JP.yml (Japanese, Kansai) 2018-12-27 21:13:01 +09:00
0ad48cc896 New translations ja-JP.yml (Spanish) 2018-12-27 21:12:57 +09:00
5e191a1f5b New translations ja-JP.yml (Russian) 2018-12-27 21:12:52 +09:00
8069e44d0a New translations ja-JP.yml (Portuguese) 2018-12-27 21:12:48 +09:00
0a83f0fd67 New translations ja-JP.yml (Polish) 2018-12-27 21:12:42 +09:00
83c54fb6b9 New translations ja-JP.yml (Korean) 2018-12-27 21:12:38 +09:00
5f6b0f689f New translations ja-JP.yml (Italian) 2018-12-27 21:12:32 +09:00
1b0b96526b New translations ja-JP.yml (German) 2018-12-27 21:12:27 +09:00
edb0469787 New translations ja-JP.yml (French) 2018-12-27 21:12:23 +09:00
3256a0914e New translations ja-JP.yml (English) 2018-12-27 21:12:18 +09:00
3c15182f24 New translations ja-JP.yml (Chinese Simplified) 2018-12-27 21:12:12 +09:00
f7bc5e3c0b New translations ja-JP.yml (Catalan) 2018-12-27 21:12:07 +09:00
19f327701d Fix kao 2018-12-27 21:10:40 +09:00
6b30e371a2 Remove needless code 2018-12-27 21:09:03 +09:00
98fd6de5a1 Resolve #3524 2018-12-27 21:07:44 +09:00
6635f25abe New translations ja-JP.yml (Norwegian) 2018-12-27 21:03:38 +09:00
5f93106eab New translations ja-JP.yml (Dutch) 2018-12-27 21:03:31 +09:00
84f2994d47 New translations ja-JP.yml (Japanese, Kansai) 2018-12-27 21:03:27 +09:00
96f5c6d616 New translations ja-JP.yml (Spanish) 2018-12-27 21:03:22 +09:00
b67923abb9 New translations ja-JP.yml (Russian) 2018-12-27 21:03:15 +09:00
310f7b3359 New translations ja-JP.yml (Portuguese) 2018-12-27 21:03:11 +09:00
c743c45989 New translations ja-JP.yml (Polish) 2018-12-27 21:03:04 +09:00
0322c51913 New translations ja-JP.yml (Korean) 2018-12-27 21:03:00 +09:00
b85e27c7e5 New translations ja-JP.yml (Italian) 2018-12-27 21:02:55 +09:00
aa351d1f7f New translations ja-JP.yml (German) 2018-12-27 21:02:50 +09:00
6b48b79758 New translations ja-JP.yml (French) 2018-12-27 21:02:45 +09:00
104ea7e277 New translations ja-JP.yml (English) 2018-12-27 21:02:41 +09:00
97de1ed3a8 New translations ja-JP.yml (Chinese Simplified) 2018-12-27 21:02:36 +09:00
d69e9741da New translations ja-JP.yml (Catalan) 2018-12-27 21:02:30 +09:00
0f5c737c1a Use double quotation 2018-12-27 21:00:08 +09:00
cb9960b0ac Fix i18n: is-suspended
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-27 20:59:49 +09:00
1404539895 Resolve #3287, resolve #3107
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-27 20:46:23 +09:00
2f901da58c [Client] Fix bug 2018-12-27 20:34:30 +09:00
3637c1bfbc New translations ja-JP.yml (Norwegian) 2018-12-27 20:33:23 +09:00
28c3edc844 New translations ja-JP.yml (Dutch) 2018-12-27 20:33:16 +09:00
9271a8c066 New translations ja-JP.yml (Japanese, Kansai) 2018-12-27 20:33:12 +09:00
7b16bfc736 New translations ja-JP.yml (Spanish) 2018-12-27 20:33:05 +09:00
54450033e4 New translations ja-JP.yml (Russian) 2018-12-27 20:32:59 +09:00
fbf676d518 New translations ja-JP.yml (Portuguese) 2018-12-27 20:32:54 +09:00
47df0bbec1 New translations ja-JP.yml (Polish) 2018-12-27 20:32:50 +09:00
708f8b3cc3 New translations ja-JP.yml (Korean) 2018-12-27 20:32:44 +09:00
9de163ab09 New translations ja-JP.yml (Italian) 2018-12-27 20:32:40 +09:00
e21be29131 New translations ja-JP.yml (German) 2018-12-27 20:32:35 +09:00
1aabb725d0 New translations ja-JP.yml (French) 2018-12-27 20:32:31 +09:00
3e17c34187 New translations ja-JP.yml (English) 2018-12-27 20:32:27 +09:00
d57de01d37 New translations ja-JP.yml (Chinese Simplified) 2018-12-27 20:32:22 +09:00
71918fdbf0 New translations ja-JP.yml (Catalan) 2018-12-27 20:32:17 +09:00
cb8663873d Rename: 404 --> not-found 2018-12-27 20:22:54 +09:00
0f204eebe1 Remove unused code 2018-12-27 20:10:29 +09:00
dec572a6b7 New translations ja-JP.yml (Norwegian) 2018-12-27 20:03:29 +09:00
28848ba969 New translations ja-JP.yml (Dutch) 2018-12-27 20:03:24 +09:00
4cfcd37a2b New translations ja-JP.yml (Japanese, Kansai) 2018-12-27 20:03:19 +09:00
2b0d5516d1 New translations ja-JP.yml (Spanish) 2018-12-27 20:03:13 +09:00
3e3c3c10ab New translations ja-JP.yml (Russian) 2018-12-27 20:03:08 +09:00
3cc282db14 New translations ja-JP.yml (Portuguese) 2018-12-27 20:03:03 +09:00
4c1c865ba9 New translations ja-JP.yml (Polish) 2018-12-27 20:02:59 +09:00
9423c99427 New translations ja-JP.yml (Korean) 2018-12-27 20:02:54 +09:00
d1512c90f1 New translations ja-JP.yml (Italian) 2018-12-27 20:02:48 +09:00
85c9993106 New translations ja-JP.yml (German) 2018-12-27 20:02:43 +09:00
1d580009e4 New translations ja-JP.yml (French) 2018-12-27 20:02:38 +09:00
22ad21597a New translations ja-JP.yml (English) 2018-12-27 20:02:32 +09:00
76d8f66eff New translations ja-JP.yml (Chinese Simplified) 2018-12-27 20:02:28 +09:00
febdf0cbee New translations ja-JP.yml (Catalan) 2018-12-27 20:02:23 +09:00
ba05606074 Show on the CW button that there is a poll (#3769) 2018-12-27 19:58:57 +09:00
030fe8bec7 New translations ja-JP.yml (English) 2018-12-27 19:23:07 +09:00
4587c5a512 Update @fortawesome/free-solid-svg-icons requirement from 5.6.1 to 5.6.3 (#3754)
Updates the requirements on [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 18:50:19 +09:00
96646e584b Update vue-svg-inline-loader requirement from 1.2.4 to 1.2.7 (#3764)
Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version.
- [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases)
- [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.7)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 18:50:01 +09:00
fb2879df9c Update @types/js-yaml requirement from 3.11.2 to 3.11.4 (#3763)
Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 18:49:51 +09:00
26ea338e8e Update vue-js-modal requirement from 1.3.27 to 1.3.28 (#3766)
Updates the requirements on [vue-js-modal](https://github.com/euvl/vue-js-modal) to permit the latest version.
- [Release notes](https://github.com/euvl/vue-js-modal/releases)
- [Commits](https://github.com/euvl/vue-js-modal/commits/1.3.28)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 18:49:44 +09:00
1fad5ed6f3 Update nan requirement from 2.11.1 to 2.12.1 (#3767)
Updates the requirements on [nan](https://github.com/nodejs/nan) to permit the latest version.
- [Release notes](https://github.com/nodejs/nan/releases)
- [Changelog](https://github.com/nodejs/nan/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodejs/nan/commits/v2.12.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 18:49:33 +09:00
20db10516c New translations ja-JP.yml (English) 2018-12-27 18:42:12 +09:00
00631f58ec New translations ja-JP.yml (French) 2018-12-27 18:22:13 +09:00
35273e53bc 10.67.0 2018-12-27 07:49:48 +09:00
bfc458e935 Resolve #3758 2018-12-27 07:07:26 +09:00
bb819d42f1 Update mongodb requirement from 3.1.9 to 3.1.10 (#3762)
Updates the requirements on [mongodb](https://github.com/mongodb/node-mongodb-native) to permit the latest version.
- [Release notes](https://github.com/mongodb/node-mongodb-native/releases)
- [Changelog](https://github.com/mongodb/node-mongodb-native/blob/master/HISTORY.md)
- [Commits](https://github.com/mongodb/node-mongodb-native/commits/v3.1.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 05:46:42 +09:00
5d76439224 Update sharp requirement from 0.21.0 to 0.21.1 (#3761)
Updates the requirements on [sharp](https://github.com/lovell/sharp) to permit the latest version.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/commits/v0.21.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 05:46:00 +09:00
3d0b704af8 Add URI parameter to /api/meta (#3748)
* Add URI parameter to /api/meta
closes #3747

* Update fetch-meta.ts

* Update meta.ts
2018-12-27 04:50:35 +09:00
05539ffc7b Update README.md [AUTOGEN] (#3743) 2018-12-27 01:33:19 +09:00
c86deab69c Introduce SonarTS (#3756) 2018-12-27 01:32:31 +09:00
21f8dbf2de Resolve #3248
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-27 01:26:03 +09:00
6731f904f2 New translations ja-JP.yml (Norwegian) 2018-12-26 23:14:31 +09:00
f6e74f529e New translations ja-JP.yml (Dutch) 2018-12-26 23:14:22 +09:00
c860a2f7f3 New translations ja-JP.yml (Japanese, Kansai) 2018-12-26 23:14:17 +09:00
7b141722ae New translations ja-JP.yml (Spanish) 2018-12-26 23:14:13 +09:00
fc516ffb7f New translations ja-JP.yml (Russian) 2018-12-26 23:14:08 +09:00
11604593a6 New translations ja-JP.yml (Portuguese) 2018-12-26 23:14:03 +09:00
6f3468ccd2 New translations ja-JP.yml (Polish) 2018-12-26 23:13:56 +09:00
e3be90503c New translations ja-JP.yml (Korean) 2018-12-26 23:13:50 +09:00
22d38e0d24 New translations ja-JP.yml (Italian) 2018-12-26 23:13:46 +09:00
8b654fb40a New translations ja-JP.yml (German) 2018-12-26 23:13:39 +09:00
91cd9831bc New translations ja-JP.yml (French) 2018-12-26 23:13:33 +09:00
805d72d42f New translations ja-JP.yml (English) 2018-12-26 23:13:29 +09:00
0d4a1719a6 New translations ja-JP.yml (Chinese Simplified) 2018-12-26 23:13:23 +09:00
32ab57e11b New translations ja-JP.yml (Catalan) 2018-12-26 23:13:16 +09:00
5174e16f7b Feature to show only my posts in the user page (#3753)
* Fix #3681

* Feature to show only my posts in the user page
2018-12-26 23:11:50 +09:00
9b746f3eb5 Make reactions removable
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>

Resolve #367, resolve #2260, close #3503
2018-12-26 23:05:47 +09:00
becd038660 New translations ja-JP.yml (Russian) 2018-12-26 22:31:58 +09:00
2a6cfec0e6 New translations ja-JP.yml (Russian) 2018-12-26 22:28:10 +09:00
dfc6ef4be6 Remove trailing whitespaces 2018-12-26 19:58:04 +09:00
c8b45f4f42 Fix #3346
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-26 19:39:51 +09:00
09c57e6d03 Fix #3345
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-26 19:24:38 +09:00
5edb1da097 Update gulp-typescript requirement from 4.0.2 to 5.0.0 (#3496)
Updates the requirements on [gulp-typescript](https://github.com/ivogabe/gulp-typescript) to permit the latest version.
- [Release notes](https://github.com/ivogabe/gulp-typescript/releases)
- [Commits](https://github.com/ivogabe/gulp-typescript/commits/v5.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:34:28 +09:00
b3ad3a6535 Update jsdom requirement from 13.0.0 to 13.1.0 (#3649)
Updates the requirements on [jsdom](https://github.com/jsdom/jsdom) to permit the latest version.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/commits/13.1.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:50 +09:00
3709bb23bc Update systeminformation requirement from 3.51.3 to 3.52.2 (#3669)
Updates the requirements on [systeminformation](https://github.com/sebhildebrandt/systeminformation) to permit the latest version.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:42 +09:00
28be5c0b81 Update tslint requirement from 5.10.0 to 5.12.0 (#3670)
Updates the requirements on [tslint](https://github.com/palantir/tslint) to permit the latest version.
- [Release notes](https://github.com/palantir/tslint/releases)
- [Changelog](https://github.com/palantir/tslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/palantir/tslint/commits/5.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:34 +09:00
60ef74047a Update @types/file-type requirement from 5.2.2 to 10.6.0 (#3671)
Updates the requirements on [@types/file-type](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:28 +09:00
f81596c8d5 Update @types/webpack requirement from 4.4.20 to 4.4.21 (#3650)
Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:20 +09:00
075b7e3060 Update vue-cropperjs requirement from 2.2.2 to 3.0.0 (#3617)
Updates the requirements on [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs) to permit the latest version.
- [Release notes](https://github.com/Agontuk/vue-cropperjs/releases)
- [Changelog](https://github.com/Agontuk/vue-cropperjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Agontuk/vue-cropperjs/commits/v3.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:33:08 +09:00
cc7d6198ec Update hard-source-webpack-plugin requirement from 0.12.0 to 0.13.1 (#3611)
Updates the requirements on [hard-source-webpack-plugin](https://github.com/mzgoddard/hard-source-webpack-plugin) to permit the latest version.
- [Release notes](https://github.com/mzgoddard/hard-source-webpack-plugin/releases)
- [Changelog](https://github.com/mzgoddard/hard-source-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mzgoddard/hard-source-webpack-plugin/commits/v0.13.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:32:58 +09:00
5766c2ce1b Update @fortawesome/free-solid-svg-icons requirement from 5.5.0 to 5.6.1 (#3610)
Updates the requirements on [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:32:50 +09:00
03fed08c03 Update @fortawesome/free-brands-svg-icons requirement (#3598)
Updates the requirements on [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-26 18:32:43 +09:00
4662641feb Fix #3745 (#3746) 2018-12-26 18:32:16 +09:00
00e2ce9489 Fix #3715 (#3752) 2018-12-26 06:21:09 +09:00
c2ec81f93a New translations ja-JP.yml (French) 2018-12-26 05:31:49 +09:00
47561a6f8b New translations ja-JP.yml (French) 2018-12-26 05:21:51 +09:00
c81eb49f9e Supports emoji in notifications (#3751) 2018-12-26 05:15:02 +09:00
205c0d44d5 New translations ja-JP.yml (French) 2018-12-26 05:11:57 +09:00
dc1bdbaaa5 New translations ja-JP.yml (French) 2018-12-26 05:01:48 +09:00
d619a92a37 New translations ja-JP.yml (French) 2018-12-26 04:52:05 +09:00
59ad529162 New translations ja-JP.yml (French) 2018-12-26 04:41:54 +09:00
c4c44e04fd New translations ja-JP.yml (French) 2018-12-26 04:32:01 +09:00
fae58a9ab0 New translations ja-JP.yml (French) 2018-12-26 04:21:58 +09:00
fa03c172f2 Fix typo 2018-12-25 20:02:37 +09:00
89ac15b4de Fix typo
split は不規則動詞
2018-12-25 16:49:35 +09:00
10d3b81251 Fix build fails 2018-12-25 13:39:55 +09:00
71dceca225 Merge pull request #3648 from syuilo/l10n_develop
New Crowdin translations
2018-12-25 12:24:26 +09:00
40de631d95 New translations ja-JP.yml (English) 2018-12-25 12:22:01 +09:00
6985c39874 Make activity view in admin scrollable (#3741)
I can't think of any reason why this isnt currently the case as the extra lines are still there, just not displayed, meaning theres no difference in performance/memory usage
Also means that sometimes entries are cut off which is weird
Also, sometimes there is reason to wish to view older entries that may have scrolled off the page/keep reading something which was pushed too far down.
2018-12-25 12:13:50 +09:00
0938ea3964 Use join instead of reduce 2018-12-24 17:02:15 +09:00
4b4c19b242 New translations ja-JP.yml (Korean) 2018-12-24 08:11:46 +09:00
d8620187ec 10.66.2 2018-12-24 05:40:33 +09:00
520849d070 Update translation placeholder (#3735) 2018-12-24 05:36:02 +09:00
b6a028a8ed [API] Fix #3737 2018-12-24 05:31:20 +09:00
7db799a0ac New translations ja-JP.yml (Norwegian) 2018-12-24 01:33:08 +09:00
1ab776c867 New translations ja-JP.yml (Dutch) 2018-12-24 01:33:04 +09:00
f4c9f63548 New translations ja-JP.yml (Japanese, Kansai) 2018-12-24 01:32:57 +09:00
08da9d70cd New translations ja-JP.yml (Spanish) 2018-12-24 01:32:53 +09:00
96173e5c0b New translations ja-JP.yml (Russian) 2018-12-24 01:32:48 +09:00
b37cc70742 New translations ja-JP.yml (Portuguese) 2018-12-24 01:32:43 +09:00
96ee4299c7 New translations ja-JP.yml (Polish) 2018-12-24 01:32:38 +09:00
6072b02f12 New translations ja-JP.yml (Korean) 2018-12-24 01:32:33 +09:00
6ccbca0741 New translations ja-JP.yml (Italian) 2018-12-24 01:32:29 +09:00
360394fd5c New translations ja-JP.yml (German) 2018-12-24 01:32:24 +09:00
dcb45aa953 New translations ja-JP.yml (French) 2018-12-24 01:32:20 +09:00
a8fcc1aad9 New translations ja-JP.yml (English) 2018-12-24 01:32:15 +09:00
4d69cd86f1 New translations ja-JP.yml (Chinese Simplified) 2018-12-24 01:32:11 +09:00
6e14e58b89 New translations ja-JP.yml (Catalan) 2018-12-24 01:32:06 +09:00
af5839bb59 Fix translation location (#3734) 2018-12-24 01:25:28 +09:00
a53e0d9f73 Fix error in featuredNotes (#3730) 2018-12-23 23:23:56 +09:00
49921f2dcf Fix: can not update remote Misskey user (#3731) 2018-12-23 23:23:17 +09:00
70d2d61b9a New translations ja-JP.yml (French) 2018-12-23 18:11:51 +09:00
9abaf80f6b New translations ja-JP.yml (Chinese Simplified) 2018-12-23 17:51:56 +09:00
25948fc3c9 New translations ja-JP.yml (Chinese Simplified) 2018-12-23 17:42:42 +09:00
6b947c2139 Fix mention links (#3728)
canonical already starts with @, so remove the extra @.
2018-12-23 14:35:18 +09:00
98acf919f1 ダイレクト投稿でユーザーが指定されていなかったらrejectする (#3724) 2018-12-23 04:17:42 +09:00
c9c2853150 ダイレクトでメンションでもユーザーを指定できるように (#3722) 2018-12-23 03:44:18 +09:00
2bc708f8e6 Fix #3717 (#3723) 2018-12-23 03:41:28 +09:00
874b8fc3c2 Fix indent 2018-12-23 03:31:11 +09:00
7d6aac3431 Fix space 2018-12-23 03:27:26 +09:00
e2fc7decad 本文からメンション等を展開しないオプション (#3721) 2018-12-23 03:25:33 +09:00
21bed71f5e Rename PULL_REQUEST_TEMPLATE.md to .github/PULL_REQUEST_TEMPLATE.md 2018-12-22 20:43:44 +09:00
747a5694f8 New translations ja-JP.yml (French) 2018-12-22 13:02:00 +09:00
479a0a2deb New translations ja-JP.yml (French) 2018-12-22 12:52:26 +09:00
14aef6ec89 New translations ja-JP.yml (English) 2018-12-22 01:16:40 +09:00
f0d2b3f449 New translations ja-JP.yml (English) 2018-12-22 01:02:28 +09:00
3b974428fc 10.66.1 2018-12-22 00:59:40 +09:00
580191fb17 Improve MFM bracket matching
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-12-22 00:44:38 +09:00
be0cb88b6c Fix sharedInbox location (#3711)
* Fix sharedInbox location

* Perform update Following

* Fix comment
2018-12-22 00:12:34 +09:00
95c4e4497e Fix tag not found (#3710) 2018-12-21 21:46:50 +09:00
2ec445f83e 10.66.0 2018-12-21 16:26:46 +09:00
51b915428e [Client] Fix #3693 2018-12-21 16:22:34 +09:00
1395cf89ce Feed (#3698)
* wip

* Implement feed

* Update feed.ts

* Update index.ts

* Update feed.ts
2018-12-21 11:54:39 +09:00
2a8f984db7 Fix comment 2018-12-21 11:28:30 +09:00
decf2d396f Fix processing icon (#3705) 2018-12-21 02:30:49 +09:00
f7964da899 Fix: ap/show does not return on error (#3704) 2018-12-21 00:09:02 +09:00
c8607ff7b6 Tune polls/recommendation (#3703) 2018-12-20 22:56:12 +09:00
e9f8897fe2 Refactor MFM
Co-authored-by: syuilo syuilotan@yahoo.co.jp
2018-12-20 19:42:10 +09:00
e0b107a3a0 Fix overlap of birthday label on datepicker (#3697) 2018-12-20 17:01:29 +09:00
abf2c89931 New translations ja-JP.yml (Korean) 2018-12-20 07:51:43 +09:00
1d3e6a7197 10.65.0 2018-12-20 04:37:47 +09:00
288bf195e9 New translations ja-JP.yml (English) 2018-12-20 04:22:50 +09:00
7e3cc11cc4 New translations ja-JP.yml (Norwegian) 2018-12-20 04:13:09 +09:00
4e07e94af0 New translations ja-JP.yml (Dutch) 2018-12-20 04:13:03 +09:00
9cb49c9204 New translations ja-JP.yml (Japanese, Kansai) 2018-12-20 04:12:59 +09:00
580dd729e5 New translations ja-JP.yml (Spanish) 2018-12-20 04:12:54 +09:00
49ab77c86e New translations ja-JP.yml (Russian) 2018-12-20 04:12:49 +09:00
f98914b9f1 New translations ja-JP.yml (Portuguese) 2018-12-20 04:12:43 +09:00
f3f3599b28 New translations ja-JP.yml (Polish) 2018-12-20 04:12:38 +09:00
f67b1beee4 New translations ja-JP.yml (Korean) 2018-12-20 04:12:32 +09:00
8395d0f1ba New translations ja-JP.yml (Italian) 2018-12-20 04:12:27 +09:00
af203bee93 New translations ja-JP.yml (German) 2018-12-20 04:12:23 +09:00
760fb79dad New translations ja-JP.yml (French) 2018-12-20 04:12:18 +09:00
ee9d4119c2 New translations ja-JP.yml (English) 2018-12-20 04:12:13 +09:00
90027efcbf New translations ja-JP.yml (Chinese Simplified) 2018-12-20 04:12:07 +09:00
1848de1dc4 New translations ja-JP.yml (Catalan) 2018-12-20 04:11:58 +09:00
1c93fcb1c4 Fix #3683 2018-12-20 04:11:10 +09:00
e3389e7899 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-20 04:08:22 +09:00
454632d785 Resolve #3687 2018-12-20 04:08:13 +09:00
c9bca7dc85 Update CONTRIBUTING.md 2018-12-20 03:44:19 +09:00
710ba526fa Better cw detection 2018-12-20 03:22:27 +09:00
aa47b6732d [Doc] Clean up 2018-12-20 03:19:44 +09:00
20f83420ca Update CONTRIBUTING.md 2018-12-20 03:02:19 +09:00
d09a68ef11 Update CONTRIBUTING.md 2018-12-20 03:01:02 +09:00
b545be5799 Fix wrong comment 2018-12-20 02:47:24 +09:00
4fc377584f Fix tag length limit from AP (#3688) 2018-12-20 02:20:56 +09:00
a5f09c90dd [Client] Resolve #3686 2018-12-20 01:09:35 +09:00
ba407c3eb0 New translations ja-JP.yml (French) 2018-12-20 01:03:08 +09:00
d059d7f972 open処理中はopenの処理をしないように (#3661)
* autocomplettimeout

* fix

* fix

* Update autocomplete.ts

* Update autocomplete.ts
2018-12-20 00:02:28 +09:00
c03e2dfbc0 Change naming (#3678)
* Change naming

* x to a
2018-12-19 22:38:27 +09:00
45c5e7b967 Hide hidden contents in welcome timeline (#3682) 2018-12-19 22:18:58 +09:00
c81a94ff75 Resolve #3676 (#3677) 2018-12-19 21:20:25 +09:00
acc6f54557 Update remote Emoji (#3680) 2018-12-19 21:19:43 +09:00
8025b121af Add Predicate type 2018-12-19 17:08:09 +09:00
78ec06bda3 Add relation types 2018-12-19 17:00:07 +09:00
6ef83d9c59 Update deck.notes.vue 2018-12-19 11:23:46 +09:00
fca4ceef21 [Client] デッキのTLにUIの動きを減らすオプションが適用されていなかったのを修正 2018-12-19 11:22:27 +09:00
00f979f0e6 Fix bug 2018-12-19 11:16:29 +09:00
556677be7a Refactor 2018-12-19 10:23:57 +09:00
624fd093f2 Fix comment 2018-12-19 10:02:58 +09:00
2ee438dece Add comments for prelude/array.ts 2018-12-19 09:54:45 +09:00
534de24406 Use consistent naming convention 2018-12-19 09:14:05 +09:00
014edce1b9 New translations ja-JP.yml (Korean) 2018-12-19 08:52:01 +09:00
ac1f3de4c6 New translations ja-JP.yml (Norwegian) 2018-12-19 07:33:01 +09:00
dced228cb0 New translations ja-JP.yml (Dutch) 2018-12-19 07:32:55 +09:00
a92244cc12 New translations ja-JP.yml (Japanese, Kansai) 2018-12-19 07:32:50 +09:00
0717688933 New translations ja-JP.yml (Spanish) 2018-12-19 07:32:43 +09:00
87d54b7d40 New translations ja-JP.yml (Russian) 2018-12-19 07:32:36 +09:00
ed51f5c7de New translations ja-JP.yml (Portuguese) 2018-12-19 07:32:31 +09:00
66e2db0d52 New translations ja-JP.yml (Polish) 2018-12-19 07:32:26 +09:00
03be4826df New translations ja-JP.yml (Korean) 2018-12-19 07:32:22 +09:00
c9d5aef04f New translations ja-JP.yml (Italian) 2018-12-19 07:32:18 +09:00
106cb3fe3e New translations ja-JP.yml (German) 2018-12-19 07:32:12 +09:00
48320f8536 New translations ja-JP.yml (French) 2018-12-19 07:32:08 +09:00
1a0845dc0a New translations ja-JP.yml (English) 2018-12-19 07:32:04 +09:00
185d09f3ed New translations ja-JP.yml (Chinese Simplified) 2018-12-19 07:32:00 +09:00
8e25fb6cb7 New translations ja-JP.yml (Catalan) 2018-12-19 07:31:55 +09:00
e88ce1746d リスト関連の操作を強化
Resolve #2069
Resolve #2051
Resolve #2807
Resolve #3647
2018-12-19 07:22:01 +09:00
b8aad35009 Fix error 2018-12-19 06:47:47 +09:00
47bd485a39 Clean up 2018-12-19 06:09:31 +09:00
ad869d7469 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-19 06:05:47 +09:00
d15cce5337 [Client] Show more images 2018-12-19 06:05:44 +09:00
37daff6d61 [Client] Fix #2764 2018-12-19 06:04:59 +09:00
5417e40f59 Send original URL for quote (#3668) 2018-12-19 05:07:54 +09:00
0fed33bfdb Create PULL_REQUEST_TEMPLATE.md (#3552)
* Create PULL_REQUEST_TEMPLATE.md

* Update PULL_REQUEST_TEMPLATE.md
2018-12-19 04:48:49 +09:00
5dddc75d09 Add AP emojis endpoint (#3667) 2018-12-19 04:23:08 +09:00
081578c604 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-19 01:11:08 +09:00
6c47bf5b76 [Client] Resolve #3662 2018-12-19 01:10:53 +09:00
936bb1bcd0 New translations ja-JP.yml (Norwegian) 2018-12-19 01:04:21 +09:00
d5241d9a3e New translations ja-JP.yml (Dutch) 2018-12-19 01:04:15 +09:00
05b4430c92 New translations ja-JP.yml (Japanese, Kansai) 2018-12-19 01:04:09 +09:00
292e911de2 New translations ja-JP.yml (Spanish) 2018-12-19 01:04:04 +09:00
1c4ba2c037 New translations ja-JP.yml (Russian) 2018-12-19 01:03:59 +09:00
452db13d0c New translations ja-JP.yml (Portuguese) 2018-12-19 01:03:54 +09:00
c3f64b395b New translations ja-JP.yml (Polish) 2018-12-19 01:03:49 +09:00
3fa6bf93a4 New translations ja-JP.yml (Korean) 2018-12-19 01:03:44 +09:00
a13d76bec5 New translations ja-JP.yml (Italian) 2018-12-19 01:03:39 +09:00
05cee078d0 New translations ja-JP.yml (German) 2018-12-19 01:03:33 +09:00
706d3f3f95 New translations ja-JP.yml (French) 2018-12-19 01:03:27 +09:00
c5cf034b5d New translations ja-JP.yml (English) 2018-12-19 01:03:22 +09:00
3a04aa93f9 New translations ja-JP.yml (Chinese Simplified) 2018-12-19 01:03:16 +09:00
838cdbedbd New translations ja-JP.yml (Catalan) 2018-12-19 01:03:09 +09:00
9e85291cd3 Add example nginx configuration (#3659)
* Sample Nginx configuration

* nginxによせる

* 非Debian系ではsites-enabledがない
2018-12-19 01:00:57 +09:00
7f77517fc8 [Client] Resolve #3658 2018-12-19 00:57:28 +09:00
b2f288dcac [Client] Fix #3657 2018-12-19 00:45:00 +09:00
52b59e9d7b [Client] Fix #3655 2018-12-19 00:41:53 +09:00
80c74b1fa7 Improve readability 2018-12-19 00:40:29 +09:00
91811ea500 Clean up 2018-12-19 00:40:13 +09:00
57150fd910 Improve readability 2018-12-19 00:39:28 +09:00
cddbbdf5d0 clean up 2018-12-19 00:39:04 +09:00
423dc2349b [Client] Improve performance 2018-12-19 00:25:35 +09:00
5229bbd55d New translations ja-JP.yml (Korean) 2018-12-18 07:55:13 +09:00
28311b9a2b New translations ja-JP.yml (French) 2018-12-17 23:02:47 +09:00
663d17a485 New translations ja-JP.yml (French) 2018-12-17 22:54:39 +09:00
08d005dfd9 New translations ja-JP.yml (French) 2018-12-17 22:44:05 +09:00
02edbc131b New translations ja-JP.yml (French) 2018-12-17 22:33:42 +09:00
0556a2a2da Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-17 20:18:09 +09:00
65d943e42a Fix #3646 2018-12-17 20:17:21 +09:00
3bcb344ecb Re: #3457 (#3614)
* Update parser.ts

* Update user.ts

* Update search.ts

* Update parser.ts

* Update parser.ts

* Update parser.ts

* Update parser.ts

* Update parser.ts

* Update parser.ts

* Update mfm.ts

* Update parser.ts

* Merge branch 'develop' into 3440-mk2

* Fix typo

* Update parser.ts

* Update mfm.ts

* Update mfm.ts
2018-12-17 19:11:38 +09:00
82d721d60b Refactor Reversi (#3584)
* Update core.ts

* Update core.ts

* Create functional-syntax.ts

* Update core.ts

* Update functional-syntax.ts

* Update core.ts

* Delete functional-syntax.ts
2018-12-17 19:10:38 +09:00
48dc56e834 10.64.2 2018-12-17 17:27:07 +09:00
2c33bd6e31 Update README.md [AUTOGEN] (#3641) 2018-12-17 17:26:02 +09:00
b6524616bc Clean up 2018-12-17 17:21:45 +09:00
7e2b70f912 [Client] UIの動きを減らすオプションが一部のアニメーションに適用されなかったのを修正
Resolve #3632
2018-12-17 17:21:36 +09:00
4f071a66b6 10.64.1 2018-12-17 03:33:22 +09:00
39f2303429 Merge pull request #3631 from syuilo/l10n_develop
New Crowdin translations
2018-12-17 03:31:49 +09:00
cacf072027 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-17 03:31:31 +09:00
6ab1fdfe1a Update README.md [AUTOGEN] (#3639) 2018-12-17 03:31:19 +09:00
6e5c93f926 [Client] Add animation 🎨 2018-12-17 03:29:57 +09:00
1670737075 [API] Resolve #3637 2018-12-17 01:43:34 +09:00
fee235c4e4 Update README.md 2018-12-16 17:24:52 +09:00
7a39d489f2 New translations ja-JP.yml (Norwegian) 2018-12-16 16:23:07 +09:00
7c634218d1 New translations ja-JP.yml (Dutch) 2018-12-16 16:23:02 +09:00
2704c5be73 New translations ja-JP.yml (Japanese, Kansai) 2018-12-16 16:22:58 +09:00
489b51ba9f New translations ja-JP.yml (Spanish) 2018-12-16 16:22:52 +09:00
21807c29f1 New translations ja-JP.yml (Russian) 2018-12-16 16:22:48 +09:00
3bc62fe3eb New translations ja-JP.yml (Portuguese) 2018-12-16 16:22:43 +09:00
ba0e3c4a5f New translations ja-JP.yml (Polish) 2018-12-16 16:22:38 +09:00
9ec1fb5e37 New translations ja-JP.yml (Korean) 2018-12-16 16:22:33 +09:00
d708409462 New translations ja-JP.yml (Italian) 2018-12-16 16:22:29 +09:00
07d05d4f86 New translations ja-JP.yml (German) 2018-12-16 16:22:24 +09:00
bbdb2ebb40 New translations ja-JP.yml (French) 2018-12-16 16:22:20 +09:00
f7908ba098 New translations ja-JP.yml (English) 2018-12-16 16:22:15 +09:00
f2fda3075e New translations ja-JP.yml (Chinese Simplified) 2018-12-16 16:22:11 +09:00
1338a68979 New translations ja-JP.yml (Catalan) 2018-12-16 16:22:05 +09:00
e7da505fb3 [Client] Bug fix and clean up 2018-12-16 16:12:41 +09:00
5a9228372f New translations ja-JP.yml (Korean) 2018-12-16 13:31:39 +09:00
c4a6ba9097 New translations ja-JP.yml (Korean) 2018-12-16 12:13:35 +09:00
d5871b408b 10.64.0 2018-12-16 11:36:44 +09:00
7b3338e373 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-16 11:32:30 +09:00
d18ee12d2f [Client] Add some animations 🎨 2018-12-16 11:32:20 +09:00
ca9cc97940 Update minio requirement from 7.0.1 to 7.0.2 (#3606)
Updates the requirements on [minio](https://github.com/minio/minio-js) to permit the latest version.
- [Release notes](https://github.com/minio/minio-js/releases)
- [Commits](https://github.com/minio/minio-js/commits/7.0.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-16 10:30:33 +09:00
a70070ac7d Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-16 10:30:06 +09:00
069d99b320 Update dependency 🚀 2018-12-16 10:29:55 +09:00
37d350dcad Merge pull request #3601 from syuilo/l10n_develop
New Crowdin translations
2018-12-16 10:24:04 +09:00
8653e09b59 [Client] Add particle effect 2018-12-16 10:20:46 +09:00
7cd2d59576 [Client] Fix bug 2018-12-16 09:03:07 +09:00
a0839de38f Add 'twitter:creator' meta data in user pages (#3618)
* Update user.pug

* Update user.pug

* Update note.pug

* Update user.pug

* Update note.pug

* Update note.pug
2018-12-16 08:49:38 +09:00
b7c5c71c6f [Client] Resolve #2951
あと検索フォームでサジェストを有効に
2018-12-16 08:45:10 +09:00
adab0adbdd New translations ja-JP.yml (English) 2018-12-16 07:31:43 +09:00
2faa58928f Format uptimes (#3629)
* Format uptime

* 逆だわ

* ザ

* 1個多い

* Fix comment
2018-12-16 07:06:43 +09:00
ffb80efe21 Return 404 for invalid Object ID (#3627)
* Update activitypub.ts

* Update activitypub.ts

* Update featured.ts

* Update followers.ts

* Update following.ts

* Update outbox.ts

* Fix following, outbox
2018-12-16 01:44:59 +09:00
6f959218ef Update analog-clock.vue 2018-12-15 23:34:46 +09:00
be1125dcb9 OGP向けにインスタンスのバナー画像を提供するように 2018-12-15 23:19:04 +09:00
9ab34c2301 Update index.ts (#3624) 2018-12-15 20:54:34 +09:00
0166d81d9e New translations ja-JP.yml (Polish) 2018-12-15 18:31:49 +09:00
0b26efbd2f New translations ja-JP.yml (French) 2018-12-15 18:01:50 +09:00
2cbaedf946 New translations ja-JP.yml (Norwegian) 2018-12-15 17:13:24 +09:00
b66924fbe8 New translations ja-JP.yml (Dutch) 2018-12-15 17:13:19 +09:00
8c91148954 New translations ja-JP.yml (Japanese, Kansai) 2018-12-15 17:13:13 +09:00
be0eff3dda New translations ja-JP.yml (Spanish) 2018-12-15 17:13:08 +09:00
85903ac9c6 New translations ja-JP.yml (Russian) 2018-12-15 17:13:04 +09:00
dbdd778dc7 New translations ja-JP.yml (Portuguese) 2018-12-15 17:12:59 +09:00
fc50dfd8d5 New translations ja-JP.yml (Polish) 2018-12-15 17:12:54 +09:00
f444e132ee New translations ja-JP.yml (Korean) 2018-12-15 17:12:50 +09:00
68f562c323 New translations ja-JP.yml (Italian) 2018-12-15 17:12:44 +09:00
820ea69613 New translations ja-JP.yml (German) 2018-12-15 17:12:40 +09:00
6f4b3853a1 New translations ja-JP.yml (French) 2018-12-15 17:12:33 +09:00
a706ad0e80 New translations ja-JP.yml (English) 2018-12-15 17:12:26 +09:00
820116affc New translations ja-JP.yml (Chinese Simplified) 2018-12-15 17:12:22 +09:00
52650342be New translations ja-JP.yml (Catalan) 2018-12-15 17:12:16 +09:00
85ddabdc65 Update ja-JP.yml 2018-12-15 17:09:05 +09:00
0730cc4fa4 🎨 2018-12-15 17:01:19 +09:00
17b6ab0ef0 🎨 2018-12-15 16:48:28 +09:00
4e208b85bb New translations ja-JP.yml (Polish) 2018-12-15 08:51:47 +09:00
00f8b29f6d New translations ja-JP.yml (Polish) 2018-12-15 08:41:45 +09:00
9cf0fcadb1 New translations ja-JP.yml (Polish) 2018-12-15 08:31:50 +09:00
c595efeead New translations ja-JP.yml (Polish) 2018-12-15 08:21:59 +09:00
b56c6793a1 New translations ja-JP.yml (Polish) 2018-12-15 08:12:15 +09:00
ebceffba1e Resolve #2165 2018-12-15 00:09:04 +09:00
3ae42d9b85 🎨 2018-12-14 23:35:07 +09:00
796237b3c6 Implement admin drive page 2018-12-14 19:09:11 +09:00
cb7a97ee4c New translations ja-JP.yml (Korean) 2018-12-14 07:32:03 +09:00
0cf758b6d1 New translations ja-JP.yml (French) 2018-12-14 02:03:02 +09:00
d28fca320e New translations ja-JP.yml (French) 2018-12-14 01:42:26 +09:00
8bd17703c3 Fix reversi settings bot switch (#3609) 2018-12-13 13:40:10 +09:00
a78eebc43f ていねい (#3608)
「古い」という表現でキレる方もいるので、丁寧な言葉づかいに変更
2018-12-13 09:42:14 +09:00
79fb5246df New translations ja-JP.yml (English) 2018-12-13 08:01:55 +09:00
458b8c78dc New translations ja-JP.yml (French) 2018-12-13 04:12:31 +09:00
64e0cbd6fc New translations ja-JP.yml (French) 2018-12-13 04:04:32 +09:00
7fe937026b Update html.ts (#3603) 2018-12-13 01:33:18 +09:00
656cec65b9 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-13 01:18:29 +09:00
8045bbff1c 🎨 2018-12-13 01:18:17 +09:00
c1a7a21746 Hide unavailable integration settings (#3604) 2018-12-12 23:21:02 +09:00
f3ee63fcbe Update url-preview.vue (#3602) 2018-12-12 21:19:52 +09:00
7645c212a3 No @ for account name (#3586)
* No @ for account name

* Use @ for GitHub
2018-12-12 17:33:08 +09:00
8b38e2ea58 New translations ja-JP.yml (Norwegian) 2018-12-12 13:12:57 +09:00
c9eb6a8919 New translations ja-JP.yml (Dutch) 2018-12-12 13:12:53 +09:00
9a41fd4734 New translations ja-JP.yml (Japanese, Kansai) 2018-12-12 13:12:47 +09:00
70d96ee076 New translations ja-JP.yml (Spanish) 2018-12-12 13:12:43 +09:00
3b6fb3959b New translations ja-JP.yml (Russian) 2018-12-12 13:12:36 +09:00
484d705320 New translations ja-JP.yml (Portuguese) 2018-12-12 13:12:30 +09:00
786031be66 New translations ja-JP.yml (Polish) 2018-12-12 13:12:25 +09:00
bc0027ce43 New translations ja-JP.yml (Korean) 2018-12-12 13:12:21 +09:00
3e7c6d9bdc New translations ja-JP.yml (Italian) 2018-12-12 13:12:15 +09:00
5463e3e55e New translations ja-JP.yml (German) 2018-12-12 13:12:11 +09:00
84a880086e New translations ja-JP.yml (French) 2018-12-12 13:12:06 +09:00
89419b7136 New translations ja-JP.yml (English) 2018-12-12 13:12:01 +09:00
9106ec74f7 New translations ja-JP.yml (Chinese Simplified) 2018-12-12 13:11:57 +09:00
ebf9a0921d New translations ja-JP.yml (Catalan) 2018-12-12 13:11:53 +09:00
c237f49016 10.63.1 2018-12-12 13:07:16 +09:00
709290d2da Improve mention display 2018-12-12 13:06:05 +09:00
eb3180f3b6 Fix bug 2018-12-12 13:05:37 +09:00
681997509c Merge pull request #3599 from syuilo/l10n_develop
New Crowdin translations
2018-12-12 12:22:59 +09:00
79ff5888fd Fix htmlToMfm (#3600) 2018-12-12 11:47:07 +09:00
9ee9cf8d81 Fix URL after deleting remote file (#3597)
* Fix URL after deleting remote file

* expired only

* delete space
2018-12-12 11:46:35 +09:00
ee3c0f6f18 Update settings.2fa.vue (#3593) 2018-12-12 10:07:30 +09:00
9dd463bff4 New translations ja-JP.yml (Korean) 2018-12-12 07:53:00 +09:00
df297d0031 Fix fields (#3596) 2018-12-12 02:46:40 +09:00
d18d1cb958 Update settings.2fa.vue (#3595) 2018-12-11 23:41:27 +09:00
5bc0570888 Update CHANGELOG.md 2018-12-11 21:31:58 +09:00
8b43d75eaf 10.63.0 2018-12-11 21:20:26 +09:00
89b37bd73d Merge pull request #3571 from syuilo/l10n_develop
New Crowdin translations
2018-12-11 21:19:57 +09:00
69f246ce7f Fix bug 2018-12-11 21:17:57 +09:00
6a97f0b7f6 [Client] Fix bug 2018-12-11 20:59:25 +09:00
d885b872f3 Fix bug 2018-12-11 20:47:07 +09:00
125849673a Use for-of instead of forEach (#3583)
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
2018-12-11 20:36:55 +09:00
30c53e9ee0 Fix error 2018-12-11 20:33:52 +09:00
981fb9e8f3 New translations ja-JP.yml (English) 2018-12-11 20:32:25 +09:00
9fac22d880 New translations ja-JP.yml (Norwegian) 2018-12-11 20:23:11 +09:00
b8f034064a New translations ja-JP.yml (Dutch) 2018-12-11 20:23:07 +09:00
6068227434 New translations ja-JP.yml (Japanese, Kansai) 2018-12-11 20:23:02 +09:00
69cda49c88 New translations ja-JP.yml (Spanish) 2018-12-11 20:22:58 +09:00
039d821d20 New translations ja-JP.yml (Russian) 2018-12-11 20:22:53 +09:00
44d93bc408 New translations ja-JP.yml (Portuguese) 2018-12-11 20:22:48 +09:00
cfa76ac6f9 New translations ja-JP.yml (Polish) 2018-12-11 20:22:44 +09:00
0ec2d16522 New translations ja-JP.yml (Korean) 2018-12-11 20:22:39 +09:00
6bcac1fe14 New translations ja-JP.yml (Italian) 2018-12-11 20:22:35 +09:00
bc9427d000 New translations ja-JP.yml (German) 2018-12-11 20:22:30 +09:00
07c043361e New translations ja-JP.yml (French) 2018-12-11 20:22:26 +09:00
e676a9a501 New translations ja-JP.yml (English) 2018-12-11 20:22:22 +09:00
09e654c6d2 New translations ja-JP.yml (Chinese Simplified) 2018-12-11 20:22:17 +09:00
549cb1ba87 New translations ja-JP.yml (Catalan) 2018-12-11 20:22:13 +09:00
c633827e5e Update typescript requirement from 3.1.6 to 3.2.2 (#3585)
Updates the requirements on [typescript](https://github.com/Microsoft/TypeScript) to permit the latest version.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits/v3.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-11 20:21:03 +09:00
08142ead67 Resolve #3581 (#3589)
* Update ja-JP.yml

* Create 404.vue

* Update script.ts

* Update script.ts

* Update script.ts

* Update script.ts

* Update script.ts

* Update script.ts

* Update 404.vue

* Update meta.ts

* Update instance.vue

* Update update-meta.ts
2018-12-11 20:19:13 +09:00
638d81b66e Show user fields (#3590) 2018-12-11 20:18:12 +09:00
4c83c2f64d New translations ja-JP.yml (Norwegian) 2018-12-11 18:25:19 +09:00
bf56f90fdc New translations ja-JP.yml (Dutch) 2018-12-11 18:25:14 +09:00
d8412aad7a New translations ja-JP.yml (Japanese, Kansai) 2018-12-11 18:25:09 +09:00
c136741710 New translations ja-JP.yml (Spanish) 2018-12-11 18:25:05 +09:00
4fe8454da0 New translations ja-JP.yml (Russian) 2018-12-11 18:25:00 +09:00
3f2161dadd New translations ja-JP.yml (Portuguese) 2018-12-11 18:24:55 +09:00
3db516aa1a New translations ja-JP.yml (Polish) 2018-12-11 18:24:50 +09:00
367bbbe605 New translations ja-JP.yml (Korean) 2018-12-11 18:24:45 +09:00
5b70ff561c New translations ja-JP.yml (Italian) 2018-12-11 18:24:40 +09:00
4486527e5d New translations ja-JP.yml (German) 2018-12-11 18:24:36 +09:00
147e23d332 New translations ja-JP.yml (French) 2018-12-11 18:24:31 +09:00
ee20e6950e New translations ja-JP.yml (English) 2018-12-11 18:24:26 +09:00
1d217154ef New translations ja-JP.yml (Chinese Simplified) 2018-12-11 18:24:22 +09:00
27d304a1ab New translations ja-JP.yml (Catalan) 2018-12-11 18:24:17 +09:00
1d1a373ca8 Update ja-JP.yml 2018-12-11 18:12:18 +09:00
bca3c6f8bf 🎨 2018-12-11 04:29:47 +09:00
d83d661535 New translations ja-JP.yml (French) 2018-12-11 00:02:10 +09:00
e16906afc3 Refactor /.autogen (#3551)
* Create patreon.jq

* Create check_pr.jq

* Rename check_pr.jq to .autogen/check_pr.jq

* Create next_url.jq

* Update autogen.sh

* Rename autogen.sh to update_readme_patreon.sh
2018-12-10 23:22:52 +09:00
a6dc0f3684 Fix #3325 2018-12-10 23:13:50 +09:00
6120474548 Use && and || to eliminate if-statement (#3559)
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
2018-12-10 17:08:48 +09:00
121dd86299 [Client] Fix #3396 2018-12-10 12:31:04 +09:00
5251d9f668 New translations ja-JP.yml (Korean) 2018-12-10 07:32:10 +09:00
7ae3f569de New translations ja-JP.yml (Polish) 2018-12-10 04:42:02 +09:00
142ebead59 New translations ja-JP.yml (Polish) 2018-12-10 04:31:59 +09:00
e196086c64 New translations ja-JP.yml (Polish) 2018-12-10 04:11:59 +09:00
8c6ed98505 New translations ja-JP.yml (English) 2018-12-10 03:51:43 +09:00
98a2953c9c Fix bug 2018-12-10 01:44:43 +09:00
61d224695b New translations ja-JP.yml (Polish) 2018-12-10 01:02:02 +09:00
6967def6c8 Use primitive type string instead of String (#3578) 2018-12-09 23:26:32 +09:00
68c0600a5c New translations ja-JP.yml (Polish) 2018-12-09 22:12:14 +09:00
b8163bd0e1 New translations ja-JP.yml (Polish) 2018-12-09 22:02:27 +09:00
8c25b9dfad New translations ja-JP.yml (Polish) 2018-12-09 21:51:59 +09:00
bf34f67583 New translations ja-JP.yml (Polish) 2018-12-09 21:42:34 +09:00
0c63f410d6 New translations ja-JP.yml (Polish) 2018-12-09 21:32:06 +09:00
069077ace4 New translations ja-JP.yml (Polish) 2018-12-09 21:22:17 +09:00
5be947ea4d New translations ja-JP.yml (Polish) 2018-12-09 21:12:01 +09:00
b41ffa75b7 New translations ja-JP.yml (Polish) 2018-12-09 21:02:34 +09:00
48df08d4dc New translations ja-JP.yml (Norwegian) 2018-12-09 14:32:46 +09:00
4de9a08e55 New translations ja-JP.yml (Dutch) 2018-12-09 14:32:41 +09:00
3f46b5259b New translations ja-JP.yml (Japanese, Kansai) 2018-12-09 14:32:35 +09:00
2faa8ea97c New translations ja-JP.yml (Spanish) 2018-12-09 14:32:30 +09:00
514690cf18 New translations ja-JP.yml (Russian) 2018-12-09 14:32:26 +09:00
f4f78c1898 New translations ja-JP.yml (Portuguese) 2018-12-09 14:32:22 +09:00
2d24befb15 New translations ja-JP.yml (Polish) 2018-12-09 14:32:17 +09:00
184d88838c New translations ja-JP.yml (Korean) 2018-12-09 14:32:11 +09:00
4490503d59 New translations ja-JP.yml (Italian) 2018-12-09 14:32:06 +09:00
99750435ae New translations ja-JP.yml (German) 2018-12-09 14:32:02 +09:00
fae920e578 New translations ja-JP.yml (French) 2018-12-09 14:31:56 +09:00
0243b6d13b New translations ja-JP.yml (English) 2018-12-09 14:31:51 +09:00
12bc725d68 New translations ja-JP.yml (Chinese Simplified) 2018-12-09 14:31:46 +09:00
b1a7b781ec New translations ja-JP.yml (Catalan) 2018-12-09 14:31:40 +09:00
324 changed files with 6754 additions and 2589 deletions

3
.autogen/check_pr.jq Normal file
View File

@ -0,0 +1,3 @@
.[]
.head
.label

2
.autogen/next_url.jq Normal file
View File

@ -0,0 +1,2 @@
.links
.next

39
.autogen/patreon.jq Normal file
View File

@ -0,0 +1,39 @@
(
.data |
map(
select(
.relationships
.currently_entitled_tiers
.data[]
)
) |
map(
.relationships
.user
.data
.id
)
) as $data |
.included |
map(
select(
.id as $id |
$data |
contains(
[
$id
]
)
)
) |
map(
.attributes |
[
.full_name,
.thumb_url,
.url
] |
@tsv
) |
.[] |
@text

View File

@ -5,7 +5,7 @@
# __MISSKEY_HEAD=acid-chicken:patch-autogen # __MISSKEY_HEAD=acid-chicken:patch-autogen
# __MISSKEY_REPO=syuilo/misskey # __MISSKEY_REPO=syuilo/misskey
# __MISSKEY_BRANCH=develop # __MISSKEY_BRANCH=develop
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r '.[].head.label' | grep $__MISSKEY_HEAD)" && exit 1 test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1
cd "$(dirname $0)/.." && \ cd "$(dirname $0)/.." && \
touch null.cache && \ touch null.cache && \
rm *.cache && \ rm *.cache && \
@ -30,12 +30,12 @@ while :
touch patreon.cache && \ touch patreon.cache && \
rm patreon.cache && \ rm patreon.cache && \
cat patreon.raw.cache | \ cat patreon.raw.cache | \
jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \ jq -r -f patreon.jq >> patreon.cache && \
echo '<table><tr>' >> patreon.md.cache && \ echo '<table><tr>' >> patreon.md.cache && \
cat patreon.cache | \ cat patreon.cache | \
awk -F'\t' '{print $2,$1}' | \ awk -F'\t' '{print $2,$1}' | \
sed -e 's/ /\\" alt=\\"/' | \ sed -e 's/ /\\" alt=\\"/' | \
xargs -I% echo '<td><img src="%"></td>' >> patreon.md.cache && \ xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \
echo '</tr><tr>' >> patreon.md.cache && \ echo '</tr><tr>' >> patreon.md.cache && \
cat patreon.cache | \ cat patreon.cache | \
awk -F'\t' '{print $3,$1}' | \ awk -F'\t' '{print $3,$1}' | \
@ -43,7 +43,7 @@ while :
xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \ xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \
echo '</tr></table>' >> patreon.md.cache || \ echo '</tr></table>' >> patreon.md.cache || \
exit 1 exit 1
new_url="$(cat patreon.raw.cache | jq -r '.links.next')" new_url="$(cat patreon.raw.cache | jq -r -f next_url.jq)"
test "$new_url" = 'null' && \ test "$new_url" = 'null' && \
break || \ break || \
URL="$url" URL="$url"

View File

@ -108,13 +108,5 @@ autoAdmin: true
# port: 9200 # port: 9200
# pass: null # pass: null
# ServiceWorker
#sw:
# # Public key of VAPID
# public_key: example-sw-public-key
#
# # Private key of VAPID
# private_key: example-sw-private-key
# Clustering # Clustering
#clusterLimit: 1 #clusterLimit: 1

13
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,13 @@
# Summary
<!--
-
- * Please describe your changes here *
-
- If you are going to resolve some issue, please add this context.
- Resolve #ISSUE_NUMBER
-
- If you are going to fix some bug issue, please add this context.
- Fix #ISSUE_NUMBER
-
-->

View File

@ -1,6 +1,160 @@
ChangeLog ChangeLog
========= =========
10.75.0
----------
* ダイレクトを非公開のように使えるように
* モデレーターを凍結できないように
* モデレーター登録を解除できるように
* NSFWなメディアをユーザーページなどで表示しないように
* 管理画面でユーザーを状態でフィルタできるように
* 管理者がサインイン履歴を参照できるツール
* Renote数を再度表示するように
* インスタンス情報ページの追加
* テーマの調整
* UIの改善
10.74.0
----------
* Pleromaとのフェデレーションを修正
* インスタンスのキャラクター画像を設定できるように
* Catモードの朝鮮語対応
* CWが付いた投稿に返信する際、そのCWを引き継ぐように
* 投稿のソースをクリップボードにコピーできるように
* i/notifications API で取得する通知の種別を配列で指定できるように
* パフォーマンスの改善
* バグ修正
10.73.0
-------
* テーマの強化
* line thiknessの設定はデバイスに保存するように
10.72.0
-------
* いくつかのテーマの追加
* デザインの調整
* バグ修正
* など
10.71.0
-------
* いくつかのテーマの追加
10.70.1
-------
* notes/mentions にミュートを適用するように
* Add id to return of users/relation
* デザインの調整
10.70.0
-------
* フォローしているユーザーからのフォローを自動承認するオプション
* 「非公開」の公開範囲を廃止
* Renote数の表示を廃止
* 投稿のフィルタリングを強化
* デザインの調整
10.69.0
-------
* 通知の管理を強化
* ユーザビリティの強化
* デザインの調整
10.68.0
-------
* 特定ユーザーにメンション付きで新規投稿ができるボタンを追加
* 自分の投稿にリアクションできないように
* 数式に文法エラーがあるとき、数式のソースをそのまま表示するように
* CWボタンにアンケートの有無を表記するように
* デスクトップ版で設定を新しいタブで開くように
* モバイル版で検索ができない問題を修正
* i18nの修正
10.67.0
-------
* トークのメッセージを削除できるように
* リアクションを取り消せるように
* Misskey以外のソフトウェアからの「Like」アクティビティをプリンではなく「いいね」として扱うように
* i18nの修正
* バグ修正
* など
10.66.2
-------
* i18nの修正
* ドライブのファイル一覧取得APIでファイルサイズによるソートが機能していなかった問題を修正
* リモートユーザーの更新時に、各ピン留め投稿の取得失敗は無視するように
* リモートMisskeyユーザーの情報が登録/更新出来なくなっていたのを修正
* メンションのリンク先URLに余計な@がプリフィクスされていたのを修正
* ダイレクトでリプライする際、リプライ先のユーザーは自動的に公開先として追加するように
* ダイレクトでメンションでもユーザーを指定できるように
10.66.1
-------
* ActivityPubのsharedInboxに関して修正
* MFMでのカッコの判定を改善
* バグ修正
10.66.0
-------
* ユーザーごとのRSSフィードを提供するように
* リストのユーザーがすべて表示できない問題を修正
* デザインの調整
* パフォーマンスの改善
10.65.0
-------
* 検索で投稿やユーザーのURLを入力した際にそれをフェッチして表示するように
* リストのリネームと削除をできるように
* リストからユーザーを削除できるように
* リモートの絵文字を更新するように
* ActivityPubのための絵文字エンドポイントを実装
* 管理者がドライブのファイルのNSFWを設定できるように
* ServiceWorkerの設定を管理者ページで行えるように
* メンションの判定を改善
* リモートの投稿を引用した際にオリジナルのURLを挿入するように
* クライアントのパフォーマンス改善
* CWの内容がタブタイトルに表示されるのを修正
* アカウントを作成したときにログイン状態にならない問題を修正
* 時計の針にテーマカラーが適用されていなかったのを修正
* 一部の日時の表示が日本語で表示されていたのを修正
* プロフィールの写真欄に画像以外のファイルが含まれる問題を修正
* メンションが含まれる投稿に返信する際、フォームに予めそれらのメンションがセットされた状態にならない問題を修正
* デッキのTLにUIの動きを減らすオプションが適用されていなかったのを修正
* ログイン画面のタイムラインに隠した投稿が表示される問題を修正
* サジェストが複数開いてしまう問題を修正
* APから来たタグに登録時の長さ制限が適用されていなかったのを修正
10.64.2
-------
* UIの動きを減らすオプションが一部のアニメーションに適用されなかったのを修正
10.64.1
-------
* レートリミットの調整
* アニメーションの調整
10.64.0
-------
* いくつかのアニメーションを追加
* OGP向けにインスタンスのバナー画像を提供するように
* 管理者ページでドライブのファイルを表示できるように
* ユーザビリティの強化
* バグ修正
10.63.1
-------
* メンションの表示を改善
* バグ修正
10.63.0
-------
* ActivityPubのユーザーフィールドをユーザーページに表示
* 404ページの実装
* パフォーマンスの向上
* バグ修正
10.62.2 10.62.2
------- -------
* バグ修正 * バグ修正

View File

@ -25,3 +25,16 @@ Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n).
## Continuous integration ## Continuous integration
Misskey uses CircleCI for automated test. Misskey uses CircleCI for automated test.
Configuration files are located in `/.circleci`. Configuration files are located in `/.circleci`.
## Glossary
### AP
Stands for _**A**ctivity**P**ub_.
### MFM
Stands for _**M**isskey **F**lavored **M**arkdown_.
### Mk
Stands for _**M**iss**k**ey_.
### SW
Stands for _**S**ervice**W**orker_.

View File

@ -3,9 +3,9 @@
[![Misskey](/assets/title.png)](https://misskey.xyz/) [![Misskey](/assets/title.png)](https://misskey.xyz/)
================================================================ ================================================================
[![CircleCI](https://circleci.com/gh/syuilo/misskey.svg?style=svg)](https://circleci.com/gh/syuilo/misskey) [![CircleCI](https://img.shields.io/circleci/project/github/syuilo/misskey.svg?style=for-the-badge)](https://circleci.com/gh/syuilo/misskey)
[![][dependencies-badge]][dependencies-link] [![Dependencies](https://img.shields.io/david/syuilo/misskey.svg?style=for-the-badge)](https://david-dm.org/syuilo/misskey)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](http://makeapullrequest.com)
**Sophisticated microblogging platform, evolving forever.** **Sophisticated microblogging platform, evolving forever.**
@ -73,66 +73,62 @@ Please see [Contribution guide](./CONTRIBUTING.md).
---------------------------------------------------------------- ----------------------------------------------------------------
<!-- PATREON_START --> <!-- PATREON_START -->
<table><tr> <table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=Zeh1u6l_Vmgoy8A1eT1Sltea-_SZSq8t8uOWDRZRh94%3D" alt="weep"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=WeuDzzz24cRXJogyIkU-mxARqkdyms-rcZKbO-GpGjw%3D" alt="weep" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=prtYqPOiSHBulhM7NU0VzMaWx39-9ntdq25b6kafDNA%3D" alt="negao" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=djaJ9cwy9uwTiF9UFtxYQdS8Nw7BhyfaREzZUbErN-0%3D" alt="Melilot" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=LtV2lRi3L2jOWMLwccr9qWYfPrFlzIo2jYZHKzHEb6k%3D" alt="Xeltica" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Xeltica"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=Ch3iF81ZGP0LMo894Y9ajpLisgtE91SnxtZE7fxsgrM%3D" alt="べすれい" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=1FlxS9MEgmNGH_RHUVHbO5hIXB5I1z0lvA33CTvYvjA%3D" alt="gutfuckllc" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/weepjp">weep</a></td> <td><a href="https://www.patreon.com/weepjp">weep</a></td>
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
<td><a href="https://www.patreon.com/negao">negao</a></td> <td><a href="https://www.patreon.com/negao">negao</a></td>
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
<td><a href="https://www.patreon.com/AxellaMC">Xeltica</a></td> <td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td> <td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=0xgcpqvFDqRcV_YIEhcPNVH7gs9sLg_BBnTJXCkN4ao%3D" alt="mydarkstar" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td> <td><img src="https://c8.patreon.com/2/200/12718187" alt="Peter G." width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=2PsbFNw0tnubZzgSXD01R6hIgncfiElG7H7HX2Y3dyo%3D" alt="nemu" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=9JtETp0X8gI280Ne1E8bxn6j4Lw5o2k4mJkICx97V_k%3D" alt="YUKIMOCHI" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=zrInDotuEIFslKphuSiCqr3M-r-rveTXjVKWr-VK6M0%3D" alt="Acid Chicken" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=5T8XcaAf9Zyzfg3QubR06s_kJZkArVEM2dwObrBVAU4%3D" alt="Hiratake" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=ubVARikVOg3v7NW6LDhtG-ClE1LTU3I2TJ3js2-5xDs%3D" alt="Naoki Hirayama" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td> <td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td> <td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td> <td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td> <td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td> <td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=Ksk_2l3gjPDbnzMUOCSW1E-hdPJsNs2tSR4_RAakRK8%3D" alt="dansup" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=CXe9AqlZy9AsYfiWd3OBYVOzvODoN47Litz0Tu4BFpU%3D" alt="Gargron" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=xhR1n6NAAyEb-IUXLD6_dshkFa3mefU5ZZuk1L8qKTs%3D" alt="Nokotaro Takeda" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=uR-48MQ0A4j0irQSrCAQZJ-sJUSs_Fkihlg3-l59b7c%3D" alt="Takashi Shibuya" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td> <td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table> </tr></table>
**Last updated:** Thu, 06 Dec 2018 14:22:05 UTC **Last updated:** Sun, 06 Jan 2019 21:53:06 UTC
<!-- PATREON_END --> <!-- PATREON_END -->
:four_leaf_clover: Copyright :four_leaf_clover: Copyright
---------------------------------------------------------------- ----------------------------------------------------------------
> Copyright (c) 2014-2018 syuilo > Copyright (c) 2014-2019 syuilo
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE). Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
[![][agpl-3.0-badge]][AGPL-3.0] [![][agpl-3.0-badge]][AGPL-3.0]
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html [agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square [agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=for-the-badge
[dependencies-link]: https://david-dm.org/syuilo/misskey
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
[backer-url]: #backers [backer-url]: #backers
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg [backer-badge]: https://opencollective.com/misskey/backers/badge.svg

View File

@ -17,7 +17,7 @@ This guide describes how to install and setup Misskey with Docker.
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`. 2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
2. Edit `default.yml` and `mongo_initdb.js`. 3. Edit `default.yml` and `mongo_initdb.js`.
*3.* Configure Docker *3.* Configure Docker
---------------------------------------------------------------- ----------------------------------------------------------------

67
docs/docker.fr.md Normal file
View File

@ -0,0 +1,67 @@
Guide Docker
================================================================
Ce guide explique comment installer et configurer Misskey avec Docker.
[Version japonaise également disponible - Japanese version also available - 日本語版もあります](./docker.ja.md)
[Version anglaise également disponible - English version also available - 英語版もあります](./docker.en.md)
----------------------------------------------------------------
*1.* Télécharger Misskey
----------------------------------------------------------------
1. `git clone -b master git://github.com/syuilo/misskey.git` Clone le dépôt de Misskey sur la branche master.
2. `cd misskey` Permet de se déplacer dans le dossier du dépôt.
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout sur le tag de la [dernière version](https://github.com/syuilo/misskey/releases/latest).
*2.* Configuration de Misskey
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copie le fichier `.config/example.yml` et le renommer en `default.yml`.
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copie le fichier `.config/mongo_initdb_example.js` et le renomme en `mongo_initdb.js`.
3. Editer `default.yml` et `mongo_initdb.js`.
*3.* Configurer Docker
----------------------------------------------------------------
Editez `docker-compose.yml`.
*4.* Contruire Misskey
----------------------------------------------------------------
Contruire l'image Docker avec:
`docker-compose build`
*5.* C'est tout !
----------------------------------------------------------------
Parfait, Vous avez un environnement prêt pour démarrer Misskey.
### Lancer normalement
Utilisez la commande `docker-compose up -d`. GLHF!
### How to update your Misskey server to the latest version
1. `git fetch`
2. `git stash`
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
4. `git stash pop`
5. `docker-compose build`
6. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration
7. `docker-compose stop && docker-compose up -d`
### Comment exécuter des [commandes](manage.fr.md)
`docker-compose run --rm web node cli/mark-admin @example`
### Configuration d'ElasticSearch (pour la fonction de recherche)
*1.* Préparation de l'environnement
----------------------------------------------------------------
1. `mkdir elasticsearch && chown 1000:1000 elasticsearch` Permet de créer le dossier d'accueil de la base ElasticSearch aves les bons droits
2. `sysctl -w vm.max_map_count=262144` Augmente la valeur max du paramètre map_count du système (valeur minimum pour pouvoir lancer ES)
*2.* Après lancement du docker-compose, initialisation de la base ElasticSearch
----------------------------------------------------------------
1. `docker-compose -it web /bin/sh` Connexion dans le conteneur web
2. `apk add curl` Ajout du paquet curl
3. `curl -X PUT "es:9200/misskey" -H 'Content-Type: application/json' -d'{ "settings" : { "index" : { } }}'` Création de la base ES
4. `exit`
----------------------------------------------------------------
Si vous avez des questions ou des problèmes, n'hésitez pas à nous contacter !

View File

@ -0,0 +1,70 @@
# Sample nginx configuration for Misskey
#
# 1. Replace example.tld to your domain
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-ebabled/
# or copy to /etc/nginx/conf.d/
# For WebSocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
server {
listen 80;
listen [::]:80;
server_name example.tld;
# For SSL domain validation
root /var/www/html;
location /.well-known/acme-challenge/ { allow all; }
location /.well-known/pki-validation/ { allow all; }
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 http2;
listen [::]:443 http2;
server_name example.tld;
ssl on;
ssl_session_cache shared:ssl_session_cache:10m;
# To use Let's Encrypt certificate
ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
ssl_protocols TLSv1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
ssl_prefer_server_ciphers on;
# Change to your upload limit
client_max_body_size 80m;
# Proxy to Node
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_http_version 1.1;
proxy_redirect off;
# For WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Cache settings
proxy_cache cache1;
proxy_cache_lock on;
proxy_cache_use_stale updating;
add_header X-Cache $upstream_cache_status;
}
}

18
docs/manage.fr.md Normal file
View File

@ -0,0 +1,18 @@
# Guide d'administration
## Vérifier le status de la file d'attente des taches
coming soon
## Marquer un utilisateur en tant que 'admin'
``` shell
node cli/mark-admin (ID utilisateur ou nom d'utilisateur)
```
Exemple :
``` shell
# Par id
node cli/mark-admin 57d01a501fdf2d07be417afe
# Par nom d'utilisateur
node cli/suspend @syuilo
```

View File

@ -47,16 +47,6 @@ As root:
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Install misskey dependencies. 5. `npm install` Install misskey dependencies.
*(optional)* Generate VAPID keys
----------------------------------------------------------------
If you want to enable ServiceWorker, you need to generate VAPID keys:
Unless you have set your global node_modules location elsewhere, you need to run this as root.
``` shell
npm install web-push -g
web-push generate-vapid-keys
```
*5.* Configure Misskey *5.* Configure Misskey
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.

View File

@ -47,16 +47,6 @@ En mode root :
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest) 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Installez les dépendances de misskey. 5. `npm install` Installez les dépendances de misskey.
*(optionnel)* Génération des clés VAPID
----------------------------------------------------------------
Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID :
Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root.
``` shell
npm install web-push -g
web-push generate-vapid-keys
```
*5.* Création du fichier de configuration *5.* Création du fichier de configuration
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`. 1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.

View File

@ -53,15 +53,6 @@ adduser --disabled-password --disabled-login misskey
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
5. `npm install` Misskeyの依存パッケージをインストール 5. `npm install` Misskeyの依存パッケージをインストール
*(オプション)* VAPIDキーペアの生成
----------------------------------------------------------------
ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります:
``` shell
npm install web-push -g
web-push generate-vapid-keys
```
*5.* 設定ファイルを作成する *5.* 設定ファイルを作成する
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。 1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。

View File

@ -11,14 +11,12 @@ import tslint from 'gulp-tslint';
const cssnano = require('gulp-cssnano'); const cssnano = require('gulp-cssnano');
const stylus = require('gulp-stylus'); const stylus = require('gulp-stylus');
import * as uglifyComposer from 'gulp-uglify/composer'; import * as uglifyComposer from 'gulp-uglify/composer';
import pug = require('gulp-pug');
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
import chalk from 'chalk'; import chalk from 'chalk';
const imagemin = require('gulp-imagemin'); const imagemin = require('gulp-imagemin');
import * as rename from 'gulp-rename'; import * as rename from 'gulp-rename';
import * as mocha from 'gulp-mocha'; import * as mocha from 'gulp-mocha';
import * as replace from 'gulp-replace'; import * as replace from 'gulp-replace';
import * as htmlmin from 'gulp-htmlmin';
const uglifyes = require('uglify-es'); const uglifyes = require('uglify-es');
const locales = require('./locales'); const locales = require('./locales');
@ -34,8 +32,6 @@ if (isDebug) {
console.warn(chalk.yellow.bold(' built script will not be compressed.')); console.warn(chalk.yellow.bold(' built script will not be compressed.'));
} }
const constants = require('./src/const.json');
gulp.task('build', [ gulp.task('build', [
'build:ts', 'build:ts',
'build:copy', 'build:copy',
@ -109,7 +105,7 @@ gulp.task('default', ['build']);
gulp.task('build:client', [ gulp.task('build:client', [
'build:ts', 'build:ts',
'build:client:script', 'build:client:script',
'build:client:pug', 'build:client:styles',
'copy:client' 'copy:client'
]); ]);
@ -148,52 +144,6 @@ gulp.task('copy:client', [
.pipe(gulp.dest('./built/client/assets/')) .pipe(gulp.dest('./built/client/assets/'))
); );
gulp.task('build:client:pug', [
'copy:client',
'build:client:script',
'build:client:styles'
], () =>
gulp.src('./src/client/app/base.pug')
.pipe(pug({
locals: {
themeColor: constants.themeColor
}
}))
.pipe(htmlmin({
// 真理値属性の簡略化 e.g.
// <input value="foo" readonly="readonly"> to
// <input value="foo" readonly>
collapseBooleanAttributes: true,
// テキストの一部かもしれない空白も削除する e.g.
// <div> <p> foo </p> </div> to
// <div><p>foo</p></div>
collapseWhitespace: true,
// タグ間の改行を保持する
preserveLineBreaks: true,
// (できる場合は)属性のクォーテーション削除する e.g.
// <p class="foo-bar" id="moo" title="blah blah">foo</p> to
// <p class=foo-bar id=moo title="blah blah">foo</p>
removeAttributeQuotes: true,
// 省略可能なタグを省略する e.g.
// <html><p>yo</p></html> ro
// <p>yo</p>
removeOptionalTags: true,
// 属性の値がデフォルトと同じなら省略する e.g.
// <input type="text"> to
// <input>
removeRedundantAttributes: true,
// CSSも圧縮する
minifyCSS: true
}))
.pipe(gulp.dest('./built/client/app/'))
);
gulp.task('locales', () => gulp.task('locales', () =>
gulp.src('./locales/*.yml') gulp.src('./locales/*.yml')
.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' })) .pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' }))

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "引き分け" drawn: "引き分け"
my-turn: "あなたのターンです" my-turn: "あなたのターンです"
@ -165,6 +168,7 @@ common:
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "あなた" you: "あなた"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "開発者" develop: "開発者"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "接続中" connecting: "接続中"
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "Nur für diejenigen sichtbar, die dir folgen" followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
specified: "Direkt" specified: "Direkt"
specified-desc: "Nur für bestimmte Benutzer posten" specified-desc: "Nur für bestimmte Benutzer posten"
private: "Privat"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet." my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding" i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "Verifizierter Benutzer" verified-user: "Verifizierter Benutzer"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "Animationen der Benutzeroberfläche reduzieren" reduce-motion: "Animationen der Benutzeroberfläche reduzieren"
this-setting-is-this-device-only: "Nur auf diesem Gerät" this-setting-is-this-device-only: "Nur auf diesem Gerät"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden.' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'Erneut versuchen' retry: "Erneut versuchen"
reversi: reversi:
drawn: "Unentschieden" drawn: "Unentschieden"
my-turn: "Du bist am Zug" my-turn: "Du bist am Zug"
@ -165,6 +168,7 @@ common:
hashtags: "Hashtags" hashtags: "Hashtags"
dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut." dev: "Fehler beim Erstellen der Applikation. Bitte versuche es erneut."
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "Dieser Inhalt ist NSFW" sensitive: "Dieser Inhalt ist NSFW"
click-to-show: "Klicke zum den Inhalt anzusehen" click-to-show: "Klicke zum den Inhalt anzusehen"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "Thema" light-theme: "Thema"
dark-theme: "Thema während des Nachtmodus" dark-theme: "Thema während des Nachtmodus"
light-themes: "Helles Thema" light-themes: "Helles Thema"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "Basisthema" base-theme: "Basisthema"
base-theme-light: "Hell" base-theme-light: "Hell"
base-theme-dark: "Dunkel" base-theme-dark: "Dunkel"
find-more-theme: "その他のテーマを入手"
theme-name: "Name des Themas" theme-name: "Name des Themas"
preview-created-theme: "Vorschau" preview-created-theme: "Vorschau"
invalid-theme: "Thema ist ungültig" invalid-theme: "Thema ist ungültig"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Einen Nutzer suchen" search-user: "Einen Nutzer suchen"
you: "Du" you: "Du"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "Entwickler" develop: "Entwickler"
feedback: "Feedback" feedback: "Feedback"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "Diese Notiz favorisieren" favorite: "Diese Notiz favorisieren"
unfavorite: "Aus Favoriten entfernen" unfavorite: "Aus Favoriten entfernen"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Verbindung wird hergestellt" connecting: "Verbindung wird hergestellt"
reconnecting: "Erneut verbinden" reconnecting: "Erneut verbinden"
connected: "Verbindung hergestellt" connected: "Verbindung hergestellt"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "Nur für diejenigen sichtbar, die dir folgen" followers-desc: "Nur für diejenigen sichtbar, die dir folgen"
specified: "Direkt" specified: "Direkt"
specified-desc: "Poste nur für bestimmte Benutzer" specified-desc: "Poste nur für bestimmte Benutzer"
private: "Privat"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Laden" fetching: "Laden"
no-broadcasts: "Keine Broadcasts" no-broadcasts: "Keine Broadcasts"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Ort" location: "Ort"
renote: "Anmerkung" renote: "Anmerkung"
add-reaction: "Reaktion hinzufügen" add-reaction: "Reaktion hinzufügen"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast." cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast."
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Bitte Passwort eingeben" enter-password: "Bitte Passwort eingeben"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Taskmanager" title: "Taskmanager"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -8,7 +8,7 @@ common:
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?" about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
intro: intro:
title: "What is Misskey?" title: "What is Misskey?"
about: "Misskey is a open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable Ui, varieties of reaction for posts, free file storage providing integrated management system and other advancing functions are available. Also, network system called “Fediverse” enables us to communicate with users on other SNSs. Like, if you post something, then your posts will sent not only to Misskey but also mastodon. Just imagine that the planet is sending a microwave to other planet to communication." about: "Misskey is an open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable UI, varieties of reactions for posts, free file storage providing an integrated management system and other advanced functions are available. In addition, Misskey connects to a network system called the “Fediverse” enables us to communicate with users on other SNSs. For example, when you post something it will be sent not only to Misskey but also Mastodon and Pleroma. Just imagine that the planet is sending a radio transmission to other planet to communicate."
features: "Features" features: "Features"
rich-contents: "Post" rich-contents: "Post"
rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!" rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!"
@ -18,7 +18,7 @@ common:
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize." ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
drive: "Drive" drive: "Drive"
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online." drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!" outro: "Check Misskey-unique features by seeing them with your own eyes! If you feel like this instance is not for you, try other instances, as Misskey is a decentralized SNS, so that you can easily find your mates. Then, GLHF!"
adblock: adblock:
detected: "Please disable ad blocker." detected: "Please disable ad blocker."
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>." warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
@ -90,7 +90,6 @@ common:
followers-desc: "Post to followers only" followers-desc: "Post to followers only"
specified: "Direct" specified: "Direct"
specified-desc: "Post to specified users only" specified-desc: "Post to specified users only"
private: "Private"
local-public: "Public (Only local)" local-public: "Public (Only local)"
local-home: "Home (Only local)" local-home: "Home (Only local)"
local-followers: "Followers (Only local)" local-followers: "Followers (Only local)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Your token has been regenerated, so you will be signed out." my-token-regenerated: "Your token has been regenerated, so you will be signed out."
i-like-sushi: "I prefer sushi rather than pudding" i-like-sushi: "I prefer sushi rather than pudding"
show-reversi-board-labels: "Show row and column labels in Reversi" show-reversi-board-labels: "Show row and column labels in Reversi"
use-white-black-reversi-stones: "Use white-black stone in reversi" use-avatar-reversi-stones: "Use avatar as a stone in reversi"
use-contrast-reversi-stones: "Make the stone color clear in reversi"
verified-user: "Verified account" verified-user: "Verified account"
disable-animated-mfm: "Disable animated texts in a post" disable-animated-mfm: "Disable animated texts in a post"
suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area" suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area"
@ -122,14 +120,19 @@ common:
reduce-motion: "Reduce motion in UI" reduce-motion: "Reduce motion in UI"
this-setting-is-this-device-only: "Only for this device" this-setting-is-this-device-only: "Only for this device"
use-os-default-emojis: "Use the OS default Emojis" use-os-default-emojis: "Use the OS default Emojis"
do-not-use-in-production: 'This is a development build. Do not use in production.' line-width: "Line thickness"
is-remote-user: "This user information is copied." line-width-thin: "Thin"
is-remote-post: "This post information is a copy." line-width-normal: "Regular"
view-on-remote: "View it on remote" line-width-thick: "Thick"
do-not-use-in-production: "This is a development build. Do not use in production."
user-suspended: "This user has been suspended."
is-remote-user: "This user's information is mirrored."
is-remote-post: "These post contents are mirrored."
view-on-remote: "For completion, view it remotely."
renoted-by: "Renoted by {user}" renoted-by: "Renoted by {user}"
error: error:
title: 'Something happened :(' title: "Something happened :("
retry: 'Retry' retry: "Retry"
reversi: reversi:
drawn: "Draw" drawn: "Draw"
my-turn: "Your turn" my-turn: "Your turn"
@ -165,6 +168,7 @@ common:
hashtags: "Hashtags" hashtags: "Hashtags"
dev: "Failed to create the application. Please try again." dev: "Failed to create the application. Please try again."
ai-chan-kawaii: "Ai-chan kawaii!" ai-chan-kawaii: "Ai-chan kawaii!"
you: "You"
auth/views/form.vue: auth/views/form.vue:
share-access: "Would you allow <i>{name}</i> to access your account?" share-access: "Would you allow <i>{name}</i> to access your account?"
permission-ask: "This application requires the following permissions:" permission-ask: "This application requires the following permissions:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "NSFW" sensitive: "NSFW"
click-to-show: "Click to show" click-to-show: "Click to show"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "Theme"
light-theme: "Theme" light-theme: "Theme"
dark-theme: "Theme during dark mode" dark-theme: "Theme during dark mode"
light-themes: "Light theme" light-themes: "Light theme"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "Base theme" base-theme: "Base theme"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "Find more themes"
theme-name: "Theme name" theme-name: "Theme name"
preview-created-theme: "Preview" preview-created-theme: "Preview"
invalid-theme: "Not valid theme" invalid-theme: "Not valid theme"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "See more" show: "See more"
chars: "{count} chars" chars: "{count} chars"
files: "{count} files" files: "{count} files"
poll: "Poll"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Find a user" search-user: "Find a user"
you: "You" you: "You"
@ -328,14 +335,16 @@ common/views/components/nav.vue:
develop: "Developers" develop: "Developers"
feedback: "Feedback" feedback: "Feedback"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "Mention"
detail: "Details" detail: "Details"
copy-content: "Copy the contents"
copy-link: "Copy link" copy-link: "Copy link"
favorite: "Favorite this note" favorite: "Favorite this note"
unfavorite: "Unfavorite" unfavorite: "Unfavorite"
pin: "Pin to your profile" pin: "Pin to your profile"
unpin: "Unpin" unpin: "Unpin"
delete: "Delete" delete: "Delete"
delete-confirm: "Delete this post?" delete-confirm: "Are you sure you want to delete this post?"
remote: "Show original note" remote: "Show original note"
common/views/components/poll.vue: common/views/components/poll.vue:
vote-to: "Vote for '{}'" vote-to: "Vote for '{}'"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Connecting" connecting: "Connecting"
reconnecting: "Reconnecting" reconnecting: "Reconnecting"
connected: "Connected" connected: "Connected"
common/views/components/notification-settings.vue:
title: "Notifications"
mark-as-read-all-notifications: "Mark all notifications as read"
mark-as-read-all-unread-notes: "Mark all posts as read"
mark-as-read-all-talk-messages: "Mark all conversations as read"
auto-watch: "Automatically watch out for posts"
auto-watch-desc: "Automatically receive notifications about posts you react to, or respond to."
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "Service cooperation" title: "Service cooperation"
connect: "Connect" connect: "Connect"
@ -416,7 +432,7 @@ common/views/components/github-setting.vue:
connect: "Link your GitHub account" connect: "Link your GitHub account"
disconnect: "Disconnect" disconnect: "Disconnect"
common/views/components/discord-setting.vue: common/views/components/discord-setting.vue:
description: "Once you connect your Discord account to your Misskey account, you will be able to see information about your Discord account on your profile, and you will be able to sign-in using Discord." description: "Once you connect your Discord account to your Misskey account, you will be able to see information from your Discord account on your profile, and you will be able to sign-in using Discord."
connected-to: "You are connected to this Discord account" connected-to: "You are connected to this Discord account"
detail: "Details…" detail: "Details…"
reconnect: "Reconnect" reconnect: "Reconnect"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "Post to Followers only" followers-desc: "Post to Followers only"
specified: "Direct" specified: "Direct"
specified-desc: "Post to specified users only" specified-desc: "Post to specified users only"
private: "Private"
local-public: "Local (Public)" local-public: "Local (Public)"
local-public-desc: "Do not publish to remote" local-public-desc: "Do not publish to remote"
local-home: "Home (Only local)" local-home: "Home (Only local)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "This account is a Bot" is-bot: "This account is a Bot"
is-locked: "Follower requests require approval" is-locked: "Follower requests require approval"
careful-bot: "Follower requests from bots require approval" careful-bot: "Follower requests from bots require approval"
auto-accept-followed: "Automatically approve follows from the people you follow"
advanced: "Other" advanced: "Other"
privacy: "Privacy" privacy: "Privacy"
save: "Save" save: "Save"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "Email Address" email-address: "Email Address"
email-verified: "Your email has been verified." email-verified: "Your email has been verified."
email-not-verified: "Email address is not confirmed. Please check your inbox." email-not-verified: "Email address is not confirmed. Please check your inbox."
common/views/components/user-list-editor.vue:
users: "User"
rename: "Rename list"
delete: "Delete list"
remove-user: "Remove from this list"
delete-are-you-sure: "Delete list \"$1\"?"
deleted: "Deleted successfully"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Checking" fetching: "Checking"
no-broadcasts: "No announcements" no-broadcasts: "No announcements"
@ -481,8 +504,8 @@ common/views/widgets/calendar.vue:
month: "{}," month: "{},"
day: "{}" day: "{}"
today: "Today: " today: "Today: "
this-month: "This month: " this-month: "Month:"
this-year: "This year: " this-year: "Year:"
common/views/widgets/photo-stream.vue: common/views/widgets/photo-stream.vue:
title: "Photo stream" title: "Photo stream"
no-photos: "No photos" no-photos: "No photos"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "Several windows can be detached outside the browser." tips-line19: "Several windows can be detached outside the browser."
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed." tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
tips-line21: "You can also use the API to develop bots." tips-line21: "You can also use the API to develop bots."
tips-line23: "Mayu is so cute with its eyebrows." tips-line23: "Ai-chan kawaii!"
tips-line24: "Misskey has been running since 2014." tips-line24: "Misskey has been running since 2014."
tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open" tips-line25: "In a browser compatible with notification features, you can receive notifications in case Misskey is not open"
common/views/pages/not-found.vue:
page-not-found: "The page has not been found"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "Signed in as {}" signed-in-as: "Signed in as {}"
following: "Following" following: "Following"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Location" location: "Location"
renote: "Repost" renote: "Repost"
add-reaction: "Add a reaction" add-reaction: "Add a reaction"
undo-reaction: "Reverse reaction"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "Reply" reply: "Reply"
renote: "Renote" renote: "Renote"
add-reaction: "Add a reaction" add-reaction: "Add a reaction"
undo-reaction: "Reverse reaction"
detail: "Details" detail: "Details"
private: "This post is private" private: "This post is private"
deleted: "This post has been deleted" deleted: "This post has been deleted"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up." cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
cache-cleared: "Cache cleared" cache-cleared: "Cache cleared"
cache-cleared-desc: "Please reload the page." cache-cleared-desc: "Please reload the page."
auto-watch: "Automatic watch"
auto-watch-desc: "Receive notifications about the post/reply/reaction automatically."
about: "About Misskey" about: "About Misskey"
operator: "The admin of this instance" operator: "The admin of this instance"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Enter the password" enter-password: "Enter the password"
authenticator: "First, you need to install Google Authenticator on your device:" authenticator: "First, you need to install Google Authenticator on your device:"
howtoinstall: "How to install" howtoinstall: "How to install"
token: "Token"
scan: "And then, scan the QR code:" scan: "And then, scan the QR code:"
done: "Please enter the token displayed on your device:" done: "Please enter the token displayed on your device:"
submit: "Submit" submit: "Submit"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "Enter the password" enter-password: "Enter the password"
console: console:
title: 'API console' title: "API console"
endpoint: 'Endpoint' endpoint: "Endpoint"
parameter: 'Parameters' parameter: "Parameters"
credential-info: "Parameter \"i\" is not required at this console." credential-info: "Parameter \"i\" is not required at this console."
send: 'Send' send: "Send"
sending: 'Sending' sending: "Sending"
response: 'Result' response: "Result"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "No linked applications" no-apps: "No linked applications"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "This post has been deleted" deleted: "This post has been deleted"
media-count: "{} media attached" media-count: "{} media attached"
poll: "Poll" poll: "Poll"
desktop/views/components/settings.tags.vue:
title: "Tags"
query: "Query (optional)"
add: "Add"
save: "Save"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Task Manager" title: "Task Manager"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -962,7 +993,9 @@ admin/views/instance.vue:
instance-name: "Instance name" instance-name: "Instance name"
instance-description: "Instance description" instance-description: "Instance description"
host: "Host" host: "Host"
logo-url: "Logo image URL"
banner-url: "Banner image URL" banner-url: "Banner image URL"
error-image-url: "Error image URL"
languages: "Language of this instance" languages: "Language of this instance"
languages-desc: "You can add more than one, separated by spaces." languages-desc: "You can add more than one, separated by spaces."
maintainer-config: "Administrator information" maintainer-config: "Administrator information"
@ -989,8 +1022,8 @@ admin/views/instance.vue:
enable-github-integration: "Enable connection to GitHub" enable-github-integration: "Enable connection to GitHub"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client Secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Setting of Discord Integration" discord-integration-config: "Discord Integration settings"
discord-integration-info: "The callback URL is set on {url}." discord-integration-info: "The callback URL is set to {url}."
enable-discord-integration: "Enable Discord connection" enable-discord-integration: "Enable Discord connection"
discord-integration-client-id: "Client ID" discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret" discord-integration-client-secret: "Client Secret"
@ -1006,7 +1039,7 @@ admin/views/instance.vue:
save: "Save" save: "Save"
saved: "Saved" saved: "Saved"
user-recommendation-config: "Recommended users" user-recommendation-config: "Recommended users"
enable-external-user-recommendation: "Enable to external user recommendation" enable-external-user-recommendation: "Enable external user recommendations"
external-user-recommendation-engine: "Engine" external-user-recommendation-engine: "Engine"
external-user-recommendation-engine-desc: "Example: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" external-user-recommendation-engine-desc: "Example: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "Timeout" external-user-recommendation-timeout: "Timeout"
@ -1021,6 +1054,12 @@ admin/views/instance.vue:
smtp-port: "SMTP Port" smtp-port: "SMTP Port"
smtp-user: "SMTP User" smtp-user: "SMTP User"
smtp-pass: "SMTP Password" smtp-pass: "SMTP Password"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "Enable ServiceWorker"
serviceworker-info: "Must be enabled for push notifications."
vapid-publickey: "VAPID public key"
vapid-privatekey: "VAPID private key"
vapid-info: "If you want to enable ServiceWorker, you need to generate VAPID keys. Unless you have set your global node_modules location elsewhere, you need to run this as root:"
admin/views/charts.vue: admin/views/charts.vue:
title: "Chart" title: "Chart"
per-day: "per Day" per-day: "per Day"
@ -1028,7 +1067,7 @@ admin/views/charts.vue:
federation: "Federation" federation: "Federation"
notes: "Posts" notes: "Posts"
users: "Users" users: "Users"
drive: "Drive" drive: "Media storage"
network: "Network" network: "Network"
charts: charts:
federation-instances: "The number of instances: increase/decrease" federation-instances: "The number of instances: increase/decrease"
@ -1046,6 +1085,22 @@ admin/views/charts.vue:
network-requests: "Requests" network-requests: "Requests"
network-time: "Response time" network-time: "Response time"
network-usage: "Traffic" network-usage: "Traffic"
admin/views/drive.vue:
sort:
title: "Sort"
createdAtAsc: "Age - Oldest First"
createdAtDesc: "Age - Newest First"
sizeAsc: "Size - Smallest First"
sizeDesc: "Size - Largest First"
origin:
title: "Origin"
combined: "Local + Remote"
local: "Local"
remote: "Remote"
delete: "Delete"
deleted: "Deleted successfully"
mark-as-sensitive: "Mark as 'sensitive'"
unmark-as-sensitive: "Unmark as 'sensitive'"
admin/views/users.vue: admin/views/users.vue:
operation: "Operations" operation: "Operations"
username-or-userid: "Username or user ID" username-or-userid: "Username or user ID"
@ -1177,6 +1232,7 @@ desktop/views/pages/user/user.header.vue:
posts: "Notes" posts: "Notes"
following: "Following" following: "Following"
followers: "Followers" followers: "Followers"
mention: "Mentions"
is-bot: "This account is a Bot" is-bot: "This account is a Bot"
years-old: "{age} years old" years-old: "{age} years old"
year: "/" year: "/"
@ -1186,6 +1242,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "Posts" default: "Posts"
with-replies: "Posts and replies" with-replies: "Posts and replies"
with-media: "Media" with-media: "Media"
my-posts: "My posts"
empty: "This user doesn't seem to have posted anything yet." empty: "This user doesn't seem to have posted anything yet."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Message" title: "Message"
@ -1384,7 +1441,6 @@ mobile/views/pages/settings.vue:
notification-position: "Notification style" notification-position: "Notification style"
notification-position-bottom: "Bottom" notification-position-bottom: "Bottom"
notification-position-top: "Top" notification-position-top: "Top"
theme: "Theme"
behavior: "Behavior" behavior: "Behavior"
fetch-on-scroll: "Endless loading on scroll" fetch-on-scroll: "Endless loading on scroll"
note-visibility: "Post visibility" note-visibility: "Post visibility"
@ -1408,7 +1464,6 @@ mobile/views/pages/settings.vue:
signout: "Sign out" signout: "Sign out"
sound: "Sounds" sound: "Sounds"
enable-sounds: "Enable sounds" enable-sounds: "Enable sounds"
mark-as-read-all-unread-notes: "Mark all posts as read"
password: "Password" password: "Password"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Follows you" follows-you: "Follows you"
@ -1418,7 +1473,6 @@ mobile/views/pages/user.vue:
overview: "Overview" overview: "Overview"
timeline: "Timeline" timeline: "Timeline"
media: "Media" media: "Media"
is-suspended: "This account has been suspended."
mute: "Mute" mute: "Mute"
unmute: "Unmute" unmute: "Unmute"
block: "Block" block: "Block"
@ -1472,13 +1526,14 @@ deck/deck.user-column.vue:
posts: "Posts" posts: "Posts"
following: "Following" following: "Following"
followers: "Followers" followers: "Followers"
mention: "Mentions"
images: "Images" images: "Images"
activity: "Activity" activity: "Activity"
timeline: "Timeline" timeline: "Timeline"
pinned-notes: "Pinned posts" pinned-notes: "Pinned posts"
push-to-a-list: "Add to list" push-to-a-list: "Add to list"
docs: docs:
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?" edit-this-page-on-github: "Found an error, or do you want to contribute to the documentation?"
edit-this-page-on-github-link: "Edit this page at GitHub!" edit-this-page-on-github-link: "Edit this page at GitHub!"
api: api:
entities: entities:

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado." my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
i-like-sushi: "Prefiero sushi a pudín" i-like-sushi: "Prefiero sushi a pudín"
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi" show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi"
verified-user: "Cuenta verificada" verified-user: "Cuenta verificada"
disable-animated-mfm: "Desactivar texto animado en una publicación" disable-animated-mfm: "Desactivar texto animado en una publicación"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "Empatado" drawn: "Empatado"
my-turn: "Mi turno" my-turn: "Mi turno"
@ -165,6 +168,7 @@ common:
hashtags: "Etiquetas" hashtags: "Etiquetas"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "La aplicación requiere los siguientes permisos:" permission-ask: "La aplicación requiere los siguientes permisos:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Encuentra un usuario" search-user: "Encuentra un usuario"
you: "Tu" you: "Tu"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "Desarrolladores" develop: "Desarrolladores"
feedback: "Opiniones" feedback: "Opiniones"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "Detalles" detail: "Detalles"
copy-content: "内容をコピー"
copy-link: "Copiar enlace" copy-link: "Copiar enlace"
favorite: "Me gusta esta nota" favorite: "Me gusta esta nota"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Conectando" connecting: "Conectando"
reconnecting: "Reconectando" reconnecting: "Reconectando"
connected: "Conectado" connected: "Conectado"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "Piblica solo para tus seguidores" followers-desc: "Piblica solo para tus seguidores"
specified: "Directo" specified: "Directo"
specified-desc: "Publica solo para los seguidores que quieras" specified-desc: "Publica solo para los seguidores que quieras"
private: "Privada"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Recuperando" fetching: "Recuperando"
no-broadcasts: "Sin emisión" no-broadcasts: "Sin emisión"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador" tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador"
tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido." tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido."
tips-line21: "También puedes usar la API para desarrollar tus propios bots." tips-line21: "También puedes usar la API para desarrollar tus propios bots."
tips-line23: "Mayu is tan bonito con sus cejas." tips-line23: "藍かわいいよ藍"
tips-line24: "Misskey inició en 2014." tips-line24: "Misskey inició en 2014."
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible." tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "Autenticado como {}" signed-in-as: "Autenticado como {}"
following: "Siguiendo" following: "Siguiendo"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Localización" location: "Localización"
renote: "Republicar" renote: "Republicar"
add-reaction: "Agregar una reacción" add-reaction: "Agregar una reacción"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Escribe una contraseña" enter-password: "Escribe una contraseña"
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:" authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
howtoinstall: "Cómo instalar" howtoinstall: "Cómo instalar"
token: "トークン"
scan: "Luego, escanea el código QR:" scan: "Luego, escanea el código QR:"
done: "Por favor ingresa el token mostrado en tu dispositivo:" done: "Por favor ingresa el token mostrado en tu dispositivo:"
submit: "Enviar" submit: "Enviar"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "No hay aplicaciones asociadas" no-apps: "No hay aplicaciones asociadas"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -8,23 +8,23 @@ common:
about: "Merci davoir choisis Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre et fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), elle est connectée mutuellement avec dautres plateformes de réseaux sociaux. Désirez-vous prendre une pause, un court instant, loin de lagitation de la ville et plonger dans un Internet dun nouveau genre ?" about: "Merci davoir choisis Misskey. Misskey est une <b>plateforme de microblogage distribuée</b> née sur Terre et fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), elle est connectée mutuellement avec dautres plateformes de réseaux sociaux. Désirez-vous prendre une pause, un court instant, loin de lagitation de la ville et plonger dans un Internet dun nouveau genre ?"
intro: intro:
title: "Cest quoi Misskey ?" title: "Cest quoi Misskey ?"
about: "Misskey est un <b>réseau social de Microblogage</b> open source. Il offre une interface utilisateur riche et hautement personnalisable, une variété de réactions aux publications et un lecteur pour la gestion centralisée de fichiers. De plus, comme il est possible de se connecter au reste du du Fédiverse, vous pouvez interagir avec d'autres plateformes fédérées. Par exemple, si vous publiez quelque chose, la note sera transmise non seulement aux utilisateurs de Misskey, mais aussi à d'autres plateformes de réseaux sociaux dans le Fédiverse. Imaginez que vous puissiez transmettre des ondes radio d'une planète vers l'autre." about: "Misskey est un <b>réseau social de Microblogage</b> open source. Il offre une interface utilisateur riche et hautement personnalisable, une variété de réactions aux publications et un lecteur pour la gestion centralisée de fichiers. De plus, comme il est possible de se connecter au reste du Fédiverse, vous pouvez interagir avec d'autres plateformes fédérées. Par exemple, si vous publiez quelque chose, la note sera transmise non seulement aux utilisateurs de Misskey, mais aussi à d'autres plateformes de réseaux sociaux dans le Fédiverse. Imaginez que vous puissiez transmettre des ondes radio d'une planète vers l'autre."
features: "Options" features: "Options"
rich-contents: "Notes" rich-contents: "Notes"
rich-contents-desc: "Partagez vos idées, les événements et les sujets qui vous tiennent à cœur ainsi que tout autre chose que vous souhaitez partager avec les autres. Si vous le désirez, vous pouvez décorer vos messages en utilisant une syntaxe différente ou en y joignant des sondages et des fichiers, tels que les photos ou les vidéos que vous aimez." rich-contents-desc: "Partagez vos idées, les événements et les sujets qui vous tiennent à cœur ainsi que tout autre chose que vous souhaitez partager avec les autres. Si vous le désirez, vous pouvez décorer vos messages en utilisant une syntaxe différente ou en y joignant des sondages et des fichiers, tels que les photos ou les vidéos que vous aimez."
reaction: "Réactions" reaction: "Réactions"
reaction-desc: "Une manière simple d'exprimer vos émotions. Misskey peut attacher diverses réactions aux publications des autres utilisateurs. Si vous goûtez aux réactions sur Misskey une fois, vous ne pourrez plus être en mesure de retourner vers une autre plateforme de réseaux sociaux n'offrant que des \"J'aime\"." reaction-desc: "Une manière simple d'exprimer vos émotions. Misskey peut attacher diverses réactions aux publications des autres utilisateurs. Si vous essayez les réactions sur Misskey, vous ne pourrez plus retourner sur une autre plateforme de réseaux sociaux n'offrant que des « J'aime »."
ui: "Interface utilisateur" ui: "Interface utilisateur"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
drive: "Drive" drive: "Drive"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
outro: "Découvrez vous-même les fonctionnalités de Misskey. Étant donné que Misskey est un réseaux social fédéré, vous pouvez essayer dautres instances afin de trouver vos ami·e·s si la présente instance ne vous correspond pas. Bonne chance et amusez-vous bien!" outro: "Découvrez vous-même les fonctionnalités de Misskey. Étant donné que Misskey est un réseau social fédéré, vous pouvez essayer dautres instances afin de trouver vos amis si la présente instance ne vous correspond pas. Bonne chance et amusez-vous bien!"
adblock: adblock:
detected: "Veuillez désactiver votre bloqueur de publicités" detected: "Veuillez désactiver votre bloqueur de publicités"
warning: "<strong>Misskey nutilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé." warning: "<strong>Misskey nutilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
application-authorization: "Autorisations de lapplication" application-authorization: "Autorisations de lapplication"
close: "Fermer" close: "Fermer"
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis." do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte pourrait être compromis."
load-more: "Charger plus" load-more: "Charger plus"
enter-password: "Veuillez entrer le mot de passe" enter-password: "Veuillez entrer le mot de passe"
got-it: "Jai compris !" got-it: "Jai compris !"
@ -33,25 +33,25 @@ common:
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Compris !" gotit: "Compris !"
notification: notification:
file-uploaded: "Le fichier a été transféré !" file-uploaded: "Le fichier a été téléversé !"
message-from: "Message de {} :" message-from: "Message de {} :"
reversi-invited: "Invité à jouer" reversi-invited: "Invité à jouer"
reversi-invited-by: "Invité par {} :" reversi-invited-by: "Invité par {} :"
notified-by: "Notifié par {} :" notified-by: "Notifié par {} :"
reply-from: "Réponse de {} :" reply-from: "Réponse de {} :"
quoted-by: "Cité·e par {} :" quoted-by: "Cité par {} :"
time: time:
unknown: "inconnu" unknown: "inconnu"
future: "à linstant" future: "à linstant"
just_now: "à l'instant" just_now: "à l'instant"
seconds_ago: "Il y a {} seconde·s" seconds_ago: "Il y a {} seconde(s)"
minutes_ago: "Il y a {} min" minutes_ago: "Il y a {} min"
hours_ago: "Il y a {} h" hours_ago: "Il y a {} h"
days_ago: "Il y a {} jours" days_ago: "Il y a {} j"
weeks_ago: "Il y a {} semaines·s" weeks_ago: "Il y a {} semaines"
months_ago: "Il y a {} mois" months_ago: "Il y a {} mois"
years_ago: "Il y a {} an·s" years_ago: "Il y a {} an(s)"
month-and-day: "{day}/{month}" month-and-day: "{day}-{month}"
trash: "Corbeille" trash: "Corbeille"
drive: "Drive" drive: "Drive"
messaging: "Conversations" messaging: "Conversations"
@ -86,11 +86,10 @@ common:
public: "Public" public: "Public"
home: "Principal" home: "Principal"
home-desc: "Publier sur le fil principal uniquement" home-desc: "Publier sur le fil principal uniquement"
followers: "Abonné·e·s" followers: "Abonnés"
followers-desc: "Publier à vos abonné·e·s uniquement" followers-desc: "Publier à vos abonnés uniquement"
specified: "Direct" specified: "Direct"
specified-desc: "Publier uniquement aux utilisateurs·rices mentionnés·es" specified-desc: "Publier uniquement aux utilisateurs mentionnés"
private: "Privé"
local-public: "Local (Public)" local-public: "Local (Public)"
local-home: "Accueil (local uniquement)" local-home: "Accueil (local uniquement)"
local-followers: "Local (Abonnés)" local-followers: "Local (Abonnés)"
@ -110,11 +109,10 @@ common:
my-token-regenerated: "Votre jeton vient dêtre généré, vous allez maintenant être déconnecté." my-token-regenerated: "Votre jeton vient dêtre généré, vous allez maintenant être déconnecté."
i-like-sushi: "Je préfère les sushis plutôt que le pudding" i-like-sushi: "Je préfère les sushis plutôt que le pudding"
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi" show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
use-white-black-reversi-stones: "Jouer avec des pions noirs et blancs sur Reversi" use-avatar-reversi-stones: "Utiliser lavatar comme pion dans Reversi"
use-contrast-reversi-stones: "Icône avec contraste sur Reversi"
verified-user: "Compte vérifié" verified-user: "Compte vérifié"
disable-animated-mfm: "Désactiver les textes animés dans les publications" disable-animated-mfm: "Désactiver les textes animés dans les publications"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "Suggérer les hashtags récemment utilisés dans le champs de saisie"
always-show-nsfw: "Toujours afficher les contenus sensibles" always-show-nsfw: "Toujours afficher les contenus sensibles"
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles" always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
show-full-acct: "Afficher ladresse complète de lutilisateur" show-full-acct: "Afficher ladresse complète de lutilisateur"
@ -122,14 +120,19 @@ common:
reduce-motion: "Réduire les animations dans linterface utilisateur" reduce-motion: "Réduire les animations dans linterface utilisateur"
this-setting-is-this-device-only: "Uniquement sur cet appareil" this-setting-is-this-device-only: "Uniquement sur cet appareil"
use-os-default-emojis: "Utiliser les émojis standards du système" use-os-default-emojis: "Utiliser les émojis standards du système"
do-not-use-in-production: 'Il sagit dune version de développement. Ne pas utiliser dans un environnement de production.' line-width: "Epaisseur du trait"
is-remote-user: "Ces informations appartiennent à un·e utilisateur·rice distant·e." line-width-thin: "Fine"
line-width-normal: "Normale"
line-width-thick: "Épaisse"
do-not-use-in-production: "Il sagit dune version de développement. Ne pas utiliser dans un environnement de production."
user-suspended: "Cet·te utilisateur·trice a été suspendu·e"
is-remote-user: "Ces informations appartiennent à un utilisateur distant."
is-remote-post: "Ceci est une publication distante." is-remote-post: "Ceci est une publication distante."
view-on-remote: " Consulter le profil complet" view-on-remote: " Consulter le profil complet"
renoted-by: "Renoté par {user}" renoted-by: "Renoté par {user}"
error: error:
title: 'Une erreur est survenue' title: "Une erreur est survenue"
retry: 'Réessayer' retry: "Réessayer"
reversi: reversi:
drawn: "Partie nulle" drawn: "Partie nulle"
my-turn: "Cest votre tour" my-turn: "Cest votre tour"
@ -151,20 +154,21 @@ common:
memo: "Pense-bête" memo: "Pense-bête"
trends: "Tendances" trends: "Tendances"
photo-stream: "Flux de photos" photo-stream: "Flux de photos"
posts-monitor: "Graph des publications" posts-monitor: "Graphe des publications"
slideshow: "Diaporama" slideshow: "Diaporama"
version: "Version" version: "Version"
broadcast: "Diffusion" broadcast: "Diffusion"
notifications: "Notifications" notifications: "Notifications"
users: "Utilisateur·rice·s" users: "Utilisateurs recommandés"
polls: "Sondages" polls: "Sondages"
post-form: "Champs de publication" post-form: "Champs de publication"
server: "Info sur le serveur" server: "Infos sur le serveur"
nav: "Navigation" nav: "Navigation"
tips: "Conseils" tips: "Conseils"
hashtags: "Hashtags" hashtags: "Hashtags"
dev: "Échec lors de la création de lapplication. Veuillez réessayer." dev: "Échec lors de la création de lapplication. Veuillez réessayer."
ai-chan-kawaii: "Ai-Chan est mignonne !" ai-chan-kawaii: "Ai-Chan est mignonne !"
you: "Vous"
auth/views/form.vue: auth/views/form.vue:
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte?" share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte?"
permission-ask: "Cette application nécessite les autorisations suivantes :" permission-ask: "Cette application nécessite les autorisations suivantes :"
@ -201,16 +205,16 @@ common/views/components/games/reversi/reversi.game.vue:
can-put-everywhere: "Peut poser partout" can-put-everywhere: "Peut poser partout"
common/views/components/games/reversi/reversi.index.vue: common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi" title: "Misskey Reversi"
sub-title: "Jouer à Reversi avec vos ami·e·s !" sub-title: "Jouer à Reversi avec vos amis !"
invite: "Inviter" invite: "Inviter"
rule: "Comment jouer ?" rule: "Comment jouer ?"
rule-desc: "Reversi est un jeu qui se joue sur un tablier et dans lequel les joueurs placent des pions sur ce dernier, à tour de rôle avec l'adversaire. Le but du jeu est d'avoir plus de pions de sa couleur que l'adversaire à la fin de la partie, celle-ci s'achevant lorsque aucun des deux joueurs ne peut plus jouer de coup légal, généralement lorsque les 64 cases sont occupées." rule-desc: "Reversi est un jeu qui se joue sur un tablier et dans lequel les joueurs placent des pions sur ce dernier, à tour de rôle avec l'adversaire. Le but du jeu est d'avoir plus de pions de sa couleur que l'adversaire à la fin de la partie, celle-ci s'achevant lorsque aucun des deux joueurs ne peut plus jouer de coup légal, généralement lorsque les 64 cases sont occupées."
mode-invite: "Inviter" mode-invite: "Inviter"
mode-invite-desc: "Inviter un·e joueur·se." mode-invite-desc: "Inviter un joueur."
invitations: "Vous avez reçu une invitation !" invitations: "Vous avez reçu une invitation !"
my-games: "Mes jeux" my-games: "Mes jeux"
all-games: "Tous les jeux" all-games: "Tous les jeux"
enter-username: "Saisir un nom d'utilisateur·rice" enter-username: "Saisir un nom d'utilisateur"
game-state: game-state:
ended: "Terminée" ended: "Terminée"
playing: "En cours" playing: "En cours"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "Contenu sensible" sensitive: "Contenu sensible"
click-to-show: "Cliquer pour afficher" click-to-show: "Cliquer pour afficher"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "Thème"
light-theme: "Thème en mode jour" light-theme: "Thème en mode jour"
dark-theme: "Thème en mode nuit" dark-theme: "Thème en mode nuit"
light-themes: "Thème clair" light-themes: "Thème clair"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "Thème de base" base-theme: "Thème de base"
base-theme-light: "Clair" base-theme-light: "Clair"
base-theme-dark: "Sombre" base-theme-dark: "Sombre"
find-more-theme: "Obtenir dautres thèmes"
theme-name: "Nom du Thème" theme-name: "Nom du Thème"
preview-created-theme: "Prévisualisation" preview-created-theme: "Prévisualisation"
invalid-theme: "Thème nest pas valide." invalid-theme: "Thème nest pas valide."
@ -297,10 +303,11 @@ common/views/components/theme.vue:
common/views/components/cw-button.vue: common/views/components/cw-button.vue:
hide: "Masquer" hide: "Masquer"
show: "Voir plus" show: "Voir plus"
chars: "{count}文字" chars: "{count} caractères"
files: "{count}ファイル" files: "{count} fichiers"
poll: "Sondage"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Trouver un·e utilisateur·trice" search-user: "Trouver un utilisateur"
you: "Vous" you: "Vous"
no-history: "Pas d'historique" no-history: "Pas d'historique"
common/views/components/messaging-room.vue: common/views/components/messaging-room.vue:
@ -323,12 +330,14 @@ common/views/components/nav.vue:
stats: "Statistiques" stats: "Statistiques"
status: "Statut" status: "Statut"
wiki: "Wiki" wiki: "Wiki"
donors: "Donateur·rice·s" donors: "Donateurs"
repository: "Dépôt" repository: "Dépôt"
develop: "Développeurs" develop: "Développeurs"
feedback: "Suggestions" feedback: "Suggestions"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "Mention"
detail: "Détails" detail: "Détails"
copy-content: "Copier le contenu"
copy-link: "Copier le lien" copy-link: "Copier le lien"
favorite: "Mettre cette note en favoris" favorite: "Mettre cette note en favoris"
unfavorite: "Retirer des favoris" unfavorite: "Retirer des favoris"
@ -340,7 +349,7 @@ common/views/components/note-menu.vue:
common/views/components/poll.vue: common/views/components/poll.vue:
vote-to: "Voter pour '{}'" vote-to: "Voter pour '{}'"
vote-count: "{} votes" vote-count: "{} votes"
total-users: "{} utilisateur·rice·s ont voté·e·s" total-users: "{} utilisateurs ont voté"
vote: "Vote" vote: "Vote"
show-result: "Montrer les résultats" show-result: "Montrer les résultats"
voted: "Voté" voted: "Voté"
@ -363,7 +372,7 @@ common/views/components/emoji-picker.vue:
symbols: "Symboles" symbols: "Symboles"
flags: "Drapeaux" flags: "Drapeaux"
common/views/components/signin.vue: common/views/components/signin.vue:
username: "Nom d'utilisateur·rice" username: "Nom d'utilisateur"
password: "Mot de passe" password: "Mot de passe"
token: "Jeton" token: "Jeton"
signing-in: "Connexion…" signing-in: "Connexion…"
@ -375,8 +384,8 @@ common/views/components/signin.vue:
login-failed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects." login-failed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "Code dinvitation" invitation-code: "Code dinvitation"
invitation-info: "Si vous navez pas de code dinvitation, contactez un·e <a href=\"{}\">administrateur·rice</a>." invitation-info: "Si vous navez pas de code dinvitation, contactez un <a href=\"{}\">administrateur</a>."
username: "Nom d'utilisateur·rice" username: "Nom d'utilisateur"
checking: "Vérification…" checking: "Vérification…"
available: "Disponible" available: "Disponible"
unavailable: "Non disponible" unavailable: "Non disponible"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Connexion en cours" connecting: "Connexion en cours"
reconnecting: "Reconnexion en cours" reconnecting: "Reconnexion en cours"
connected: "Connecté" connected: "Connecté"
common/views/components/notification-settings.vue:
title: "Notifications"
mark-as-read-all-notifications: "Marquer toutes les notifications comme lues"
mark-as-read-all-unread-notes: "Marquer toutes les notes comme lues"
mark-as-read-all-talk-messages: "Marquer toutes les conversations comme lues"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "Intégrations" title: "Intégrations"
connect: "Connecter" connect: "Connecter"
@ -418,7 +434,7 @@ common/views/components/github-setting.vue:
common/views/components/discord-setting.vue: common/views/components/discord-setting.vue:
description: "Si vous liez votre compte Discord à votre compte Misskey, vous serez en mesure de voir votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Discord." description: "Si vous liez votre compte Discord à votre compte Misskey, vous serez en mesure de voir votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Discord."
connected-to: "Vous êtes connecté à votre compte Discord" connected-to: "Vous êtes connecté à votre compte Discord"
detail: "Détails …" detail: "Détails…"
reconnect: "Reconnecter" reconnect: "Reconnecter"
connect: "Lier votre compte Discord" connect: "Lier votre compte Discord"
disconnect: "Déconnecter" disconnect: "Déconnecter"
@ -427,18 +443,17 @@ common/views/components/uploader.vue:
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
public: "Public" public: "Public"
home: "Accueil" home: "Accueil"
home-desc: "Publier sur le fil d'Accueil uniquement" home-desc: "Publier sur le fil dAccueil uniquement"
followers: "Abonné·e·s" followers: "Abonnés"
followers-desc: "Publier à vos abonné·e·s uniquement" followers-desc: "Publier à vos abonnés uniquement"
specified: "Direct" specified: "Direct"
specified-desc: "Publier uniquement aux utilisateurs·rices mentionné·e·s" specified-desc: "Publier uniquement aux utilisateurs mentionnés"
private: "Privé"
local-public: "Local (Public)" local-public: "Local (Public)"
local-public-desc: "Ne pas publier pour les distants" local-public-desc: "Ne pas publier pour les distants"
local-home: "Accueil (local uniquement)" local-home: "Accueil (local uniquement)"
local-followers: "Local (Abonnés)" local-followers: "Local (Abonnés)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} utilisateurs·rices mentionnés·es" count: "{} utilisateurs mentionnés"
empty: "Aucune tendance" empty: "Aucune tendance"
common/views/components/language-settings.vue: common/views/components/language-settings.vue:
title: "Langue " title: "Langue "
@ -461,16 +476,24 @@ common/views/components/profile-editor.vue:
is-bot: "Ce compte est un Bot" is-bot: "Ce compte est un Bot"
is-locked: "Demandes dabonnements requièrent lapprobation" is-locked: "Demandes dabonnements requièrent lapprobation"
careful-bot: "Les demandes dabonnements venant de Bots requièrent lapprobation" careful-bot: "Les demandes dabonnements venant de Bots requièrent lapprobation"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "Avancé" advanced: "Avancé"
privacy: "Vie privée" privacy: "Vie privée"
save: "Mettre à jour le profil" save: "Mettre à jour le profil"
saved: "Profil mis à jour avec succès" saved: "Profil mis à jour avec succès"
uploading: "En cours d'envoi …" uploading: "En cours denvoi …"
upload-failed: "Échec de l'envoi" upload-failed: "Échec de l'envoi"
email: "Paramètres de messagerie" email: "Paramètres de messagerie"
email-address: "Adresse de courrier électronique" email-address: "Adresse de courrier électronique"
email-verified: "Ladresse du courrier électronique a été vérifiée." email-verified: "Ladresse du courrier électronique a été vérifiée."
email-not-verified: "Adresse de courriel nest pas confirmée. Veuillez vérifier votre boite de réception." email-not-verified: "Adresse de courriel nest pas confirmée. Veuillez vérifier votre boite de réception."
common/views/components/user-list-editor.vue:
users: "Utilisateur"
rename: "Renommer la liste"
delete: "Supprimer la liste"
remove-user: "Retirer de cette liste"
delete-are-you-sure: "Voulez-vous vraiment supprimer la liste « $1 » ?"
deleted: "Supprimé"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Récupération" fetching: "Récupération"
no-broadcasts: "Aucune annonce" no-broadcasts: "Aucune annonce"
@ -478,7 +501,7 @@ common/views/widgets/broadcast.vue:
next: "Suivant" next: "Suivant"
common/views/widgets/calendar.vue: common/views/widgets/calendar.vue:
year: "Année {}" year: "Année {}"
month: "Mois {}" month: "{},"
day: "{}" day: "{}"
today: "Aujourdhui:" today: "Aujourdhui:"
this-month: "Ce mois-ci :" this-month: "Ce mois-ci :"
@ -487,7 +510,7 @@ common/views/widgets/photo-stream.vue:
title: "Flux de photos" title: "Flux de photos"
no-photos: "Pas de photo" no-photos: "Pas de photo"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "Graph des publications" title: "Graphe des publications"
toggle: "Basculer entre les vues" toggle: "Basculer entre les vues"
common/views/widgets/hashtags.vue: common/views/widgets/hashtags.vue:
title: "Hashtags" title: "Hashtags"
@ -504,7 +527,7 @@ common/views/widgets/slideshow.vue:
no-image: "Il n'y a aucune image dans ce dossier" no-image: "Il n'y a aucune image dans ce dossier"
common/views/widgets/tips.vue: common/views/widgets/tips.vue:
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます" tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます" tips-line2: "Ouvre la fenêtre de publication en appuyant sur <kbd>p</kbd> ou <kbd>n</kbd>."
tips-line3: "Vous pouvez glisser et déposer des fichiers sur la fenêtre de la note" tips-line3: "Vous pouvez glisser et déposer des fichiers sur la fenêtre de la note"
tips-line4: "Vous pouvez coller des images à partir du presse-papier sur la fenêtre de la note" tips-line4: "Vous pouvez coller des images à partir du presse-papier sur la fenêtre de la note"
tips-line5: "Vous pouvez téléverser des fichiers sur le Drive en faisant un glisser-déposer" tips-line5: "Vous pouvez téléverser des fichiers sur le Drive en faisant un glisser-déposer"
@ -515,28 +538,30 @@ common/views/widgets/tips.vue:
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます" tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
tips-line11: "Vous pouvez épingler des notes sur votre page en cliquant sur « … »" tips-line11: "Vous pouvez épingler des notes sur votre page en cliquant sur « … »"
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive" tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます" tips-line14: "Lorsque vous personnalisez la disposition de votre page daccueil, vous pouvez effectuer un clique droit sur un widget pour changer son apparence."
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **" tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur." tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé" tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots." tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
tips-line23: "Mayu est mignonne avec ses sourcils." tips-line23: "藍かわいいよ藍"
tips-line24: "Misskey est fonctionnel depuis 2014" tips-line24: "Misskey est fonctionnel depuis 2014"
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible" tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
common/views/pages/not-found.vue:
page-not-found: "La page demandée est introuvable !"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "Connecté·e en tant que {}" signed-in-as: "Connecté en tant que {}"
following: "Suit" following: "Suit"
follow: "Suivre" follow: "Suivre"
request-pending: "Demande dabonnement en attente" request-pending: "Demande dabonnement en attente"
follow-processing: "Demande en attente" follow-processing: "Demande en attente"
follow-request: "Demande dabonnement" follow-request: "Demande dabonnement"
desktop: desktop:
banner-crop-title: "Découpez la partie qui apparaitra comme bannière" banner-crop-title: "Découpez la partie qui apparaîtra comme bannière"
banner: "Bannière" banner: "Bannière"
uploading-banner: "Téléversement d'une nouvelle bannière" uploading-banner: "Téléversement d'une nouvelle bannière"
banner-updated: "Mise à jour de la bannière avec succès" banner-updated: "Mise à jour de la bannière avec succès"
choose-banner: "Choisir une bannière" choose-banner: "Choisir une bannière"
avatar-crop-title: "Découpez la partie qui apparaitra comme avatar" avatar-crop-title: "Découpez la partie qui apparaîtra comme avatar"
avatar: "Avatar" avatar: "Avatar"
uploading-avatar: "Téléversement du nouvel avatar" uploading-avatar: "Téléversement du nouvel avatar"
avatar-updated: "Mise à jour de lavatar avec succès" avatar-updated: "Mise à jour de lavatar avec succès"
@ -551,12 +576,12 @@ desktop/views/components/activity.vue:
title: "Activité" title: "Activité"
toggle: "Afficher les vues" toggle: "Afficher les vues"
desktop/views/components/calendar.vue: desktop/views/components/calendar.vue:
title: "{month} / {year}" title: "{month} - {year}"
prev: "Mois précédent" prev: "Mois précédent"
next: "Mois suivant" next: "Mois suivant"
go: "Cliquez pour naviguer" go: "Cliquez pour naviguer"
desktop/views/components/choose-file-from-drive-window.vue: desktop/views/components/choose-file-from-drive-window.vue:
chosen-files: "{count} fichier·s sélectionné·s" chosen-files: "{count} fichier(s) sélectionné(s)"
upload: "Téléverser des fichiers à partir de votre ordinateur" upload: "Téléverser des fichiers à partir de votre ordinateur"
cancel: "Annuler" cancel: "Annuler"
ok: "OK" ok: "OK"
@ -604,21 +629,21 @@ desktop/views/components/drive.vue:
search: "Rechercher" search: "Rechercher"
empty-draghover: "Drop Welcome!" empty-draghover: "Drop Welcome!"
empty-drive: "Votre Drive est vide" empty-drive: "Votre Drive est vide"
empty-drive-description: "Vous pouvez également uploader le fichier en faisant un clic droit et en choisissant 'Uploader' ou tout simplement en faisant glisser votre fichier." empty-drive-description: "Vous pouvez également téléverser le fichier en faisant un clic droit et en choisissant « Téléverser » ou tout simplement en faisant glisser votre fichier."
empty-folder: "Ce dossier est vide" empty-folder: "Ce dossier est vide"
unable-to-process: "L'opération n'a pas pu être complétée" unable-to-process: "L'opération n'a pas pu être complétée"
circular-reference-detected: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer." circular-reference-detected: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
unhandled-error: "Erreur inconnue" unhandled-error: "Erreur inconnue"
url-upload: "Téléverser via une URL" url-upload: "Téléverser via une URL"
url-of-file: "URL de l'image que vous souhaitez uploader." url-of-file: "URL de l'image que vous souhaitez téléverser."
url-upload-requested: "Upload requested" url-upload-requested: "Téléversement demandé"
may-take-time: "L'upload de votre fichier peut prendre un certain temps." may-take-time: "Le téléversement de votre fichier peut prendre un certain temps."
create-folder: "Créer un dossier" create-folder: "Créer un dossier"
folder-name: "Nom du dossier" folder-name: "Nom du dossier"
contextmenu: contextmenu:
create-folder: "Créer un dossier" create-folder: "Créer un dossier"
upload: "Transférer un fichier" upload: "Téléverser un fichier"
url-upload: "Transférer à partir dune URL" url-upload: "Téléverser à partir dune URL"
desktop/views/components/media-image.vue: desktop/views/components/media-image.vue:
sensitive: "Le contenu est NSFW" sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher" click-to-show: "Cliquer pour afficher"
@ -626,16 +651,16 @@ desktop/views/components/media-video.vue:
sensitive: "Le contenu est NSFW" sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher" click-to-show: "Cliquer pour afficher"
desktop/views/components/followers-window.vue: desktop/views/components/followers-window.vue:
followers: "{} abonné·e·s" followers: "{} abonnés"
desktop/views/components/followers.vue: desktop/views/components/followers.vue:
empty: "Il semble que vous navez pas encore dabonné·e·s." empty: "Il semble que vous n'avez pas encore d'abonnés."
desktop/views/components/following-window.vue: desktop/views/components/following-window.vue:
following: "Suit {}" following: "Suit {}"
desktop/views/components/following.vue: desktop/views/components/following.vue:
empty: "Vous ne suivez aucun compte." empty: "Vous ne suivez aucun compte."
desktop/views/components/friends-maker.vue: desktop/views/components/friends-maker.vue:
title: "Utilisateurs·rices recommandé·e·s :" title: "Utilisateurs recommandés :"
empty: "Impossible de trouver des utilisateurs·trices à recommander." empty: "Impossible de trouver des utilisateurs à recommander."
fetching: "Chargement" fetching: "Chargement"
refresh: "Plus" refresh: "Plus"
close: "Fermer" close: "Fermer"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Géolocalisation" location: "Géolocalisation"
renote: "Republier" renote: "Republier"
add-reaction: "Ajouter votre reaction" add-reaction: "Ajouter votre reaction"
undo-reaction: "Inverser la réaction"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "Répondre" reply: "Répondre"
renote: "Partager" renote: "Partager"
add-reaction: "Ajouter votre réaction" add-reaction: "Ajouter votre réaction"
undo-reaction: "Inverser la réaction"
detail: "Détails" detail: "Détails"
private: "Cette publication est privée" private: "Cette publication est privée"
deleted: "Cette publication a été supprimée" deleted: "Cette publication a été supprimée"
@ -674,8 +701,8 @@ desktop/views/components/post-form.vue:
add-visible-user: "+Ajouter un utilisateur" add-visible-user: "+Ajouter un utilisateur"
attach-location-information: "Attacher des informations de localisation" attach-location-information: "Attacher des informations de localisation"
hide-contents: "Masquer les contenus" hide-contents: "Masquer les contenus"
reply-placeholder: "Répondre à cette note …" reply-placeholder: "Répondre à cette note…"
quote-placeholder: "Citer cette note …" quote-placeholder: "Citer cette note…"
submit: "Publier" submit: "Publier"
reply: "Répondre" reply: "Répondre"
renote: "Republier" renote: "Republier"
@ -685,7 +712,7 @@ desktop/views/components/post-form.vue:
note-failed: "La note à échoué" note-failed: "La note à échoué"
reply-failed: "La réponse a échoué" reply-failed: "La réponse a échoué"
renote-failed: "Échec lors de la republication" renote-failed: "Échec lors de la republication"
posting: "Publication …" posting: "Publication…"
attach-media-from-local: "Joindre un média depuis votre appareil" attach-media-from-local: "Joindre un média depuis votre appareil"
attach-media-from-drive: "Joindre un média depuis votre Drive" attach-media-from-drive: "Joindre un média depuis votre Drive"
attach-cancel: "Annuler le fichier attaché" attach-cancel: "Annuler le fichier attaché"
@ -694,25 +721,25 @@ desktop/views/components/post-form.vue:
text-remain: "{} caractères restants" text-remain: "{} caractères restants"
recent-tags: "Récent" recent-tags: "Récent"
local-only-message: "Ce message sera publié uniquement sur le fil local" local-only-message: "Ce message sera publié uniquement sur le fil local"
click-to-tagging: "Cliquer pour tagguer" click-to-tagging: "Cliquer pour taguer"
visibility: "Visibilité" visibility: "Visibilité"
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation" geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
error: "Erreur" error: "Erreur"
enter-username: "Saisir un nom d'utilisateur …" enter-username: "Saisir un nom d'utilisateur…"
annotations: "内容への注釈 (オプション)" annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "Nouvelle note" note: "Nouvelle note"
reply: "Répondre" reply: "Répondre"
attaches: "{} media joint(s)" attaches: "{} media joint(s)"
uploading-media: "Transfert du média {}" uploading-media: "Téléversement du média {}"
desktop/views/components/progress-dialog.vue: desktop/views/components/progress-dialog.vue:
waiting: "En attente" waiting: "En attente"
desktop/views/components/renote-form.vue: desktop/views/components/renote-form.vue:
quote: "Citer..." quote: "Citer..."
cancel: "Annuler" cancel: "Annuler"
renote: "Republier" renote: "Republier"
renote-home: "Renote (Home)" renote-home: "Renote (accueil)"
reposting: "Republication en cours …" reposting: "Republication en cours…"
success: "Republié !" success: "Republié !"
failure: "La renote a échoué" failure: "La renote a échoué"
desktop/views/components/renote-form-window.vue: desktop/views/components/renote-form-window.vue:
@ -749,8 +776,8 @@ desktop/views/components/settings.vue:
advanced: "Paramètres avancés" advanced: "Paramètres avancés"
api-via-stream: "Requête API via le flux" api-via-stream: "Requête API via le flux"
api-via-stream-desc: "Lorsque ce paramètre est activé, une demande d'API est effectuée via une connexion WebSocket (pour une meilleure performance). Lorsqu'il est désactivé, l'API de récupération native est utilisée. Ce paramètre n'est valide que sur cet appareil." api-via-stream-desc: "Lorsque ce paramètre est activé, une demande d'API est effectuée via une connexion WebSocket (pour une meilleure performance). Lorsqu'il est désactivé, l'API de récupération native est utilisée. Ce paramètre n'est valide que sur cet appareil."
deck-nav: "デッキ内ナビゲーション" deck-nav: "Deck sans tansitions"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" deck-nav-desc: "Vous obtenez une colonne temporaire sans transitions dans la page pendant la navigation, lors de lutilisation du Deck."
deck-default: "Utiliser le Deck comme IU par défaut" deck-default: "Utiliser le Deck comme IU par défaut"
display: "Affichage et design" display: "Affichage et design"
customize: "Personnaliser l'Accueil" customize: "Personnaliser l'Accueil"
@ -791,14 +818,12 @@ desktop/views/components/settings.vue:
cache-warn: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que dautres données (y compris les paramètres de configuration). Après le nettoyage, vous devez recharger la page." cache-warn: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que dautres données (y compris les paramètres de configuration). Après le nettoyage, vous devez recharger la page."
cache-cleared: "Cache nettoyé" cache-cleared: "Cache nettoyé"
cache-cleared-desc: "Veuillez recharger la page." cache-cleared-desc: "Veuillez recharger la page."
auto-watch: "Montre automatique"
auto-watch-desc: "Recevez automatiquement les notifications de publications, réponses et réactions."
about: "À propose de Misskey" about: "À propose de Misskey"
operator: "L'admin de cette instance" operator: "L'admin de cette instance"
update: "Mise à jour de Misskey" update: "Mise à jour de Misskey"
version: "Version :" version: "Version :"
latest-version: "Dernière version :" latest-version: "Dernière version :"
update-checking: "Vérification des mises à jour en cours …" update-checking: "Vérification des mises à jour en cours…"
do-update: "Rechercher des mises à jour" do-update: "Rechercher des mises à jour"
update-settings: "Paramètres avancés" update-settings: "Paramètres avancés"
prevent-update: "Reporter les mises à jour (non recommandé)" prevent-update: "Reporter les mises à jour (non recommandé)"
@ -808,7 +833,7 @@ desktop/views/components/settings.vue:
update-available: "Nouvelle version disponible !" update-available: "Nouvelle version disponible !"
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée." update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
advanced-settings: "Réglages avancés" advanced-settings: "Réglages avancés"
debug-mode: "Activer le mode debug" debug-mode: "Activer le mode débogage"
debug-mode-desc: "Ce paramètre est stocké dans le navigateur." debug-mode-desc: "Ce paramètre est stocké dans le navigateur."
experimental: "Activer les fonctionnalités expérimentales" experimental: "Activer les fonctionnalités expérimentales"
experimental-desc: "Lactivation des fonctionnalités expérimentales peuvent rendre le client Misskey instable. Ce paramètre est stocké dans le navigateur." experimental-desc: "Lactivation des fonctionnalités expérimentales peuvent rendre le client Misskey instable. Ce paramètre est stocké dans le navigateur."
@ -831,27 +856,28 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Entrez un mot de passe" enter-password: "Entrez un mot de passe"
authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil:" authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil:"
howtoinstall: "Comment installer" howtoinstall: "Comment installer"
scan: "Ensuite scannez le QR code afficher sur votre écran:" token: "Jeton"
done: "Veuillez entrer le token qui s'affiche sur votre appareil:" scan: "Ensuite, scannez le code QR affiché sur votre écran :"
done: "Veuillez entrer le token qui s'affiche sur votre appareil :"
submit: "Envoyer" submit: "Envoyer"
success: "Sauvegarde des paramètres avec succès !" success: "Sauvegarde des paramètres avec succès !"
failed: "Lopération a échoué. Veuillez vous assurer que le jeton a été saisi correctement." failed: "Lopération a échoué. Veuillez vous assurer que le jeton a été saisi correctement."
info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil." info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil."
common/views/components/api-settings.vue: common/views/components/api-settings.vue:
intro: "Pour accéder à l'API, définissez ce jeton comme la clé de \"i\" dans les paramètres de requête." intro: "Pour accéder à l'API, définissez ce jeton comme la clé de « i » dans les paramètres de requête."
caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte." caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte."
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer." regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
regenerate-token: "Régénérer le jeton" regenerate-token: "Régénérer le jeton"
token: "Jeton :" token: "Jeton :"
enter-password: "Entrez le mot de passe" enter-password: "Entrez le mot de passe"
console: console:
title: 'Console API' title: "Console API"
endpoint: 'Point de terminaison' endpoint: "Point de terminaison"
parameter: 'Paramètres' parameter: "Paramètres"
credential-info: "Le paramètre \"i\" est requis dans la console." credential-info: "Le paramètre « i » est requis dans la console."
send: 'Envoyer' send: "Envoyer"
sending: 'Envoi en cours' sending: "Envoi en cours"
response: 'Résultat' response: "Résultat"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "Aucune application autorisée" no-apps: "Aucune application autorisée"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -862,8 +888,8 @@ common/views/components/mute-and-block.vue:
mute-and-block: "Silencés / Bloqués" mute-and-block: "Silencés / Bloqués"
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
block: "En cours blocage" block: "En cours blocage"
no-muted-users: "Aucun utilisateur·rice nest mis·e en sourdine" no-muted-users: "Aucun utilisateur nest mis en sourdine"
no-blocked-users: "Aucun utilisateur·rice nest bloqué·e" no-blocked-users: "Aucun utilisateur nest bloqué"
word-mute: "Filtre de mots" word-mute: "Filtre de mots"
muted-words: "Mots masqués" muted-words: "Mots masqués"
muted-words-description: "Description des mots mis en sourdine" muted-words-description: "Description des mots mis en sourdine"
@ -875,12 +901,17 @@ common/views/components/password-settings.vue:
enter-new-password-again: "Entrez à nouveau le nouveau mot de passe" enter-new-password-again: "Entrez à nouveau le nouveau mot de passe"
not-match: "Les nouveaux mots de passe ne sont pas identiques" not-match: "Les nouveaux mots de passe ne sont pas identiques"
changed: "Mot de passe modifié avec succès" changed: "Mot de passe modifié avec succès"
failed: "パスワード変更に失敗しました" failed: "Échec lors de la modification du mot de passe"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
private: "cette publication est privée" private: "cette publication est privée"
deleted: "cette publication a été supprimée" deleted: "cette publication a été supprimée"
media-count: "{} médias attachés" media-count: "{} médias attachés"
poll: "Sondage" poll: "Sondage"
desktop/views/components/settings.tags.vue:
title: "Étiquettes"
query: "Requête (optionnelle)"
add: "Ajouter"
save: "Enregistrer"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Gestionnaire de tâches" title: "Gestionnaire de tâches"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -929,11 +960,11 @@ desktop/views/components/user-lists-window.vue:
desktop/views/components/user-preview.vue: desktop/views/components/user-preview.vue:
notes: "Publications" notes: "Publications"
following: "Abonné à" following: "Abonné à"
followers: "Abonné·e·s" followers: "Abonnés"
desktop/views/components/users-list.vue: desktop/views/components/users-list.vue:
all: "Tout" all: "Tout"
iknow: "Vous connaissez" iknow: "Vous connaissez"
fetching: "Chargement ..." fetching: "Chargement..."
desktop/views/components/users-list-item.vue: desktop/views/components/users-list-item.vue:
followed: "vous suit" followed: "vous suit"
desktop/views/components/window.vue: desktop/views/components/window.vue:
@ -944,7 +975,7 @@ admin/views/index.vue:
instance: "Instance" instance: "Instance"
emoji: "Émoji" emoji: "Émoji"
moderators: "Modérateurs" moderators: "Modérateurs"
users: "Utilisateur·rice·s" users: "Utilisateurs"
federation: "Fédération" federation: "Fédération"
announcements: "Annonces" announcements: "Annonces"
hashtags: "Hashtags" hashtags: "Hashtags"
@ -962,7 +993,8 @@ admin/views/instance.vue:
instance-name: "Nom de linstance" instance-name: "Nom de linstance"
instance-description: "Description de linstance" instance-description: "Description de linstance"
host: "Hôte" host: "Hôte"
banner-url: "Url de limage de la bannière" banner-url: "URL de limage de la bannière"
error-image-url: "URL de limage derreur"
languages: "Langue de linstance" languages: "Langue de linstance"
languages-desc: "Vous pouvez en définir plus dune, séparées par des espaces." languages-desc: "Vous pouvez en définir plus dune, séparées par des espaces."
maintainer-config: "Informations de ladministrateur" maintainer-config: "Informations de ladministrateur"
@ -980,17 +1012,17 @@ admin/views/instance.vue:
recaptcha-site-key: "Clé reCAPTCHA du site" recaptcha-site-key: "Clé reCAPTCHA du site"
recaptcha-secret-key: "Clé secrète reCAPTCHA" recaptcha-secret-key: "Clé secrète reCAPTCHA"
twitter-integration-config: "Paramètres de connexion à Twitter" twitter-integration-config: "Paramètres de connexion à Twitter"
twitter-integration-info: "コールバックURLは {url} に設定します。" twitter-integration-info: "L'URL de callback est {url}."
enable-twitter-integration: "Activer la connection à Twitter" enable-twitter-integration: "Activer la connexion à Twitter"
twitter-integration-consumer-key: "Clé du consommateur" twitter-integration-consumer-key: "Clé du consommateur"
twitter-integration-consumer-secret: "Secret du consommateur" twitter-integration-consumer-secret: "Secret du consommateur"
github-integration-config: "Paramètres dauthentification GitHub" github-integration-config: "Paramètres dauthentification GitHub"
github-integration-info: "コールバックURLは {url} に設定します。" github-integration-info: "L'URL de callback est {url}."
enable-github-integration: "Activer lauthentification avec Github" enable-github-integration: "Activer lauthentification avec Github"
github-integration-client-id: "ID client" github-integration-client-id: "ID client"
github-integration-client-secret: "Secret client" github-integration-client-secret: "Secret client"
discord-integration-config: "Paramètres dauthentification Discord" discord-integration-config: "Paramètres dauthentification Discord"
discord-integration-info: "コールバックURLは {url} に設定します。" discord-integration-info: "L'URL de callback est {url}."
enable-discord-integration: "Activer lauthentification avec Discord" enable-discord-integration: "Activer lauthentification avec Discord"
discord-integration-client-id: "ID client" discord-integration-client-id: "ID client"
discord-integration-client-secret: "Secret client" discord-integration-client-secret: "Secret client"
@ -1005,8 +1037,8 @@ admin/views/instance.vue:
invite: "Inviter" invite: "Inviter"
save: "Sauvegarder" save: "Sauvegarder"
saved: "Enregistré" saved: "Enregistré"
user-recommendation-config: "Utilisateur·rice·s" user-recommendation-config: "Utilisateurs"
enable-external-user-recommendation: "Activer la recommandation des utilisateur·trice·s distant·e·s" enable-external-user-recommendation: "Activer la recommandation des utilisateurs distants"
external-user-recommendation-engine: "Moteur" external-user-recommendation-engine: "Moteur"
external-user-recommendation-engine-desc: "Exemple: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" external-user-recommendation-engine-desc: "Exemple: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "Délai dexpiration" external-user-recommendation-timeout: "Délai dexpiration"
@ -1021,13 +1053,19 @@ admin/views/instance.vue:
smtp-port: "Port SMTP" smtp-port: "Port SMTP"
smtp-user: "Utilisateur SMTP" smtp-user: "Utilisateur SMTP"
smtp-pass: "Mot de passe SMTP" smtp-pass: "Mot de passe SMTP"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "Activer ServiceWorker"
serviceworker-info: "Devrait être activé pour les notifications push."
vapid-publickey: "Clé Publique VAPID"
vapid-privatekey: "Clé privée VAPID"
vapid-info: "Vous devez activer ServiceWorker pour pouvoir générer les clés VAPID. Vous devez lancer ceci en mode root :"
admin/views/charts.vue: admin/views/charts.vue:
title: "Graph" title: "Graphe"
per-day: "par jour" per-day: "par jour"
per-hour: "par heure" per-hour: "par heure"
federation: "Fédération" federation: "Fédération"
notes: "Publications" notes: "Publications"
users: "Utilisateur·rice·s" users: "Utilisateurs"
drive: "Lecteur" drive: "Lecteur"
network: "Réseau" network: "Réseau"
charts: charts:
@ -1036,9 +1074,9 @@ admin/views/charts.vue:
notes: "Nombre de publications : augmentation/diminution (combinés)" notes: "Nombre de publications : augmentation/diminution (combinés)"
local-notes: "Nombre des publications : augmentation/diminution (Local)" local-notes: "Nombre des publications : augmentation/diminution (Local)"
remote-notes: "Nombre de publications : augmentation/diminution (distants)" remote-notes: "Nombre de publications : augmentation/diminution (distants)"
notes-total: "Total des publications" notes-total: "Total des notes"
users: "Nombre dutilisateur·rice·s : augmentation/diminution" users: "Nombre dutilisateurs : augmentation/diminution"
users-total: "Nombre total des utilisateur·rice·s" users-total: "Nombre total des utilisateurs"
drive: "Capacité utilisée comme stockage : augmentation/diminution" drive: "Capacité utilisée comme stockage : augmentation/diminution"
drive-total: "Utilisation totale du lecteur" drive-total: "Utilisation totale du lecteur"
drive-files: "Le nombre de fichiers sur l'espace de stockage : augmentation/diminution" drive-files: "Le nombre de fichiers sur l'espace de stockage : augmentation/diminution"
@ -1046,29 +1084,45 @@ admin/views/charts.vue:
network-requests: "Requêtes" network-requests: "Requêtes"
network-time: "Temps de réponse" network-time: "Temps de réponse"
network-usage: "Traffic" network-usage: "Traffic"
admin/views/drive.vue:
sort:
title: "Tri"
createdAtAsc: "Âge - Du plus ancien"
createdAtDesc: "Âge - Du plus récent"
sizeAsc: "Taille - Ascendant"
sizeDesc: "Taille - Volumineux en premier"
origin:
title: "Origine"
combined: "Locaux et distants combinés"
local: "Local"
remote: "Distant"
delete: "Supprimer"
deleted: "Supprimé"
mark-as-sensitive: "Marquer comme sensible"
unmark-as-sensitive: "Ne pas marquer comme sensible"
admin/views/users.vue: admin/views/users.vue:
operation: "Actions" operation: "Actions"
username-or-userid: "Nom dutilisateur·rice ou ID utilisateur" username-or-userid: "Nom dutilisateur·rice ou ID utilisateur"
user-not-found: "Utilisateur·rice non trouvé·e" user-not-found: "Utilisateur non trouvé"
lookup: "Recherche" lookup: "Recherche"
reset-password: "Réinitialiser mot de passe" reset-password: "Réinitialiser mot de passe"
password-updated: "Le mot de passe est « {password} »" password-updated: "Le mot de passe est « {password} »"
suspend: "Suspendre" suspend: "Suspendre"
suspended: "Suspendu·e avec succès." suspended: "Suspendu avec succès."
unsuspend: "Suspension levée" unsuspend: "Suspension levée"
unsuspended: "La suspension de lutilisateur·rice a été levée avec succès" unsuspended: "La suspension de lutilisateur a été levée avec succès"
verify: "Vérification du compte" verify: "Vérification du compte"
verified: "Le compte a été vérifié" verified: "Le compte a été vérifié"
unverify: "Ôter la vérification du compte" unverify: "Enlever la vérification du compte"
unverified: "Ce compte n'est plus vérifié" unverified: "Ce compte n'est plus vérifié"
users: users:
title: "Utilisateur·rice·s" title: "Utilisateurs"
sort: sort:
title: "Trier par" title: "Trier par"
createdAtAsc: "Date dinscription (Ascendant)" createdAtAsc: "Date dinscription (Ascendant)"
createdAtDesc: "Date dinscription (Descendant)" createdAtDesc: "Date dinscription (Descendant)"
updatedAtAsc: "Mis à jour récemment (Ascendant)" updatedAtAsc: "Mis à jour récemment (Ascendant)"
updatedAtDesc: "更新日時が新しい順" updatedAtDesc: "Mis à jour récemment (descendant)"
origin: origin:
title: "Origine" title: "Origine"
combined: "Locaux + distants" combined: "Locaux + distants"
@ -1120,7 +1174,7 @@ desktop/views/pages/welcome.vue:
signup: "S'enregistrer" signup: "S'enregistrer"
signin-button: "Se connecter" signin-button: "Se connecter"
signup-button: "S'inscrire" signup-button: "S'inscrire"
timeline: "Fil d'actualité" timeline: "Fil dactualité"
announcements: "Notices" announcements: "Notices"
photos: "Images récentes" photos: "Images récentes"
powered-by-misskey: "Propulsé par <b>Misskey</b>." powered-by-misskey: "Propulsé par <b>Misskey</b>."
@ -1145,11 +1199,11 @@ desktop/views/pages/share.vue:
desktop/views/pages/tag.vue: desktop/views/pages/tag.vue:
no-posts-found: "Aucune publication contenant « {q} » na été trouvée." no-posts-found: "Aucune publication contenant « {q} » na été trouvée."
desktop/views/pages/user-list.users.vue: desktop/views/pages/user-list.users.vue:
users: "Utilisateurs·rices" users: "Utilisateurs"
add-user: "Ajouter un utilisateur" add-user: "Ajouter un utilisateur"
username: "Nom d'utilisateur" username: "Nom d'utilisateur"
desktop/views/pages/user/user.followers-you-know.vue: desktop/views/pages/user/user.followers-you-know.vue:
title: "Abonné·e·s que vous connaissez" title: "Abonnés que vous connaissez"
loading: "Chargement en cours" loading: "Chargement en cours"
no-users: "Aucun abonné connu" no-users: "Aucun abonné connu"
desktop/views/pages/user/user.friends.vue: desktop/views/pages/user/user.friends.vue:
@ -1176,16 +1230,18 @@ desktop/views/pages/user/user.profile.vue:
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.header.vue:
posts: "Notes" posts: "Notes"
following: "Suit" following: "Suit"
followers: "Abonné·e·s" followers: "Abonnés"
mention: "Mentions"
is-bot: "Ce compte est un Bot" is-bot: "Ce compte est un Bot"
years-old: "{age} ans" years-old: "{age} ans"
year: "/" year: "/"
month: "/" month: "/"
day: "/" day: "-"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "Publications" default: "Publications"
with-replies: "Publications et réponses" with-replies: "Publications et réponses"
with-media: "Média" with-media: "Média"
my-posts: "Mes Messages"
empty: "Cet utilisateur n'a rien posté encore." empty: "Cet utilisateur n'a rien posté encore."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Messagerie" title: "Messagerie"
@ -1207,7 +1263,7 @@ desktop/views/widgets/trends.vue:
refresh: "Afficher d'autres" refresh: "Afficher d'autres"
nothing: "Rien" nothing: "Rien"
desktop/views/widgets/users.vue: desktop/views/widgets/users.vue:
title: "Utilisateurs·rices" title: "Utilisateurs"
refresh: "Afficher d'autres" refresh: "Afficher d'autres"
no-one: "Personne" no-one: "Personne"
mobile/views/components/drive.vue: mobile/views/components/drive.vue:
@ -1246,14 +1302,14 @@ mobile/views/components/media-video.vue:
sensitive: "Le contenu est NSFW" sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher" click-to-show: "Cliquer pour afficher"
common/views/components/follow-button.vue: common/views/components/follow-button.vue:
following: "Abonné·e" following: "Abonné"
follow: " Suivre" follow: " Suivre"
request-pending: "Demande en attente" request-pending: "Demande en attente"
follow-processing: "En cours dabonnement" follow-processing: "En cours dabonnement"
follow-request: "Demande dabonnement" follow-request: "Demande dabonnement"
mobile/views/components/friends-maker.vue: mobile/views/components/friends-maker.vue:
title: "Abonnez-vous à" title: "Abonnez-vous à"
empty: "Impossible de trouver des utilisateurs·trices à recommander." empty: "Impossible de trouver des utilisateurs à recommander."
fetching: "Chargement" fetching: "Chargement"
refresh: "Voir plus" refresh: "Voir plus"
close: "Fermer" close: "Fermer"
@ -1282,7 +1338,7 @@ mobile/views/components/post-form.vue:
submit: "Publier" submit: "Publier"
reply: "Répondre" reply: "Répondre"
renote: "Republier" renote: "Republier"
quote-placeholder: "Citer ce billet ... (Facultatif)" quote-placeholder: "Citer ce billet... (Facultatif)"
reply-placeholder: "Répondre à cette note" reply-placeholder: "Répondre à cette note"
cw-placeholder: "Commenter le contenu (optionnel)" cw-placeholder: "Commenter le contenu (optionnel)"
location-alert: "Votre appareil ne prend pas en charge les services de localisation" location-alert: "Votre appareil ne prend pas en charge les services de localisation"
@ -1299,7 +1355,7 @@ mobile/views/components/ui.header.vue:
welcome-back: "Content de vous revoir ! " welcome-back: "Content de vous revoir ! "
adjective: "M." adjective: "M."
mobile/views/components/ui.nav.vue: mobile/views/components/ui.nav.vue:
timeline: "Fil d'actualité" timeline: "Fil dactualité"
notifications: "Notifications" notifications: "Notifications"
follow-requests: "Demandes dabonnement" follow-requests: "Demandes dabonnement"
search: "Rechercher" search: "Rechercher"
@ -1312,8 +1368,8 @@ mobile/views/components/ui.nav.vue:
admin: "Admin" admin: "Admin"
about: "À propos de Misskey" about: "À propos de Misskey"
mobile/views/components/user-timeline.vue: mobile/views/components/user-timeline.vue:
no-notes: "Il semble que cet·te utilisateur·rice na rien publié pour le moment." no-notes: "Il semble que cet utilisateur na rien publié pour le moment."
no-notes-with-media: "Aucune notes avec des médias" no-notes-with-media: "Aucune note comprenant des médias"
mobile/views/components/users-list.vue: mobile/views/components/users-list.vue:
all: "Tout" all: "Tout"
known: "Vous connaissez" known: "Vous connaissez"
@ -1325,9 +1381,9 @@ mobile/views/pages/user-lists.vue:
mobile/views/pages/signup.vue: mobile/views/pages/signup.vue:
lets-start: "Votre compte est prêt ! 📦" lets-start: "Votre compte est prêt ! 📦"
mobile/views/pages/followers.vue: mobile/views/pages/followers.vue:
followers-of: "Abonné·e·s de {name}" followers-of: "Abonnés de {name}"
mobile/views/pages/following.vue: mobile/views/pages/following.vue:
following-of: "Abonné·e·s de {name}" following-of: "Abonnés de {name}"
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "Accueil" home: "Accueil"
local: "Local" local: "Local"
@ -1341,7 +1397,7 @@ mobile/views/pages/welcome.vue:
signup: "S'enregistrer" signup: "S'enregistrer"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "Tableau de bord" dashboard: "Tableau de bord"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "Vous pouvez ajouter, supprimer et réarranger les widgets. Faites glisser « 三 » pour déplacer le widget. Appuyez sur « x » pour supprimer le widget. Certains widgets peuvent changer dapparence en cliquant dessus."
add-widget: "Ajouter" add-widget: "Ajouter"
customization-tips: "Conseils de personnalisation" customization-tips: "Conseils de personnalisation"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
@ -1367,24 +1423,23 @@ mobile/views/pages/search.vue:
mobile/views/pages/selectdrive.vue: mobile/views/pages/selectdrive.vue:
select-file: "Choisissez un fichier" select-file: "Choisissez un fichier"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Connecté·e en tant que {}" signed-in-as: "Connecté en tant que {}"
design: "Affichage et design" design: "Affichage et design"
dark-mode: "Mode nuit" dark-mode: "Mode nuit"
i-am-under-limited-internet: "J'ai un accès Internet limité" i-am-under-limited-internet: "J'ai un accès Internet limité"
circle-icons: "Utiliser des icônes circulaires" circle-icons: "Utiliser des icônes circulaires"
contrasted-acct: "Nom dutilisateur contrasté" contrasted-acct: "Nom dutilisateur contrasté"
timeline: "Fil d'actualité" timeline: "Fil dactualité"
show-reply-target: "Afficher les réponses" show-reply-target: "Afficher les réponses"
show-my-renotes: "Afficher mes partages" show-my-renotes: "Afficher mes partages"
show-renoted-my-notes: "Afficher mes publications partagées" show-renoted-my-notes: "Afficher mes notes partagées"
show-local-renotes: "Afficher les publications partagées localement" show-local-renotes: "Afficher les notes partagées localement"
post-style: "Style de la publication" post-style: "Style de la publication"
post-style-standard: "Standard" post-style-standard: "Standard"
post-style-smart: "Intelligent" post-style-smart: "Intelligent"
notification-position: "Style de notification" notification-position: "Style de notification"
notification-position-bottom: "en bas" notification-position-bottom: "en bas"
notification-position-top: "en haut" notification-position-top: "en haut"
theme: "Thème"
behavior: "Comportement" behavior: "Comportement"
fetch-on-scroll: "Chargement lors du défilement" fetch-on-scroll: "Chargement lors du défilement"
note-visibility: "Visibilité de la publication" note-visibility: "Visibilité de la publication"
@ -1392,7 +1447,7 @@ mobile/views/pages/settings.vue:
remember-note-visibility: "Se souvenir du mode de visibilité de la publication" remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
web-search-engine: "Moteur de recherche Web" web-search-engine: "Moteur de recherche Web"
web-search-engine-desc: "Exemple: https://www.google.com/?#q={{query}}" web-search-engine-desc: "Exemple: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'" disable-via-mobile: "Ne pas mentionner que ma publication provient d'un « périphérique mobile »"
load-raw-images: "Afficher les photos jointes en haute qualité" load-raw-images: "Afficher les photos jointes en haute qualité"
load-remote-media: "Afficher les médias sur le serveur distant" load-remote-media: "Afficher les médias sur le serveur distant"
update: "Mise à jour de Misskey" update: "Mise à jour de Misskey"
@ -1408,17 +1463,15 @@ mobile/views/pages/settings.vue:
signout: "Déconnexion" signout: "Déconnexion"
sound: "Sons" sound: "Sons"
enable-sounds: "Activer les sons" enable-sounds: "Activer les sons"
mark-as-read-all-unread-notes: "Marquer toutes les publications comme lues"
password: "Mot de Passe" password: "Mot de Passe"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Vous suit" follows-you: "Vous suit"
following: "Abonnements" following: "Abonnements"
followers: "Abonné·e·s" followers: "Abonnés"
notes: "Notes" notes: "Notes"
overview: "Aperçu" overview: "Aperçu"
timeline: "Fil d'actualité" timeline: "Fil dactualité"
media: "Média" media: "Média"
is-suspended: "This account has been suspended."
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
unmute: "Enlever la sourdine" unmute: "Enlever la sourdine"
block: "Bloquer" block: "Bloquer"
@ -1433,13 +1486,13 @@ mobile/views/pages/user/home.vue:
activity: "Activité" activity: "Activité"
keywords: "Mot clés" keywords: "Mot clés"
domains: "Domaines" domains: "Domaines"
frequently-replied-users: "Utilisateurs·rices mentionné·e·s souvent" frequently-replied-users: "Utilisateurs mentionnés souvent"
followers-you-know: "Abonné·e·s que vous connaissez" followers-you-know: "Abonnés que vous connaissez"
last-used-at: "Dernière connexion il y a" last-used-at: "Dernière connexion il y a"
mobile/views/pages/user/home.followers-you-know.vue: mobile/views/pages/user/home.followers-you-know.vue:
no-users: "Aucun utilisateur·rice connu·e" no-users: "Aucun utilisateur connu"
mobile/views/pages/user/home.friends.vue: mobile/views/pages/user/home.friends.vue:
no-users: "Aucun utilisateur·rice connu·e" no-users: "Aucun utilisateur connu"
mobile/views/pages/user/home.notes.vue: mobile/views/pages/user/home.notes.vue:
no-notes: "Pas de notes" no-notes: "Pas de notes"
mobile/views/pages/user/home.photos.vue: mobile/views/pages/user/home.photos.vue:
@ -1471,7 +1524,8 @@ deck/deck.tl-column.vue:
deck/deck.user-column.vue: deck/deck.user-column.vue:
posts: "Notes" posts: "Notes"
following: "Suit" following: "Suit"
followers: "Abonné·e·s" followers: "Abonnés"
mention: "Mentions"
images: "Images" images: "Images"
activity: "Activité" activity: "Activité"
timeline: "Fil dactualité" timeline: "Fil dactualité"
@ -1490,7 +1544,7 @@ docs:
require-credential: "Ce point de communication nécessite une authentification." require-credential: "Ce point de communication nécessite une authentification."
require-permission: "Ce point de communication nécessite la permission {permission}." require-permission: "Ce point de communication nécessite la permission {permission}."
has-limit: "Il ya un taux limite." has-limit: "Il ya un taux limite."
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。" duration-limit: "Si vous avez envoyé plus de {max} requêtes en {duration} millisecondes, vous ne serez pas en mesure d'envoyer d'autres requêtes."
min-interval-limit: "Vous ne pourrez pas effectuer une nouvelle requête si {interval} millisecondes ne se sont pas écoulées depuis la dernière demande." min-interval-limit: "Vous ne pourrez pas effectuer une nouvelle requête si {interval} millisecondes ne se sont pas écoulées depuis la dernière demande."
show-src: "Vous pouvez voir le code source ce point de communication." show-src: "Vous pouvez voir le code source ce point de communication."
show-src-link: "Consulter le code sur GitHub" show-src-link: "Consulter le code sur GitHub"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "引き分け" drawn: "引き分け"
my-turn: "あなたのターンです" my-turn: "あなたのターンです"
@ -165,6 +168,7 @@ common:
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "あなた" you: "あなた"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "開発者" develop: "開発者"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "接続中" connecting: "接続中"
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -96,7 +96,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -118,8 +117,7 @@ common:
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -130,17 +128,23 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
hide-password: "パスワードを隠す"
show-password: "パスワードを表示する"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "引き分け" drawn: "引き分け"
@ -179,6 +183,7 @@ common:
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
@ -284,6 +289,7 @@ common/views/components/media-banner.vue:
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -300,6 +306,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -324,6 +331,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
@ -359,7 +367,9 @@ common/views/components/nav.vue:
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -443,6 +453,14 @@ common/views/components/stream-indicator.vue:
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -476,7 +494,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -508,6 +525,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -519,6 +537,14 @@ common/views/components/profile-editor.vue:
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -576,10 +602,13 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -739,11 +768,13 @@ desktop/views/components/note-detail.vue:
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -888,9 +919,6 @@ desktop/views/components/settings.vue:
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
@ -933,6 +961,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -948,13 +977,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
@ -1094,6 +1123,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1152,6 +1182,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
@ -1179,6 +1215,23 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1202,6 +1255,14 @@ admin/views/users.vue:
createdAtDesc: "登録日時が新しい順" createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順" updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順" updatedAtDesc: "更新日時が新しい順"
state:
title: "状態"
all: "すべて"
admin: "管理者"
moderator: "モデレーター"
adminOrModerator: "管理者+モデレーター"
verified: "公式アカウント"
suspended: "凍結済み"
origin: origin:
title: "オリジン" title: "オリジン"
combined: "ローカル+リモート" combined: "ローカル+リモート"
@ -1215,6 +1276,8 @@ admin/views/moderators.vue:
title: "モデレーターの登録" title: "モデレーターの登録"
add: "登録" add: "登録"
added: "モデレーターを登録しました" added: "モデレーターを登録しました"
remove: "解除"
removed: "モデレーター登録を解除しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
@ -1328,6 +1391,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1338,6 +1402,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
@ -1582,7 +1647,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1606,7 +1670,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
@ -1617,7 +1680,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1679,6 +1741,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワー以外に見せんとって" followers-desc: "自分のフォロワー以外に見せんとって"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "今から言うユーザー以外に見せんとってや" specified-desc: "今から言うユーザー以外に見せんとってや"
private: "非公開"
local-public: "公開 (ローカルだけ)" local-public: "公開 (ローカルだけ)"
local-home: "ホーム (ローカルだけ)" local-home: "ホーム (ローカルだけ)"
local-followers: "フォロワー (ローカルだけ)" local-followers: "フォロワー (ローカルだけ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。" my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。" i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!"
verified-user: "アメちゃん付きアカウント" verified-user: "アメちゃん付きアカウント"
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める" disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UI、動き過ぎや、静かにしてや" reduce-motion: "UI、動き過ぎや、静かにしてや"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OSにもとから入っとる絵文字使う" use-os-default-emojis: "OSにもとから入っとる絵文字使う"
do-not-use-in-production: '開発ビルドや。本番環境で使わんといて!知らんで!' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "ちゃんとした情報見せてや!" view-on-remote: "ちゃんとした情報見せてや!"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が起こったわ' title: "問題が起こったわ"
retry: 'もっぺん' retry: "もっぺん"
reversi: reversi:
drawn: "おあいこ" drawn: "おあいこ"
my-turn: "あんさんのターンや" my-turn: "あんさんのターンや"
@ -165,6 +168,7 @@ common:
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
dev: "アプリの作成あかんかったわ。もっぺんやってみて。" dev: "アプリの作成あかんかったわ。もっぺんやってみて。"
ai-chan-kawaii: "藍ちゃめっさべっぴんさんや" ai-chan-kawaii: "藍ちゃめっさべっぴんさんや"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "あんたのアカウントに<i>{name}</i>がアクセスしようとしてるで?ええか?" share-access: "あんたのアカウントに<i>{name}</i>がアクセスしようとしてるで?ええか?"
permission-ask: "このアプリは次の権限を要求してんで:" permission-ask: "このアプリは次の権限を要求してんで:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "見せたらあかん" sensitive: "見せたらあかん"
click-to-show: "押してみ、見せたるわ" click-to-show: "押してみ、見せたるわ"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "ナイトゲームちゃう時のテーマどないする?" light-theme: "ナイトゲームちゃう時のテーマどないする?"
dark-theme: "ナイトゲームの時のテーマどないする?" dark-theme: "ナイトゲームの時のテーマどないする?"
light-themes: "デイゲーム" light-themes: "デイゲーム"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "この色が背景や!" base-theme: "この色が背景や!"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "試してみる" preview-created-theme: "試してみる"
invalid-theme: "このテーマあかんわ、なんか間違うとる" invalid-theme: "このテーマあかんわ、なんか間違うとる"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "見たいやろ?" show: "見たいやろ?"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "あんさん" you: "あんさん"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "開発者" develop: "開発者"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "もっと" detail: "もっと"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入りやめる" unfavorite: "お気に入りやめる"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "つないどるで" connecting: "つないどるで"
reconnecting: "つなぎ直すで" reconnecting: "つなぎ直すで"
connected: "つないだわ" connected: "つないだわ"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "つなげる" connect: "つなげる"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワー以外に見せんとって" followers-desc: "自分のフォロワー以外に見せんとって"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "今から言うユーザー以外に見せんとってや" specified-desc: "今から言うユーザー以外に見せんとってや"
private: "非公開"
local-public: "公開 (ローカルだけ)" local-public: "公開 (ローカルだけ)"
local-public-desc: "リモートには見せへん" local-public-desc: "リモートには見せへん"
local-home: "ホーム (ローカルだけ)" local-home: "ホーム (ローカルだけ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotやで" is-bot: "このアカウントはBotやで"
is-locked: "他人のフォローは許可してからや!" is-locked: "他人のフォローは許可してからや!"
careful-bot: "Botからのフォローだけは許可制や" careful-bot: "Botからのフォローだけは許可制や"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシーってなんや?オカンの年齢か?" privacy: "プライバシーってなんや?オカンの年齢か?"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "このメールアドレスOKや" email-verified: "このメールアドレスOKや"
email-not-verified: "メールアドレスが確認されとらん。メールボックスもっぺん見てくれへん?" email-not-verified: "メールアドレスが確認されとらん。メールボックスもっぺん見てくれへん?"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "見てみるわ…" fetching: "見てみるわ…"
no-broadcasts: "お知らせはあらへんで" no-broadcasts: "お知らせはあらへんで"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん"
tips-line21: "APIをつこてbotの開発なども行えるで" tips-line21: "APIをつこてbotの開発なども行えるで"
tips-line23: "ウチのタコちゃんかわええやろ…今の突っ込むところや!" tips-line23: "藍かわいいよ藍"
tips-line24: "Misskeyは2014年にサービスを開始したんよ" tips-line24: "Misskeyは2014年にサービスを開始したんよ"
tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで" tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォローしとる" following: "フォローしとる"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "ここおるで:" location: "ここおるで:"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返す" reply: "返す"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "もっと" detail: "もっと"
private: "この投稿は見せられへんわ" private: "この投稿は見せられへんわ"
deleted: "この投稿なんか無くなってもうたわ" deleted: "この投稿なんか無くなってもうたわ"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。" cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。"
cache-cleared: "キャッシュお掃除したで" cache-cleared: "キャッシュお掃除したで"
cache-cleared-desc: "もっぺんページ読みこみ直してくれや" cache-cleared-desc: "もっぺんページ読みこみ直してくれや"
auto-watch: "投稿勝手にウォッチしといてや"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を勝手に受け取るようにすんで。"
about: "Misskeyってなんや" about: "Misskeyってなんや"
operator: "このサーバー誰のや" operator: "このサーバー誰のや"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入れてや" enter-password: "パスワードを入れてや"
authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:" authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:"
howtoinstall: "インストール方法はここやで" howtoinstall: "インストール方法はここやで"
token: "トークン"
scan: "んで、ここに出とるQRコードをスキャンしてな:" scan: "んで、ここに出とるQRコードをスキャンしてな:"
done: "最後にデバイスに表示されとるトークンを入力してな:" done: "最後にデバイスに表示されとるトークンを入力してな:"
submit: "送信" submit: "送信"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入れてや" enter-password: "パスワードを入れてや"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは勝手に付くで。" credential-info: "「i」パラメータは勝手に付くで。"
send: '送る' send: "送る"
sending: '応答待っとる' sending: "応答待っとる"
response: 'こんなん返ってきたわ' response: "こんなん返ってきたわ"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはあらへんで" no-apps: "連携しているアプリケーションはあらへんで"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿なんか無くなってもうたわ" deleted: "この投稿なんか無くなってもうたわ"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できるで。" languages-desc: "スペースで区切って複数設定できるで。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotや" is-bot: "このアカウントはBotや"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿しとらんようや。" empty: "このユーザーはまだ何も投稿しとらんようや。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知どこ見せる?" notification-position: "通知どこ見せる?"
notification-position-bottom: "ミナミの方" notification-position-bottom: "ミナミの方"
notification-position-top: "キタの方" notification-position-top: "キタの方"
theme: "テーマ"
behavior: "動き" behavior: "動き"
fetch-on-scroll: "スクロールしたらもっと見せてや" fetch-on-scroll: "スクロールしたらもっと見せてや"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "さいなら" signout: "さいなら"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンド鳴らす" enable-sounds: "サウンド鳴らす"
mark-as-read-all-unread-notes: "全部もう読んだわ"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされとるで" follows-you: "フォローされとるで"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "こんなやつ" overview: "こんなやつ"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーはあかんわ。凍結されとる。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュートやめたる" unmute: "ミュートやめたる"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "자신의 팔로워에게만 공개" followers-desc: "자신의 팔로워에게만 공개"
specified: "다이렉트" specified: "다이렉트"
specified-desc: "지정한 사용자에게만 공개" specified-desc: "지정한 사용자에게만 공개"
private: "비공개"
local-public: "공개 (로컬 한정)" local-public: "공개 (로컬 한정)"
local-home: "홈 (로컬 한정)" local-home: "홈 (로컬 한정)"
local-followers: "팔로워 (로컬 한정)" local-followers: "팔로워 (로컬 한정)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다." my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다."
i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요" i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요"
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시" show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
use-white-black-reversi-stones: "리버시에 흑백 돌을 사용" use-avatar-reversi-stones: "리버시의 돌로 아바타를 사용"
use-contrast-reversi-stones: "리버시 아이콘의 대비를 높이기"
verified-user: "공식 계정" verified-user: "공식 계정"
disable-animated-mfm: "글의 문자 애니메이션을 비활성화" disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시" suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
@ -122,14 +120,19 @@ common:
reduce-motion: "UI의 애니메이션 줄이기" reduce-motion: "UI의 애니메이션 줄이기"
this-setting-is-this-device-only: "이 장치만" this-setting-is-this-device-only: "이 장치만"
use-os-default-emojis: "운영체제의 기본 이모지 사용" use-os-default-emojis: "운영체제의 기본 이모지 사용"
do-not-use-in-production: '이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오.' line-width: "선 두께"
line-width-thin: "얇음"
line-width-normal: "보통"
line-width-thick: "두꺼움"
do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오."
user-suspended: "이 사용자는 정지된 상태입니다."
is-remote-user: "이 유저 정보는 복사본입니다." is-remote-user: "이 유저 정보는 복사본입니다."
is-remote-post: "이 글 정보는 복사본입니다." is-remote-post: "이 글 정보는 복사본입니다."
view-on-remote: "정확한 정보 보기" view-on-remote: "정확한 정보 보기"
renoted-by: "{user}이(가) 리노트" renoted-by: "{user}이(가) 리노트"
error: error:
title: '오류가 발생했습니다' title: "오류가 발생했습니다"
retry: '다시 시도' retry: "다시 시도"
reversi: reversi:
drawn: "무승부" drawn: "무승부"
my-turn: "당신의 차례입니다" my-turn: "당신의 차례입니다"
@ -165,6 +168,7 @@ common:
hashtags: "해시태그" hashtags: "해시태그"
dev: "앱을 만드는 데 실패했습니다. 다시 시도하시기 바랍니다." dev: "앱을 만드는 데 실패했습니다. 다시 시도하시기 바랍니다."
ai-chan-kawaii: "아이쨩 귀여워" ai-chan-kawaii: "아이쨩 귀여워"
you: "당신"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>가 당신의 계정에 엑세스하도록 허용하시겠습니까?" share-access: "<i>{name}</i>가 당신의 계정에 엑세스하도록 허용하시겠습니까?"
permission-ask: "이 앱은 다음의 권한을 요청합니다:" permission-ask: "이 앱은 다음의 권한을 요청합니다:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "열람주의" sensitive: "열람주의"
click-to-show: "클릭하여 표시" click-to-show: "클릭하여 표시"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "테마"
light-theme: "다크 모드가 아닐 때 사용하는 테마" light-theme: "다크 모드가 아닐 때 사용하는 테마"
dark-theme: "다크 모드일 때 사용하는 테마" dark-theme: "다크 모드일 때 사용하는 테마"
light-themes: "밝은 테마" light-themes: "밝은 테마"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "기본 테마" base-theme: "기본 테마"
base-theme-light: "밝음" base-theme-light: "밝음"
base-theme-dark: "어두움" base-theme-dark: "어두움"
find-more-theme: "그 외 테마 찾아보기"
theme-name: "테마명" theme-name: "테마명"
preview-created-theme: "미리보기" preview-created-theme: "미리보기"
invalid-theme: "테마가 올바르지 않습니다." invalid-theme: "테마가 올바르지 않습니다."
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "더 보기" show: "더 보기"
chars: "{count}문자" chars: "{count}문자"
files: "{count}파일" files: "{count}파일"
poll: "투표"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "사용자 찾기" search-user: "사용자 찾기"
you: "당신" you: "당신"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "개발자" develop: "개발자"
feedback: "피드백" feedback: "피드백"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "멘션"
detail: "상세" detail: "상세"
copy-content: "내용 복사"
copy-link: "링크 복사" copy-link: "링크 복사"
favorite: "이 노트 즐겨찾기" favorite: "이 노트 즐겨찾기"
unfavorite: "즐겨찾기에서 제거" unfavorite: "즐겨찾기에서 제거"
@ -354,7 +363,7 @@ common/views/components/reaction-picker.vue:
choose-reaction: "반응 선택" choose-reaction: "반응 선택"
common/views/components/emoji-picker.vue: common/views/components/emoji-picker.vue:
custom-emoji: "커스텀 이모지" custom-emoji: "커스텀 이모지"
people: "" people: "사람들"
animals-and-nature: "동물 & 자연" animals-and-nature: "동물 & 자연"
food-and-drink: "음식 & 음료" food-and-drink: "음식 & 음료"
activity: "활동" activity: "활동"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "연결중" connecting: "연결중"
reconnecting: "다시 연결 중" reconnecting: "다시 연결 중"
connected: "연결 완료" connected: "연결 완료"
common/views/components/notification-settings.vue:
title: "알림"
mark-as-read-all-notifications: "모든 알림을 읽은 상태로 표시"
mark-as-read-all-unread-notes: "모든 글을 읽은 상태로 표시"
mark-as-read-all-talk-messages: "모든 대화를 읽은 상태로 표시"
auto-watch: "글 자동 감시"
auto-watch-desc: "리액션, 답글, 게시물에 대한 알림을 자동으로 받을 수 있도록 합니다."
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "서비스 연계" title: "서비스 연계"
connect: "접속" connect: "접속"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "자신의 팔로워에게만 공개" followers-desc: "자신의 팔로워에게만 공개"
specified: "다이렉트" specified: "다이렉트"
specified-desc: "지정한 사용자에게만 공개" specified-desc: "지정한 사용자에게만 공개"
private: "비공개"
local-public: "공개 (로컬 한정)" local-public: "공개 (로컬 한정)"
local-public-desc: "원격에는 공개하지 않음" local-public-desc: "원격에는 공개하지 않음"
local-home: "홈 (로컬 한정)" local-home: "홈 (로컬 한정)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "이 계정은 Bot입니다" is-bot: "이 계정은 Bot입니다"
is-locked: "팔로우를 수동으로 승인" is-locked: "팔로우를 수동으로 승인"
careful-bot: "Bot의 팔로우만 수동으로 승인" careful-bot: "Bot의 팔로우만 수동으로 승인"
auto-accept-followed: "팔로우중인 사용자로부터의 팔로우를 자동으로 승인"
advanced: "기타" advanced: "기타"
privacy: "프라이버시" privacy: "프라이버시"
save: "저장" save: "저장"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "메일 주소" email-address: "메일 주소"
email-verified: "매일 주소가 확인되었습니다" email-verified: "매일 주소가 확인되었습니다"
email-not-verified: "메일 주소가 확인되지 않았습니다. 받은 편지함을 확인하여 주시기 바랍니다." email-not-verified: "메일 주소가 확인되지 않았습니다. 받은 편지함을 확인하여 주시기 바랍니다."
common/views/components/user-list-editor.vue:
users: "사용자"
rename: "리스트 이름 바꾸기"
delete: "리스트 삭제"
remove-user: "이 리스트에서 제거"
delete-are-you-sure: "리스트 \"$1\"을 삭제하시겠습니까?"
deleted: "삭제하였습니다"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "확인중" fetching: "확인중"
no-broadcasts: "공지사항이 없습니다" no-broadcasts: "공지사항이 없습니다"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "몇몇 창은 브라우저 밖으로 분리할 수 있습니다" tips-line19: "몇몇 창은 브라우저 밖으로 분리할 수 있습니다"
tips-line20: "달력 위젯의 퍼센트는 경과된 비율을 나타냅니다" tips-line20: "달력 위젯의 퍼센트는 경과된 비율을 나타냅니다"
tips-line21: "API를 사용하여 bot의 개발 등을 할 수 있습니다" tips-line21: "API를 사용하여 bot의 개발 등을 할 수 있습니다"
tips-line23: "마유 귀여워요 마유" tips-line23: "아이 귀여워요 아이"
tips-line24: "Misskey는 2014년에 서비스를 시작했습니다" tips-line24: "Misskey는 2014년에 서비스를 시작했습니다"
tips-line25: "대응하는 브라우저인 경우 Misskey를 열어놓지 않아도 알림을 받을 수 있습니다" tips-line25: "대응하는 브라우저인 경우 Misskey를 열어놓지 않아도 알림을 받을 수 있습니다"
common/views/pages/not-found.vue:
page-not-found: "페이지를 찾을 수 없습니다"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}으로 로그인" signed-in-as: "{}으로 로그인"
following: "팔로우 중" following: "팔로우 중"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "위치 정보" location: "위치 정보"
renote: "리노트" renote: "리노트"
add-reaction: "리액션 추가" add-reaction: "리액션 추가"
undo-reaction: "리액션 취소"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "답글 달기" reply: "답글 달기"
renote: "리노트" renote: "리노트"
add-reaction: "리액션 추가" add-reaction: "리액션 추가"
undo-reaction: "리액션 취소"
detail: "상세" detail: "상세"
private: "이 글은 비공개입니다" private: "이 글은 비공개입니다"
deleted: "이 글은 삭제되었습니다" deleted: "이 글은 삭제되었습니다"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "지우기를 실행하면 브라우저에 저장된 계정 정보 캐시, 글이나 답글 및 메시지의 임시 저장, 그 외 데이터 (설정 정보 포함) 가 삭제 됩니다. 지우기 작업을 수행한 후 페이지를 다시 로드해야 합니다." cache-warn: "지우기를 실행하면 브라우저에 저장된 계정 정보 캐시, 글이나 답글 및 메시지의 임시 저장, 그 외 데이터 (설정 정보 포함) 가 삭제 됩니다. 지우기 작업을 수행한 후 페이지를 다시 로드해야 합니다."
cache-cleared: "캐시를 삭제하였습니다" cache-cleared: "캐시를 삭제하였습니다"
cache-cleared-desc: "페이지를 새로고침해 주십시오." cache-cleared-desc: "페이지를 새로고침해 주십시오."
auto-watch: "글 자동 감시"
auto-watch-desc: "리액션, 답글, 게시물에 대한 알림을 자동으로 받을 수 있도록 합니다."
about: "Misskey에 대하여" about: "Misskey에 대하여"
operator: "이 서버의 운영자" operator: "이 서버의 운영자"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "비밀번호를 입력하여 주십시오" enter-password: "비밀번호를 입력하여 주십시오"
authenticator: "먼저, 가지고 계신 장치에 Google Authenticator를 설치해야 합니다:" authenticator: "먼저, 가지고 계신 장치에 Google Authenticator를 설치해야 합니다:"
howtoinstall: "설치 방법은 여기에 있습니다" howtoinstall: "설치 방법은 여기에 있습니다"
token: "토큰"
scan: "다음으로 표시되어 있는 QR 코드를 스캔합니다:" scan: "다음으로 표시되어 있는 QR 코드를 스캔합니다:"
done: "사용중이신 장치에 표시된 토큰을 입력해주시면 마무리됩니다:" done: "사용중이신 장치에 표시된 토큰을 입력해주시면 마무리됩니다:"
submit: "완료" submit: "완료"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "비밀번호를 입력하여 주십시오" enter-password: "비밀번호를 입력하여 주십시오"
console: console:
title: 'API 콘솔' title: "API 콘솔"
endpoint: '엔드포인트' endpoint: "엔드포인트"
parameter: '매개변수' parameter: "매개변수"
credential-info: "\"i\" 패러미터는 자동으로 추가됩니다." credential-info: "\"i\" 패러미터는 자동으로 추가됩니다."
send: '전송' send: "전송"
sending: '응답을 기다리는 중' sending: "응답을 기다리는 중"
response: '결과' response: "결과"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "연결된 어플리케이션이 없습니다" no-apps: "연결된 어플리케이션이 없습니다"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "이 글은 삭제되었습니다" deleted: "이 글은 삭제되었습니다"
media-count: "{}개의 미디어" media-count: "{}개의 미디어"
poll: "투표" poll: "투표"
desktop/views/components/settings.tags.vue:
title: "태그"
query: "쿼리 (생략 가능)"
add: "추가"
save: "저장"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "작업 관리자" title: "작업 관리자"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "인스턴스의 소개" instance-description: "인스턴스의 소개"
host: "관리자" host: "관리자"
banner-url: "배너 이미지 URL" banner-url: "배너 이미지 URL"
error-image-url: "오류 이미지 URL"
languages: "인스턴스의 대상 언어" languages: "인스턴스의 대상 언어"
languages-desc: "공백으로 구분하여 여러 개 설정할 수 있습니다." languages-desc: "공백으로 구분하여 여러 개 설정할 수 있습니다."
maintainer-config: "관리자 정보" maintainer-config: "관리자 정보"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTP 포트" smtp-port: "SMTP 포트"
smtp-user: "SMTP 사용자" smtp-user: "SMTP 사용자"
smtp-pass: "SMTP 비밀번호" smtp-pass: "SMTP 비밀번호"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorker 사용"
serviceworker-info: "푸시알림을 수행하려면 사용해야 합니다."
vapid-publickey: "VAPID 공개키"
vapid-privatekey: "VAPID 개인키"
vapid-info: "ServiceWorker를 사용하는 경우 VAPID 키 쌍을 생성해야 합니다. 셸에서 다음과 같이 합니다:"
admin/views/charts.vue: admin/views/charts.vue:
title: "차트" title: "차트"
per-day: "1일마다" per-day: "1일마다"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "요청" network-requests: "요청"
network-time: "응답시간" network-time: "응답시간"
network-usage: "통신량" network-usage: "통신량"
admin/views/drive.vue:
sort:
title: "정렬"
createdAtAsc: "업로드 날짜 오랜 순"
createdAtDesc: "업로드 날짜 최신순"
sizeAsc: "크기가 작은 순"
sizeDesc: "크기가 큰 순"
origin:
title: "출처"
combined: "로컬 + 리모트"
local: "로컬"
remote: "리모트"
delete: "삭제"
deleted: "삭제하였습니다"
mark-as-sensitive: "열람주의로 설정"
unmark-as-sensitive: "열람주의 해제"
admin/views/users.vue: admin/views/users.vue:
operation: "작업" operation: "작업"
username-or-userid: "사용자명 혹은 사용자 ID" username-or-userid: "사용자명 혹은 사용자 ID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "글" posts: "글"
following: "팔로잉" following: "팔로잉"
followers: "팔로워" followers: "팔로워"
mention: "멘션"
is-bot: "이 계정은 Bot입니다" is-bot: "이 계정은 Bot입니다"
years-old: "{age}세" years-old: "{age}세"
year: "년" year: "년"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "글" default: "글"
with-replies: "글과 답글" with-replies: "글과 답글"
with-media: "미디어" with-media: "미디어"
my-posts: "내 글"
empty: "이 사용자는 아직 아무것도 게시하지 않은 것 같습니다." empty: "이 사용자는 아직 아무것도 게시하지 않은 것 같습니다."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "메시지" title: "메시지"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "알림 표시" notification-position: "알림 표시"
notification-position-bottom: "아래" notification-position-bottom: "아래"
notification-position-top: "위" notification-position-top: "위"
theme: "테마"
behavior: "동작" behavior: "동작"
fetch-on-scroll: "스크롤하여 자동으로 불러오기" fetch-on-scroll: "스크롤하여 자동으로 불러오기"
note-visibility: "게시물의 공개 범위" note-visibility: "게시물의 공개 범위"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "로그아웃" signout: "로그아웃"
sound: "소리" sound: "소리"
enable-sounds: "소리 사용" enable-sounds: "소리 사용"
mark-as-read-all-unread-notes: "모든 글을 읽은 상태로 표시"
password: "비밀번호" password: "비밀번호"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "당신을 팔로우합니다" follows-you: "당신을 팔로우합니다"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "요약" overview: "요약"
timeline: "타임라인" timeline: "타임라인"
media: "미디어" media: "미디어"
is-suspended: "이 사용자는 정지된 상태입니다."
mute: "뮤트" mute: "뮤트"
unmute: "뮤트 해제" unmute: "뮤트 해제"
block: "차단" block: "차단"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "글" posts: "글"
following: "팔로잉" following: "팔로잉"
followers: "팔로워" followers: "팔로워"
mention: "멘션"
images: "이미지" images: "이미지"
activity: "활동" activity: "활동"
timeline: "타임라인" timeline: "타임라인"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd." my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "引き分け" drawn: "引き分け"
my-turn: "あなたのターンです" my-turn: "あなたのターンです"
@ -165,6 +168,7 @@ common:
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Gebruiker zoeken" search-user: "Gebruiker zoeken"
you: "Jij" you: "Jij"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "Ontwikkelaars" develop: "Ontwikkelaars"
feedback: "Feedback" feedback: "Feedback"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "Deze notitie toevoegen aan favorieten" favorite: "Deze notitie toevoegen aan favorieten"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Bezig met verbinden" connecting: "Bezig met verbinden"
reconnecting: "Bezig met herverbinden" reconnecting: "Bezig met herverbinden"
connected: "Verbonden" connected: "Verbonden"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Bezig met ophalen" fetching: "Bezig met ophalen"
no-broadcasts: "Geen uitzendingen" no-broadcasts: "Geen uitzendingen"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Locatie" location: "Locatie"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -689,7 +716,7 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "Media bijvoegen van je computer" attach-media-from-local: "Media bijvoegen van je computer"
attach-media-from-drive: "Media bijvoegen uit je Drive" attach-media-from-drive: "Media bijvoegen uit je Drive"
attach-cancel: "Bijlage annuleren" attach-cancel: "Bijlage annuleren"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Peiling creëren" create-poll: "Peiling creëren"
text-remain: "{} resterende tekens" text-remain: "{} resterende tekens"
recent-tags: "最近" recent-tags: "最近"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen." cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen."
cache-cleared: "Cache opgeschoond" cache-cleared: "Cache opgeschoond"
cache-cleared-desc: "Herlaad de pagina." cache-cleared-desc: "Herlaad de pagina."
auto-watch: "Automatisch volgen"
auto-watch-desc: "Automatisch meldingen ontvangen over het bericht/antwoord."
about: "Over Misskey" about: "Over Misskey"
operator: "De administrator van deze instantie" operator: "De administrator van deze instantie"
update: "Misskey-update" update: "Misskey-update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Voer het wachtwoord in" enter-password: "Voer het wachtwoord in"
authenticator: "Installeer eerst Google Authenticator op je apparaat:" authenticator: "Installeer eerst Google Authenticator op je apparaat:"
howtoinstall: "Hoe installeer ik dit?" howtoinstall: "Hoe installeer ik dit?"
token: "トークン"
scan: "Scan daarna de QR-code:" scan: "Scan daarna de QR-code:"
done: "Voer de op je apparaat getoonde sleutel in:" done: "Voer de op je apparaat getoonde sleutel in:"
submit: "Versturen" submit: "Versturen"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "Peilingen" poll: "Peilingen"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Taakbeheer" title: "Taakbeheer"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "Berichten" default: "Berichten"
with-replies: "Berichten en antwoorden" with-replies: "Berichten en antwoorden"
with-media: "Media" with-media: "Media"
my-posts: "私の投稿"
empty: "Deze gebruiker heeft nog niks geplaatst." empty: "Deze gebruiker heeft nog niks geplaatst."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Gesprekken" title: "Gesprekken"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "Gedrag" behavior: "Gedrag"
fetch-on-scroll: "Ophalen bij scrollen" fetch-on-scroll: "Ophalen bij scrollen"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "Uitloggen" signout: "Uitloggen"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Volgt jou" follows-you: "Volgt jou"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "Overzicht" overview: "Overzicht"
timeline: "Tijdlijn" timeline: "Tijdlijn"
media: "Media" media: "Media"
is-suspended: "Dit account is geschorst."
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "Privat"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget." my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "引き分け" drawn: "引き分け"
my-turn: "あなたのターンです" my-turn: "あなたのターンです"
@ -165,6 +168,7 @@ common:
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "Sensitivt innhold" sensitive: "Sensitivt innhold"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Mørk" base-theme-dark: "Mørk"
find-more-theme: "その他のテーマを入手"
theme-name: "Tema navn" theme-name: "Tema navn"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "Du" you: "Du"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "Utviklere" develop: "Utviklere"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "Detaljer" detail: "Detaljer"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "Merket som favoritt" favorite: "Merket som favoritt"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "Tilkobler" connecting: "Tilkobler"
reconnecting: "Kobler til på nytt" reconnecting: "Kobler til på nytt"
connected: "Tilkoblet" connected: "Tilkoblet"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "Direkte" specified: "Direkte"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "Privat"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Henter" fetching: "Henter"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "Lokasjon" location: "Lokasjon"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "Send" submit: "Send"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "Innlegg" posts: "Innlegg"
following: "Følger" following: "Følger"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "Innlegg" default: "Innlegg"
with-replies: "Innlegg og svar" with-replies: "Innlegg og svar"
with-media: "Media" with-media: "Media"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Melding" title: "Melding"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "Bunn" notification-position-bottom: "Bunn"
notification-position-top: "Topp" notification-position-top: "Topp"
theme: "Utseende"
behavior: "Oppførsel" behavior: "Oppførsel"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "Lyder" sound: "Lyder"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "Oversikt" overview: "Oversikt"
timeline: "タイムライン" timeline: "タイムライン"
media: "Media" media: "Media"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -10,14 +10,14 @@ common:
title: "Czym jest Misskey?" title: "Czym jest Misskey?"
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
features: "特徴" features: "特徴"
rich-contents: "投稿" rich-contents: "Wpis"
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" rich-contents-desc: "Po prostu opublikuj swój pomysł, gorące tematy i wszystko, co chcesz udostępnić. Możesz ozdobić swoje słowa, dołączyć swoje ulubione zdjęcia, wysłać pliki, w tym filmy i utworzyć ankietę - to są rzeczy, które możesz zrobić w Misskey!"
reaction: "Reakcje" reaction: "Reakcje"
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
ui: "Interfejs" ui: "Interfejs"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
drive: "Dysk" drive: "Dysk"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" drive-desc: "Chcesz opublikować zdjęcie, które już przesłałeś? Chcesz uporządkować, nazwać i utworzyć folder dla przesłanych plików? Dysk Misskey to najlepsze rozwiązanie dla Ciebie. Bardzo łatwo udostępniać swoje pliki online."
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
adblock: adblock:
detected: "Spróbuj wyłączyć blokadę reklam." detected: "Spróbuj wyłączyć blokadę reklam."
@ -72,7 +72,7 @@ common:
friday: "Piątek" friday: "Piątek"
saturday: "Sobota" saturday: "Sobota"
reactions: reactions:
like: "いいね" like: "Lubię"
love: "Kocham" love: "Kocham"
laugh: "Śmieszne" laugh: "Śmieszne"
hmm: "Hmm…?" hmm: "Hmm…?"
@ -90,7 +90,6 @@ common:
followers-desc: "Widoczny tylko dla osób, które Cię śledzą" followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
specified: "Bezpośredni" specified: "Bezpośredni"
specified-desc: "Tylko dla określonych użytkowników" specified-desc: "Tylko dla określonych użytkowników"
private: "Prywatny"
local-public: "Publiczny (tylko lokalnie)" local-public: "Publiczny (tylko lokalnie)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "Dla śledzących (tylko lokalnie)" local-followers: "Dla śledzących (tylko lokalnie)"
@ -110,33 +109,37 @@ common:
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany." my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
i-like-sushi: "Wolę sushi od puddingu" i-like-sushi: "Wolę sushi od puddingu"
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi" show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" verified-user: "Zweryfikowane konto"
verified-user: "公式アカウント"
disable-animated-mfm: "Wyłącz animowany tekst we wpisach" disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する" always-show-nsfw: "Zawszę pokazuj zawartość NSFW"
always-mark-nsfw: "Zawsze oznaczaj posty z multimediami jako NSFW" always-mark-nsfw: "Zawsze oznaczaj posty z multimediami jako NSFW"
show-full-acct: "ユーザー名のホストを省略しない" show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する" show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす" reduce-motion: "Zredukuj ruch w UI"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "Użyj domyślnych Emoji systemowych" use-os-default-emojis: "Użyj domyślnych Emoji systemowych"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "Informacje o użytkowniku są kopiowane." is-remote-user: "Informacje o użytkowniku są kopiowane."
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "Dla dopełnienia, zobacz to zdalnie."
renoted-by: "{user}がRenote" renoted-by: "{user} udostępnił(a)"
error: error:
title: 'Coś poszło nie tak' title: "Coś poszło nie tak"
retry: 'Ponów próbę' retry: "Ponów próbę"
reversi: reversi:
drawn: "Remis" drawn: "Remis"
my-turn: "Twoja kolej" my-turn: "Twoja kolej"
opponent-turn: "Kolej na przeciwnika" opponent-turn: "Kolej na przeciwnika"
turn-of: "{name}のターンです" turn-of: "{name}のターンです"
past-turn-of: "{name}のターン" past-turn-of: "{name}のターン"
won: "{name}の勝ち" won: "{name} wygrał(a)"
black: "Czarny" black: "Czarny"
white: "Biały" white: "Biały"
total: "Łącznie" total: "Łącznie"
@ -165,6 +168,7 @@ common:
hashtags: "Hashtagi" hashtags: "Hashtagi"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "Ty"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "Ta aplikacja wymaga następujących uprawnień:" permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
@ -257,12 +261,13 @@ common/views/components/connect-failed.troubleshooter.vue:
flush: "Wyczyść pamięć podręczną" flush: "Wyczyść pamięć podręczną"
set-version: "Określ wersję" set-version: "Określ wersję"
common/views/components/media-banner.vue: common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "NSFW"
click-to-show: "クリックして表示" click-to-show: "Naciśnij aby wyświetlić"
common/views/components/theme.vue: common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ" theme: "Motyw"
light-theme: "Motyw"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "Jasny Motyw"
dark-themes: "Ciemny motyw" dark-themes: "Ciemny motyw"
install-a-theme: "Zainstaluj motyw" install-a-theme: "Zainstaluj motyw"
theme-code: "Kod motywu" theme-code: "Kod motywu"
@ -276,29 +281,31 @@ common/views/components/theme.vue:
base-theme: "Podstawowy motyw" base-theme: "Podstawowy motyw"
base-theme-light: "Jasny" base-theme-light: "Jasny"
base-theme-dark: "Ciemny" base-theme-dark: "Ciemny"
find-more-theme: "Odkryj więcej motywów"
theme-name: "Nazwa motywu" theme-name: "Nazwa motywu"
preview-created-theme: "プレビュー" preview-created-theme: "Pokaż podgląd"
invalid-theme: "テーマが正しくありません。" invalid-theme: "Nieprawidłowy motyw"
already-installed: "既にそのテーマはインストールされています。" already-installed: "Ten motyw jest już zainstalowany"
saved: "Zapisano" saved: "Zapisano"
manage-themes: "Zarządzanie motywami" manage-themes: "Zarządzanie motywami"
builtin-themes: "標準テーマ" builtin-themes: "Standardowe motywy"
my-themes: "マイテーマ" my-themes: "Moje motywy"
installed-themes: "インストールされたテーマ" installed-themes: "Zainstalowane motywy"
select-theme: "テーマを選択してください" select-theme: "Wybierz motyw"
uninstall: "アンインストール" uninstall: "Odinstaluj"
uninstalled: "「{}」をアンインストールしました" uninstalled: "\"{}\" został odinstalowany"
author: "Author" author: "Author"
desc: "Opis" desc: "Opis"
export: "エクスポート" export: "Eksportuj"
import: "インポート" import: "Importuj"
import-by-code: "lub wklej kod" import-by-code: "lub wklej kod"
theme-name-required: "テーマ名は必須です。" theme-name-required: "Nazwa motywu jest obowiązkowa."
common/views/components/cw-button.vue: common/views/components/cw-button.vue:
hide: "Ukryj" hide: "Ukryj"
show: "Pokaż więcej" show: "Pokaż więcej"
chars: "{count}文字" chars: "{count} znaków"
files: "{count}ファイル" files: "{count} plików"
poll: "Ankieta"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Znajdź użytkownika" search-user: "Znajdź użytkownika"
you: "Ty" you: "Ty"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "Autorzy" develop: "Autorzy"
feedback: "Podziel się opinią" feedback: "Podziel się opinią"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "Wspomnij"
detail: "Szczegóły" detail: "Szczegóły"
copy-content: "内容をコピー"
copy-link: "Skopiuj adres" copy-link: "Skopiuj adres"
favorite: "Dodaj do ulubionych" favorite: "Dodaj do ulubionych"
unfavorite: "Usuń z ulubionych" unfavorite: "Usuń z ulubionych"
@ -353,15 +362,15 @@ common/views/components/poll-editor.vue:
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "Wybierz reakcję" choose-reaction: "Wybierz reakcję"
common/views/components/emoji-picker.vue: common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字" custom-emoji: "Niestandardowe Emoji"
people: "Ludzie" people: "Ludzie"
animals-and-nature: "動物&自然" animals-and-nature: "Zwierzęta i Natura"
food-and-drink: "食べ物&飲み物" food-and-drink: "Żywność i napoje"
activity: "アクティビティ" activity: "Aktywność"
travel-and-places: "場所" travel-and-places: "Podróże i Miejsca"
objects: "" objects: "Rzeczy"
symbols: "記号" symbols: "Symbole"
flags: "" flags: "Flagi"
common/views/components/signin.vue: common/views/components/signin.vue:
username: "Nazwa użytkownika" username: "Nazwa użytkownika"
password: "Hasło" password: "Hasło"
@ -403,23 +412,30 @@ common/views/components/stream-indicator.vue:
connecting: "Łączenie" connecting: "Łączenie"
reconnecting: "Ponowne łączenie" reconnecting: "Ponowne łączenie"
connected: "Połączono" connected: "Połączono"
common/views/components/notification-settings.vue:
title: "Powiadomienia"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "Połącz"
disconnect: "切断する" disconnect: "Rozłącz"
connected-to: "次のアカウントに接続されています" connected-to: "次のアカウントに接続されています"
common/views/components/github-setting.vue: common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています" connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..." detail: "Więcej..."
reconnect: "再接続する" reconnect: "Połącz ponownie"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue: common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。" description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています" connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..." detail: "Szczegóły…"
reconnect: "再接続する" reconnect: "Połącz ponownie"
connect: "Discordと接続する" connect: "Discordと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
@ -432,19 +448,18 @@ common/views/components/visibility-chooser.vue:
followers-desc: "Widoczny tylko dla osób, które Cię śledzą" followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
specified: "Bezpośredni" specified: "Bezpośredni"
specified-desc: "Tylko dla określonych użytkowników" specified-desc: "Tylko dla określonych użytkowników"
private: "Prywatny"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "Dla śledzących (tylko lokalnie)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue: common/views/components/language-settings.vue:
title: "Język" title: "Język"
pick-language: "言語を選択" pick-language: "Wybierz język"
recommended: "推奨" recommended: "Zalecane"
auto: "自動" auto: "Automatyczny"
specify-language: "言語を指定" specify-language: "言語を指定"
info: "Musisz odświeżyć stronę, aby zmiany zostały uwzględnione." info: "Musisz odświeżyć stronę, aby zmiany zostały uwzględnione."
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "To konto jest prowadzone przez bota" is-bot: "To konto jest prowadzone przez bota"
is-locked: "Żądanania śledzenia wymagają zatwierdzenia" is-locked: "Żądanania śledzenia wymagają zatwierdzenia"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "Inne" advanced: "Inne"
privacy: "Prywatność" privacy: "Prywatność"
save: "Zapisz" save: "Zapisz"
@ -468,9 +484,16 @@ common/views/components/profile-editor.vue:
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定" email: "メール設定"
email-address: "メールアドレス" email-address: "Adres e-mail"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Sprawdzanie" fetching: "Sprawdzanie"
no-broadcasts: "Brak transmisji" no-broadcasts: "Brak transmisji"
@ -520,15 +543,17 @@ common/views/widgets/tips.vue:
tips-line19: "Część okien może zostać odłączona z przeglądarki." tips-line19: "Część okien może zostać odłączona z przeglądarki."
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "Możesz też używać API, aby tworzyć boty." tips-line21: "Możesz też używać API, aby tworzyć boty."
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskey zaczął działać w 2014." tips-line24: "Misskey zaczął działać w 2014."
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce." tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "Zalogowany jako {}" signed-in-as: "Zalogowany jako {}"
following: "Śledzisz" following: "Śledzisz"
follow: "Śledź" follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie" request-pending: "Oczekiwanie na pozwolenie"
follow-processing: "フォロー処理中" follow-processing: "Przetwarzanie śledzenia"
follow-request: "Poproś o śledzenie" follow-request: "Poproś o śledzenie"
desktop: desktop:
banner-crop-title: "バナーとして表示する部分を選択" banner-crop-title: "バナーとして表示する部分を選択"
@ -556,7 +581,7 @@ desktop/views/components/calendar.vue:
next: "Następny miesiąc" next: "Następny miesiąc"
go: "Naciśnij, aby przejść" go: "Naciśnij, aby przejść"
desktop/views/components/choose-file-from-drive-window.vue: desktop/views/components/choose-file-from-drive-window.vue:
chosen-files: "{count}ファイル選択中" chosen-files: "Wybrano {count} Plik(ów)"
upload: "Wyślij pliki z Twojego komputera" upload: "Wyślij pliki z Twojego komputera"
cancel: "Anuluj" cancel: "Anuluj"
ok: "OK" ok: "OK"
@ -574,7 +599,7 @@ desktop/views/components/drive-window.vue:
desktop/views/components/drive.file.vue: desktop/views/components/drive.file.vue:
avatar: "Awatar" avatar: "Awatar"
banner: "Baner" banner: "Baner"
nsfw: "閲覧注意" nsfw: "NSFW"
contextmenu: contextmenu:
rename: "Zmień nazwę" rename: "Zmień nazwę"
mark-as-sensitive: "Oznacz jako zawartość wrażliwą" mark-as-sensitive: "Oznacz jako zawartość wrażliwą"
@ -656,13 +681,15 @@ desktop/views/components/note-detail.vue:
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
location: "Informacje o lokalizacji" location: "Informacje o lokalizacji"
renote: "Udostępnienie" renote: "Udostępnij"
add-reaction: "Dodaj reakcję" add-reaction: "Dodaj reakcję"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "Odpowiedz"
renote: "Renote" renote: "Udostępnij"
add-reaction: "リアクション" add-reaction: "Dodaj reakcję"
detail: "詳細" undo-reaction: "リアクション解除"
detail: "Szczegóły"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
@ -727,7 +754,7 @@ desktop/views/components/settings.vue:
notification: "Powiadomienia" notification: "Powiadomienia"
apps: "Aplikacje" apps: "Aplikacje"
tags: "Hashtagi" tags: "Hashtagi"
mute-and-block: "ミュート/ブロック" mute-and-block: "Wycisz / Zablokuj"
blocking: "ブロック" blocking: "ブロック"
security: "Bezpieczeństwo" security: "Bezpieczeństwo"
signin: "Historia logowań" signin: "Historia logowań"
@ -741,9 +768,9 @@ desktop/views/components/settings.vue:
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści." fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
note-visibility: "Widoczność wpisów" note-visibility: "Widoczność wpisów"
default-note-visibility: "Domyślna widoczność" default-note-visibility: "Domyślna widoczność"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "Zapamiętaj widoczność wpisów"
web-search-engine: "ウェブ検索エンジン" web-search-engine: "Wyszukiwarka internetowa"
web-search-engine-desc: ": https://www.google.com/?#q={{query}}" web-search-engine-desc: "Np: https://www.google.com/?#q={{query}}"
auto-popout: "Automatycznie pojawiające się okna" auto-popout: "Automatycznie pojawiające się okna"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "Ustawienia zaawansowane" advanced: "Ustawienia zaawansowane"
@ -751,36 +778,36 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション" deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする" deck-default: "Użyj Talię jako domyślne UI"
display: "Wygląd i wyświetlanie" display: "Wygląd i wyświetlanie"
customize: "Dostosuj stronę główną" customize: "Dostosuj stronę główną"
wallpaper: "壁紙" wallpaper: "Tapeta"
choose-wallpaper: "Wybierz tło" choose-wallpaper: "Wybierz tło"
delete-wallpaper: "Usuń tło" delete-wallpaper: "Usuń tło"
dark-mode: "Tryb ciemny" dark-mode: "Tryb ciemny"
use-shadow: "UIに影を使用" use-shadow: "Użyj cieni w UI"
rounded-corners: "UIの角を丸める" rounded-corners: "Zaokrąglaj rogi w UI"
circle-icons: "Używaj okrągłych ikon" circle-icons: "Używaj okrągłych ikon"
contrasted-acct: "ユーザー名にコントラストを付ける" contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu" post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Pokazuj cel odpowiedzi" show-reply-target: "Pokazuj cel odpowiedzi"
timeline: "タイムライン" timeline: "Oś czasu"
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu" show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "Pokazuj moje udostępnione wpisy na osi czasu"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Automatycznie pokazuj mapę" show-maps: "Automatycznie pokazuj mapę"
remain-deleted-note: "削除された投稿を表示し続ける" remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの配置" deck-column-align: "デッキのカラムの配置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "" deck-column-align-left: "Lewo"
deck-column-align-flexible: "Elastyczne" deck-column-align-flexible: "Elastyczne"
deck-column-width: "デッキのカラムの幅" deck-column-width: "Szerokość kolumn w talii"
deck-column-width-narrow: "" deck-column-width-narrow: "Wąska"
deck-column-width-narrower: "やや狭" deck-column-width-narrower: "Trochę wąska"
deck-column-width-normal: "普通" deck-column-width-normal: "Normalna"
deck-column-width-wider: "やや広" deck-column-width-wider: "Trochę szeroka"
deck-column-width-wide: "" deck-column-width-wide: "Szeroka"
sound: "Dźwięk" sound: "Dźwięk"
enable-sounds: "Włącz dźwięk" enable-sounds: "Włącz dźwięk"
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę." enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu." cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu."
cache-cleared: "Wyczyszczono pamięć podręczną" cache-cleared: "Wyczyszczono pamięć podręczną"
cache-cleared-desc: "Proszę odświeżyć stronę." cache-cleared-desc: "Proszę odświeżyć stronę."
auto-watch: "Automatycznie nasłuchuj"
auto-watch-desc: "Otrzymuj natychmiastowo informacje o wpisach/odpowiedziach/reakcjach."
about: "O Misskey" about: "O Misskey"
operator: "Administrator instancji" operator: "Administrator instancji"
update: "Aktualizacja Misskey" update: "Aktualizacja Misskey"
@ -815,10 +840,10 @@ desktop/views/components/settings.vue:
tools: "Narzędzia" tools: "Narzędzia"
task-manager: "Menedżer zadań" task-manager: "Menedżer zadań"
third-parties: "Autorzy trzeci" third-parties: "Autorzy trzeci"
navbar-position: "ナビゲーションバーの位置" navbar-position: "Pozycja paska nawigacji"
navbar-position-top: "" navbar-position-top: "Góra"
navbar-position-left: "" navbar-position-left: "Lewo"
navbar-position-right: "" navbar-position-right: "Prawo"
desktop/views/components/settings.2fa.vue: desktop/views/components/settings.2fa.vue:
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo." intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
detail: "Zobacz szczegóły…" detail: "Zobacz szczegóły…"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Wprowadź hasło" enter-password: "Wprowadź hasło"
authenticator: "Na początek musisz zainstalować Google Authenticator na swoim urządzeniu:" authenticator: "Na początek musisz zainstalować Google Authenticator na swoim urządzeniu:"
howtoinstall: "Jak zainstalować" howtoinstall: "Jak zainstalować"
token: "トークン"
scan: "Później, zeskanuje ten kod QR:" scan: "Później, zeskanuje ten kod QR:"
done: "Wprowadź token wyświetlony na Twoim urządzeniu:" done: "Wprowadź token wyświetlony na Twoim urządzeniu:"
submit: "Wyślij" submit: "Wyślij"
@ -838,38 +864,38 @@ desktop/views/components/settings.2fa.vue:
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token." failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey." info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
common/views/components/api-settings.vue: common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。" regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
regenerate-token: "トークンを再生成" regenerate-token: "Wygeneruj nowy token"
token: "Token:" token: "Token:"
enter-password: "Wprowadź hasło" enter-password: "Wprowadź hasło"
console: console:
title: 'Konsola API' title: "Konsola API"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'Parametry' parameter: "Parametry"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: 'Wyślij' send: "Wyślij"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "Brak zautoryzowanych aplikacji" no-apps: "Brak zautoryzowanych aplikacji"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
max: "容量" max: "Max"
in-use: "使用中" in-use: "użyto"
stats: "Statystyki" stats: "Statystyki"
common/views/components/mute-and-block.vue: common/views/components/mute-and-block.vue:
mute-and-block: "Wyczisz / Zablokuj" mute-and-block: "Wycisz / Zablokuj"
mute: "Wycisz" mute: "Wycisz"
block: "ブロック" block: "Zablokuj"
no-muted-users: "Brak wyciszonych użytkowników" no-muted-users: "Brak wyciszonych użytkowników"
no-blocked-users: "Brak zablokowanych użytkowników" no-blocked-users: "Brak zablokowanych użytkowników"
word-mute: "Wyciszenie słowa" word-mute: "Wyciszenie słowa"
muted-words: "ミュートされたキーワード" muted-words: "Wyciszone słowa kluczowe"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります" muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "Zapisz" save: "Zapisz"
common/views/components/password-settings.vue: common/views/components/password-settings.vue:
reset: "パスワードを変更する" reset: "Zmień hasło"
enter-current-password: "現在のパスワードを入力してください" enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください" enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください" enter-new-password-again: "もう一度新しいパスワードを入力してください"
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
media-count: "{}zawartości multimedialnej" media-count: "{}zawartości multimedialnej"
poll: "Ankieta" poll: "Ankieta"
desktop/views/components/settings.tags.vue:
title: "Tagi"
query: "Zapytanie (opcjonalne)"
add: "Dodaj"
save: "Zapisz"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Menedżer zadań" title: "Menedżer zadań"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -892,8 +923,8 @@ desktop/views/components/timeline.vue:
messages: "Wiadomości" messages: "Wiadomości"
list: "Listy" list: "Listy"
hashtag: "Hashtag" hashtag: "Hashtag"
add-tag-timeline: "ハッシュタグを追加" add-tag-timeline: "Dodaj hashtag"
add-list: "リストを追加" add-list: "Dodaj listę"
list-name: "リスト名" list-name: "リスト名"
desktop/views/components/ui.header.vue: desktop/views/components/ui.header.vue:
welcome-back: "Witaj ponownie," welcome-back: "Witaj ponownie,"
@ -952,7 +983,7 @@ admin/views/index.vue:
admin/views/dashboard.vue: admin/views/dashboard.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
accounts: "Konta" accounts: "Konta"
notes: "投稿" notes: "Wpisy"
drive: "ドライブ" drive: "ドライブ"
instances: "インスタンス" instances: "インスタンス"
this-instance: "このインスタンス" this-instance: "このインスタンス"
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1008,7 +1040,7 @@ admin/views/instance.vue:
user-recommendation-config: "Polecani użytkownicy" user-recommendation-config: "Polecani użytkownicy"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする" enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "Silnik" external-user-recommendation-engine: "Silnik"
external-user-recommendation-engine-desc: ": https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" external-user-recommendation-engine-desc: "Np: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト" external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定" email-config: "メールサーバーの設定"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "Żądania" network-requests: "Żądania"
network-time: "Czas reakcji" network-time: "Czas reakcji"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "Źródło"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "Usuń"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1079,17 +1133,17 @@ admin/views/users.vue:
admin/views/moderators.vue: admin/views/moderators.vue:
add-moderator: add-moderator:
title: "モデレーターの登録" title: "モデレーターの登録"
add: "登録" add: "Zarejestruj się"
added: "モデレーターを登録しました" added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
name: "絵文字名" name: "Nazwa Emoji"
name-desc: "a~z 0~9 _ の文字が使えます。" name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス" aliases: "Aliasy"
aliases-desc: "スペースで区切って複数設定できます。" aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL" url: "絵文字画像URL"
add: "追加" add: "Dodaj"
info: "50KB以下のPNG画像をおすすめします。" info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました" added: "絵文字を登録しました"
emojis: emojis:
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "Wpisy" posts: "Wpisy"
following: "Śledzeni" following: "Śledzeni"
followers: "Śledzący" followers: "Śledzący"
mention: "Wspomnij"
is-bot: "To konto jest botem" is-bot: "To konto jest botem"
years-old: "{age} lat" years-old: "{age} lat"
year: "/" year: "/"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "Wpisy" default: "Wpisy"
with-replies: "Wpisy i odpowiedzi" with-replies: "Wpisy i odpowiedzi"
with-media: "Multimedia" with-media: "Multimedia"
my-posts: "Moje wpisy"
empty: "Ten użytkownik nie umieścił jeszcze niczego." empty: "Ten użytkownik nie umieścił jeszcze niczego."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Wiadomości" title: "Wiadomości"
@ -1229,14 +1285,14 @@ mobile/views/components/drive-file-chooser.vue:
mobile/views/components/drive-folder-chooser.vue: mobile/views/components/drive-folder-chooser.vue:
select-folder: "Wybierz katalog" select-folder: "Wybierz katalog"
mobile/views/components/drive.file.vue: mobile/views/components/drive.file.vue:
nsfw: "閲覧注意" nsfw: "NSFW"
mobile/views/components/drive.file-detail.vue: mobile/views/components/drive.file-detail.vue:
download: "Pobierz" download: "Pobierz"
rename: "Zmień nazwę" rename: "Zmień nazwę"
move: "Przenieś" move: "Przenieś"
hash: "Hash (md5)" hash: "Hash (md5)"
exif: "EXIF" exif: "EXIF"
nsfw: "閲覧注意" nsfw: "NSFW"
mark-as-sensitive: "閲覧注意に設定" mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除" unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue: mobile/views/components/media-image.vue:
@ -1249,7 +1305,7 @@ common/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "Śledź" follow: "Śledź"
request-pending: "フォロー許可待ち" request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中" follow-processing: "Przetwarzanie"
follow-request: "Poproś o śledzenie" follow-request: "Poproś o śledzenie"
mobile/views/components/friends-maker.vue: mobile/views/components/friends-maker.vue:
title: "Zacznij śledzić ludzi takich jak Ty" title: "Zacznij śledzić ludzi takich jak Ty"
@ -1376,7 +1432,7 @@ mobile/views/pages/settings.vue:
timeline: "Oś czasu" timeline: "Oś czasu"
show-reply-target: "Pokazuj cel odpowiedzi" show-reply-target: "Pokazuj cel odpowiedzi"
show-my-renotes: "Pokazuj moje udostępnienia" show-my-renotes: "Pokazuj moje udostępnienia"
show-renoted-my-notes: "自分の投稿のRenoteを表示する" show-renoted-my-notes: "Pokazuj moje udostępnione wpisy"
show-local-renotes: "ローカルの投稿のRenoteを表示する" show-local-renotes: "ローカルの投稿のRenoteを表示する"
post-style: "Styl wpisów" post-style: "Styl wpisów"
post-style-standard: "Standardowy" post-style-standard: "Standardowy"
@ -1384,14 +1440,13 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "Dół" notification-position-bottom: "Dół"
notification-position-top: "Góra" notification-position-top: "Góra"
theme: "Motyw"
behavior: "Zachowanie" behavior: "Zachowanie"
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół" fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
note-visibility: "Widoczność wpisów" note-visibility: "Widoczność wpisów"
default-note-visibility: "Domyślna widoczność" default-note-visibility: "Domyślna widoczność"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "Zapamiętaj widoczność wpisów"
web-search-engine: "ウェブ検索エンジン" web-search-engine: "Wyszukiwarka internetowa"
web-search-engine-desc: ": https://www.google.com/?#q={{query}}" web-search-engine-desc: "Np: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”" disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości" load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów" load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "Wyloguj" signout: "Wyloguj"
sound: "Dźwięk" sound: "Dźwięk"
enable-sounds: "Włącz dźwięk" enable-sounds: "Włącz dźwięk"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "Hasło" password: "Hasło"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Śledzi Cię" follows-you: "Śledzi Cię"
@ -1418,13 +1472,12 @@ mobile/views/pages/user.vue:
overview: "Przegląd" overview: "Przegląd"
timeline: "Oś czasu" timeline: "Oś czasu"
media: "Multimedia" media: "Multimedia"
is-suspended: "To konto zostało zablokowane"
mute: "Wycisz" mute: "Wycisz"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "Zablokuj" block: "Zablokuj"
unblock: "Odblokuj" unblock: "Odblokuj"
years-old: "{age} lat" years-old: "{age} lat"
push-to-list: "リストに追加" push-to-list: "Dodaj do listy"
select-list: "Wybierz listę" select-list: "Wybierz listę"
list-pushed: "{user}を{list}に追加しました" list-pushed: "{user}を{list}に追加しました"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
@ -1445,22 +1498,22 @@ mobile/views/pages/user/home.notes.vue:
mobile/views/pages/user/home.photos.vue: mobile/views/pages/user/home.photos.vue:
no-photos: "Brak zdjęć" no-photos: "Brak zdjęć"
deck: deck:
widgets: "ウィジェット" widgets: "Widżety"
home: "ホーム" home: "Strona główna"
local: "ローカル" local: "Lokalne"
hybrid: "ソーシャル" hybrid: "Społeczność"
hashtag: "Hashtag" hashtag: "Hashtag"
global: "グローバル" global: "Globalne"
mentions: "Wspomnienia" mentions: "Wspomnienia"
direct: "ダイレクト投稿" direct: "Bezpośrednie wpisy"
notifications: "通知" notifications: "Powiadomienia"
list: "リスト" list: "Listy"
swap-left: "左に移動" swap-left: "Przesuń w lewo"
swap-right: "右に移動" swap-right: "Przesuń w prawo"
swap-up: "上に移動" swap-up: "Przenieś w górę"
swap-down: "下に移動" swap-down: "下に移動"
remove: "カラムを削除" remove: "Usuń"
add-column: "カラムを追加" add-column: "Dodaj kolumnę"
rename: "Zmień nazwę" rename: "Zmień nazwę"
stack-left: "Przypnij do lewej" stack-left: "Przypnij do lewej"
pop-right: "右に出す" pop-right: "右に出す"
@ -1470,8 +1523,9 @@ deck/deck.tl-column.vue:
edit: "Opcje" edit: "Opcje"
deck/deck.user-column.vue: deck/deck.user-column.vue:
posts: "Wpisy" posts: "Wpisy"
following: "フォロー" following: "Śledzeni"
followers: "フォロワー" followers: "Śledzący"
mention: "Wspomnij"
images: "Zdjęcia" images: "Zdjęcia"
activity: "Aktywność" activity: "Aktywność"
timeline: "Oś czasu" timeline: "Oś czasu"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado." my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
i-like-sushi: "Eu prefiro sushi a pudim" i-like-sushi: "Eu prefiro sushi a pudim"
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi" show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "Conta verificada" verified-user: "Conta verificada"
disable-animated-mfm: "Desativar texto animado nas publicações" disable-animated-mfm: "Desativar texto animado nas publicações"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "UIの動きを減らす" reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: "問題が発生しました"
retry: 'やり直す' retry: "やり直す"
reversi: reversi:
drawn: "Empatado" drawn: "Empatado"
my-turn: "Seu turno" my-turn: "Seu turno"
@ -165,6 +168,7 @@ common:
hashtags: "Hashtags" hashtags: "Hashtags"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "Este aplicativo precisa das seguintes permissões:" permission-ask: "Este aplicativo precisa das seguintes permissões:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "Você" you: "Você"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "開発者" develop: "開発者"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "接続中" connecting: "接続中"
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "Sair" signout: "Sair"
sound: "Sons" sound: "Sons"
enable-sounds: "Ativar sons" enable-sounds: "Ativar sons"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Te segue" follows-you: "Te segue"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "Linha do tempo" timeline: "Linha do tempo"
media: "Mídia" media: "Mídia"
is-suspended: "Esta conta foi suspensa"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -26,12 +26,12 @@ common:
close: "Закрыть" close: "Закрыть"
do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность." do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность."
load-more: "Загрузить больше" load-more: "Загрузить больше"
enter-password: "パスワードを入力してください" enter-password: "Пожалуйста, введите ваш пароль"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "Советы по настройке"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!" gotit: "Понятно!"
notification: notification:
file-uploaded: "Файл отправлен!" file-uploaded: "Файл отправлен!"
message-from: "Сообщение от {}:" message-from: "Сообщение от {}:"
@ -64,17 +64,17 @@ common:
friday: "Пт" friday: "Пт"
saturday: "Сб" saturday: "Сб"
weekday: weekday:
sunday: "日曜日" sunday: "Воскресенье"
monday: "月曜日" monday: "Понедельник"
tuesday: "火曜日" tuesday: "Вторник"
wednesday: "水曜日" wednesday: "Среда"
thursday: "木曜日" thursday: "Четверг"
friday: "金曜日" friday: "Пятница"
saturday: "土曜日" saturday: "Суббота"
reactions: reactions:
like: "いいね" like: "Нравится"
love: "しゅき" love: "しゅき"
laugh: "" laugh: "Ха-Ха"
hmm: "ふぅ~む" hmm: "ふぅ~む"
surprise: "わお" surprise: "わお"
congrats: "おめでとう" congrats: "おめでとう"
@ -90,7 +90,6 @@ common:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)" local-followers: "フォロワー (ローカルのみ)"
@ -110,8 +109,7 @@ common:
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "Отключить анимированный текст в постах" disable-animated-mfm: "Отключить анимированный текст в постах"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
@ -122,14 +120,19 @@ common:
reduce-motion: "Уменьшить движение в интерфейсе" reduce-motion: "Уменьшить движение в интерфейсе"
this-setting-is-this-device-only: "Только для этого устройства" this-setting-is-this-device-only: "Только для этого устройства"
use-os-default-emojis: "Использовать стандартные Emoji из ОС" use-os-default-emojis: "Использовать стандартные Emoji из ОС"
do-not-use-in-production: 'Эта сборка для разработчиков. Не используйте в продакшне.' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote" renoted-by: "{user}がRenote"
error: error:
title: 'Что-то пошло не так :(' title: "Что-то пошло не так :("
retry: 'Повторить' retry: "Повторить"
reversi: reversi:
drawn: "Ничья" drawn: "Ничья"
my-turn: "Ваш ход" my-turn: "Ваш ход"
@ -165,6 +168,7 @@ common:
hashtags: "Хэштеги" hashtags: "Хэштеги"
dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз." dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз."
ai-chan-kawaii: "Ai-chan kawaii!" ai-chan-kawaii: "Ai-chan kawaii!"
you: "あなた"
auth/views/form.vue: auth/views/form.vue:
share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?" share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意" sensitive: "閲覧注意"
click-to-show: "クリックして表示" click-to-show: "クリックして表示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "非ダークモード時に使用するテーマ" light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ" light-themes: "明るいテーマ"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "ベーステーマ" base-theme: "ベーステーマ"
base-theme-light: "Light" base-theme-light: "Light"
base-theme-dark: "Dark" base-theme-dark: "Dark"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名" theme-name: "テーマ名"
preview-created-theme: "プレビュー" preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。" invalid-theme: "テーマが正しくありません。"
@ -299,6 +305,7 @@ common/views/components/cw-button.vue:
show: "もっと見る" show: "もっと見る"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count}ファイル"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "ユーザーを探す"
you: "あなた" you: "あなた"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "開発者" develop: "開発者"
feedback: "フィードバック" feedback: "フィードバック"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "詳細" detail: "詳細"
copy-content: "内容をコピー"
copy-link: "リンクをコピー" copy-link: "リンクをコピー"
favorite: "お気に入り" favorite: "お気に入り"
unfavorite: "お気に入り解除" unfavorite: "お気に入り解除"
@ -403,6 +412,13 @@ common/views/components/stream-indicator.vue:
connecting: "接続中" connecting: "接続中"
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接続する"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
local-public: "公開 (ローカルのみ)" local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない" local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)" local-home: "ホーム (ローカルのみ)"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする" is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする" careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "その他" advanced: "その他"
privacy: "プライバシー" privacy: "プライバシー"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス" email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました" email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます" tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています" tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます" tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ" tips-line23: "かわいいよ"
tips-line24: "Misskeyは2014年にサービスを開始しました" tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
following: "フォロー中" following: "フォロー中"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
undo-reaction: "リアクション解除"
detail: "詳細" detail: "詳細"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて" about: "Misskeyについて"
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
token: "トークン"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:" done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了" submit: "完了"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "パスワードを入力してください"
console: console:
title: 'APIコンソール' title: "APIコンソール"
endpoint: 'エンドポイント' endpoint: "エンドポイント"
parameter: 'パラメータ' parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "「i」パラメータは自動で付与されます。"
send: '送信' send: "送信"
sending: '応答待ち' sending: "応答待ち"
response: '結果' response: "結果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -881,6 +907,11 @@ desktop/views/components/sub-note-content.vue:
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "アンケート" poll: "アンケート"
desktop/views/components/settings.tags.vue:
title: "タグ"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "インスタンスの紹介" instance-description: "インスタンスの紹介"
host: "ホスト" host: "ホスト"
banner-url: "バナー画像URL" banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語" languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。" languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報" maintainer-config: "管理者情報"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTPポート" smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー" smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTPパスワード"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公開鍵"
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "リクエスト" network-requests: "リクエスト"
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/drive.vue:
sort:
title: "ソート"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID" username-or-userid: "ユーザー名またはユーザーID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
years-old: "{age}歳" years-old: "{age}歳"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
with-media: "メディア" with-media: "メディア"
my-posts: "私の投稿"
empty: "このユーザーはまだ何も投稿していないようです。" empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "メッセージ" title: "メッセージ"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示" notification-position: "通知の表示"
notification-position-bottom: "下" notification-position-bottom: "下"
notification-position-top: "上" notification-position-top: "上"
theme: "テーマ"
behavior: "動作" behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "サインアウト" signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード" password: "パスワード"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "フォローされています" follows-you: "フォローされています"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概要" overview: "概要"
timeline: "タイムライン" timeline: "タイムライン"
media: "メディア" media: "メディア"
is-suspended: "このユーザーは凍結されています。"
mute: "ミュート" mute: "ミュート"
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "投稿" posts: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
mention: "メンション"
images: "画像" images: "画像"
activity: "アクティビティ" activity: "アクティビティ"
timeline: "タイムライン" timeline: "タイムライン"

View File

@ -90,7 +90,6 @@ common:
followers-desc: "仅发送至粉丝" followers-desc: "仅发送至粉丝"
specified: "指定用户" specified: "指定用户"
specified-desc: "仅发送至指定用户" specified-desc: "仅发送至指定用户"
private: "私密"
local-public: "公开(仅限本地)" local-public: "公开(仅限本地)"
local-home: "首页(仅限本地)" local-home: "首页(仅限本地)"
local-followers: "关注者(仅限本地)" local-followers: "关注者(仅限本地)"
@ -110,11 +109,10 @@ common:
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。" my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。" i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
show-reversi-board-labels: "在 Reversi 中显示行和列表签" show-reversi-board-labels: "在 Reversi 中显示行和列表签"
use-white-black-reversi-stones: "リバーシに白黒の石を使う" use-avatar-reversi-stones: "リバーシの石にアバターを使う"
use-contrast-reversi-stones: "Make the stone color clear in Reversi"
verified-user: "认证用户" verified-user: "认证用户"
disable-animated-mfm: "在帖子中禁用动画文本" disable-animated-mfm: "在帖子中禁用动画文本"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する" suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
always-show-nsfw: "总是显示 NSFW 的内容" always-show-nsfw: "总是显示 NSFW 的内容"
always-mark-nsfw: "总是用 NSFW 来标记附件" always-mark-nsfw: "总是用 NSFW 来标记附件"
show-full-acct: "不要从用户名中忽略主机名" show-full-acct: "不要从用户名中忽略主机名"
@ -122,14 +120,19 @@ common:
reduce-motion: "减弱UI中的动画效果" reduce-motion: "减弱UI中的动画效果"
this-setting-is-this-device-only: "设置仅在本设备中生效" this-setting-is-this-device-only: "设置仅在本设备中生效"
use-os-default-emojis: "使用设备系统默认的 emojis" use-os-default-emojis: "使用设备系统默认的 emojis"
do-not-use-in-production: '这是一个开发者测试版. 请勿在生产环境中使用.' line-width: "線の太さ"
line-width-thin: "細い"
line-width-normal: "普通"
line-width-thick: "太い"
do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "该用户的信息已被复制." is-remote-user: "该用户的信息已被复制."
is-remote-post: "该投稿已被复制." is-remote-post: "该投稿已被复制."
view-on-remote: "查看准确的信息" view-on-remote: "查看准确的信息"
renoted-by: "由 {user} Renote" renoted-by: "由 {user} Renote"
error: error:
title: '哦不, 发生了一些问题! :(' title: "哦不, 发生了一些问题! :("
retry: '重试' retry: "重试"
reversi: reversi:
drawn: "平局" drawn: "平局"
my-turn: "轮到你了" my-turn: "轮到你了"
@ -165,6 +168,7 @@ common:
hashtags: "标签" hashtags: "标签"
dev: "构建应用程序失败,请再试一次。" dev: "构建应用程序失败,请再试一次。"
ai-chan-kawaii: "Ai-chan kawaii!" ai-chan-kawaii: "Ai-chan kawaii!"
you: "您"
auth/views/form.vue: auth/views/form.vue:
share-access: "您要允许<i>{name}</i>来访问您的账户吗?" share-access: "您要允许<i>{name}</i>来访问您的账户吗?"
permission-ask: "这个应用程序需要以下权限:" permission-ask: "这个应用程序需要以下权限:"
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
sensitive: "阅读注意" sensitive: "阅读注意"
click-to-show: "点击以显示" click-to-show: "点击以显示"
common/views/components/theme.vue: common/views/components/theme.vue:
theme: "テーマ"
light-theme: "主题" light-theme: "主题"
dark-theme: "黑暗模式主题" dark-theme: "黑暗模式主题"
light-themes: "明亮主题" light-themes: "明亮主题"
@ -276,6 +281,7 @@ common/views/components/theme.vue:
base-theme: "基础主题" base-theme: "基础主题"
base-theme-light: "亮" base-theme-light: "亮"
base-theme-dark: "暗" base-theme-dark: "暗"
find-more-theme: "その他のテーマを入手"
theme-name: "主题名称" theme-name: "主题名称"
preview-created-theme: "预览" preview-created-theme: "预览"
invalid-theme: "无效主题" invalid-theme: "无效主题"
@ -298,7 +304,8 @@ common/views/components/cw-button.vue:
hide: "隐藏" hide: "隐藏"
show: "查看更多" show: "查看更多"
chars: "{count}文字" chars: "{count}文字"
files: "{count}ファイル" files: "{count} 个文件"
poll: "アンケート"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "查找用户" search-user: "查找用户"
you: "您" you: "您"
@ -328,7 +335,9 @@ common/views/components/nav.vue:
develop: "开发者" develop: "开发者"
feedback: "反馈" feedback: "反馈"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
mention: "メンション"
detail: "详细信息" detail: "详细信息"
copy-content: "内容をコピー"
copy-link: "复制链接" copy-link: "复制链接"
favorite: "收藏这个投稿" favorite: "收藏这个投稿"
unfavorite: "取消收藏" unfavorite: "取消收藏"
@ -403,10 +412,17 @@ common/views/components/stream-indicator.vue:
connecting: "连接中" connecting: "连接中"
reconnecting: "重新连接中" reconnecting: "重新连接中"
connected: "已连接" connected: "已连接"
common/views/components/notification-settings.vue:
title: "通知"
mark-as-read-all-notifications: "すべての通知を既読にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
common/views/components/integration-settings.vue: common/views/components/integration-settings.vue:
title: "サービス連携" title: "サービス連携"
connect: "接続する" connect: "接"
disconnect: "切断する" disconnect: "未连接"
connected-to: "次のアカウントに接続されています" connected-to: "次のアカウントに接続されています"
common/views/components/github-setting.vue: common/views/components/github-setting.vue:
description: "当您用GitHub连接Misskey账户后您将能够看到有关您自己的信息并且您将能够使用GitHub登录。" description: "当您用GitHub连接Misskey账户后您将能够看到有关您自己的信息并且您将能够使用GitHub登录。"
@ -432,7 +448,6 @@ common/views/components/visibility-chooser.vue:
followers-desc: "仅发送至关注者" followers-desc: "仅发送至关注者"
specified: "直接" specified: "直接"
specified-desc: "仅发送至指定用户" specified-desc: "仅发送至指定用户"
private: "私密"
local-public: "公开(仅限本地)" local-public: "公开(仅限本地)"
local-public-desc: "不要发布到公开" local-public-desc: "不要发布到公开"
local-home: "首页(仅限本地)" local-home: "首页(仅限本地)"
@ -453,7 +468,7 @@ common/views/components/profile-editor.vue:
account: "账户" account: "账户"
location: "位置" location: "位置"
description: "关于我" description: "关于我"
language: "言" language: "言"
birthday: "生日" birthday: "生日"
avatar: "头像" avatar: "头像"
banner: "背景" banner: "背景"
@ -461,6 +476,7 @@ common/views/components/profile-editor.vue:
is-bot: "整个账户是机器人" is-bot: "整个账户是机器人"
is-locked: "关注者请求需要批准" is-locked: "关注者请求需要批准"
careful-bot: "机器人的关注者请求需要批准" careful-bot: "机器人的关注者请求需要批准"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
advanced: "其他选项" advanced: "其他选项"
privacy: "隐私" privacy: "隐私"
save: "保存" save: "保存"
@ -471,6 +487,13 @@ common/views/components/profile-editor.vue:
email-address: "电子邮件地址" email-address: "电子邮件地址"
email-verified: "电子邮件地址已验证" email-verified: "电子邮件地址已验证"
email-not-verified: "电子邮件地址还没有验证哦, 请检查一下收信箱吧~" email-not-verified: "电子邮件地址还没有验证哦, 请检查一下收信箱吧~"
common/views/components/user-list-editor.vue:
users: "用户"
rename: "重命名列表"
delete: "删除列表"
remove-user: "从此列表中删除"
delete-are-you-sure: "删除列表 \"$1\""
deleted: "已删除"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "确认中" fetching: "确认中"
no-broadcasts: "没有公告" no-broadcasts: "没有公告"
@ -520,9 +543,11 @@ common/views/widgets/tips.vue:
tips-line19: "可以在浏览器外部分离多个窗口。" tips-line19: "可以在浏览器外部分离多个窗口。"
tips-line20: "日历小部件的百分比显示经过的时间百分比。" tips-line20: "日历小部件的百分比显示经过的时间百分比。"
tips-line21: "您也可以使用API开发机器人。" tips-line21: "您也可以使用API开发机器人。"
tips-line23: "Mayu的眉毛非常可爱。" tips-line23: "藍かわいいよ藍"
tips-line24: "Misskey自2014年开始运营。" tips-line24: "Misskey自2014年开始运营。"
tips-line25: "在与通知功能兼容的浏览器中您可以在Misskey未打开的情况下接收通知" tips-line25: "在与通知功能兼容的浏览器中您可以在Misskey未打开的情况下接收通知"
common/views/pages/not-found.vue:
page-not-found: "ページが見つかりませんでした"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "用 {}登录" signed-in-as: "用 {}登录"
following: "正在关注" following: "正在关注"
@ -658,10 +683,12 @@ desktop/views/components/note-detail.vue:
location: "位置信息" location: "位置信息"
renote: "转发" renote: "转发"
add-reaction: "添加一个反应" add-reaction: "添加一个反应"
undo-reaction: "リアクション解除"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reply: "回复" reply: "回复"
renote: "Renote" renote: "Renote"
add-reaction: "添加一个反应" add-reaction: "添加一个反应"
undo-reaction: "リアクション解除"
detail: "详细信息" detail: "详细信息"
private: "这个投稿是私密的" private: "这个投稿是私密的"
deleted: "投稿已删除" deleted: "投稿已删除"
@ -778,7 +805,7 @@ desktop/views/components/settings.vue:
deck-column-width: "デッキのカラムの幅" deck-column-width: "デッキのカラムの幅"
deck-column-width-narrow: "狭" deck-column-width-narrow: "狭"
deck-column-width-narrower: "やや狭" deck-column-width-narrower: "やや狭"
deck-column-width-normal: "普通" deck-column-width-normal: "正常"
deck-column-width-wider: "やや広" deck-column-width-wider: "やや広"
deck-column-width-wide: "広" deck-column-width-wide: "広"
sound: "声音" sound: "声音"
@ -791,8 +818,6 @@ desktop/views/components/settings.vue:
cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。" cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。"
cache-cleared: "已清除缓存" cache-cleared: "已清除缓存"
cache-cleared-desc: "请刷新页面。" cache-cleared-desc: "请刷新页面。"
auto-watch: "自动查看帖子"
auto-watch-desc: "自动接收有关帖子/回复/反应的通知。"
about: "关于 Misskey" about: "关于 Misskey"
operator: "网站运营者" operator: "网站运营者"
update: "更新 Misskey" update: "更新 Misskey"
@ -831,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
enter-password: "请输入您的密码" enter-password: "请输入您的密码"
authenticator: "首先,您需要在设备上安装 Google Authenticator" authenticator: "首先,您需要在设备上安装 Google Authenticator"
howtoinstall: "怎样安装" howtoinstall: "怎样安装"
token: "トークン"
scan: "然后,扫描二维码:" scan: "然后,扫描二维码:"
done: "请输入显示在您设备上的密钥:" done: "请输入显示在您设备上的密钥:"
submit: "提交" submit: "提交"
@ -845,13 +871,13 @@ common/views/components/api-settings.vue:
token: "令牌:" token: "令牌:"
enter-password: "请输入您的密码" enter-password: "请输入您的密码"
console: console:
title: 'API 控制台' title: "API 控制台"
endpoint: '端点' endpoint: "端点"
parameter: '参数' parameter: "参数"
credential-info: "此控制台不需要参数“i”。" credential-info: "此控制台不需要参数“i”。"
send: '发送' send: "发送"
sending: '等待回应' sending: "等待回应"
response: '结果' response: "结果"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "没有已连接的应用程序" no-apps: "没有已连接的应用程序"
common/views/components/drive-settings.vue: common/views/components/drive-settings.vue:
@ -875,12 +901,17 @@ common/views/components/password-settings.vue:
enter-new-password-again: "请再次输入新密码" enter-new-password-again: "请再次输入新密码"
not-match: "新密码不匹配" not-match: "新密码不匹配"
changed: "密码已更改" changed: "密码已更改"
failed: "パスワード変更に失敗しました" failed: "更改密码失败"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
private: "这个帖子是私密的" private: "这个帖子是私密的"
deleted: "帖子已删除" deleted: "帖子已删除"
media-count: "附加{}媒体" media-count: "附加{}媒体"
poll: "投票" poll: "投票"
desktop/views/components/settings.tags.vue:
title: "标签"
query: "查询 (可选)"
add: "添加"
save: "保存"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "任务管理器" title: "任务管理器"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@ -963,6 +994,7 @@ admin/views/instance.vue:
instance-description: "实例介绍" instance-description: "实例介绍"
host: "主机名" host: "主机名"
banner-url: "背景图片地址" banner-url: "背景图片地址"
error-image-url: "无效的图像URL"
languages: "实例语言" languages: "实例语言"
languages-desc: "您可以添加多个,以空格分隔。" languages-desc: "您可以添加多个,以空格分隔。"
maintainer-config: "管理员信息" maintainer-config: "管理员信息"
@ -1021,6 +1053,12 @@ admin/views/instance.vue:
smtp-port: "SMTP 端口" smtp-port: "SMTP 端口"
smtp-user: "SMTP 用户名" smtp-user: "SMTP 用户名"
smtp-pass: "SMTP 密码" smtp-pass: "SMTP 密码"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "启用ServiceWorker"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
vapid-publickey: "VAPID公钥"
vapid-privatekey: "VAPID私钥"
vapid-info: "如果您想要启用ServiceWorker那么您需要生成VAPID秘钥。除非您已经在其他地方设置了全局node_modules位置否则您需要将其作为root用户运行"
admin/views/charts.vue: admin/views/charts.vue:
title: "历史记录" title: "历史记录"
per-day: "每天" per-day: "每天"
@ -1046,6 +1084,22 @@ admin/views/charts.vue:
network-requests: "请求" network-requests: "请求"
network-time: "响应时间" network-time: "响应时间"
network-usage: "网络流量" network-usage: "网络流量"
admin/views/drive.vue:
sort:
title: "排序"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "源自"
combined: "本地+远程"
local: "本地"
remote: "远程"
delete: "删除"
deleted: "已删除"
mark-as-sensitive: "标记为“敏感”"
unmark-as-sensitive: "取消标记为“敏感”"
admin/views/users.vue: admin/views/users.vue:
operation: "操作" operation: "操作"
username-or-userid: "用户名或用户ID" username-or-userid: "用户名或用户ID"
@ -1177,6 +1231,7 @@ desktop/views/pages/user/user.header.vue:
posts: "帖子" posts: "帖子"
following: "关注中" following: "关注中"
followers: "关注者" followers: "关注者"
mention: "メンション"
is-bot: "这个账户是Bot" is-bot: "这个账户是Bot"
years-old: "{age}岁" years-old: "{age}岁"
year: "年" year: "年"
@ -1186,6 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "帖子" default: "帖子"
with-replies: "帖子与回复" with-replies: "帖子与回复"
with-media: "媒体" with-media: "媒体"
my-posts: "私の投稿"
empty: "看起来这个用户还没有发布什么呢。" empty: "看起来这个用户还没有发布什么呢。"
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "信息" title: "信息"
@ -1384,7 +1440,6 @@ mobile/views/pages/settings.vue:
notification-position: "通知形式" notification-position: "通知形式"
notification-position-bottom: "底部" notification-position-bottom: "底部"
notification-position-top: "顶部" notification-position-top: "顶部"
theme: "主题"
behavior: "动作" behavior: "动作"
fetch-on-scroll: "滚动无限加载" fetch-on-scroll: "滚动无限加载"
note-visibility: "帖子可见性" note-visibility: "帖子可见性"
@ -1408,7 +1463,6 @@ mobile/views/pages/settings.vue:
signout: "注销" signout: "注销"
sound: "声音" sound: "声音"
enable-sounds: "开启声音" enable-sounds: "开启声音"
mark-as-read-all-unread-notes: "将所有帖子标记为已读"
password: "密码" password: "密码"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "关注您" follows-you: "关注您"
@ -1418,7 +1472,6 @@ mobile/views/pages/user.vue:
overview: "概观" overview: "概观"
timeline: "时间线" timeline: "时间线"
media: "媒体" media: "媒体"
is-suspended: "此账户已被冻结。"
mute: "静音" mute: "静音"
unmute: "取消静音" unmute: "取消静音"
block: "屏蔽" block: "屏蔽"
@ -1472,6 +1525,7 @@ deck/deck.user-column.vue:
posts: "帖子" posts: "帖子"
following: "关注中" following: "关注中"
followers: "关注者" followers: "关注者"
mention: "メンション"
images: "图片" images: "图片"
activity: "活动" activity: "活动"
timeline: "时间线" timeline: "时间线"

View File

@ -1,8 +1,8 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "10.62.2", "version": "10.75.0",
"clientVersion": "2.0.12609", "clientVersion": "2.0.13368",
"codename": "nighthike", "codename": "nighthike",
"main": "./built/index.js", "main": "./built/index.js",
"private": true, "private": true,
@ -20,24 +20,23 @@
"format": "gulp format" "format": "gulp format"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "1.2.8", "@fortawesome/fontawesome-svg-core": "1.2.12",
"@fortawesome/free-brands-svg-icons": "5.5.0", "@fortawesome/free-brands-svg-icons": "5.6.3",
"@fortawesome/free-regular-svg-icons": "5.5.0", "@fortawesome/free-regular-svg-icons": "5.5.0",
"@fortawesome/free-solid-svg-icons": "5.5.0", "@fortawesome/free-solid-svg-icons": "5.6.3",
"@fortawesome/vue-fontawesome": "0.1.2", "@fortawesome/vue-fontawesome": "0.1.2",
"@koa/cors": "2.2.2", "@koa/cors": "2.2.3",
"@prezzemolo/rap": "0.1.2", "@prezzemolo/rap": "0.1.2",
"@prezzemolo/zip": "0.0.3", "@prezzemolo/zip": "0.0.3",
"@types/bcryptjs": "2.4.2", "@types/bcryptjs": "2.4.2",
"@types/chai-http": "3.0.5", "@types/chai-http": "3.0.5",
"@types/dateformat": "1.0.1", "@types/dateformat": "3.0.0",
"@types/debug": "0.0.31", "@types/debug": "0.0.31",
"@types/deep-equal": "1.0.1", "@types/deep-equal": "1.0.1",
"@types/double-ended-queue": "2.1.0", "@types/double-ended-queue": "2.1.0",
"@types/elasticsearch": "5.0.29", "@types/elasticsearch": "5.0.30",
"@types/file-type": "5.2.2", "@types/file-type": "10.6.0",
"@types/gulp": "3.8.36", "@types/gulp": "3.8.36",
"@types/gulp-htmlmin": "1.3.32",
"@types/gulp-mocha": "0.0.32", "@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33", "@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31", "@types/gulp-replace": "0.0.31",
@ -45,9 +44,9 @@
"@types/gulp-util": "3.0.34", "@types/gulp-util": "3.0.34",
"@types/is-root": "1.0.0", "@types/is-root": "1.0.0",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "3.11.2", "@types/js-yaml": "3.11.4",
"@types/katex": "0.5.0", "@types/katex": "0.5.0",
"@types/koa": "2.0.47", "@types/koa": "2.0.48",
"@types/koa-bodyparser": "5.0.2", "@types/koa-bodyparser": "5.0.2",
"@types/koa-compress": "2.0.8", "@types/koa-compress": "2.0.8",
"@types/koa-favicon": "2.0.19", "@types/koa-favicon": "2.0.19",
@ -63,7 +62,7 @@
"@types/mocha": "5.2.5", "@types/mocha": "5.2.5",
"@types/mongodb": "3.1.14", "@types/mongodb": "3.1.14",
"@types/ms": "0.7.30", "@types/ms": "0.7.30",
"@types/node": "10.12.10", "@types/node": "10.12.18",
"@types/nodemailer": "4.6.5", "@types/nodemailer": "4.6.5",
"@types/oauth": "0.9.1", "@types/oauth": "0.9.1",
"@types/parsimmon": "1.10.0", "@types/parsimmon": "1.10.0",
@ -71,24 +70,24 @@
"@types/pug": "2.0.4", "@types/pug": "2.0.4",
"@types/qrcode": "1.3.0", "@types/qrcode": "1.3.0",
"@types/ratelimiter": "2.1.28", "@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.8", "@types/redis": "2.8.10",
"@types/request": "2.48.1", "@types/request": "2.48.1",
"@types/request-promise-native": "1.0.15", "@types/request-promise-native": "1.0.15",
"@types/rimraf": "2.0.2", "@types/rimraf": "2.0.2",
"@types/seedrandom": "2.4.27", "@types/seedrandom": "2.4.27",
"@types/sharp": "0.21.0", "@types/sharp": "0.21.0",
"@types/showdown": "1.7.5", "@types/showdown": "1.9.0",
"@types/speakeasy": "2.0.3", "@types/speakeasy": "2.0.3",
"@types/systeminformation": "3.23.1", "@types/systeminformation": "3.23.1",
"@types/tinycolor2": "1.4.1", "@types/tinycolor2": "1.4.1",
"@types/tmp": "0.0.33", "@types/tmp": "0.0.33",
"@types/uuid": "3.4.4", "@types/uuid": "3.4.4",
"@types/webpack": "4.4.20", "@types/webpack": "4.4.21",
"@types/webpack-stream": "3.2.10", "@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.40", "@types/websocket": "0.0.40",
"@types/ws": "6.0.1", "@types/ws": "6.0.1",
"animejs": "2.2.0", "animejs": "2.2.0",
"apexcharts": "2.2.4", "apexcharts": "2.5.1",
"autobind-decorator": "2.4.0", "autobind-decorator": "2.4.0",
"autosize": "4.0.2", "autosize": "4.0.2",
"autwh": "0.1.0", "autwh": "0.1.0",
@ -112,35 +111,34 @@
"elasticsearch": "15.2.0", "elasticsearch": "15.2.0",
"emojilib": "2.4.0", "emojilib": "2.4.0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "5.8.0", "eslint": "5.11.1",
"eslint-plugin-vue": "4.7.1", "eslint-plugin-vue": "5.0.0",
"eventemitter3": "3.1.0", "eventemitter3": "3.1.0",
"feed": "2.0.2",
"file-loader": "2.0.0", "file-loader": "2.0.0",
"file-type": "10.6.0", "file-type": "10.7.0",
"fuckadblock": "3.2.1", "fuckadblock": "3.2.1",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-cssnano": "2.1.3", "gulp-cssnano": "2.1.3",
"gulp-htmlmin": "5.0.1",
"gulp-imagemin": "4.1.0", "gulp-imagemin": "4.1.0",
"gulp-mocha": "6.0.0", "gulp-mocha": "6.0.0",
"gulp-pug": "4.0.1",
"gulp-rename": "1.4.0", "gulp-rename": "1.4.0",
"gulp-replace": "1.0.0", "gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.4", "gulp-sourcemaps": "2.6.4",
"gulp-stylus": "2.7.0", "gulp-stylus": "2.7.0",
"gulp-tslint": "8.1.3", "gulp-tslint": "8.1.3",
"gulp-typescript": "4.0.2", "gulp-typescript": "5.0.0",
"gulp-uglify": "3.0.1", "gulp-uglify": "3.0.1",
"gulp-util": "3.0.8", "gulp-util": "3.0.8",
"gulp-yaml": "2.0.2", "gulp-yaml": "2.0.2",
"hard-source-webpack-plugin": "0.12.0", "hard-source-webpack-plugin": "0.13.1",
"html-minifier": "3.5.21", "html-minifier": "3.5.21",
"http-signature": "1.2.0", "http-signature": "1.2.0",
"insert-text-at-cursor": "0.1.1", "insert-text-at-cursor": "0.1.1",
"is-root": "2.0.0", "is-root": "2.0.0",
"is-url": "1.2.4", "is-url": "1.2.4",
"js-yaml": "3.12.0", "js-yaml": "3.12.0",
"jsdom": "13.0.0", "jsdom": "13.1.0",
"json5": "2.1.0", "json5": "2.1.0",
"json5-loader": "1.0.1", "json5-loader": "1.0.1",
"katex": "0.10.0", "katex": "0.10.0",
@ -157,18 +155,19 @@
"koa-slow": "2.1.0", "koa-slow": "2.1.0",
"koa-views": "6.1.4", "koa-views": "6.1.4",
"langmap": "0.0.16", "langmap": "0.0.16",
"loader-utils": "1.1.0", "loader-utils": "1.2.3",
"minio": "7.0.1", "lookup-dns-cache": "2.1.0",
"minio": "7.0.2",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"mocha": "5.2.0", "mocha": "5.2.0",
"moji": "0.5.1", "moji": "0.5.1",
"moment": "2.22.2", "moment": "2.23.0",
"mongodb": "3.1.9", "mongodb": "3.1.10",
"monk": "6.0.6", "monk": "6.0.6",
"ms": "2.1.1", "ms": "2.1.1",
"nan": "2.11.1", "nan": "2.12.1",
"nested-property": "0.0.7", "nested-property": "0.0.7",
"nodemailer": "4.7.0", "nodemailer": "5.0.0",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"object-assign-deep": "0.4.0", "object-assign-deep": "0.4.0",
"on-build-webpack": "0.1.0", "on-build-webpack": "0.1.0",
@ -178,6 +177,7 @@
"portscanner": "2.2.0", "portscanner": "2.2.0",
"postcss-loader": "3.0.0", "postcss-loader": "3.0.0",
"progress-bar-webpack-plugin": "1.11.0", "progress-bar-webpack-plugin": "1.11.0",
"promise-any": "0.2.0",
"promise-limit": "2.7.0", "promise-limit": "2.7.0",
"promise-sequential": "1.1.1", "promise-sequential": "1.1.1",
"pug": "2.0.3", "pug": "2.0.3",
@ -195,7 +195,7 @@
"rndstr": "1.0.0", "rndstr": "1.0.0",
"s-age": "1.1.2", "s-age": "1.1.2",
"seedrandom": "2.4.4", "seedrandom": "2.4.4",
"sharp": "0.21.0", "sharp": "0.21.1",
"showdown": "1.9.0", "showdown": "1.9.0",
"showdown-highlightjs-extension": "0.1.2", "showdown-highlightjs-extension": "0.1.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
@ -204,16 +204,17 @@
"stylus": "0.54.5", "stylus": "0.54.5",
"stylus-loader": "3.0.2", "stylus-loader": "3.0.2",
"summaly": "2.2.0", "summaly": "2.2.0",
"systeminformation": "3.51.3", "systeminformation": "3.52.2",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "1.1.0", "terser-webpack-plugin": "1.2.1",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"tinycolor2": "1.4.1", "tinycolor2": "1.4.1",
"tmp": "0.0.33", "tmp": "0.0.33",
"ts-loader": "5.3.1", "ts-loader": "5.3.1",
"ts-node": "7.0.1", "ts-node": "7.0.1",
"tslint": "5.10.0", "tslint": "5.12.0",
"typescript": "3.1.6", "tslint-sonarts": "1.8.0",
"typescript": "3.2.2",
"typescript-eslint-parser": "21.0.2", "typescript-eslint-parser": "21.0.2",
"uglify-es": "3.3.9", "uglify-es": "3.3.9",
"url-loader": "1.1.2", "url-loader": "1.1.2",
@ -222,14 +223,15 @@
"vue": "2.5.17", "vue": "2.5.17",
"vue-color": "2.7.0", "vue-color": "2.7.0",
"vue-content-loading": "1.5.3", "vue-content-loading": "1.5.3",
"vue-cropperjs": "2.2.2", "vue-cropperjs": "3.0.0",
"vue-i18n": "8.3.2", "vue-i18n": "8.6.0",
"vue-js-modal": "1.3.27", "vue-js-modal": "1.3.28",
"vue-loader": "15.4.2", "vue-loader": "15.4.2",
"vue-marquee-text-component": "1.1.0", "vue-marquee-text-component": "1.1.1",
"vue-router": "3.0.2", "vue-router": "3.0.2",
"vue-sequential-entrance": "1.1.3",
"vue-style-loader": "4.1.2", "vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.2.4", "vue-svg-inline-loader": "1.2.7",
"vue-template-compiler": "2.5.17", "vue-template-compiler": "2.5.17",
"vuedraggable": "2.17.0", "vuedraggable": "2.17.0",
"vuewordcloud": "18.7.11", "vuewordcloud": "18.7.11",
@ -237,7 +239,7 @@
"vuex-persistedstate": "2.5.4", "vuex-persistedstate": "2.5.4",
"web-push": "3.3.3", "web-push": "3.3.3",
"webfinger.js": "2.7.0", "webfinger.js": "2.7.0",
"webpack": "4.26.1", "webpack": "4.28.3",
"webpack-cli": "3.1.2", "webpack-cli": "3.1.2",
"websocket": "1.0.28", "websocket": "1.0.28",
"ws": "6.1.2", "ws": "6.1.2",

View File

@ -64,9 +64,8 @@ export default abstract class Chart<T> {
const keys = { const keys = {
span: -1, span: -1,
date: -1 date: -1
}; } as { [key: string]: 1 | -1; };
if (grouped) if (grouped) keys.group = -1;
keys.group = -1;
this.collection.createIndex(keys, { unique: true }); this.collection.createIndex(keys, { unique: true });
} }
@ -75,14 +74,14 @@ export default abstract class Chart<T> {
const query: Obj = {}; const query: Obj = {};
const dive = (x: Obj, path: string) => { const dive = (x: Obj, path: string) => {
Object.entries(x).forEach(([k, v]) => { for (const [k, v] of Object.entries(x)) {
const p = path ? `${path}.${k}` : k; const p = path ? `${path}.${k}` : k;
if (typeof v === 'number') { if (typeof v === 'number') {
query[p] = v; query[p] = v;
} else { } else {
dive(v, p); dive(v, p);
} }
}); }
}; };
dive(x, path); dive(x, path);
@ -335,14 +334,14 @@ export default abstract class Chart<T> {
* にする * にする
*/ */
const dive = (x: Obj, path?: string) => { const dive = (x: Obj, path?: string) => {
Object.entries(x).forEach(([k, v]) => { for (const [k, v] of Object.entries(x)) {
const p = path ? `${path}.${k}` : k; const p = path ? `${path}.${k}` : k;
if (typeof v == 'object') { if (typeof v == 'object') {
dive(v, p); dive(v, p);
} else { } else {
nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p))); nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p)));
} }
}); }
}; };
dive(chart[0]); dive(chart[0]);

View File

@ -9,6 +9,7 @@ import './style.styl';
import init from '../init'; import init from '../init';
import Index from './views/index.vue'; import Index from './views/index.vue';
import NotFound from '../common/views/pages/not-found.vue';
init(launch => { init(launch => {
document.title = 'Admin'; document.title = 'Admin';
@ -19,6 +20,7 @@ init(launch => {
base: '/admin/', base: '/admin/',
routes: [ routes: [
{ path: '/', component: Index }, { path: '/', component: Index },
{ path: '*', component: NotFound }
] ]
}); });

View File

@ -56,7 +56,9 @@ export default Vue.extend({
}, },
onLogs(logs) { onLogs(logs) {
logs.reverse().forEach(log => this.onLog(log)); for (const log of logs.reverse()) {
this.onLog(log)
}
} }
} }
}); });
@ -67,7 +69,7 @@ export default Vue.extend({
display block display block
padding 12px 16px 16px 16px padding 12px 16px 16px 16px
height 250px height 250px
overflow hidden overflow auto
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1) box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--adminDashboardCardBg) background var(--adminDashboardCardBg)
border-radius 8px border-radius 8px

View File

@ -132,7 +132,9 @@ export default Vue.extend({
}, },
onStatsLog(statsLog) { onStatsLog(statsLog) {
statsLog.reverse().forEach(stats => this.onStats(stats)); for (const stats of statsLog.reverse()) {
this.onStats(stats);
}
} }
} }
}); });

View File

@ -127,12 +127,12 @@ export default Vue.extend({
this.$root.api('instances', { this.$root.api('instances', {
sort: '+notes' sort: '+notes'
}).then(instances => { }).then(instances => {
instances.forEach(i => { for (const i of instances) {
i.bg = randomColor({ i.bg = randomColor({
seed: i.host, seed: i.host,
luminosity: 'dark' luminosity: 'dark'
}); });
}); }
this.instances = instances; this.instances = instances;
}); });
}, },

View File

@ -0,0 +1,189 @@
<template>
<div class="pwnqwyet">
<ui-card>
<div slot="title"><fa :icon="faCloud"/> {{ $t('@.drive') }}</div>
<section class="fit-top">
<ui-horizon-group inputs>
<ui-select v-model="sort">
<span slot="label">{{ $t('sort.title') }}</span>
<option value="-createdAt">{{ $t('sort.createdAtAsc') }}</option>
<option value="+createdAt">{{ $t('sort.createdAtDesc') }}</option>
<option value="-size">{{ $t('sort.sizeAsc') }}</option>
<option value="+size">{{ $t('sort.sizeDesc') }}</option>
</ui-select>
<ui-select v-model="origin">
<span slot="label">{{ $t('origin.title') }}</span>
<option value="combined">{{ $t('origin.combined') }}</option>
<option value="local">{{ $t('origin.local') }}</option>
<option value="remote">{{ $t('origin.remote') }}</option>
</ui-select>
</ui-horizon-group>
<sequential-entrance animation="entranceFromTop" delay="25">
<div class="kidvdlkg" v-for="file in files">
<div @click="file._open = !file._open">
<div>
<div class="thumbnail" :style="thumbnail(file)"></div>
</div>
<div>
<header>
<b>{{ file.name }}</b>
<span class="username">@{{ file.user | acct }}</span>
</header>
<div>
<div>
<span style="margin-right:16px;">{{ file.type }}</span>
<span>{{ file.datasize | bytes }}</span>
</div>
<div><mk-time :time="file.createdAt" mode="detail"/></div>
</div>
</div>
</div>
<div v-show="file._open">
<ui-input readonly :value="file.url"></ui-input>
<ui-horizon-group>
<ui-button @click="toggleSensitive(file)" v-if="file.isSensitive"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button>
<ui-button @click="toggleSensitive(file)" v-else><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button>
<ui-button @click="del(file)"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button>
</ui-horizon-group>
</div>
</div>
</sequential-entrance>
<ui-button v-if="existMore" @click="fetch">{{ $t('@.load-more') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import { faCloud } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('admin/views/drive.vue'),
data() {
return {
sort: '+createdAt',
origin: 'combined',
limit: 10,
offset: 0,
files: [],
existMore: false,
faCloud, faTrashAlt, faEye, faEyeSlash
};
},
watch: {
sort() {
this.files = [];
this.offset = 0;
this.fetch();
},
origin() {
this.files = [];
this.offset = 0;
this.fetch();
}
},
mounted() {
this.fetch();
},
methods: {
fetch() {
this.$root.api('admin/drive/files', {
origin: this.origin,
sort: this.sort,
offset: this.offset,
limit: this.limit + 1
}).then(files => {
if (files.length == this.limit + 1) {
files.pop();
this.existMore = true;
} else {
this.existMore = false;
}
for (const x of files) {
x._open = false;
}
this.files = this.files.concat(files);
this.offset += this.limit;
});
},
thumbnail(file: any): any {
return {
'background-color': file.properties.avgColor && file.properties.avgColor.length == 3 ? `rgb(${file.properties.avgColor.join(',')})` : 'transparent',
'background-image': `url(${file.thumbnailUrl})`
};
},
async del(file: any) {
const process = async () => {
await this.$root.api('drive/files/delete', { fileId: file.id });
this.$root.dialog({
type: 'success',
text: this.$t('deleted')
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
},
toggleSensitive(file: any) {
this.$root.api('drive/files/update', {
fileId: file.id,
isSensitive: !file.isSensitive
});
file.isSensitive = !file.isSensitive;
},
}
});
</script>
<style lang="stylus" scoped>
.pwnqwyet
@media (min-width 500px)
padding 16px
.kidvdlkg
padding 16px 0
border-top solid 1px var(--faceDivider)
> div:first-child
display flex
cursor pointer
> div:nth-child(1)
> .thumbnail
display block
width 64px
height 64px
background-size cover
background-position center center
> div:nth-child(2)
flex 1
padding-left 16px
@media (max-width 500px)
font-size 14px
> header
word-break break-word
> .username
margin-left 8px
opacity 0.7
</style>

View File

@ -24,24 +24,28 @@
<ui-card> <ui-card>
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div> <div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
<section v-for="emoji in emojis"> <section v-for="emoji in emojis" class="oryfrbft">
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/> <div>
<ui-horizon-group inputs> <img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
<ui-input v-model="emoji.name"> </div>
<span>{{ $t('add-emoji.name') }}</span> <div>
<ui-horizon-group>
<ui-input v-model="emoji.name">
<span>{{ $t('add-emoji.name') }}</span>
</ui-input>
<ui-input v-model="emoji.aliases">
<span>{{ $t('add-emoji.aliases') }}</span>
</ui-input>
</ui-horizon-group>
<ui-input v-model="emoji.url">
<i slot="icon"><fa icon="link"/></i>
<span>{{ $t('add-emoji.url') }}</span>
</ui-input> </ui-input>
<ui-input v-model="emoji.aliases"> <ui-horizon-group class="fit-bottom">
<span>{{ $t('add-emoji.aliases') }}</span> <ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
</ui-input> <ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
</ui-horizon-group> </ui-horizon-group>
<ui-input v-model="emoji.url"> </div>
<i slot="icon"><fa icon="link"/></i>
<span>{{ $t('add-emoji.url') }}</span>
</ui-input>
<ui-horizon-group class="fit-bottom">
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
</ui-horizon-group>
</section> </section>
</ui-card> </ui-card>
</div> </div>
@ -91,7 +95,9 @@ export default Vue.extend({
fetchEmojis() { fetchEmojis() {
this.$root.api('admin/emoji/list').then(emojis => { this.$root.api('admin/emoji/list').then(emojis => {
emojis.reverse(); emojis.reverse();
emojis.forEach(e => e.aliases = (e.aliases || []).join(' ')); for (const e of emojis) {
e.aliases = (e.aliases || []).join(' ');
}
this.emojis = emojis; this.emojis = emojis;
}); });
}, },
@ -148,4 +154,21 @@ export default Vue.extend({
@media (min-width 500px) @media (min-width 500px)
padding 16px padding 16px
.oryfrbft
@media (min-width 500px)
display flex
> div:first-child
@media (max-width 500px)
padding-bottom 16px
> img
vertical-align bottom
> div:last-child
flex 1
@media (min-width 500px)
padding-left 16px
</style> </style>

View File

@ -22,12 +22,11 @@
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li> <li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
<li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li> <li @click="nav('moderators')" :class="{ active: page == 'moderators' }"><fa :icon="faHeadset" fixed-width/>{{ $t('moderators') }}</li>
<li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li> <li @click="nav('users')" :class="{ active: page == 'users' }"><fa icon="users" fixed-width/>{{ $t('users') }}</li>
<li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li>
<!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> --> <!-- <li @click="nav('federation')" :class="{ active: page == 'federation' }"><fa :icon="faShareAlt" fixed-width/>{{ $t('federation') }}</li> -->
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li> <li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li> <li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li> <li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
</ul> </ul>
<div class="back-to-misskey"> <div class="back-to-misskey">
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a> <a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
@ -45,7 +44,7 @@
<div v-if="page == 'emoji'"><x-emoji/></div> <div v-if="page == 'emoji'"><x-emoji/></div>
<div v-if="page == 'announcements'"><x-announcements/></div> <div v-if="page == 'announcements'"><x-announcements/></div>
<div v-if="page == 'hashtags'"><x-hashtags/></div> <div v-if="page == 'hashtags'"><x-hashtags/></div>
<div v-if="page == 'drive'"></div> <div v-if="page == 'drive'"><x-drive/></div>
<div v-if="page == 'update'"></div> <div v-if="page == 'update'"></div>
</div> </div>
</main> </main>
@ -63,6 +62,7 @@ import XEmoji from "./emoji.vue";
import XAnnouncements from "./announcements.vue"; import XAnnouncements from "./announcements.vue";
import XHashtags from "./hashtags.vue"; import XHashtags from "./hashtags.vue";
import XUsers from "./users.vue"; import XUsers from "./users.vue";
import XDrive from "./drive.vue";
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons'; import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
import { faGrin } from '@fortawesome/free-regular-svg-icons'; import { faGrin } from '@fortawesome/free-regular-svg-icons';
@ -79,7 +79,8 @@ export default Vue.extend({
XEmoji, XEmoji,
XAnnouncements, XAnnouncements,
XHashtags, XHashtags,
XUsers XUsers,
XDrive,
}, },
provide: { provide: {
isMobile isMobile

View File

@ -6,7 +6,9 @@
<ui-input :value="host" readonly>{{ $t('host') }}</ui-input> <ui-input :value="host" readonly>{{ $t('host') }}</ui-input>
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input> <ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea> <ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
<ui-input v-model="mascotImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('logo-url') }}</ui-input>
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input> <ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input>
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input> <ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
</section> </section>
<section class="fit-bottom"> <section class="fit-bottom">
@ -31,8 +33,10 @@
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header> <header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch> <ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
<ui-info>{{ $t('recaptcha-info') }}</ui-info> <ui-info>{{ $t('recaptcha-info') }}</ui-info>
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input> <ui-horizon-group inputs>
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input> <ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
</ui-horizon-group>
</section> </section>
<section> <section>
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header> <header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
@ -50,10 +54,19 @@
</ui-horizon-group> </ui-horizon-group>
<ui-horizon-group inputs> <ui-horizon-group inputs>
<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input> <ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input>
<ui-input v-model="smtpPass" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input> <ui-input v-model="smtpPass" type="password" :withPasswordToggle="true" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input>
</ui-horizon-group> </ui-horizon-group>
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch> <ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
</section> </section>
<section>
<header><fa :icon="faBolt"/> {{ $t('serviceworker-config') }}</header>
<ui-switch v-model="enableServiceWorker">{{ $t('enable-serviceworker') }}<span slot="desc">{{ $t('serviceworker-info') }}</span></ui-switch>
<ui-info>{{ $t('vapid-info') }}<br><code>npm i web-push -g<br>web-push generate-vapid-keys</code></ui-info>
<ui-horizon-group inputs class="fit-bottom">
<ui-input v-model="swPublicKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-publickey') }}</ui-input>
<ui-input v-model="swPrivateKey" :disabled="!enableServiceWorker"><i slot="icon"><fa icon="key"/></i>{{ $t('vapid-privatekey') }}</ui-input>
</ui-horizon-group>
</section>
<section> <section>
<header>summaly Proxy</header> <header>summaly Proxy</header>
<ui-input v-model="summalyProxy">URL</ui-input> <ui-input v-model="summalyProxy">URL</ui-input>
@ -81,9 +94,11 @@
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div> <div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
<section> <section>
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch> <ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
<ui-horizon-group>
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
</ui-horizon-group>
<ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info> <ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info>
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
@ -92,9 +107,11 @@
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div> <div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
<section> <section>
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch> <ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
<ui-horizon-group>
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
</ui-horizon-group>
<ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info> <ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info>
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
@ -103,9 +120,11 @@
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div> <div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
<section> <section>
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch> <ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
<ui-horizon-group>
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
</ui-horizon-group>
<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info> <ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info>
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
@ -117,7 +136,7 @@ import Vue from 'vue';
import i18n from '../../i18n'; import i18n from '../../i18n';
import { url, host } from '../../config'; import { url, host } from '../../config';
import { toUnicode } from 'punycode'; import { toUnicode } from 'punycode';
import { faHeadset, faShieldAlt, faGhost, faUserPlus } from '@fortawesome/free-solid-svg-icons'; import { faHeadset, faShieldAlt, faGhost, faUserPlus, faBolt } from '@fortawesome/free-solid-svg-icons';
import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons'; import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({ export default Vue.extend({
@ -131,7 +150,9 @@ export default Vue.extend({
maintainerEmail: null, maintainerEmail: null,
disableRegistration: false, disableRegistration: false,
disableLocalTimeline: false, disableLocalTimeline: false,
mascotImageUrl: null,
bannerUrl: null, bannerUrl: null,
errorImageUrl: null,
name: null, name: null,
description: null, description: null,
languages: null, languages: null,
@ -164,7 +185,10 @@ export default Vue.extend({
smtpPort: null, smtpPort: null,
smtpUser: null, smtpUser: null,
smtpPass: null, smtpPass: null,
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope enableServiceWorker: false,
swPublicKey: null,
swPrivateKey: null,
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope, faBolt
}; };
}, },
@ -172,7 +196,11 @@ export default Vue.extend({
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.maintainerName = meta.maintainer.name; this.maintainerName = meta.maintainer.name;
this.maintainerEmail = meta.maintainer.email; this.maintainerEmail = meta.maintainer.email;
this.disableRegistration = meta.disableRegistration;
this.disableLocalTimeline = meta.disableLocalTimeline;
this.mascotImageUrl = meta.mascotImageUrl;
this.bannerUrl = meta.bannerUrl; this.bannerUrl = meta.bannerUrl;
this.errorImageUrl = meta.errorImageUrl;
this.name = meta.name; this.name = meta.name;
this.description = meta.description; this.description = meta.description;
this.languages = meta.langs.join(' '); this.languages = meta.langs.join(' ');
@ -204,6 +232,9 @@ export default Vue.extend({
this.smtpPort = meta.smtpPort; this.smtpPort = meta.smtpPort;
this.smtpUser = meta.smtpUser; this.smtpUser = meta.smtpUser;
this.smtpPass = meta.smtpPass; this.smtpPass = meta.smtpPass;
this.enableServiceWorker = meta.enableServiceWorker;
this.swPublicKey = meta.swPublickey;
this.swPrivateKey = meta.swPrivateKey;
}); });
}, },
@ -225,7 +256,9 @@ export default Vue.extend({
maintainerEmail: this.maintainerEmail, maintainerEmail: this.maintainerEmail,
disableRegistration: this.disableRegistration, disableRegistration: this.disableRegistration,
disableLocalTimeline: this.disableLocalTimeline, disableLocalTimeline: this.disableLocalTimeline,
mascotImageUrl: this.mascotImageUrl,
bannerUrl: this.bannerUrl, bannerUrl: this.bannerUrl,
errorImageUrl: this.errorImageUrl,
name: this.name, name: this.name,
description: this.description, description: this.description,
langs: this.languages.split(' '), langs: this.languages.split(' '),
@ -256,7 +289,10 @@ export default Vue.extend({
smtpHost: this.smtpHost, smtpHost: this.smtpHost,
smtpPort: parseInt(this.smtpPort, 10), smtpPort: parseInt(this.smtpPort, 10),
smtpUser: this.smtpUser, smtpUser: this.smtpUser,
smtpPass: this.smtpPass smtpPass: this.smtpPass,
enableServiceWorker: this.enableServiceWorker,
swPublicKey: this.swPublicKey,
swPrivateKey: this.swPrivateKey
}).then(() => { }).then(() => {
this.$root.dialog({ this.$root.dialog({
type: 'success', type: 'success',

View File

@ -6,7 +6,8 @@
<ui-input v-model="username" type="text"> <ui-input v-model="username" type="text">
<span slot="prefix">@</span> <span slot="prefix">@</span>
</ui-input> </ui-input>
<ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button> <ui-button @click="add" :disabled="changing">{{ $t('add-moderator.add') }}</ui-button>
<ui-button @click="remove" :disabled="changing">{{ $t('add-moderator.remove') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
</div> </div>
@ -23,13 +24,13 @@ export default Vue.extend({
data() { data() {
return { return {
username: '', username: '',
adding: false changing: false
}; };
}, },
methods: { methods: {
async add() { async add() {
this.adding = true; this.changing = true;
const process = async () => { const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.username)); const user = await this.$root.api('users/show', parseAcct(this.username));
@ -47,7 +48,29 @@ export default Vue.extend({
}); });
}); });
this.adding = false; this.changing = false;
},
async remove() {
this.changing = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.username));
await this.$root.api('admin/moderators/remove', { userId: user.id });
this.$root.dialog({
type: 'success',
text: this.$t('add-moderator.removed')
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
this.changing = false;
}, },
} }
}); });

View File

@ -31,6 +31,14 @@
<option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option> <option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option>
<option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option> <option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option>
</ui-select> </ui-select>
<ui-select v-model="state">
<span slot="label">{{ $t('users.state.title') }}</span>
<option value="all">{{ $t('users.state.all') }}</option>
<option value="admin">{{ $t('users.state.admin') }}</option>
<option value="moderator">{{ $t('users.state.moderator') }}</option>
<option value="verified">{{ $t('users.state.verified') }}</option>
<option value="suspended">{{ $t('users.state.suspended') }}</option>
</ui-select>
<ui-select v-model="origin"> <ui-select v-model="origin">
<span slot="label">{{ $t('users.origin.title') }}</span> <span slot="label">{{ $t('users.origin.title') }}</span>
<option value="combined">{{ $t('users.origin.combined') }}</option> <option value="combined">{{ $t('users.origin.combined') }}</option>
@ -38,25 +46,31 @@
<option value="remote">{{ $t('users.origin.remote') }}</option> <option value="remote">{{ $t('users.origin.remote') }}</option>
</ui-select> </ui-select>
</ui-horizon-group> </ui-horizon-group>
<div class="kofvwchc" v-for="user in users"> <sequential-entrance animation="entranceFromTop" delay="25">
<div> <div class="kofvwchc" v-for="user in users" :key="user.id">
<a :href="user | userPage(null, true)">
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
</a>
</div>
<div>
<header>
<b><mk-user-name :user="user"/></b>
<span class="username">@{{ user | acct }}</span>
</header>
<div> <div>
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span> <a :href="user | userPage(null, true)">
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
</a>
</div> </div>
<div> <div>
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span> <header>
<b><mk-user-name :user="user"/></b>
<span class="username">@{{ user | acct }}</span>
<span class="is-admin" v-if="user.isAdmin">admin</span>
<span class="is-moderator" v-if="user.isModerator">moderator</span>
<span class="is-verified" v-if="user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
<span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span>
</header>
<div>
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
</div>
<div>
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span>
</div>
</div> </div>
</div> </div>
</div> </sequential-entrance>
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button> <ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
@ -82,6 +96,7 @@ export default Vue.extend({
suspending: false, suspending: false,
unsuspending: false, unsuspending: false,
sort: '+createdAt', sort: '+createdAt',
state: 'all',
origin: 'combined', origin: 'combined',
limit: 10, limit: 10,
offset: 0, offset: 0,
@ -98,6 +113,12 @@ export default Vue.extend({
this.fetchUsers(); this.fetchUsers();
}, },
state() {
this.users = [];
this.offset = 0;
this.fetchUsers();
},
origin() { origin() {
this.users = []; this.users = [];
this.offset = 0; this.offset = 0;
@ -234,7 +255,8 @@ export default Vue.extend({
}, },
fetchUsers() { fetchUsers() {
this.$root.api('users', { this.$root.api('admin/show-users', {
state: this.state,
origin: this.origin, origin: this.origin,
sort: this.sort, sort: this.sort,
offset: this.offset, offset: this.offset,
@ -274,9 +296,27 @@ export default Vue.extend({
flex 1 flex 1
padding-left 16px padding-left 16px
@media (max-width 500px)
font-size 14px
> header > header
> .username > .username
margin-left 8px margin-left 8px
opacity 0.7 opacity 0.7
> .is-admin
> .is-moderator
flex-shrink 0
align-self center
margin 0 0 0 .5em
padding 1px 6px
font-size 80%
border-radius 3px
background var(--noteHeaderAdminBg)
color var(--noteHeaderAdminFg)
> .is-verified
> .is-suspended
margin 0 0 0 .5em
color #4dabf7
</style> </style>

View File

@ -10,3 +10,19 @@
opacity: 0; opacity: 0;
transform: scaleY(0); transform: scaleY(0);
} }
.entranceFromTop {
animation-duration: 0.5s;
animation-name: entranceFromTop;
}
@keyframes entranceFromTop {
from {
opacity: 0;
transform: translateY(-64px);
}
to {
opacity: 1;
transform: translateY(0);
}
}

View File

@ -9,6 +9,7 @@ import './style.styl';
import init from '../init'; import init from '../init';
import Index from './views/index.vue'; import Index from './views/index.vue';
import NotFound from '../common/views/pages/not-found.vue';
/** /**
* init * init
@ -20,6 +21,7 @@ init(launch => {
base: '/auth/', base: '/auth/',
routes: [ routes: [
{ path: '/:token', component: Index }, { path: '/:token', component: Index },
{ path: '*', component: NotFound }
] ]
}); });

View File

@ -17,9 +17,9 @@
//#region Apply theme //#region Apply theme
const theme = localStorage.getItem('theme'); const theme = localStorage.getItem('theme');
if (theme) { if (theme) {
Object.entries(JSON.parse(theme)).forEach(([k, v]) => { for (const [k, v] of Object.entries(JSON.parse(theme))) {
document.documentElement.style.setProperty(`--${k}`, v.toString()); document.documentElement.style.setProperty(`--${k}`, v.toString());
}); }
} }
//#endregion //#endregion
@ -160,7 +160,7 @@
navigator.serviceWorker.controller.postMessage('clear'); navigator.serviceWorker.controller.postMessage('clear');
navigator.serviceWorker.getRegistrations().then(registrations => { navigator.serviceWorker.getRegistrations().then(registrations => {
registrations.forEach(registration => registration.unregister()); for (const registration of registrations) registration.unregister();
}); });
} catch (e) { } catch (e) {
console.error(e); console.error(e);

View File

@ -1,6 +1,6 @@
import Vue from 'vue'; import Vue from 'vue';
export default function<T extends object>(data: { export default function <T extends object>(data: {
name: string; name: string;
props?: () => T; props?: () => T;
}) { }) {
@ -53,11 +53,10 @@ export default function<T extends object>(data: {
mergeProps() { mergeProps() {
if (data.props) { if (data.props) {
const defaultProps = data.props(); const defaultProps = data.props();
Object.keys(defaultProps).forEach(prop => { for (const prop of Object.keys(defaultProps)) {
if (!this.props.hasOwnProperty(prop)) { if (this.props.hasOwnProperty(prop)) continue;
Vue.set(this.props, prop, defaultProps[prop]); Vue.set(this.props, prop, defaultProps[prop]);
} }
});
} }
}, },

View File

@ -28,15 +28,15 @@ const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): a
shift: false shift: false
} as pattern; } as pattern;
part.trim().split('+').forEach(key => { const keys = part.trim().split('+').map(x => x.trim().toLowerCase());
key = key.trim().toLowerCase(); for (const key of keys) {
switch (key) { switch (key) {
case 'ctrl': pattern.ctrl = true; break; case 'ctrl': pattern.ctrl = true; break;
case 'alt': pattern.alt = true; break; case 'alt': pattern.alt = true; break;
case 'shift': pattern.shift = true; break; case 'shift': pattern.shift = true; break;
default: pattern.which = keyCode(key).map(k => k.toLowerCase()); default: pattern.which = keyCode(key).map(k => k.toLowerCase());
} }
}); }
return pattern; return pattern;
}); });

View File

@ -14,9 +14,10 @@ export default async function($root: any, force = false, silent = false) {
navigator.serviceWorker.controller.postMessage('clear'); navigator.serviceWorker.controller.postMessage('clear');
} }
navigator.serviceWorker.getRegistrations().then(registrations => { const registrations = await navigator.serviceWorker.getRegistrations();
registrations.forEach(registration => registration.unregister()); for (const registration of registrations) {
}); registration.unregister();
}
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }

View File

@ -22,7 +22,7 @@ export default function(type, data): Notification {
case 'unreadMessagingMessage': case 'unreadMessagingMessage':
return { return {
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] , title: '%i18n:common.notification.message-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split('{}')[1] ,
body: data.text, // TODO: getMessagingMessageSummary(data), body: data.text, // TODO: getMessagingMessageSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
@ -30,7 +30,7 @@ export default function(type, data): Notification {
case 'reversiInvited': case 'reversiInvited':
return { return {
title: '%i18n:common.notification.reversi-invited%', title: '%i18n:common.notification.reversi-invited%',
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1], body: '%i18n:common.notification.reversi-invited-by%'.split('{}')[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split('{}')[1],
icon: data.parent.avatarUrl icon: data.parent.avatarUrl
}; };
@ -38,21 +38,21 @@ export default function(type, data): Notification {
switch (data.type) { switch (data.type) {
case 'mention': case 'mention':
return { return {
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1], title: '%i18n:common.notification.notified-by%'.split('{}')[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split('{}')[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
case 'reply': case 'reply':
return { return {
title: '%i18n:common.notification.reply-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split("{}")[1], title: '%i18n:common.notification.reply-from%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.reply-from%'.split('{}')[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };
case 'quote': case 'quote':
return { return {
title: '%i18n:common.notification.quoted-by%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split("{}")[1], title: '%i18n:common.notification.quoted-by%'.split('{}')[0] + `${getUserName(data.user)}` + '%i18n:common.notification.quoted-by%'.split('{}')[1],
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl icon: data.user.avatarUrl
}; };

View File

@ -0,0 +1,25 @@
/**
* Format like the uptime command
*/
export default function(sec) {
if (!sec) return sec;
const day = Math.floor(sec / 86400);
const tod = sec % 86400;
// Days part in string: 2 days, 1 day, null
const d = day >= 2 ? `${day} days` : day >= 1 ? `${day} day` : null;
// Time part in string: 1 sec, 1 min, 1:01
const t
= tod < 60 ? `${Math.floor(tod)} sec`
: tod < 3600 ? `${Math.floor(tod / 60)} min`
: `${Math.floor(tod / 60 / 60)}:${Math.floor((tod / 60) % 60).toString().padStart(2, '0')}`;
let str = '';
if (d) str += `${d}, `;
str += t;
return str;
}

View File

@ -3,8 +3,8 @@
export default (data: ArrayBuffer) => { export default (data: ArrayBuffer) => {
//const buf = new Buffer(data); //const buf = new Buffer(data);
//const hash = crypto.createHash("md5"); //const hash = crypto.createHash('md5');
//hash.update(buf); //hash.update(buf);
//return hash.digest("hex"); //return hash.digest('hex');
return ''; return '';
}; };

View File

@ -1,11 +0,0 @@
/**
* 中央値を求めます
* @param samples サンプル
*/
export default function(samples) {
if (!samples.length) return 0;
const numbers = samples.slice(0).sort((a, b) => a - b);
const middle = Math.floor(numbers.length / 2);
const isEven = numbers.length % 2 === 0;
return isEven ? (numbers[middle] + numbers[middle - 1]) / 2 : numbers[middle];
}

View File

@ -65,6 +65,10 @@ export default (opts: Opts = {}) => ({
return this.isRenote ? this.note.renote : this.note; return this.isRenote ? this.note.renote : this.note;
}, },
isMyNote(): boolean {
return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.appearNote.userId);
},
reactionsCount(): number { reactionsCount(): number {
return this.appearNote.reactionCounts return this.appearNote.reactionCounts
? sum(Object.values(this.appearNote.reactionCounts)) ? sum(Object.values(this.appearNote.reactionCounts))
@ -80,8 +84,8 @@ export default (opts: Opts = {}) => ({
const ast = parse(this.appearNote.text); const ast = parse(this.appearNote.text);
// TODO: 再帰的にURL要素がないか調べる // TODO: 再帰的にURL要素がないか調べる
return unique(ast return unique(ast
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.props.silent)) .filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent))
.map(t => t.props.url)); .map(t => t.node.props.url));
} else { } else {
return null; return null;
} }
@ -125,9 +129,7 @@ export default (opts: Opts = {}) => ({
source: this.$refs.reactButton, source: this.$refs.reactButton,
note: this.appearNote, note: this.appearNote,
showFocus: viaKeyboard, showFocus: viaKeyboard,
animation: !viaKeyboard, animation: !viaKeyboard
compact: opts.mobile,
big: opts.mobile
}).$once('closed', this.focus); }).$once('closed', this.focus);
}, },
@ -138,6 +140,14 @@ export default (opts: Opts = {}) => ({
}); });
}, },
undoReact(note) {
const oldReaction = note.myReaction;
if (!oldReaction) return;
this.$root.api('notes/reactions/delete', {
noteId: note.id
});
},
favorite() { favorite() {
this.$root.api('notes/favorites/create', { this.$root.api('notes/favorites/create', {
noteId: this.appearNote.id noteId: this.appearNote.id
@ -159,8 +169,7 @@ export default (opts: Opts = {}) => ({
this.$root.new(MkNoteMenu, { this.$root.new(MkNoteMenu, {
source: this.$refs.menuButton, source: this.$refs.menuButton,
note: this.appearNote, note: this.appearNote,
animation: !viaKeyboard, animation: !viaKeyboard
compact: opts.mobile,
}).$once('closed', this.focus); }).$once('closed', this.focus);
}, },

View File

@ -95,6 +95,7 @@ export default prop => ({
Vue.set(this.$_ns_target.reactionCounts, reaction, 0); Vue.set(this.$_ns_target.reactionCounts, reaction, 0);
} }
// Increment the count
this.$_ns_target.reactionCounts[reaction]++; this.$_ns_target.reactionCounts[reaction]++;
if (body.userId == this.$store.state.i.id) { if (body.userId == this.$store.state.i.id) {
@ -103,6 +104,26 @@ export default prop => ({
break; break;
} }
case 'unreacted': {
const reaction = body.reaction;
if (this.$_ns_target.reactionCounts == null) {
return;
}
if (this.$_ns_target.reactionCounts[reaction] == null) {
return;
}
// Decrement the count
if (this.$_ns_target.reactionCounts[reaction] > 0) this.$_ns_target.reactionCounts[reaction]--;
if (body.userId == this.$store.state.i.id) {
Vue.set(this.$_ns_target, 'myReaction', null);
}
break;
}
case 'pollVoted': { case 'pollVoted': {
if (body.userId == this.$store.state.i.id) return; if (body.userId == this.$store.state.i.id) return;
const choice = body.choice; const choice = body.choice;

View File

@ -2,27 +2,17 @@ export default function(me, settings, note) {
const isMyNote = note.userId == me.id; const isMyNote = note.userId == me.id;
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null; const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
if (settings.showMyRenotes === false) { const includesMutedWords = (text: string) =>
if (isMyNote && isPureRenote) { text
return true; ? settings.mutedWords.some(q => q.length > 0 && !q.some(word => !text.includes(word)))
} : false;
}
if (settings.showRenotedMyNotes === false) { return (
if (isPureRenote && (note.renote.userId == me.id)) { (!isMyNote && note.reply && includesMutedWords(note.reply.text)) ||
return true; (!isMyNote && note.renote && includesMutedWords(note.renote.text)) ||
} (settings.showMyRenotes === false && isMyNote && isPureRenote) ||
} (settings.showRenotedMyNotes === false && isPureRenote && note.renote.userId == me.id) ||
(settings.showLocalRenotes === false && isPureRenote && note.renote.user.host == null) ||
if (settings.showLocalRenotes === false) { (!isMyNote && includesMutedWords(note.text))
if (isPureRenote && (note.renote.user.host == null)) { );
return true;
}
}
if (!isMyNote && note.text && settings.mutedWords.some(q => q.length > 0 && !q.some(word => !note.text.includes(word)))) {
return true;
}
return false;
} }

View File

@ -111,9 +111,9 @@ export default class Stream extends EventEmitter {
connections = [this.nonSharedConnections.find(c => c.id === id)]; connections = [this.nonSharedConnections.find(c => c.id === id)];
} }
connections.filter(c => c != null).forEach(c => { for (const c of connections.filter(c => c != null)) {
c.emit(body.type, body.body); c.emit(body.type, body.body);
}); }
} else { } else {
this.emit(type, body); this.emit(type, body);
} }

View File

@ -2,6 +2,7 @@
<span class="mk-acct"> <span class="mk-acct">
<span class="name">@{{ user.username }}</span> <span class="name">@{{ user.username }}</span>
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span> <span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span>
<fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/>
</span> </span>
</template> </template>
@ -23,4 +24,8 @@ export default Vue.extend({
.mk-acct .mk-acct
> .host.fade > .host.fade
opacity 0.5 opacity 0.5
> .locked
opacity 0.8
margin-left 0.5em
</style> </style>

View File

@ -32,7 +32,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import { themeColor } from '../../../config'; import * as tinycolor from 'tinycolor2';
export default Vue.extend({ export default Vue.extend({
props: { props: {
@ -75,7 +75,7 @@ export default Vue.extend({
return this.dark ? '#fff' : '#777'; return this.dark ? '#fff' : '#777';
}, },
hHandColor(): string { hHandColor(): string {
return themeColor; return tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--primary')).toHexString();
}, },
ms(): number { ms(): number {

View File

@ -57,18 +57,18 @@ const emjdb: EmojiDef[] = lib.map((x: any) => ({
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
})); }));
lib.forEach((x: any) => { for (const x of lib as any) {
if (x[1].keywords) { if (x[1].keywords) {
x[1].keywords.forEach(k => { for (const k of x[1].keywords) {
emjdb.push({ emjdb.push({
emoji: x[1].char, emoji: x[1].char,
name: k, name: k,
aliasOf: x[0], aliasOf: x[0],
url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg` url: `https://twemoji.maxcdn.com/2/svg/${char2file(x[1].char)}.svg`
}); });
}); }
} }
}); }
emjdb.sort((a, b) => a.name.length - b.name.length); emjdb.sort((a, b) => a.name.length - b.name.length);
@ -120,7 +120,7 @@ export default Vue.extend({
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || []; const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
const emojiDefinitions: EmojiDef[] = []; const emojiDefinitions: EmojiDef[] = [];
customEmojis.forEach(x => { for (const x of customEmojis) {
emojiDefinitions.push({ emojiDefinitions.push({
name: x.name, name: x.name,
emoji: `:${x.name}:`, emoji: `:${x.name}:`,
@ -129,7 +129,7 @@ export default Vue.extend({
}); });
if (x.aliases) { if (x.aliases) {
x.aliases.forEach(alias => { for (const alias of x.aliases) {
emojiDefinitions.push({ emojiDefinitions.push({
name: alias, name: alias,
aliasOf: x.name, aliasOf: x.name,
@ -137,9 +137,9 @@ export default Vue.extend({
url: x.url, url: x.url,
isCustomEmoji: true isCustomEmoji: true
}); });
}); }
} }
}); }
emojiDefinitions.sort((a, b) => a.name.length - b.name.length); emojiDefinitions.sort((a, b) => a.name.length - b.name.length);
@ -148,9 +148,9 @@ export default Vue.extend({
this.textarea.addEventListener('keydown', this.onKeydown); this.textarea.addEventListener('keydown', this.onKeydown);
Array.from(document.querySelectorAll('body *')).forEach(el => { for (const el of Array.from(document.querySelectorAll('body *'))) {
el.addEventListener('mousedown', this.onMousedown); el.addEventListener('mousedown', this.onMousedown);
}); }
this.$nextTick(() => { this.$nextTick(() => {
this.exec(); this.exec();
@ -166,18 +166,18 @@ export default Vue.extend({
beforeDestroy() { beforeDestroy() {
this.textarea.removeEventListener('keydown', this.onKeydown); this.textarea.removeEventListener('keydown', this.onKeydown);
Array.from(document.querySelectorAll('body *')).forEach(el => { for (const el of Array.from(document.querySelectorAll('body *'))) {
el.removeEventListener('mousedown', this.onMousedown); el.removeEventListener('mousedown', this.onMousedown);
}); }
}, },
methods: { methods: {
exec() { exec() {
this.select = -1; this.select = -1;
if (this.$refs.suggests) { if (this.$refs.suggests) {
Array.from(this.items).forEach(el => { for (const el of Array.from(this.items)) {
el.removeAttribute('data-selected'); el.removeAttribute('data-selected');
}); }
} }
if (this.type == 'user') { if (this.type == 'user') {
@ -316,9 +316,9 @@ export default Vue.extend({
}, },
applySelect() { applySelect() {
Array.from(this.items).forEach(el => { for (const el of Array.from(this.items)) {
el.removeAttribute('data-selected'); el.removeAttribute('data-selected');
}); }
this.items[this.select].setAttribute('data-selected', 'true'); this.items[this.select].setAttribute('data-selected', 'true');
(this.items[this.select] as any).focus(); (this.items[this.select] as any).focus();

View File

@ -1,11 +1,7 @@
<template> <template>
<button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle"> <button class="nrvgflfuaxwgkxoynpnumyookecqrrvh" @click="toggle">
<b>{{ value ? this.$t('hide') : this.$t('show') }}</b> <b>{{ value ? this.$t('hide') : this.$t('show') }}</b>
<span v-if="!value"> <span v-if="!value">{{ this.label }}</span>
<span v-if="note.text">{{ this.$t('chars', { count: length(note.text) }) | number }}</span>
<span v-if="note.text && note.files && note.files.length > 0"> / </span>
<span v-if="note.files && note.files.length > 0">{{ this.$t('files', { count: note.files.length }) }}</span>
</span>
</button> </button>
</template> </template>
@ -13,6 +9,7 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../i18n'; import i18n from '../../../i18n';
import { length } from 'stringz'; import { length } from 'stringz';
import { concat } from '../../../../../prelude/array';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/cw-button.vue'), i18n: i18n('common/views/components/cw-button.vue'),
@ -28,6 +25,16 @@ export default Vue.extend({
} }
}, },
computed: {
label(): string {
return concat([
this.note.text ? [this.$t('chars', { count: length(this.note.text) })] : [],
this.note.files && this.note.files.length !== 0 ? [this.$t('files', { count: this.note.files.length }) ] : [],
this.note.poll != null ? [this.$t('poll')] : []
] as string[][]).join(' / ');
}
},
methods: { methods: {
length, length,

View File

@ -114,11 +114,11 @@ export default Vue.extend({
}, },
onScroll(e) { onScroll(e) {
const section = this.categories.forEach(x => { for (const x of this.categories) {
const top = e.target.scrollTop; const top = e.target.scrollTop;
const el = this.$refs[x.ref][0]; const el = this.$refs[x.ref][0];
x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top; x.isActive = el.offsetTop <= top && el.offsetTop + el.offsetHeight > top;
}); }
}, },
chosen(emoji) { chosen(emoji) {

View File

@ -48,7 +48,7 @@ export default Vue.extend({
iconAndText(): any[] { iconAndText(): any[] {
return ( return (
(this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] : (this.hasPendingFollowRequestFromYou && this.user.isLocked) ? ['hourglass-half', this.$t('request-pending')] :
(this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['hourglass-start', this.$t('follow-processing')] : (this.hasPendingFollowRequestFromYou && !this.user.isLocked) ? ['spinner', this.$t('follow-processing')] :
(this.isFollowing) ? ['minus', this.$t('following')] : (this.isFollowing) ? ['minus', this.$t('following')] :
(!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] : (!this.isFollowing && this.user.isLocked) ? ['plus', this.$t('follow-request')] :
(!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] : (!this.isFollowing && !this.user.isLocked) ? ['plus', this.$t('follow')] :

View File

@ -15,7 +15,9 @@ export default Vue.extend({
}, },
computed: { computed: {
compiledFormula(): any { compiledFormula(): any {
return katex.renderToString(this.formula); return katex.renderToString(this.formula, {
throwOnError: false
} as any);
} }
} }
}); });

View File

@ -30,11 +30,11 @@
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }" :class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
@click="set(i)" @click="set(i)"
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`"> :title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
<template v-if="!$store.state.settings.games.reversi.useWhiteBlackStones"> <template v-if="$store.state.settings.games.reversi.useAvatarStones">
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }"> <img v-if="stone === true" :src="blackUser.avatarUrl" alt="black">
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white" :class="{ contrast: $store.state.settings.games.reversi.useContrastStones }"> <img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white">
</template> </template>
<template v-if="$store.state.settings.games.reversi.useWhiteBlackStones"> <template v-else>
<fa v-if="stone === true" :icon="fasCircle"/> <fa v-if="stone === true" :icon="fasCircle"/>
<fa v-if="stone === false" :icon="farCircle"/> <fa v-if="stone === false" :icon="farCircle"/>
</template> </template>
@ -185,9 +185,9 @@ export default Vue.extend({
loopedBoard: this.game.settings.loopedBoard loopedBoard: this.game.settings.loopedBoard
}); });
this.game.logs.forEach(log => { for (const log of this.game.logs) {
this.o.put(log.color, log.pos); this.o.put(log.color, log.pos);
}); }
this.logs = this.game.logs; this.logs = this.game.logs;
this.logPos = this.logs.length; this.logPos = this.logs.length;
@ -287,9 +287,9 @@ export default Vue.extend({
loopedBoard: this.game.settings.loopedBoard loopedBoard: this.game.settings.loopedBoard
}); });
this.game.logs.forEach(log => { for (const log of this.game.logs) {
this.o.put(log.color, log.pos, true); this.o.put(log.color, log.pos, true);
}); }
this.logs = this.game.logs; this.logs = this.game.logs;
this.logPos = this.logs.length; this.logPos = this.logs.length;
@ -430,13 +430,6 @@ export default Vue.extend({
width 100% width 100%
height 100% height 100%
&.contrast
&[alt="black"]
filter brightness(.5)
&[alt="white"]
filter brightness(2)
> .graph > .graph
display grid display grid
grid-template-columns repeat(61, 1fr) grid-template-columns repeat(61, 1fr)

View File

@ -60,7 +60,7 @@
<div> <div>
<template v-for="item in form"> <template v-for="item in form">
<ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</ui-switch> <ui-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" @change="onChangeForm(item)">{{ item.label || item.desc || '' }}</ui-switch>
<div class="card" v-if="item.type == 'radio'" :key="item.id"> <div class="card" v-if="item.type == 'radio'" :key="item.id">
<header> <header>

View File

@ -1,22 +1,22 @@
<template> <template>
<ui-card> <ui-card v-if="enableTwitterIntegration || enableDiscordIntegration || enableGithubIntegration">
<div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div> <div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div>
<section> <section v-if="enableTwitterIntegration">
<header><fa :icon="['fab', 'twitter']"/> Twitter</header> <header><fa :icon="['fab', 'twitter']"/> Twitter</header>
<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p> <p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button> <ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button>
<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button> <ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button>
</section> </section>
<section> <section v-if="enableDiscordIntegration">
<header><fa :icon="['fab', 'discord']"/> Discord</header> <header><fa :icon="['fab', 'discord']"/> Discord</header>
<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p> <p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button> <ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button>
<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button> <ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button>
</section> </section>
<section> <section v-if="enableGithubIntegration">
<header><fa :icon="['fab', 'github']"/> GitHub</header> <header><fa :icon="['fab', 'github']"/> GitHub</header>
<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p> <p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button> <ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button>
@ -39,14 +39,32 @@ export default Vue.extend({
twitterForm: null, twitterForm: null,
discordForm: null, discordForm: null,
githubForm: null, githubForm: null,
enableTwitterIntegration: false,
enableDiscordIntegration: false,
enableGithubIntegration: false,
}; };
}, },
created() {
this.$root.getMeta().then(meta => {
this.enableTwitterIntegration = meta.enableTwitterIntegration;
this.enableDiscordIntegration = meta.enableDiscordIntegration;
this.enableGithubIntegration = meta.enableGithubIntegration;
});
},
mounted() { mounted() {
document.cookie = `i=${this.$store.state.i.token}`;
this.$watch('$store.state.i', () => { this.$watch('$store.state.i', () => {
if (this.$store.state.i.twitter) { if (this.$store.state.i.twitter) {
if (this.twitterForm) this.twitterForm.close(); if (this.twitterForm) this.twitterForm.close();
} }
if (this.$store.state.i.discord) {
if (this.discordForm) this.discordForm.close();
}
if (this.$store.state.i.github) {
if (this.githubForm) this.githubForm.close();
}
}, { }, {
deep: true deep: true
}); });

View File

@ -0,0 +1,70 @@
<template>
<router-link class="ldlomzub" :to="`/${ canonical }`" v-user-preview="canonical">
<span class="me" v-if="isMe">{{ $t('@.you') }}</span>
<span class="main">
<span class="username">@{{ username }}</span>
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="(host != localHost) || $store.state.settings.showFullAcct">@{{ toUnicode(host) }}</span>
</span>
</router-link>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { toUnicode } from 'punycode';
import { host as localHost } from '../../../config';
export default Vue.extend({
i18n: i18n(),
props: {
username: {
type: String,
required: true
},
host: {
type: String,
required: true
}
},
data() {
return {
localHost
};
},
computed: {
canonical(): string {
return `@${this.username}@${toUnicode(this.host)}`;
},
isMe(): boolean {
return this.$store.getters.isSignedIn && this.canonical.toLowerCase() === `@${this.$store.state.i.username}@${toUnicode(localHost)}`.toLowerCase();
}
},
methods: {
toUnicode
}
});
</script>
<style lang="stylus" scoped>
.ldlomzub
color var(--mfmMention)
> .me
pointer-events none
user-select none
padding 0 4px
background var(--mfmMention)
border solid var(--lineWidth) var(--mfmMention)
border-radius 4px 0 0 4px
color var(--mfmMentionForeground)
& + .main
padding 0 4px
border solid var(--lineWidth) var(--mfmMention)
border-radius 0 4px 4px 0
> .main
> .host.fade
opacity 0.5
</style>

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="onchrpzrvnoruiaenfcqvccjfuupzzwv" :class="{ big: $root.isMobile }"> <div class="onchrpzrvnoruiaenfcqvccjfuupzzwv" :class="{ isMobile: $root.isMobile }">
<div class="backdrop" ref="backdrop" @click="close"></div> <div class="backdrop" ref="backdrop" @click="close"></div>
<div class="popover" :class="{ hukidasi }" ref="popover"> <div class="popover" :class="{ hukidasi }" ref="popover">
<template v-for="item, i in items"> <template v-for="item, i in items">
@ -24,16 +24,11 @@ export default Vue.extend({
items: { items: {
type: Array, type: Array,
required: true required: true
},
compact: {
type: Boolean,
required: false,
default: false
} }
}, },
data() { data() {
return { return {
hukidasi: !this.compact hukidasi: !this.$root.isMobile
}; };
}, },
mounted() { mounted() {
@ -47,7 +42,7 @@ export default Vue.extend({
let left; let left;
let top; let top;
if (this.compact) { if (this.$root.isMobile) {
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2); const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2); const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
left = (x - (width / 2)); left = (x - (width / 2));
@ -121,11 +116,10 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.onchrpzrvnoruiaenfcqvccjfuupzzwv .onchrpzrvnoruiaenfcqvccjfuupzzwv
$bg-color = var(--popupBg) $bg-color = var(--popupBg)
$border-color = rgba(27, 31, 35, 0.15)
position initial position initial
&.big &.isMobile
> .popover > .popover
> button > button
font-size 15px font-size 15px
@ -145,7 +139,6 @@ export default Vue.extend({
z-index 10001 z-index 10001
padding 8px 0 padding 8px 0
background $bg-color background $bg-color
border 1px solid $border-color
border-radius 4px border-radius 4px
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15) box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
transform scale(0.5) transform scale(0.5)
@ -170,14 +163,6 @@ export default Vue.extend({
border-top solid $balloon-size transparent border-top solid $balloon-size transparent
border-left solid $balloon-size transparent border-left solid $balloon-size transparent
border-right solid $balloon-size transparent border-right solid $balloon-size transparent
border-bottom solid $balloon-size $border-color
&:after
top -($balloon-size * 2) + 1.5px
left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent
border-left solid $balloon-size transparent
border-right solid $balloon-size transparent
border-bottom solid $balloon-size $bg-color border-bottom solid $balloon-size $bg-color
> button > button
@ -201,7 +186,7 @@ export default Vue.extend({
> div > div
margin 8px 0 margin 8px 0
height 1px height var(--lineWidth)
background var(--faceDivider) background var(--faceDivider)
</style> </style>

View File

@ -9,7 +9,7 @@
@keypress="onKeypress" @keypress="onKeypress"
@paste="onPaste" @paste="onPaste"
:placeholder="$t('input-message-here')" :placeholder="$t('input-message-here')"
v-autocomplete="'text'" v-autocomplete="{ model: 'text' }"
></textarea> ></textarea>
<div class="file" @click="file = null" v-if="file">{{ file.name }}</div> <div class="file" @click="file = null" v-if="file">{{ file.name }}</div>
<mk-uploader ref="uploader" @uploaded="onUploaded"/> <mk-uploader ref="uploader" @uploaded="onUploaded"/>
@ -85,7 +85,7 @@ export default Vue.extend({
} }
} else { } else {
if (items[0].kind == 'file') { if (items[0].kind == 'file') {
alert('%i18n:only-one-file-attached%'); alert(this.$t('only-one-file-attached'));
} }
} }
}, },
@ -107,7 +107,7 @@ export default Vue.extend({
return; return;
} else if (e.dataTransfer.files.length > 1) { } else if (e.dataTransfer.files.length > 1) {
e.preventDefault(); e.preventDefault();
alert('%i18n:only-one-file-attached%'); alert(this.$t('only-one-file-attached'));
return; return;
} }

View File

@ -3,9 +3,9 @@
<mk-avatar class="avatar" :user="message.user" target="_blank"/> <mk-avatar class="avatar" :user="message.user" target="_blank"/>
<div class="content"> <div class="content">
<div class="balloon" :data-no-text="message.text == null"> <div class="balloon" :data-no-text="message.text == null">
<!-- <button class="delete-button" v-if="isMe" :title="$t('@.delete')"> <button class="delete-button" v-if="isMe" :title="$t('@.delete')" @click="del">
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/> <img src="/assets/desktop/remove.png" alt="Delete"/>
</button> --> </button>
<div class="content" v-if="!message.isDeleted"> <div class="content" v-if="!message.isDeleted">
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/> <misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
<div class="file" v-if="message.file"> <div class="file" v-if="message.file">
@ -16,7 +16,7 @@
</a> </a>
</div> </div>
</div> </div>
<div class="content" v-if="message.isDeleted"> <div class="content" v-else>
<p class="is-deleted">{{ $t('deleted') }}</p> <p class="is-deleted">{{ $t('deleted') }}</p>
</div> </div>
</div> </div>
@ -52,12 +52,19 @@ export default Vue.extend({
if (this.message.text) { if (this.message.text) {
const ast = parse(this.message.text); const ast = parse(this.message.text);
return unique(ast return unique(ast
.filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.silent)) .filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent))
.map(t => t.props.url)); .map(t => t.node.props.url));
} else { } else {
return null; return null;
} }
} }
},
methods: {
del() {
this.$root.api('messaging/messages/delete', {
messageId: this.message.id
});
}
} }
}); });
</script> </script>

View File

@ -79,6 +79,7 @@ export default Vue.extend({
this.connection.on('message', this.onMessage); this.connection.on('message', this.onMessage);
this.connection.on('read', this.onRead); this.connection.on('read', this.onRead);
this.connection.on('deleted', this.onDeleted);
if (this.isNaked) { if (this.isNaked) {
window.addEventListener('scroll', this.onScroll, { passive: true }); window.addEventListener('scroll', this.onScroll, { passive: true });
@ -196,12 +197,19 @@ export default Vue.extend({
onRead(ids) { onRead(ids) {
if (!Array.isArray(ids)) ids = [ids]; if (!Array.isArray(ids)) ids = [ids];
ids.forEach(id => { for (const id of ids) {
if (this.messages.some(x => x.id == id)) { if (this.messages.some(x => x.id == id)) {
const exist = this.messages.map(x => x.id).indexOf(id); const exist = this.messages.map(x => x.id).indexOf(id);
this.messages[exist].isRead = true; this.messages[exist].isRead = true;
} }
}); }
},
onDeleted(id) {
const msg = this.messages.find(m => m.id === id);
if (msg) {
this.messages = this.messages.filter(m => m.id !== msg.id);
}
}, },
isBottom() { isBottom() {
@ -248,13 +256,13 @@ export default Vue.extend({
onVisibilitychange() { onVisibilitychange() {
if (document.hidden) return; if (document.hidden) return;
this.messages.forEach(message => { for (const message of this.messages) {
if (message.userId !== this.$store.state.i.id && !message.isRead) { if (message.userId !== this.$store.state.i.id && !message.isRead) {
this.connection.send('read', { this.connection.send('read', {
id: message.id id: message.id
}); });
} }
}); }
} }
} }
}); });

View File

@ -103,10 +103,10 @@ export default Vue.extend({
this.messages.unshift(message); this.messages.unshift(message);
}, },
onRead(ids) { onRead(ids) {
ids.forEach(id => { for (const id of ids) {
const found = this.messages.find(m => m.id == id); const found = this.messages.find(m => m.id == id);
if (found) found.isRead = true; if (found) found.isRead = true;
}); }
}, },
search() { search() {
if (this.q == '') { if (this.q == '') {

View File

@ -1,23 +1,19 @@
import Vue, { VNode } from 'vue'; import Vue, { VNode } from 'vue';
import { length } from 'stringz'; import { length } from 'stringz';
import { Node } from '../../../../../mfm/parser'; import { MfmForest } from '../../../../../mfm/parser';
import parse from '../../../../../mfm/parse'; import parse from '../../../../../mfm/parse';
import MkUrl from './url.vue'; import MkUrl from './url.vue';
import MkMention from './mention.vue';
import { concat, sum } from '../../../../../prelude/array'; import { concat, sum } from '../../../../../prelude/array';
import MkFormula from './formula.vue'; import MkFormula from './formula.vue';
import MkGoogle from './google.vue'; import MkGoogle from './google.vue';
import { toUnicode } from 'punycode';
import syntaxHighlight from '../../../../../mfm/syntax-highlight'; import syntaxHighlight from '../../../../../mfm/syntax-highlight';
import { host } from '../../../config';
import { preorderF, countNodesF } from '../../../../../prelude/tree';
function getTextCount(tokens: Node[]): number { function sumTextsLength(ts: MfmForest): number {
const rootCount = sum(tokens.filter(x => x.name === 'text').map(x => length(x.props.text))); const textNodes = preorderF(ts).filter(n => n.type === 'text');
const childrenCount = sum(tokens.filter(x => x.children).map(x => getTextCount(x.children))); return sum(textNodes.map(x => length(x.props.text)));
return rootCount + childrenCount;
}
function getChildrenCount(tokens: Node[]): number {
const countTree = tokens.filter(x => x.children).map(x => getChildrenCount(x.children));
return countTree.length + sum(countTree);
} }
export default Vue.component('misskey-flavored-markdown', { export default Vue.component('misskey-flavored-markdown', {
@ -26,10 +22,6 @@ export default Vue.component('misskey-flavored-markdown', {
type: String, type: String,
required: true required: true
}, },
ast: {
type: [],
required: false
},
shouldBreak: { shouldBreak: {
type: Boolean, type: Boolean,
default: true default: true
@ -54,17 +46,15 @@ export default Vue.component('misskey-flavored-markdown', {
render(createElement) { render(createElement) {
if (this.text == null || this.text == '') return; if (this.text == null || this.text == '') return;
const ast = this.ast == null ? const ast = parse(this.text, this.plainText);
parse(this.text, this.plainText) : // Parse text to ast
this.ast as Node[];
let bigCount = 0; let bigCount = 0;
let motionCount = 0; let motionCount = 0;
const genEl = (ast: Node[]) => concat(ast.map((token): VNode[] => { const genEl = (ast: MfmForest) => concat(ast.map((token): VNode[] => {
switch (token.name) { switch (token.node.type) {
case 'text': { case 'text': {
const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n'); const text = token.node.props.text.replace(/(\r\n|\n|\r)/g, '\n');
if (this.shouldBreak) { if (this.shouldBreak) {
const x = text.split('\n') const x = text.split('\n')
@ -94,7 +84,7 @@ export default Vue.component('misskey-flavored-markdown', {
case 'big': { case 'big': {
bigCount++; bigCount++;
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5; const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
const isMany = bigCount > 3; const isMany = bigCount > 3;
return (createElement as any)('strong', { return (createElement as any)('strong', {
attrs: { attrs: {
@ -121,7 +111,7 @@ export default Vue.component('misskey-flavored-markdown', {
case 'motion': { case 'motion': {
motionCount++; motionCount++;
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5; const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
const isMany = motionCount > 3; const isMany = motionCount > 3;
return (createElement as any)('span', { return (createElement as any)('span', {
attrs: { attrs: {
@ -138,9 +128,11 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement(MkUrl, { return [createElement(MkUrl, {
key: Math.random(), key: Math.random(),
props: { props: {
url: token.props.url, url: token.node.props.url,
target: '_blank', target: '_blank'
style: 'color:var(--mfmLink);' },
attrs: {
style: 'color:var(--mfmUrl);'
} }
})]; })];
} }
@ -149,40 +141,32 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement('a', { return [createElement('a', {
attrs: { attrs: {
class: 'link', class: 'link',
href: token.props.url, href: token.node.props.url,
target: '_blank', target: '_blank',
title: token.props.url, title: token.node.props.url,
style: 'color:var(--mfmLink);' style: 'color:var(--mfmLink);'
} }
}, genEl(token.children))]; }, genEl(token.children))];
} }
case 'mention': { case 'mention': {
const host = token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host; return [createElement(MkMention, {
const canonical = host != null ? `@${token.props.username}@${toUnicode(host)}` : `@${token.props.username}`;
return (createElement as any)('router-link', {
key: Math.random(), key: Math.random(),
attrs: { props: {
to: `/${canonical}`, host: (token.node.props.host == null && this.author && this.author.host != null ? this.author.host : token.node.props.host) || host,
// TODO username: token.node.props.username
//dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token), }
style: 'color:var(--mfmMention);' })];
},
directives: [{
name: 'user-preview',
value: canonical
}]
}, canonical);
} }
case 'hashtag': { case 'hashtag': {
return [createElement('router-link', { return [createElement('router-link', {
key: Math.random(), key: Math.random(),
attrs: { attrs: {
to: `/tags/${encodeURIComponent(token.props.hashtag)}`, to: `/tags/${encodeURIComponent(token.node.props.hashtag)}`,
style: 'color:var(--mfmHashtag);' style: 'color:var(--mfmHashtag);'
} }
}, `#${token.props.hashtag}`)]; }, `#${token.node.props.hashtag}`)];
} }
case 'blockCode': { case 'blockCode': {
@ -191,7 +175,7 @@ export default Vue.component('misskey-flavored-markdown', {
}, [ }, [
createElement('code', { createElement('code', {
domProps: { domProps: {
innerHTML: syntaxHighlight(token.props.code) innerHTML: syntaxHighlight(token.node.props.code)
} }
}) })
])]; ])];
@ -200,7 +184,7 @@ export default Vue.component('misskey-flavored-markdown', {
case 'inlineCode': { case 'inlineCode': {
return [createElement('code', { return [createElement('code', {
domProps: { domProps: {
innerHTML: syntaxHighlight(token.props.code) innerHTML: syntaxHighlight(token.node.props.code)
} }
})]; })];
} }
@ -234,8 +218,8 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement('mk-emoji', { return [createElement('mk-emoji', {
key: Math.random(), key: Math.random(),
attrs: { attrs: {
emoji: token.props.emoji, emoji: token.node.props.emoji,
name: token.props.name name: token.node.props.name
}, },
props: { props: {
customEmojis: this.customEmojis || customEmojis, customEmojis: this.customEmojis || customEmojis,
@ -249,7 +233,7 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement(MkFormula, { return [createElement(MkFormula, {
key: Math.random(), key: Math.random(),
props: { props: {
formula: token.props.formula formula: token.node.props.formula
} }
})]; })];
} }
@ -259,13 +243,13 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement(MkGoogle, { return [createElement(MkGoogle, {
key: Math.random(), key: Math.random(),
props: { props: {
q: token.props.query q: token.node.props.query
} }
})]; })];
} }
default: { default: {
console.log('unknown ast type:', token.name); console.log('unknown ast type:', token.node.type);
return []; return [];
} }

View File

@ -19,7 +19,6 @@
<fa v-if="note.visibility == 'home'" icon="home"/> <fa v-if="note.visibility == 'home'" icon="home"/>
<fa v-if="note.visibility == 'followers'" icon="unlock"/> <fa v-if="note.visibility == 'followers'" icon="unlock"/>
<fa v-if="note.visibility == 'specified'" icon="envelope"/> <fa v-if="note.visibility == 'specified'" icon="envelope"/>
<fa v-if="note.visibility == 'private'" icon="lock"/>
</span> </span>
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span> <span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
</div> </div>

View File

@ -1,6 +1,6 @@
<template> <template>
<div style="position:initial"> <div style="position:initial">
<mk-menu :source="source" :compact="compact" :items="items" @closed="closed"/> <mk-menu :source="source" :items="items" @closed="closed"/>
</div> </div>
</template> </template>
@ -13,15 +13,26 @@ import { concat, intersperse } from '../../../../../prelude/array';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/note-menu.vue'), i18n: i18n('common/views/components/note-menu.vue'),
props: ['note', 'source', 'compact'], props: ['note', 'source'],
computed: { computed: {
items(): any[] { items(): any[] {
return concat(intersperse([null], [ return concat(intersperse([null], [
[
[{
icon: 'at',
text: this.$t('mention'),
action: this.mention
}]
],
[ [
[{ [{
icon: 'info-circle', icon: 'info-circle',
text: this.$t('detail'), text: this.$t('detail'),
action: this.detail action: this.detail
}], [{
icon: 'align-left',
text: this.$t('copy-content'),
action: this.copyContent
}], [{ }], [{
icon: 'link', icon: 'link',
text: this.$t('copy-link'), text: this.$t('copy-link'),
@ -66,10 +77,18 @@ export default Vue.extend({
}, },
methods: { methods: {
mention() {
this.$post({ mention: this.note.user });
},
detail() { detail() {
this.$router.push(`/notes/${this.note.id}`); this.$router.push(`/notes/${this.note.id}`);
}, },
copyContent() {
copyToClipboard(this.note.text);
},
copyLink() { copyLink() {
copyToClipboard(`${url}/notes/${this.note.id}`); copyToClipboard(`${url}/notes/${this.note.id}`);
}, },

View File

@ -0,0 +1,44 @@
<template>
<ui-card>
<div slot="title"><fa :icon="['far', 'bell']"/> {{ $t('title') }}</div>
<section>
<ui-switch v-model="$store.state.i.settings.autoWatch" @change="onChangeAutoWatch">
{{ $t('auto-watch') }}<span slot="desc">{{ $t('auto-watch-desc') }}</span>
</ui-switch>
<section>
<ui-button @click="readAllNotifications">{{ $t('mark-as-read-all-notifications') }}</ui-button>
<ui-button @click="readAllUnreadNotes">{{ $t('mark-as-read-all-unread-notes') }}</ui-button>
<ui-button @click="readAllMessagingMessages">{{ $t('mark-as-read-all-talk-messages') }}</ui-button>
</section>
</section>
</ui-card>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
export default Vue.extend({
i18n: i18n('common/views/components/notification-settings.vue'),
methods: {
onChangeAutoWatch(v) {
this.$root.api('i/update', {
autoWatch: v
});
},
readAllUnreadNotes() {
this.$root.api('i/read_all_unread_notes');
},
readAllMessagingMessages() {
this.$root.api('i/read_all_messaging_messages');
},
readAllNotifications() {
this.$root.api('notifications/mark_all_as_read');
}
}
});
</script>

File diff suppressed because one or more lines are too long

View File

@ -55,12 +55,12 @@ export default Vue.extend({
noteId: this.note.id, noteId: this.note.id,
choice: id choice: id
}).then(() => { }).then(() => {
this.poll.choices.forEach(c => { for (const c of this.poll.choices) {
if (c.id == id) { if (c.id == id) {
c.votes++; c.votes++;
Vue.set(c, 'isVoted', true); Vue.set(c, 'isVoted', true);
} }
}); }
this.showResult = true; this.showResult = true;
}); });
} }

View File

@ -24,7 +24,7 @@
</ui-input> </ui-input>
<ui-input v-model="birthday" type="date"> <ui-input v-model="birthday" type="date">
<span>{{ $t('birthday') }}</span> <span slot="title">{{ $t('birthday') }}</span>
<span slot="prefix"><fa icon="birthday-cake"/></span> <span slot="prefix"><fa icon="birthday-cake"/></span>
</ui-input> </ui-input>
@ -69,7 +69,8 @@
<div> <div>
<ui-switch v-model="isLocked" @change="save(false)">{{ $t('is-locked') }}</ui-switch> <ui-switch v-model="isLocked" @change="save(false)">{{ $t('is-locked') }}</ui-switch>
<ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch> <ui-switch v-model="carefulBot" :disabled="isLocked" @change="save(false)">{{ $t('careful-bot') }}</ui-switch>
<ui-switch v-model="autoAcceptFollowed" :disabled="!isLocked && !carefulBot" @change="save(false)">{{ $t('auto-accept-followed') }}</ui-switch>
</div> </div>
</section> </section>
@ -118,6 +119,7 @@ export default Vue.extend({
isBot: false, isBot: false,
isLocked: false, isLocked: false,
carefulBot: false, carefulBot: false,
autoAcceptFollowed: false,
saving: false, saving: false,
avatarUploading: false, avatarUploading: false,
bannerUploading: false bannerUploading: false
@ -156,6 +158,7 @@ export default Vue.extend({
this.isBot = this.$store.state.i.isBot; this.isBot = this.$store.state.i.isBot;
this.isLocked = this.$store.state.i.isLocked; this.isLocked = this.$store.state.i.isLocked;
this.carefulBot = this.$store.state.i.carefulBot; this.carefulBot = this.$store.state.i.carefulBot;
this.autoAcceptFollowed = this.$store.state.i.autoAcceptFollowed;
}, },
methods: { methods: {
@ -217,7 +220,8 @@ export default Vue.extend({
isCat: !!this.isCat, isCat: !!this.isCat,
isBot: !!this.isBot, isBot: !!this.isBot,
isLocked: !!this.isLocked, isLocked: !!this.isLocked,
carefulBot: !!this.carefulBot carefulBot: !!this.carefulBot,
autoAcceptFollowed: !!this.autoAcceptFollowed
}).then(i => { }).then(i => {
this.saving = false; this.saving = false;
this.$store.state.i.avatarId = i.avatarId; this.$store.state.i.avatarId = i.avatarId;

View File

@ -1,19 +1,19 @@
<template> <template>
<div class="mk-reaction-picker" v-hotkey.global="keymap"> <div class="rdfaahpb" v-hotkey.global="keymap">
<div class="backdrop" ref="backdrop" @click="close"></div> <div class="backdrop" ref="backdrop" @click="close"></div>
<div class="popover" :class="{ compact, big }" ref="popover"> <div class="popover" :class="{ isMobile: $root.isMobile }" ref="popover">
<p v-if="!compact">{{ title }}</p> <p v-if="!$root.isMobile">{{ title }}</p>
<div ref="buttons" :class="{ showFocus }"> <div ref="buttons" :class="{ showFocus }">
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')"><mk-reaction-icon reaction='like'/></button> <button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')" v-particle><mk-reaction-icon reaction="like"/></button>
<button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')"><mk-reaction-icon reaction='love'/></button> <button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')" v-particle><mk-reaction-icon reaction="love"/></button>
<button @click="react('laugh')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="3" :title="$t('@.reactions.laugh')"><mk-reaction-icon reaction='laugh'/></button> <button @click="react('laugh')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="3" :title="$t('@.reactions.laugh')" v-particle><mk-reaction-icon reaction="laugh"/></button>
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" :title="$t('@.reactions.hmm')"><mk-reaction-icon reaction='hmm'/></button> <button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" :title="$t('@.reactions.hmm')" v-particle><mk-reaction-icon reaction="hmm"/></button>
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" :title="$t('@.reactions.surprise')"><mk-reaction-icon reaction='surprise'/></button> <button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" :title="$t('@.reactions.surprise')" v-particle><mk-reaction-icon reaction="surprise"/></button>
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" :title="$t('@.reactions.congrats')"><mk-reaction-icon reaction='congrats'/></button> <button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" :title="$t('@.reactions.congrats')" v-particle><mk-reaction-icon reaction="congrats"/></button>
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" :title="$t('@.reactions.angry')"><mk-reaction-icon reaction='angry'/></button> <button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" :title="$t('@.reactions.angry')" v-particle><mk-reaction-icon reaction="angry"/></button>
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" :title="$t('@.reactions.confused')"><mk-reaction-icon reaction='confused'/></button> <button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" :title="$t('@.reactions.confused')" v-particle><mk-reaction-icon reaction="confused"/></button>
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" :title="$t('@.reactions.rip')"><mk-reaction-icon reaction='rip'/></button> <button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" :title="$t('@.reactions.rip')" v-particle><mk-reaction-icon reaction="rip"/></button>
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" :title="$t('@.reactions.pudding')"><mk-reaction-icon reaction='pudding'/></button> <button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" :title="$t('@.reactions.pudding')" v-particle><mk-reaction-icon reaction="pudding"/></button>
</div> </div>
</div> </div>
</div> </div>
@ -36,22 +36,10 @@ export default Vue.extend({
required: true required: true
}, },
compact: {
type: Boolean,
required: false,
default: false
},
cb: { cb: {
required: false required: false
}, },
big: {
type: Boolean,
required: false,
default: false
},
showFocus: { showFocus: {
type: Boolean, type: Boolean,
required: false, required: false,
@ -115,7 +103,7 @@ export default Vue.extend({
const width = popover.offsetWidth; const width = popover.offsetWidth;
const height = popover.offsetHeight; const height = popover.offsetHeight;
if (this.compact) { if (this.$root.isMobile) {
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2); const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2); const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
popover.style.left = (x - (width / 2)) + 'px'; popover.style.left = (x - (width / 2)) + 'px';
@ -210,9 +198,7 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
$border-color = rgba(27, 31, 35, 0.15) .rdfaahpb
.mk-reaction-picker
position initial position initial
> .backdrop > .backdrop
@ -230,41 +216,12 @@ $border-color = rgba(27, 31, 35, 0.15)
position absolute position absolute
z-index 10001 z-index 10001
background $bgcolor background $bgcolor
border 1px solid $border-color
border-radius 4px border-radius 4px
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15) box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
transform scale(0.5) transform scale(0.5)
opacity 0 opacity 0
$balloon-size = 16px &.isMobile
&:not(.compact)
margin-top $balloon-size
transform-origin center -($balloon-size)
&:before
content ""
display block
position absolute
top -($balloon-size * 2)
left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent
border-left solid $balloon-size transparent
border-right solid $balloon-size transparent
border-bottom solid $balloon-size $border-color
&:after
content ""
display block
position absolute
top -($balloon-size * 2) + 1.5px
left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent
border-left solid $balloon-size transparent
border-right solid $balloon-size transparent
border-bottom solid $balloon-size $bgcolor
&.big
> div > div
width 280px width 280px
@ -274,13 +231,30 @@ $border-color = rgba(27, 31, 35, 0.15)
font-size 28px font-size 28px
border-radius 4px border-radius 4px
&:not(.isMobile)
$arrow-size = 16px
margin-top $arrow-size
transform-origin center -($arrow-size)
&:before
content ""
display block
position absolute
top -($arrow-size * 2)
left s('calc(50% - %s)', $arrow-size)
border-top solid $arrow-size transparent
border-left solid $arrow-size transparent
border-right solid $arrow-size transparent
border-bottom solid $arrow-size $bgcolor
> p > p
display block display block
margin 0 margin 0
padding 8px 10px padding 8px 10px
font-size 14px font-size 14px
color var(--popupFg) color var(--popupFg)
border-bottom solid 1px var(--faceDivider) border-bottom solid var(--lineWidth) var(--faceDivider)
> div > div
padding 4px padding 4px

View File

@ -1,35 +1,130 @@
<template> <template>
<div class="mk-reactions-viewer"> <div class="mk-reactions-viewer" :class="{ isMe }">
<template v-if="reactions"> <template v-if="reactions">
<span :class="{ reacted: note.myReaction == 'like' }" @click="react('like')" v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span> <span :class="{ reacted: note.myReaction == 'like' }" @click="toggleReaction('like')" v-if="reactions.like" v-particle="!isMe"><mk-reaction-icon reaction="like" ref="like"/><span>{{ reactions.like }}</span></span>
<span :class="{ reacted: note.myReaction == 'love' }" @click="react('love')" v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span> <span :class="{ reacted: note.myReaction == 'love' }" @click="toggleReaction('love')" v-if="reactions.love" v-particle="!isMe"><mk-reaction-icon reaction="love" ref="love"/><span>{{ reactions.love }}</span></span>
<span :class="{ reacted: note.myReaction == 'laugh' }" @click="react('laugh')" v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span> <span :class="{ reacted: note.myReaction == 'laugh' }" @click="toggleReaction('laugh')" v-if="reactions.laugh" v-particle="!isMe"><mk-reaction-icon reaction="laugh" ref="laugh"/><span>{{ reactions.laugh }}</span></span>
<span :class="{ reacted: note.myReaction == 'hmm' }" @click="react('hmm')" v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span> <span :class="{ reacted: note.myReaction == 'hmm' }" @click="toggleReaction('hmm')" v-if="reactions.hmm" v-particle="!isMe"><mk-reaction-icon reaction="hmm" ref="hmm"/><span>{{ reactions.hmm }}</span></span>
<span :class="{ reacted: note.myReaction == 'surprise' }" @click="react('surprise')" v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span> <span :class="{ reacted: note.myReaction == 'surprise' }" @click="toggleReaction('surprise')" v-if="reactions.surprise" v-particle="!isMe"><mk-reaction-icon reaction="surprise" ref="surprise"/><span>{{ reactions.surprise }}</span></span>
<span :class="{ reacted: note.myReaction == 'congrats' }" @click="react('congrats')" v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span> <span :class="{ reacted: note.myReaction == 'congrats' }" @click="toggleReaction('congrats')" v-if="reactions.congrats" v-particle="!isMe"><mk-reaction-icon reaction="congrats" ref="congrats"/><span>{{ reactions.congrats }}</span></span>
<span :class="{ reacted: note.myReaction == 'angry' }" @click="react('angry')" v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span> <span :class="{ reacted: note.myReaction == 'angry' }" @click="toggleReaction('angry')" v-if="reactions.angry" v-particle="!isMe"><mk-reaction-icon reaction="angry" ref="angry"/><span>{{ reactions.angry }}</span></span>
<span :class="{ reacted: note.myReaction == 'confused' }" @click="react('confused')" v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span> <span :class="{ reacted: note.myReaction == 'confused' }" @click="toggleReaction('confused')" v-if="reactions.confused" v-particle="!isMe"><mk-reaction-icon reaction="confused" ref="confused"/><span>{{ reactions.confused }}</span></span>
<span :class="{ reacted: note.myReaction == 'rip' }" @click="react('rip')" v-if="reactions.rip"><mk-reaction-icon reaction="rip"/><span>{{ reactions.rip }}</span></span> <span :class="{ reacted: note.myReaction == 'rip' }" @click="toggleReaction('rip')" v-if="reactions.rip" v-particle="!isMe"><mk-reaction-icon reaction="rip" ref="rip"/><span>{{ reactions.rip }}</span></span>
<span :class="{ reacted: note.myReaction == 'pudding' }" @click="react('pudding')" v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span> <span :class="{ reacted: note.myReaction == 'pudding' }" @click="toggleReaction('pudding')" v-if="reactions.pudding" v-particle="!isMe"><mk-reaction-icon reaction="pudding" ref="pudding"/><span>{{ reactions.pudding }}</span></span>
</template> </template>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import Icon from './reaction-icon.vue';
import * as anime from 'animejs';
export default Vue.extend({ export default Vue.extend({
props: ['note'], props: {
note: {
type: Object,
required: true
}
},
computed: { computed: {
reactions(): number { reactions(): any {
return this.note.reactionCounts; return this.note.reactionCounts;
},
isMe(): boolean {
return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.note.userId);
}
},
watch: {
'reactions.like'() {
this.anime('like');
},
'reactions.love'() {
this.anime('love');
},
'reactions.laugh'() {
this.anime('laugh');
},
'reactions.hmm'() {
this.anime('hmm');
},
'reactions.surprise'() {
this.anime('surprise');
},
'reactions.congrats'() {
this.anime('congrats');
},
'reactions.angry'() {
this.anime('angry');
},
'reactions.confused'() {
this.anime('confused');
},
'reactions.rip'() {
this.anime('rip');
},
'reactions.pudding'() {
this.anime('pudding');
} }
}, },
methods: { methods: {
react(reaction: string) { toggleReaction(reaction: string) {
this.$root.api('notes/reactions/create', { if (this.isMe) return;
noteId: this.note.id,
reaction: reaction const oldReaction = this.note.myReaction;
if (oldReaction) {
this.$root.api('notes/reactions/delete', {
noteId: this.note.id
}).then(() => {
if (oldReaction !== reaction) {
this.$root.api('notes/reactions/create', {
noteId: this.note.id,
reaction: reaction
});
}
});
} else {
this.$root.api('notes/reactions/create', {
noteId: this.note.id,
reaction: reaction
});
}
},
anime(reaction: string) {
if (this.$store.state.device.reduceMotion) return;
if (document.hidden) return;
this.$nextTick(() => {
const rect = this.$refs[reaction].$el.getBoundingClientRect();
const x = rect.left;
const y = rect.top;
const icon = new Icon({
parent: this,
propsData: {
reaction: reaction
}
}).$mount();
icon.$el.style.position = 'absolute';
icon.$el.style.zIndex = 100;
icon.$el.style.top = (y + window.scrollY) + 'px';
icon.$el.style.left = (x + window.scrollX) + 'px';
icon.$el.style.fontSize = window.getComputedStyle(this.$refs[reaction].$el).fontSize;
document.body.appendChild(icon.$el);
anime({
targets: icon.$el,
opacity: [1, 0],
translateY: [0, -64],
duration: 1000,
easing: 'linear',
complete: () => {
icon.destroyDom();
}
});
}); });
} }
} }
@ -43,12 +138,20 @@ export default Vue.extend({
&:empty &:empty
display none display none
&.isMe
> span
cursor default !important
&:hover
background var(--reactionViewerButtonBg) !important
> span > span
display inline-block display inline-block
height 32px height 32px
margin-right 6px margin-right 6px
padding 0 6px padding 0 6px
border-radius 4px border-radius 4px
cursor pointer
* *
user-select none user-select none
@ -61,7 +164,6 @@ export default Vue.extend({
color var(--primaryForeground) color var(--primaryForeground)
&:not(.reacted) &:not(.reacted)
cursor pointer
background var(--reactionViewerButtonBg) background var(--reactionViewerButtonBg)
&:hover &:hover

View File

@ -14,7 +14,6 @@
<fa v-if="note.visibility == 'home'" icon="home"/> <fa v-if="note.visibility == 'home'" icon="home"/>
<fa v-if="note.visibility == 'followers'" icon="unlock"/> <fa v-if="note.visibility == 'followers'" icon="unlock"/>
<fa v-if="note.visibility == 'specified'" icon="envelope"/> <fa v-if="note.visibility == 'specified'" icon="envelope"/>
<fa v-if="note.visibility == 'private'" icon="lock"/>
</span> </span>
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span> <span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
</div> </div>

View File

@ -6,7 +6,7 @@
<span slot="prefix">@</span> <span slot="prefix">@</span>
<span slot="suffix">@{{ host }}</span> <span slot="suffix">@{{ host }}</span>
</ui-input> </ui-input>
<ui-input v-model="password" type="password" required styl="fill"> <ui-input v-model="password" type="password" :with-password-toggle="true" required styl="fill">
<span>{{ $t('password') }}</span> <span>{{ $t('password') }}</span>
<span slot="prefix"><fa icon="lock"/></span> <span slot="prefix"><fa icon="lock"/></span>
</ui-input> </ui-input>
@ -26,6 +26,7 @@ import { toUnicode } from 'punycode';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/signin.vue'), i18n: i18n('common/views/components/signin.vue'),
props: { props: {
withAvatar: { withAvatar: {
type: Boolean, type: Boolean,
@ -33,6 +34,7 @@ export default Vue.extend({
default: true default: true
} }
}, },
data() { data() {
return { return {
signing: false, signing: false,
@ -45,11 +47,13 @@ export default Vue.extend({
meta: null meta: null
}; };
}, },
created() { created() {
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.meta = meta; this.meta = meta;
}); });
}, },
methods: { methods: {
onUsernameChange() { onUsernameChange() {
this.$root.api('users/show', { this.$root.api('users/show', {
@ -60,6 +64,7 @@ export default Vue.extend({
this.user = null; this.user = null;
}); });
}, },
onSubmit() { onSubmit() {
this.signing = true; this.signing = true;
@ -80,8 +85,6 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.mk-signin .mk-signin
color #555 color #555

View File

@ -50,6 +50,7 @@ import { toUnicode } from 'punycode';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/signup.vue'), i18n: i18n('common/views/components/signup.vue'),
data() { data() {
return { return {
host: toUnicode(host), host: toUnicode(host),
@ -64,6 +65,7 @@ export default Vue.extend({
meta: null meta: null
} }
}, },
computed: { computed: {
shouldShowProfileUrl(): boolean { shouldShowProfileUrl(): boolean {
return (this.username != '' && return (this.username != '' &&
@ -72,17 +74,20 @@ export default Vue.extend({
this.usernameState != 'max-range'); this.usernameState != 'max-range');
} }
}, },
created() { created() {
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.meta = meta; this.meta = meta;
}); });
}, },
mounted() { mounted() {
const head = document.getElementsByTagName('head')[0]; const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script'); const script = document.createElement('script');
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js'); script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
head.appendChild(script); head.appendChild(script);
}, },
methods: { methods: {
onChangeUsername() { onChangeUsername() {
if (this.username == '') { if (this.username == '') {
@ -111,6 +116,7 @@ export default Vue.extend({
this.usernameState = 'error'; this.usernameState = 'error';
}); });
}, },
onChangePassword() { onChangePassword() {
if (this.password == '') { if (this.password == '') {
this.passwordStrength = ''; this.passwordStrength = '';
@ -120,6 +126,7 @@ export default Vue.extend({
const strength = getPasswordStrength(this.password); const strength = getPasswordStrength(this.password);
this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low'; this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low';
}, },
onChangePasswordRetype() { onChangePasswordRetype() {
if (this.retypedPassword == '') { if (this.retypedPassword == '') {
this.passwordRetypeState = null; this.passwordRetypeState = null;
@ -128,6 +135,7 @@ export default Vue.extend({
this.passwordRetypeState = this.password == this.retypedPassword ? 'match' : 'not-match'; this.passwordRetypeState = this.password == this.retypedPassword ? 'match' : 'not-match';
}, },
onSubmit() { onSubmit() {
this.$root.api('signup', { this.$root.api('signup', {
username: this.username, username: this.username,
@ -138,8 +146,9 @@ export default Vue.extend({
this.$root.api('signin', { this.$root.api('signin', {
username: this.username, username: this.username,
password: this.password password: this.password
}, true).then(() => { }, true).then(res => {
location.href = '/'; localStorage.setItem('i', res.i);
location.reload();
}); });
}).catch(() => { }).catch(() => {
alert(this.$t('some-error')); alert(this.$t('some-error'));
@ -154,8 +163,6 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.mk-signup .mk-signup
min-width 302px min-width 302px
</style> </style>

View File

@ -1,99 +1,104 @@
<template> <template>
<div class="nicnklzforebnpfgasiypmpdaaglujqm"> <ui-card>
<label> <div slot="title"><fa icon="palette"/> {{ $t('theme') }}</div>
<span><fa :icon="faSun"/> {{ $t('light-theme') }}</span> <section class="nicnklzforebnpfgasiypmpdaaglujqm fit-top">
<ui-select v-model="light" :placeholder="$t('light-theme')"> <label>
<optgroup :label="$t('light-themes')"> <ui-select v-model="light" :placeholder="$t('light-theme')">
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option> <span slot="label"><fa :icon="faSun"/> {{ $t('light-theme') }}</span>
</optgroup> <optgroup :label="$t('light-themes')">
<optgroup :label="$t('dark-themes')"> <option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option> </optgroup>
</optgroup> <optgroup :label="$t('dark-themes')">
</ui-select> <option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
</label> </optgroup>
</ui-select>
</label>
<label> <label>
<span><fa :icon="faMoon"/> {{ $t('dark-theme') }}</span> <ui-select v-model="dark" :placeholder="$t('dark-theme')">
<ui-select v-model="dark" :placeholder="$t('dark-theme')"> <span slot="label"><fa :icon="faMoon"/> {{ $t('dark-theme') }}</span>
<optgroup :label="$t('dark-themes')"> <optgroup :label="$t('dark-themes')">
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option> <option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup> </optgroup>
<optgroup :label="$t('light-themes')"> <optgroup :label="$t('light-themes')">
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option> <option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup> </optgroup>
</ui-select> </ui-select>
</label> </label>
<details class="creator"> <a href="https://assets.msky.cafe/theme/list" target="_blank">{{ $t('find-more-theme') }}</a>
<summary><fa icon="palette"/> {{ $t('create-a-theme') }}</summary>
<div>
<span>{{ $t('base-theme') }}:</span>
<ui-radio v-model="myThemeBase" value="light">{{ $t('base-theme-light') }}</ui-radio>
<ui-radio v-model="myThemeBase" value="dark">{{ $t('base-theme-dark') }}</ui-radio>
</div>
<div>
<ui-input v-model="myThemeName">
<span>{{ $t('theme-name') }}</span>
</ui-input>
<ui-textarea v-model="myThemeDesc">
<span>{{ $t('desc') }}</span>
</ui-textarea>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('primary-color') }}:</div>
<color-picker v-model="myThemePrimary"/>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('secondary-color') }}:</div>
<color-picker v-model="myThemeSecondary"/>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('text-color') }}:</div>
<color-picker v-model="myThemeText"/>
</div>
<ui-button @click="preview()"><fa icon="eye"/> {{ $t('preview-created-theme') }}</ui-button>
<ui-button primary @click="gen()"><fa :icon="['far', 'save']"/> {{ $t('save-created-theme') }}</ui-button>
</details>
<details> <details class="creator">
<summary><fa icon="download"/> {{ $t('install-a-theme') }}</summary> <summary><fa icon="palette"/> {{ $t('create-a-theme') }}</summary>
<ui-button @click="import_()"><fa icon="file-import"/> {{ $t('import') }}</ui-button> <div>
<input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/> <span>{{ $t('base-theme') }}:</span>
<p>{{ $t('import-by-code') }}:</p> <ui-radio v-model="myThemeBase" value="light">{{ $t('base-theme-light') }}</ui-radio>
<ui-textarea v-model="installThemeCode"> <ui-radio v-model="myThemeBase" value="dark">{{ $t('base-theme-dark') }}</ui-radio>
<span>{{ $t('theme-code') }}</span> </div>
</ui-textarea> <div>
<ui-button @click="() => install(this.installThemeCode)"><fa icon="check"/> {{ $t('install') }}</ui-button> <ui-input v-model="myThemeName">
</details> <span>{{ $t('theme-name') }}</span>
</ui-input>
<ui-textarea v-model="myThemeDesc">
<span>{{ $t('desc') }}</span>
</ui-textarea>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('primary-color') }}:</div>
<color-picker v-model="myThemePrimary"/>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('secondary-color') }}:</div>
<color-picker v-model="myThemeSecondary"/>
</div>
<div>
<div style="padding-bottom:8px;">{{ $t('text-color') }}:</div>
<color-picker v-model="myThemeText"/>
</div>
<ui-button @click="preview()"><fa icon="eye"/> {{ $t('preview-created-theme') }}</ui-button>
<ui-button primary @click="gen()"><fa :icon="['far', 'save']"/> {{ $t('save-created-theme') }}</ui-button>
</details>
<details> <details>
<summary><fa icon="folder-open"/> {{ $t('manage-themes') }}</summary> <summary><fa icon="download"/> {{ $t('install-a-theme') }}</summary>
<ui-select v-model="selectedThemeId" :placeholder="$t('select-theme')"> <ui-button @click="import_()"><fa icon="file-import"/> {{ $t('import') }}</ui-button>
<optgroup :label="$t('builtin-themes')"> <input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/>
<option v-for="x in builtinThemes" :value="x.id" :key="x.id">{{ x.name }}</option> <p>{{ $t('import-by-code') }}:</p>
</optgroup> <ui-textarea v-model="installThemeCode">
<optgroup :label="$t('my-themes')">
<option v-for="x in installedThemes.filter(t => t.author == this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
<optgroup :label="$t('installed-themes')">
<option v-for="x in installedThemes.filter(t => t.author != this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
</ui-select>
<template v-if="selectedTheme">
<ui-input readonly :value="selectedTheme.author">
<span>{{ $t('author') }}</span>
</ui-input>
<ui-textarea v-if="selectedTheme.desc" readonly :value="selectedTheme.desc">
<span>{{ $t('desc') }}</span>
</ui-textarea>
<ui-textarea readonly :value="selectedThemeCode">
<span>{{ $t('theme-code') }}</span> <span>{{ $t('theme-code') }}</span>
</ui-textarea> </ui-textarea>
<ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export"><fa icon="box"/> {{ $t('export') }}</ui-button> <ui-button @click="() => install(this.installThemeCode)"><fa icon="check"/> {{ $t('install') }}</ui-button>
<ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="['far', 'trash-alt']"/> {{ $t('uninstall') }}</ui-button> </details>
</template>
</details> <details>
</div> <summary><fa icon="folder-open"/> {{ $t('manage-themes') }}</summary>
<ui-select v-model="selectedThemeId" :placeholder="$t('select-theme')">
<optgroup :label="$t('builtin-themes')">
<option v-for="x in builtinThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
<optgroup :label="$t('my-themes')">
<option v-for="x in installedThemes.filter(t => t.author == this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
<optgroup :label="$t('installed-themes')">
<option v-for="x in installedThemes.filter(t => t.author != this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
</optgroup>
</ui-select>
<template v-if="selectedTheme">
<ui-input readonly :value="selectedTheme.author">
<span>{{ $t('author') }}</span>
</ui-input>
<ui-textarea v-if="selectedTheme.desc" readonly :value="selectedTheme.desc">
<span>{{ $t('desc') }}</span>
</ui-textarea>
<ui-textarea readonly tall :value="selectedThemeCode">
<span>{{ $t('theme-code') }}</span>
</ui-textarea>
<ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export"><fa icon="box"/> {{ $t('export') }}</ui-button>
<ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="['far', 'trash-alt']"/> {{ $t('uninstall') }}</ui-button>
</template>
</details>
</section>
</ui-card>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -331,8 +336,13 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.nicnklzforebnpfgasiypmpdaaglujqm .nicnklzforebnpfgasiypmpdaaglujqm
> a
display block
margin-top -16px
margin-bottom 16px
> details > details
border-top solid 1px var(--faceDivider) border-top solid var(--lineWidth) var(--faceDivider)
> summary > summary
padding 16px 0 padding 16px 0
@ -343,5 +353,5 @@ export default Vue.extend({
> .creator > .creator
> div > div
padding 16px 0 padding 16px 0
border-bottom solid 1px var(--faceDivider) border-bottom solid var(--lineWidth) var(--faceDivider)
</style> </style>

View File

@ -33,14 +33,7 @@ export default Vue.extend({
return typeof this.time == 'string' ? new Date(this.time) : this.time; return typeof this.time == 'string' ? new Date(this.time) : this.time;
}, },
absolute(): string { absolute(): string {
const time = this._time; return this._time.toLocaleString();
return (
time.getFullYear() + '年' +
(time.getMonth() + 1) + '月' +
time.getDate() + '日' +
' ' +
time.getHours() + '時' +
time.getMinutes() + '分');
}, },
relative(): string { relative(): string {
const time = this._time; const time = this._time;

View File

@ -1,7 +1,7 @@
<template> <template>
<component class="dmtdnykelhudezerjlfpbhgovrgnqqgr" <component class="dmtdnykelhudezerjlfpbhgovrgnqqgr"
:is="link ? 'a' : 'button'" :is="link ? 'a' : 'button'"
:class="[styl, { inline, primary }]" :class="{ inline, primary, wait }"
:type="type" :type="type"
@click="$emit('click')" @click="$emit('click')"
@mousedown="onMousedown" @mousedown="onMousedown"
@ -48,11 +48,11 @@ export default Vue.extend({
required: false, required: false,
default: false default: false
}, },
}, wait: {
data() { type: Boolean,
return { required: false,
styl: 'fill' default: false
}; },
}, },
mounted() { mounted() {
if (this.autofocus) { if (this.autofocus) {
@ -121,6 +121,24 @@ export default Vue.extend({
box-shadow none box-shadow none
text-decoration none text-decoration none
user-select none user-select none
color var(--text)
background var(--buttonBg)
&:not(:disabled):hover
background var(--buttonHoverBg)
&:not(:disabled):active
background var(--buttonActiveBg)
&.primary
color var(--primaryForeground)
background var(--primary)
&:not(:disabled):hover
background var(--primaryLighten5)
&:not(:disabled):active
background var(--primaryDarken5)
* *
pointer-events none pointer-events none
@ -152,35 +170,25 @@ export default Vue.extend({
&.primary &.primary
font-weight bold font-weight bold
&.fill &.wait
color var(--text) background linear-gradient(
background var(--buttonBg) 45deg,
var(--primaryDarken10) 25%,
var(--primary) 25%,
var(--primary) 50%,
var(--primaryDarken10) 50%,
var(--primaryDarken10) 75%,
var(--primary) 75%,
var(--primary)
)
background-size 32px 32px
animation stripe-bg 1.5s linear infinite
opacity 0.7
cursor wait
&:not(:disabled):hover @keyframes stripe-bg
background var(--buttonHoverBg) from {background-position: 0 0;}
to {background-position: -64px 32px;}
&:not(:disabled):active
background var(--buttonActiveBg)
&.primary
color var(--primaryForeground)
background var(--primary)
&:not(:disabled):hover
background var(--primaryLighten5)
&:not(:disabled):active
background var(--primaryDarken5)
&:not(.fill)
color var(--primary)
background none
&:not(:disabled):hover
color var(--primaryDarken5)
&:not(:disabled):active
background var(--primaryAlpha03)
> .ripples > .ripples
position absolute position absolute

View File

@ -41,7 +41,7 @@ export default Vue.extend({
> section > section
padding 20px 16px padding 20px 16px
border-top solid 1px var(--faceDivider) border-top solid var(--lineWidth) var(--faceDivider)
@media (min-width 500px) @media (min-width 500px)
padding 32px padding 32px

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="vnxwkwuf" :class="{ inputs, noGrow }"> <div class="vnxwkwuf" :class="{ inputs, noGrow }" :data-children-count="children">
<slot></slot> <slot></slot>
</div> </div>
</template> </template>
@ -21,6 +21,16 @@ export default Vue.extend({
required: false, required: false,
default: false default: false
} }
},
data() {
return {
children: 0
};
},
mounted() {
this.$nextTick(() => {
this.children = this.$slots.default.length;
});
} }
}); });
</script> </script>
@ -48,4 +58,19 @@ export default Vue.extend({
> *:not(:last-child) > *:not(:last-child)
margin-right 16px !important margin-right 16px !important
&[data-children-count="3"]
@media (max-width 600px)
display block
> *
display block
width 100% !important
margin 16px 0 !important
&:first-child
margin-top 0 !important
&:last-child
margin-bottom 0 !important
</style> </style>

View File

@ -6,6 +6,7 @@
<div class="value" ref="passwordMetar"></div> <div class="value" ref="passwordMetar"></div>
</div> </div>
<span class="label" ref="label"><slot></slot></span> <span class="label" ref="label"><slot></slot></span>
<span class="title" ref="title"><slot name="title"></slot></span>
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div> <div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
<template v-if="type != 'file'"> <template v-if="type != 'file'">
<input ref="input" <input ref="input"
@ -38,6 +39,12 @@
</template> </template>
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div> <div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
</div> </div>
<div class="toggle" v-if="withPasswordToggle">
<a @click='togglePassword'>
<span v-if="type == 'password'"><fa :icon="['fa', 'eye']"/> {{ $t('@.show-password') }}</span>
<span v-if="type != 'password'"><fa :icon="['far', 'eye-slash']"/> {{ $t('@.hide-password') }}</span>
</a>
</div>
<div class="desc"><slot name="desc"></slot></div> <div class="desc"><slot name="desc"></slot></div>
</div> </div>
</template> </template>
@ -96,6 +103,11 @@ export default Vue.extend({
required: false, required: false,
default: false default: false
}, },
withPasswordToggle: {
type: Boolean,
required: false,
default: false
},
inline: { inline: {
type: Boolean, type: Boolean,
required: false, required: false,
@ -177,6 +189,13 @@ export default Vue.extend({
focus() { focus() {
this.$refs.input.focus(); this.$refs.input.focus();
}, },
togglePassword() {
if (this.type == 'password') {
this.type = 'text'
} else {
this.type = 'password'
}
},
chooseFile() { chooseFile() {
this.$refs.file.click(); this.$refs.file.click();
}, },
@ -281,6 +300,20 @@ root(fill)
transform-origin top left transform-origin top left
transform scale(1) transform scale(1)
> .title
position absolute
z-index 1
top fill ? -24px : -17px
left 0 !important
pointer-events none
font-size 16px
line-height 32px
color var(--inputLabel)
pointer-events none
//will-change transform
transform-origin top left
transform scale(.75)
> input > input
display block display block
width 100% width 100%
@ -341,6 +374,17 @@ root(fill)
if fill if fill
padding-right 12px padding-right 12px
> .toggle
cursor pointer
padding-left 0.5em
font-size 0.7em
opacity 0.7
text-align left
> a
color var(--inputLabel)
text-decoration none
> .desc > .desc
margin 6px 0 margin 6px 0
font-size 13px font-size 13px

View File

@ -25,11 +25,9 @@ export default Vue.extend({
}, },
props: { props: {
model: { model: {
type: String,
required: false required: false
}, },
value: { value: {
type: String,
required: false required: false
}, },
disabled: { disabled: {
@ -66,10 +64,10 @@ export default Vue.extend({
&.checked &.checked
> .button > .button
border-color var(--primary) border-color var(--radioActive)
&:after &:after
background-color var(--primary) background-color var(--radioActive)
transform scale(1) transform scale(1)
opacity 1 opacity 1

View File

@ -77,11 +77,11 @@ export default Vue.extend({
&.checked &.checked
> .button > .button
background-color var(--primaryAlpha04) background-color var(--switchActiveTrack)
border-color var(--primaryAlpha04) border-color var(--switchActiveTrack)
> * > *
background-color var(--primary) background-color var(--switchActive)
transform translateX(14px) transform translateX(14px)
> input > input

View File

@ -8,16 +8,16 @@
</blockquote> </blockquote>
</div> </div>
<div v-else class="mk-url-preview"> <div v-else class="mk-url-preview">
<a :class="{ mini }" :href="url" target="_blank" :title="url" v-if="!fetching"> <a :class="{ mini, compact }" :href="url" target="_blank" :title="url" v-if="!fetching">
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div> <div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
<article> <article>
<header> <header>
<h1>{{ title }}</h1> <h1 :title="title">{{ title }}</h1>
</header> </header>
<p>{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p> <p v-if="description" :title="description">{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p>
<footer> <footer>
<img class="icon" v-if="icon" :src="icon"/> <img class="icon" v-if="icon" :src="icon"/>
<p>{{ sitename }}</p> <p :title="sitename">{{ sitename }}</p>
</footer> </footer>
</article> </article>
</a> </a>
@ -120,6 +120,12 @@ export default Vue.extend({
default: false default: false
}, },
compact: {
type: Boolean,
required: false,
default: false
},
mini: { mini: {
type: Boolean, type: Boolean,
required: false, required: false,
@ -170,6 +176,9 @@ export default Vue.extend({
return; return;
} }
if (url.hostname === 'music.youtube.com')
url.hostname = 'youtube.com';
fetch(`/url?url=${encodeURIComponent(this.url)}`).then(res => { fetch(`/url?url=${encodeURIComponent(this.url)}`).then(res => {
res.json().then(info => { res.json().then(info => {
if (info.url == null) return; if (info.url == null) return;
@ -204,7 +213,7 @@ export default Vue.extend({
> a > a
display block display block
font-size 14px font-size 14px
border solid 1px var(--urlPreviewBorder) border solid var(--lineWidth) var(--urlPreviewBorder)
border-radius 4px border-radius 4px
overflow hidden overflow hidden
@ -299,6 +308,23 @@ export default Vue.extend({
width 12px width 12px
height 12px height 12px
&.compact
> .thumbnail
position: absolute
width 56px
height 100%
> article
left 56px
width calc(100% - 56px)
padding 4px
> header
margin-bottom 2px
> footer
margin-top 2px
&.mini &.mini
font-size 10px font-size 10px
@ -322,4 +348,27 @@ export default Vue.extend({
width 12px width 12px
height 12px height 12px
&.compact
> .thumbnail
position: absolute
width 56px
height 100%
> article
left 56px
width calc(100% - 56px)
padding 4px
> header
margin-bottom 2px
> footer
margin-top 2px
&.compact
> article
> header h1, p, footer
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
</style> </style>

View File

@ -0,0 +1,150 @@
<template>
<div class="cudqjmnl">
<ui-card>
<div slot="title"><fa :icon="faList"/> {{ list.title }}</div>
<section>
<ui-button @click="rename"><fa :icon="faICursor"/> {{ $t('rename') }}</ui-button>
<ui-button @click="del"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="faUsers"/> {{ $t('users') }}</div>
<section>
<sequential-entrance animation="entranceFromTop" delay="25">
<div class="phcqulfl" v-for="user in users">
<div>
<a :href="user | userPage">
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
</a>
</div>
<div>
<header>
<b><mk-user-name :user="user"/></b>
<span class="username">@{{ user | acct }}</span>
</header>
<div>
<a @click="remove(user)">{{ $t('remove-user') }}</a>
</div>
</div>
</div>
</sequential-entrance>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { faList, faICursor, faUsers } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('common/views/components/user-list-editor.vue'),
props: {
list: {
required: true
}
},
data() {
return {
users: [],
faList, faICursor, faTrashAlt, faUsers
};
},
mounted() {
this.fetchUsers();
},
methods: {
fetchUsers() {
this.$root.api('users/show', {
userIds: this.list.userIds
}).then(users => {
this.users = users;
});
},
rename() {
this.$root.dialog({
title: this.$t('rename'),
input: {
default: this.list.title
}
}).then(({ canceled, result: title }) => {
if (canceled) return;
this.$root.api('users/lists/update', {
listId: this.list.id,
title: title
});
});
},
del() {
this.$root.dialog({
type: 'warning',
text: this.$t('delete-are-you-sure').replace('$1', this.list.title),
showCancelButton: true
}).then(({ canceled }) => {
if (canceled) return;
this.$root.api('users/lists/delete', {
listId: this.list.id
}).then(() => {
this.$root.dialog({
type: 'success',
text: this.$t('deleted')
});
}).catch(e => {
this.$root.dialog({
type: 'error',
text: e
});
});
});
},
remove(user: any) {
this.$root.api('users/lists/pull', {
listId: this.list.id,
userId: user.id
}).then(() => {
this.fetchUsers();
});
}
}
});
</script>
<style lang="stylus" scoped>
.cudqjmnl
.phcqulfl
display flex
padding 16px 0
border-top solid 1px var(--faceDivider)
> div:first-child
> a
> .avatar
width 64px
height 64px
> div:last-child
flex 1
padding-left 16px
@media (max-width 500px)
font-size 14px
> header
> .username
margin-left 8px
opacity 0.7
</style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="mk-visibility-chooser"> <div class="gqyayizv">
<div class="backdrop" ref="backdrop" @click="close"></div> <div class="backdrop" ref="backdrop" @click="close"></div>
<div class="popover" :class="{ compact }" ref="popover"> <div class="popover" :class="{ isMobile: $root.isMobile }" ref="popover">
<div @click="choose('public')" :class="{ active: v == 'public' }"> <div @click="choose('public')" :class="{ active: v == 'public' }">
<div><fa icon="globe"/></div> <div><fa icon="globe"/></div>
<div> <div>
@ -29,12 +29,6 @@
<span>{{ $t('specified-desc') }}</span> <span>{{ $t('specified-desc') }}</span>
</div> </div>
</div> </div>
<div @click="choose('private')" :class="{ active: v == 'private' }">
<div><fa icon="lock"/></div>
<div>
<span>{{ $t('private') }}</span>
</div>
</div>
<div @click="choose('local-public')" :class="{ active: v == 'local-public' }"> <div @click="choose('local-public')" :class="{ active: v == 'local-public' }">
<div><fa icon="globe"/></div> <div><fa icon="globe"/></div>
<div> <div>
@ -65,10 +59,18 @@ import * as anime from 'animejs';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/visibility-chooser.vue'), i18n: i18n('common/views/components/visibility-chooser.vue'),
props: ['source', 'compact'], props: {
source: {
required: true
},
currentVisibility: {
type: String,
required: false
}
},
data() { data() {
return { return {
v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : (this.currentVisibility || this.$store.state.settings.defaultNoteVisibility)
} }
}, },
mounted() { mounted() {
@ -82,7 +84,7 @@ export default Vue.extend({
let left; let left;
let top; let top;
if (this.compact) { if (this.$root.isMobile) {
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2); const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2); const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
left = (x - (width / 2)); left = (x - (width / 2));
@ -148,9 +150,7 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
$border-color = rgba(27, 31, 35, 0.15) .gqyayizv
.mk-visibility-chooser
position initial position initial
> .backdrop > .backdrop
@ -170,39 +170,27 @@ $border-color = rgba(27, 31, 35, 0.15)
width 240px width 240px
padding 8px 0 padding 8px 0
background $bgcolor background $bgcolor
border 1px solid $border-color
border-radius 4px border-radius 4px
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15) box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
transform scale(0.5) transform scale(0.5)
opacity 0 opacity 0
$balloon-size = 10px &:not(.isMobile)
$arrow-size = 10px
&:not(.compact) margin-top $arrow-size
margin-top $balloon-size transform-origin center -($arrow-size)
transform-origin center -($balloon-size)
&:before &:before
content "" content ""
display block display block
position absolute position absolute
top -($balloon-size * 2) top -($arrow-size * 2)
left s('calc(50% - %s)', $balloon-size) left s('calc(50% - %s)', $arrow-size)
border-top solid $balloon-size transparent border-top solid $arrow-size transparent
border-left solid $balloon-size transparent border-left solid $arrow-size transparent
border-right solid $balloon-size transparent border-right solid $arrow-size transparent
border-bottom solid $balloon-size $border-color border-bottom solid $arrow-size $bgcolor
&:after
content ""
display block
position absolute
top -($balloon-size * 2) + 1.5px
left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent
border-left solid $balloon-size transparent
border-right solid $balloon-size transparent
border-bottom solid $balloon-size $bgcolor
> div > div
display flex display flex
@ -241,4 +229,5 @@ $border-color = rgba(27, 31, 35, 0.15)
> span:last-child:not(:first-child) > span:last-child:not(:first-child)
opacity 0.6 opacity 0.6
</style> </style>

View File

@ -16,7 +16,7 @@
</div> </div>
</header> </header>
<div class="text"> <div class="text">
<misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :custom-emojis="note.emojis"/> <misskey-flavored-markdown v-if="note.text" :text="note.cw != null ? note.cw : note.text" :author="note.user" :custom-emojis="note.emojis"/>
</div> </div>
</div> </div>
</div> </div>

View File

@ -21,21 +21,24 @@ class Autocomplete {
private suggestion: any; private suggestion: any;
private textarea: any; private textarea: any;
private vm: any; private vm: any;
private model: any;
private currentType: string; private currentType: string;
private opts: {
model: string;
};
private opening: boolean;
private get text(): string { private get text(): string {
return this.vm[this.model]; return this.vm[this.opts.model];
} }
private set text(text: string) { private set text(text: string) {
this.vm[this.model] = text; this.vm[this.opts.model] = text;
} }
/** /**
* 対象のテキストエリアを与えてインスタンスを初期化します。 * 対象のテキストエリアを与えてインスタンスを初期化します。
*/ */
constructor(textarea, vm, model) { constructor(textarea, vm, opts) {
//#region BIND //#region BIND
this.onInput = this.onInput.bind(this); this.onInput = this.onInput.bind(this);
this.complete = this.complete.bind(this); this.complete = this.complete.bind(this);
@ -45,7 +48,8 @@ class Autocomplete {
this.suggestion = null; this.suggestion = null;
this.textarea = textarea; this.textarea = textarea;
this.vm = vm; this.vm = vm;
this.model = model; this.opts = opts;
this.opening = false;
} }
/** /**
@ -126,6 +130,8 @@ class Autocomplete {
if (type != this.currentType) { if (type != this.currentType) {
this.close(); this.close();
} }
if (this.opening) return;
this.opening = true;
this.currentType = type; this.currentType = type;
//#region サジェストを表示すべき位置を計算 //#region サジェストを表示すべき位置を計算
@ -141,6 +147,8 @@ class Autocomplete {
this.suggestion.x = x; this.suggestion.x = x;
this.suggestion.y = y; this.suggestion.y = y;
this.suggestion.q = q; this.suggestion.q = q;
this.opening = false;
} else { } else {
const MkAutocomplete = await import('../components/autocomplete.vue').then(m => m.default); const MkAutocomplete = await import('../components/autocomplete.vue').then(m => m.default);
@ -160,6 +168,8 @@ class Autocomplete {
// 要素追加 // 要素追加
document.body.appendChild(this.suggestion.$el); document.body.appendChild(this.suggestion.$el);
this.opening = false;
} }
} }

View File

@ -1,5 +1,7 @@
import Vue from 'vue'; import Vue from 'vue';
import autocomplete from './autocomplete'; import autocomplete from './autocomplete';
import particle from './particle';
Vue.directive('autocomplete', autocomplete); Vue.directive('autocomplete', autocomplete);
Vue.directive('particle', particle);

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