Compare commits

...

529 Commits

Author SHA1 Message Date
163cf49f16 10.60.0 2018-12-02 15:39:46 +09:00
c38a32dee9 🎨 2018-12-02 15:31:24 +09:00
4f5abed70d Fix 2018-12-02 15:30:48 +09:00
c9ac9923df Refactor: rename alert to dialog 2018-12-02 15:28:52 +09:00
bb14895fd8 [Client] Resolve #2225 2018-12-02 15:26:56 +09:00
6f92d601ec 🎨 2018-12-02 14:26:30 +09:00
345143b0c1 Suggest in CW (#3467) 2018-12-02 07:33:03 +09:00
dc80d5d376 10.59.4 2018-12-02 07:08:26 +09:00
d3544f9637 Update README.md [AUTOGEN] (#3466) 2018-12-02 07:05:22 +09:00
864b6ad1bd Resolve #1826 2018-12-02 07:02:08 +09:00
c58027e521 [MFM] Better hashtag detection 2018-12-02 06:53:57 +09:00
10fb399588 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-02 06:44:25 +09:00
10f466c895 Improve performance 2018-12-02 06:44:18 +09:00
32068b4bcc Update README.md [AUTOGEN] (#3465) 2018-12-02 06:16:24 +09:00
8bc5febe66 [Client] Add missing icon (#3464) 2018-12-02 03:43:05 +09:00
20335e23f9 Resolve external recommended users (#3462)
* Resolve external recommended users

* Skip unresolvable users

* Fix indent

* Use original for unresolvable users
2018-12-02 03:42:45 +09:00
fe707f88a4 [MFM] Better MFM parsing 2018-12-01 10:40:09 +09:00
9b23ebd4a3 🎨 2018-12-01 09:45:48 +09:00
bea450cc2c 10.59.3 2018-12-01 08:00:25 +09:00
e80709f7aa Disable update notification 2018-12-01 07:59:15 +09:00
cb71f92f42 [ImgBot] Optimize images (#3455)
*Total -- 1,383.25kb -> 1,231.27kb (10.99%)

/assets/apple-touch-icon.png -- 4.72kb -> 2.51kb (46.79%)
/assets/icons/256.png -- 4.72kb -> 2.51kb (46.79%)
/assets/title.png -- 6.63kb -> 3.80kb (42.73%)
/assets/favicon/favicon.png -- 6.83kb -> 3.93kb (42.45%)
/assets/icons/192.png -- 3.49kb -> 2.02kb (42.08%)
/assets/icons/128.png -- 2.29kb -> 1.50kb (34.81%)
/assets/about/ui.png -- 125.21kb -> 94.85kb (24.25%)
/assets/ai-orig.png -- 255.55kb -> 199.67kb (21.86%)
/assets/icons/64.png -- 1.21kb -> 0.99kb (18.34%)
/assets/about/drive.png -- 110.33kb -> 94.20kb (14.62%)
/assets/about/post.png -- 344.52kb -> 316.57kb (8.11%)
/assets/ai.png -- 243.43kb -> 234.93kb (3.49%)
/src/client/assets/pointer.png -- 274.33kb -> 273.80kb (0.19%)
2018-12-01 07:55:34 +09:00
2ca5348560 Fix "Mi"/"Misskey" logos (#3400)
* Fix mi.svg

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload
2018-12-01 07:52:15 +09:00
c8e98fdf8e Update vue-js-modal requirement from 1.3.26 to 1.3.27 (#3425)
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)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-01 07:44:30 +09:00
0bfa041026 Merge pull request #3435 from syuilo/l10n_develop
New Crowdin translations
2018-12-01 07:20:03 +09:00
33bf474a1e Update @types/file-type requirement from 5.2.1 to 5.2.2 (#3450)
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-01 07:19:39 +09:00
53c559c001 Allow hyphens in the middle of remote usernames (#3440)
* Allow hyphens in the middle of remote usernames

refs: d797c29db462de4a3d69a5077a1ae4d03195b6f2

* Make options fallback better

* Make options flat
2018-12-01 07:19:17 +09:00
1c99ef454b Update webpack requirement from 4.26.0 to 4.26.1 (#3453)
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.26.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-01 07:16:53 +09:00
cf4cecd4df Fix media video (#3452)
* Fix: Always show nsfw

* [Client] Add missing video play icon
2018-12-01 07:16:28 +09:00
6a8835b923 Exclude remote user or myself from talk user suggestions (#3449) 2018-12-01 07:15:55 +09:00
f2b1cf92e1 AP CW (#3448) 2018-12-01 07:15:10 +09:00
6b79618e74 New translations ja-JP.yml (Polish) 2018-12-01 02:22:34 +09:00
3db414add4 Use for-of instead of map
return values are not being used
2018-11-30 23:30:28 +09:00
9ef641b403 Remove consecutive blank line 2018-11-30 23:07:21 +09:00
6fa7819a44 Fix #3442 (#3443) 2018-11-30 18:13:55 +09:00
59a1b9adbe Trim notifications text (#3438)
* Trim notifications

* Remove needless colons

* Use single quote

* 🎨
2018-11-30 09:34:37 +09:00
3fbc7094f6 New translations ja-JP.yml (Korean) 2018-11-30 07:52:03 +09:00
56c6227bc2 New translations ja-JP.yml (English) 2018-11-30 05:02:18 +09:00
ee82f99f5a Better limit 2018-11-30 00:45:02 +09:00
72d9a46156 10.59.2 2018-11-30 00:36:02 +09:00
683a85ecc0 Fix SMTP (#3436) 2018-11-30 00:35:17 +09:00
89047fd66d 10.59.1 2018-11-30 00:15:02 +09:00
789de130a2 New translations ja-JP.yml (Norwegian) 2018-11-30 00:14:31 +09:00
46c026ce70 New translations ja-JP.yml (Dutch) 2018-11-30 00:14:24 +09:00
82290f6e4e New translations ja-JP.yml (Japanese, Kansai) 2018-11-30 00:14:17 +09:00
8729525f95 New translations ja-JP.yml (Spanish) 2018-11-30 00:14:09 +09:00
df0115ffe8 New translations ja-JP.yml (Russian) 2018-11-30 00:14:04 +09:00
0275b4fc9e New translations ja-JP.yml (Portuguese) 2018-11-30 00:13:57 +09:00
9982fd71ba New translations ja-JP.yml (Polish) 2018-11-30 00:13:49 +09:00
081060b7db New translations ja-JP.yml (Korean) 2018-11-30 00:13:45 +09:00
0de64f1fc7 New translations ja-JP.yml (Italian) 2018-11-30 00:13:37 +09:00
f0508c0a90 New translations ja-JP.yml (German) 2018-11-30 00:13:32 +09:00
b51ae1dfaa New translations ja-JP.yml (French) 2018-11-30 00:13:24 +09:00
6e7233d41b New translations ja-JP.yml (English) 2018-11-30 00:13:19 +09:00
8ca27a4480 Fix #3432 2018-11-30 00:13:13 +09:00
418041a56e New translations ja-JP.yml (Chinese Simplified) 2018-11-30 00:13:13 +09:00
17d20f5a18 New translations ja-JP.yml (Catalan) 2018-11-30 00:13:07 +09:00
77d2d84e05 Fix #3434 2018-11-30 00:04:28 +09:00
3bde4285eb Fix SMTP (#3433)
* Fix: SMTP local relay

* Fix SMTP SSL description

* ✌️
2018-11-30 00:03:28 +09:00
15efbfb244 Fix #3430 2018-11-29 22:05:11 +09:00
55a57db958 Show current selected language (#3429) 2018-11-29 21:56:53 +09:00
91f624c900 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-29 20:40:03 +09:00
d753489e49 10.59.0 2018-11-29 20:39:56 +09:00
36dd7c82db Merge pull request #3394 from syuilo/l10n_develop
New Crowdin translations
2018-11-29 20:38:43 +09:00
b00db74216 Add korean 2018-11-29 20:38:19 +09:00
cf9f85eb2a メールサーバーの設定がオフの場合はメール設定を表示しないように 2018-11-29 20:33:31 +09:00
bfa8414289 New translations ja-JP.yml (English) 2018-11-29 20:32:43 +09:00
58dc9c9544 New translations ja-JP.yml (Norwegian) 2018-11-29 20:24:05 +09:00
ba95ce18a8 New translations ja-JP.yml (Dutch) 2018-11-29 20:23:58 +09:00
ac10c40f31 New translations ja-JP.yml (Japanese, Kansai) 2018-11-29 20:23:51 +09:00
de8b40c80f New translations ja-JP.yml (Spanish) 2018-11-29 20:23:45 +09:00
60fe69728d New translations ja-JP.yml (Russian) 2018-11-29 20:23:39 +09:00
557607e842 New translations ja-JP.yml (Portuguese) 2018-11-29 20:23:34 +09:00
40ac9de728 New translations ja-JP.yml (Polish) 2018-11-29 20:23:26 +09:00
a725cd1946 New translations ja-JP.yml (Korean) 2018-11-29 20:23:21 +09:00
b648706756 New translations ja-JP.yml (Italian) 2018-11-29 20:23:15 +09:00
20f2e9fc6d New translations ja-JP.yml (German) 2018-11-29 20:23:10 +09:00
858ced0a53 New translations ja-JP.yml (French) 2018-11-29 20:23:04 +09:00
c9ca8f777f New translations ja-JP.yml (English) 2018-11-29 20:22:57 +09:00
0d0be31527 New translations ja-JP.yml (Chinese Simplified) 2018-11-29 20:22:52 +09:00
96305a088c New translations ja-JP.yml (Catalan) 2018-11-29 20:22:47 +09:00
22e30b44b9 Make require password to update email 2018-11-29 20:19:02 +09:00
48d0e2fa5f [MFM] Improve hashtag detection 2018-11-29 20:12:37 +09:00
0489291815 Refactor 2018-11-29 20:09:41 +09:00
7a412500e1 [Client] Fix #3427 2018-11-29 20:07:31 +09:00
dffaa72a88 New translations ja-JP.yml (Norwegian) 2018-11-29 16:34:41 +09:00
152d61f906 New translations ja-JP.yml (Dutch) 2018-11-29 16:34:29 +09:00
b44ded5fc9 New translations ja-JP.yml (Japanese, Kansai) 2018-11-29 16:34:21 +09:00
99d77cc843 New translations ja-JP.yml (Spanish) 2018-11-29 16:34:11 +09:00
bc385eec2d New translations ja-JP.yml (Russian) 2018-11-29 16:33:58 +09:00
2c6b9403b3 New translations ja-JP.yml (Portuguese) 2018-11-29 16:33:46 +09:00
89cdc59fe5 New translations ja-JP.yml (Polish) 2018-11-29 16:33:35 +09:00
3e04e1ccea New translations ja-JP.yml (Korean) 2018-11-29 16:33:27 +09:00
25f491a65f New translations ja-JP.yml (Italian) 2018-11-29 16:33:17 +09:00
7fdde157e0 New translations ja-JP.yml (German) 2018-11-29 16:33:10 +09:00
27f30a449a New translations ja-JP.yml (French) 2018-11-29 16:33:02 +09:00
dc66a0cd66 New translations ja-JP.yml (English) 2018-11-29 16:32:54 +09:00
f302ecd1e2 New translations ja-JP.yml (Chinese Simplified) 2018-11-29 16:32:46 +09:00
1afc2a227a New translations ja-JP.yml (Catalan) 2018-11-29 16:32:38 +09:00
ab594d1dfe Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-29 16:24:05 +09:00
647d32f506 🎨 2018-11-29 16:24:02 +09:00
1bc109b42c Implement email config 2018-11-29 16:23:45 +09:00
6e02e2a6b3 New translations ja-JP.yml (Norwegian) 2018-11-29 11:14:35 +09:00
3372baad6c New translations ja-JP.yml (Dutch) 2018-11-29 11:14:26 +09:00
e9b3e3877a New translations ja-JP.yml (Japanese, Kansai) 2018-11-29 11:14:16 +09:00
c84c5fbae7 New translations ja-JP.yml (Spanish) 2018-11-29 11:14:08 +09:00
2e7ab91f48 New translations ja-JP.yml (Russian) 2018-11-29 11:13:59 +09:00
92c41c003a New translations ja-JP.yml (Portuguese) 2018-11-29 11:13:51 +09:00
53688cdcdc New translations ja-JP.yml (Polish) 2018-11-29 11:13:44 +09:00
70f864ea8b New translations ja-JP.yml (Korean) 2018-11-29 11:13:34 +09:00
5dd94e551a New translations ja-JP.yml (Italian) 2018-11-29 11:13:26 +09:00
afc1ed9897 New translations ja-JP.yml (German) 2018-11-29 11:13:19 +09:00
df7562f98d New translations ja-JP.yml (French) 2018-11-29 11:13:10 +09:00
1c7e799164 New translations ja-JP.yml (English) 2018-11-29 11:13:02 +09:00
107a3f99f4 New translations ja-JP.yml (Chinese Simplified) 2018-11-29 11:12:54 +09:00
7e3cf4b4ad New translations ja-JP.yml (Catalan) 2018-11-29 11:12:45 +09:00
afdb23ff57 Feature / Configurable web search engine (#3406)
* configurable web search engine

* add webSearchEngine config in mobile ui

* add webSearchEngine config in desktop ui

* add webSearchEngine config

* add messages for web search engine config

* correct locale
2018-11-29 11:05:17 +09:00
0ce64f8c33 10.58.2 2018-11-29 06:34:07 +09:00
2cd6ccb85c Fix test 2018-11-29 06:33:23 +09:00
3dcf5374c2 Mark chart apis as stable 2018-11-29 06:06:07 +09:00
1c7d5f3f64 Update ts-loader requirement from 5.3.0 to 5.3.1 (#3426)
Updates the requirements on [ts-loader](https://github.com/TypeStrong/ts-loader) to permit the latest version.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/commits/v5.3.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-29 05:31:41 +09:00
bb0cb0a866 Fix bad style in deck column options and other things (#3412)
* Fix wrong text color in empty timeline (#3268)

* Whoops

* Fix wrong text color in deck options (#3268)

* Some padding to make it look less ugly

* Fix wrong text color in user lists menu (#3268)

* Fix wrong text color of footer on welcome screen (mobile) (#3268)

* Fix misalignment of icons and text in menu (mobile) (#3289)

* Fix wrong text color in empty timeline (mobile) (#3268)
2018-11-29 05:02:35 +09:00
362dc29057 Update profile-editor.vue (#3424) 2018-11-29 04:54:36 +09:00
8af0218e4c ✌️🤔✌️ 2018-11-28 18:57:22 +09:00
09af9968b5 🎨 2018-11-28 16:29:18 +09:00
7d0b819c5a Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-28 16:19:09 +09:00
4bbb7eded3 Cookieを使わないように 2018-11-28 16:19:02 +09:00
72ea9e5522 Update systeminformation requirement from 3.49.3 to 3.51.3 (#3419)
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-11-28 16:01:16 +09:00
743e5d947d Update autobind-decorator requirement from 2.2.1 to 2.3.1 (#3418)
Updates the requirements on [autobind-decorator](https://github.com/andreypopp/autobind-decorator) to permit the latest version.
- [Release notes](https://github.com/andreypopp/autobind-decorator/releases)
- [Changelog](https://github.com/andreypopp/autobind-decorator/blob/master/CHANGELOG.md)
- [Commits](https://github.com/andreypopp/autobind-decorator/commits/v2.3.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-28 16:00:58 +09:00
f257853906 Update signin.ts 2018-11-28 05:27:34 +09:00
32983d3829 New translations ja-JP.yml (Polish) 2018-11-28 04:42:11 +09:00
bdef33e88d Add theme_color and 512x512 icon to app manifest (#3417)
As per Chrome Lighthouse PWA suggestions.
2018-11-28 04:38:50 +09:00
a4a4194586 New translations ja-JP.yml (Polish) 2018-11-28 04:32:18 +09:00
e36c538dc0 New translations ja-JP.yml (Polish) 2018-11-28 04:22:13 +09:00
982a218bf2 New translations ja-JP.yml (Chinese Simplified) 2018-11-27 21:04:16 +09:00
f7aeca4c7c New translations ja-JP.yml (Korean) 2018-11-27 20:08:23 +09:00
4b81bc864f New translations ja-JP.yml (Korean) 2018-11-27 19:59:43 +09:00
a52cc62c04 New translations ja-JP.yml (Korean) 2018-11-27 19:42:47 +09:00
81f69bff9e New translations ja-JP.yml (Korean) 2018-11-27 19:33:25 +09:00
d9b2aa1880 New translations ja-JP.yml (Korean) 2018-11-27 19:13:03 +09:00
3bddd986a0 New translations ja-JP.yml (Korean) 2018-11-27 18:57:30 +09:00
d00712d817 New translations ja-JP.yml (Korean) 2018-11-27 18:43:54 +09:00
d756fdbebf New translations ja-JP.yml (Russian) 2018-11-27 17:00:13 +09:00
b2f2c74605 New translations ja-JP.yml (Russian) 2018-11-27 16:53:36 +09:00
1407cd71b5 New translations ja-JP.yml (Russian) 2018-11-27 16:32:45 +09:00
3dd3a7238d New translations ja-JP.yml (Russian) 2018-11-27 16:22:11 +09:00
afc834ae4b New translations ja-JP.yml (Russian) 2018-11-27 16:12:28 +09:00
357f190ce3 New translations ja-JP.yml (Russian) 2018-11-27 16:02:30 +09:00
ab92762320 Update webfinger.js requirement from 2.6.6 to 2.7.0 (#3414)
Updates the requirements on [webfinger.js](https://github.com/silverbucket/webfinger.js) to permit the latest version.
- [Release notes](https://github.com/silverbucket/webfinger.js/releases)
- [Changelog](https://github.com/silverbucket/webfinger.js/blob/master/RELEASE_CHECKLIST)
- [Commits](https://github.com/silverbucket/webfinger.js/commits/v2.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-27 15:49:50 +09:00
04942c8477 Update README.md [AUTOGEN] (#3415) 2018-11-27 15:49:39 +09:00
9c60f51e0d New translations ja-JP.yml (Russian) 2018-11-27 15:42:01 +09:00
956ae2ac46 New translations ja-JP.yml (Korean) 2018-11-27 13:01:57 +09:00
f2ed813337 New translations ja-JP.yml (Korean) 2018-11-27 12:52:16 +09:00
7d9a7d1a3c New translations ja-JP.yml (Korean) 2018-11-27 12:42:09 +09:00
2f67b6fb47 New translations ja-JP.yml (Korean) 2018-11-27 12:31:55 +09:00
7444dde93e New translations ja-JP.yml (Korean) 2018-11-27 12:22:14 +09:00
e62fad7bc6 Update README.md [AUTOGEN] (#3413) 2018-11-27 03:08:08 +09:00
2c6bad2501 [MFM] Improve hashtag detection 2018-11-27 02:08:51 +09:00
6952bb2eca New translations ja-JP.yml (Norwegian) 2018-11-27 01:26:59 +09:00
610972dbde New translations ja-JP.yml (Dutch) 2018-11-27 01:26:54 +09:00
926049055a New translations ja-JP.yml (Japanese, Kansai) 2018-11-27 01:26:49 +09:00
db5f6b60df New translations ja-JP.yml (Spanish) 2018-11-27 01:26:44 +09:00
7be7b9d9fd New translations ja-JP.yml (Russian) 2018-11-27 01:26:39 +09:00
366855c4cc New translations ja-JP.yml (Portuguese) 2018-11-27 01:26:35 +09:00
e950beeeab New translations ja-JP.yml (Polish) 2018-11-27 01:26:28 +09:00
5515b39f6c New translations ja-JP.yml (Korean) 2018-11-27 01:26:23 +09:00
f5d0599e4d New translations ja-JP.yml (Italian) 2018-11-27 01:26:17 +09:00
8fd7914f0f New translations ja-JP.yml (German) 2018-11-27 01:26:13 +09:00
24ef98eb01 10.58.1 2018-11-27 01:26:07 +09:00
b3dd6cf001 New translations ja-JP.yml (French) 2018-11-27 01:26:07 +09:00
6d4b474cb1 New translations ja-JP.yml (English) 2018-11-27 01:26:03 +09:00
0a8876a3ae New translations ja-JP.yml (Chinese Simplified) 2018-11-27 01:25:59 +09:00
9a83a48331 New translations ja-JP.yml (Catalan) 2018-11-27 01:25:54 +09:00
7ed50b90bd [Client] Resolve #3323 2018-11-27 01:21:16 +09:00
b6fd5d7282 No caching /api/ (#3411) 2018-11-27 01:16:25 +09:00
33243e7176 Fix #3409 (#3410)
* Update Dockerfile

* Update Dockerfile
2018-11-27 00:32:56 +09:00
e8439679a5 Add yarn.lock to .gitignore (#3408) 2018-11-26 21:55:16 +09:00
06124dbbd5 Return 404 for undefined .well-known (#3404) 2018-11-26 04:49:24 +09:00
857940f402 10.58.0 2018-11-26 04:33:39 +09:00
bcb04924ff Image for web publish (#3402)
* Image for Web

* Add comment

* Make main to original
2018-11-26 04:25:48 +09:00
2b6aeb9ebc New translations ja-JP.yml (Korean) 2018-11-25 18:55:39 +09:00
648e4538fb New translations ja-JP.yml (Korean) 2018-11-25 18:41:57 +09:00
cd4b3777da New translations ja-JP.yml (Korean) 2018-11-25 18:31:44 +09:00
4acf506b7e New translations ja-JP.yml (Korean) 2018-11-25 18:22:00 +09:00
543ca348bc New translations ja-JP.yml (Korean) 2018-11-25 18:11:50 +09:00
03375412f1 New translations ja-JP.yml (Korean) 2018-11-25 18:01:59 +09:00
0c7a9b6827 New translations ja-JP.yml (Korean) 2018-11-25 17:52:07 +09:00
c54bc3c176 New translations ja-JP.yml (Korean) 2018-11-25 17:42:22 +09:00
90973bedf4 New translations ja-JP.yml (Korean) 2018-11-25 17:32:03 +09:00
757f70162e New translations ja-JP.yml (Korean) 2018-11-25 17:21:56 +09:00
3047410b35 New translations ja-JP.yml (Korean) 2018-11-25 17:11:58 +09:00
9d0d4c5eae New translations ja-JP.yml (Korean) 2018-11-25 16:41:50 +09:00
cab5b4d601 New translations ja-JP.yml (Korean) 2018-11-25 16:31:55 +09:00
517b6e25d9 New translations ja-JP.yml (Korean) 2018-11-25 16:21:57 +09:00
94d394c29e New translations ja-JP.yml (Korean) 2018-11-25 16:11:51 +09:00
a52099d175 New translations ja-JP.yml (Korean) 2018-11-25 16:01:56 +09:00
f1cb7b862d New translations ja-JP.yml (Korean) 2018-11-25 15:51:50 +09:00
0863e5d379 🎨 2018-11-25 13:47:42 +09:00
55dcd25df1 Improve MFM 2018-11-25 13:36:52 +09:00
f3155ea180 [MFM] Add center syntax
Resolve #1775
2018-11-25 13:36:40 +09:00
2c5162671c Improve MFM 2018-11-25 13:23:18 +09:00
fc8aeb5a66 [Client] Fix bug 2018-11-25 13:21:47 +09:00
995cf503eb Add MFM test 2018-11-25 13:21:39 +09:00
0e49c11a4c Refactoring 2018-11-25 13:19:33 +09:00
0367c37b0a 10.57.3 2018-11-25 05:17:45 +09:00
e0b9fe5e5d 🎨 2018-11-25 05:16:39 +09:00
a4726e683b 🎨 2018-11-25 05:10:48 +09:00
3b10e93efe [MFM] Better hashtag parsing 2018-11-25 04:44:42 +09:00
02b07c1b5b Update note-mixin.ts 2018-11-25 04:30:32 +09:00
5e54751bd4 Refactor 2018-11-25 04:26:07 +09:00
34f1dc238d New translations ja-JP.yml (Korean) 2018-11-25 02:21:48 +09:00
3c0f4bdf35 New translations ja-JP.yml (Korean) 2018-11-25 02:11:52 +09:00
a68d370ad0 New translations ja-JP.yml (Korean) 2018-11-25 02:01:52 +09:00
debb27ed30 New translations ja-JP.yml (Korean) 2018-11-25 01:52:36 +09:00
97fbb857fb New translations ja-JP.yml (Korean) 2018-11-25 01:41:56 +09:00
93f13ffc8e Fix: url-preview (#3397) 2018-11-25 01:39:22 +09:00
4d9dc93d46 New translations ja-JP.yml (Korean) 2018-11-25 01:32:05 +09:00
22cd4c5d16 New translations ja-JP.yml (Korean) 2018-11-25 01:22:01 +09:00
6883994b22 New translations ja-JP.yml (Korean) 2018-11-25 00:42:19 +09:00
852a312753 New translations ja-JP.yml (Korean) 2018-11-25 00:32:57 +09:00
afea0baaa8 New translations ja-JP.yml (Korean) 2018-11-25 00:22:08 +09:00
2c477660a0 New translations ja-JP.yml (Korean) 2018-11-25 00:12:06 +09:00
16a1cd3c9d New translations ja-JP.yml (Korean) 2018-11-25 00:02:20 +09:00
db23dd2e01 New translations ja-JP.yml (Korean) 2018-11-24 23:51:44 +09:00
eaa1ded5ba New translations ja-JP.yml (Korean) 2018-11-24 23:48:03 +09:00
393e14196a New translations ja-JP.yml (Korean) 2018-11-24 23:41:59 +09:00
8b005307ea New translations ja-JP.yml (Korean) 2018-11-24 23:32:15 +09:00
c915ac0e72 New translations ja-JP.yml (Korean) 2018-11-24 23:22:10 +09:00
1752bb896e New translations ja-JP.yml (Korean) 2018-11-24 23:13:01 +09:00
9c8fa026f3 New translations ja-JP.yml (English) 2018-11-24 23:12:56 +09:00
e93db6324a New translations ja-JP.yml (Korean) 2018-11-24 23:03:31 +09:00
a10708bffa New translations ja-JP.yml (English) 2018-11-24 23:03:26 +09:00
e65a7a142f New translations ja-JP.yml (Korean) 2018-11-24 22:52:16 +09:00
72e0b2d470 New translations ja-JP.yml (English) 2018-11-24 22:52:12 +09:00
43fb0f36a7 New translations ja-JP.yml (Korean) 2018-11-24 22:43:27 +09:00
cf3533221b New translations ja-JP.yml (Korean) 2018-11-24 22:32:16 +09:00
de522ebe14 New translations ja-JP.yml (Korean) 2018-11-24 22:22:02 +09:00
2ace891dde New translations ja-JP.yml (Korean) 2018-11-24 22:11:52 +09:00
e212d9f991 New translations ja-JP.yml (Korean) 2018-11-24 19:32:05 +09:00
739f3f84d0 New translations ja-JP.yml (Korean) 2018-11-24 19:22:14 +09:00
5e206c86be New translations ja-JP.yml (French) 2018-11-24 19:22:08 +09:00
1ab37011ea New translations ja-JP.yml (French) 2018-11-24 19:12:20 +09:00
b6e02f63cd New translations ja-JP.yml (French) 2018-11-24 19:02:11 +09:00
60e10d4efa 10.57.2 2018-11-24 17:31:08 +09:00
95ba7e43b1 Fix bug: リモートユーザーのアイコンとバナーの色が取得されていない問題を修正 2018-11-24 17:29:32 +09:00
9e5a2e5b17 Fix lint 2018-11-24 17:19:51 +09:00
dbbc416095 [MFM] Fix hashtag detection 2018-11-24 17:18:11 +09:00
a479ad357c Update dependency 🚀 2018-11-24 17:13:25 +09:00
b1c12abb7c Refactor 2018-11-24 17:10:12 +09:00
17d1a1d7bd New translations ja-JP.yml (Korean) 2018-11-24 12:12:00 +09:00
ba50156a83 10.57.1 2018-11-24 07:35:29 +09:00
eb83ab41c0 Revert "10.57.1"
This reverts commit 8c4f0d4589.
2018-11-24 07:34:51 +09:00
4e6a917dab Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-24 07:34:23 +09:00
8c4f0d4589 10.57.1 2018-11-24 07:33:53 +09:00
3f7738204e Merge pull request #3391 from syuilo/l10n_develop
New Crowdin translations
2018-11-24 07:31:36 +09:00
e251a9b9fe New translations ja-JP.yml (English) 2018-11-24 07:22:10 +09:00
01d43b9683 New translations ja-JP.yml (Norwegian) 2018-11-24 07:13:03 +09:00
4d4a0c89a8 New translations ja-JP.yml (Dutch) 2018-11-24 07:12:58 +09:00
0a5524e9c8 New translations ja-JP.yml (Japanese, Kansai) 2018-11-24 07:12:53 +09:00
c8fb5746b3 New translations ja-JP.yml (Spanish) 2018-11-24 07:12:49 +09:00
bbcc132978 New translations ja-JP.yml (Russian) 2018-11-24 07:12:44 +09:00
d3e4f84285 New translations ja-JP.yml (Portuguese) 2018-11-24 07:12:38 +09:00
62c470cf75 New translations ja-JP.yml (Polish) 2018-11-24 07:12:34 +09:00
8ab31d3765 New translations ja-JP.yml (Korean) 2018-11-24 07:12:28 +09:00
55fe1cf0a8 New translations ja-JP.yml (Italian) 2018-11-24 07:12:23 +09:00
00cff51ff7 New translations ja-JP.yml (German) 2018-11-24 07:12:18 +09:00
d6bc4a7aa1 New translations ja-JP.yml (French) 2018-11-24 07:12:14 +09:00
4e57d12aea New translations ja-JP.yml (English) 2018-11-24 07:12:09 +09:00
4a2d99c43f New translations ja-JP.yml (Chinese Simplified) 2018-11-24 07:12:03 +09:00
217c27df86 New translations ja-JP.yml (Catalan) 2018-11-24 07:11:59 +09:00
e6dcd438b4 Update ja-JP.yml 2018-11-24 07:05:41 +09:00
de2b0224d6 Resolve #3158 2018-11-24 07:04:29 +09:00
3f8a72eb88 🎨 2018-11-24 07:03:03 +09:00
0387176e8c 🎨 2018-11-24 07:01:40 +09:00
aa34e332f4 Update reversi.room.vue 2018-11-24 07:01:12 +09:00
d13999d689 🎨 2018-11-24 06:56:30 +09:00
22c4e92728 Resolve #3389 2018-11-24 06:47:51 +09:00
df8128c0b1 Update url-preview.ts 2018-11-24 06:41:22 +09:00
ec534a3704 New translations ja-JP.yml (Korean) 2018-11-24 00:53:34 +09:00
366d4cd3e2 New translations ja-JP.yml (Korean) 2018-11-24 00:43:26 +09:00
4841926df1 Update README.md [AUTOGEN] (#3393) 2018-11-23 23:12:54 +09:00
f2f7bdc5a9 Do not use _replyIds (#3392) 2018-11-23 23:12:28 +09:00
fd811eb325 New translations ja-JP.yml (English) 2018-11-23 19:44:09 +09:00
915d352505 Resolve #3366 2018-11-23 16:39:51 +09:00
1d1024c57a [MFM] Improve hashtag detection
Resolve #3387
2018-11-23 16:02:17 +09:00
73df6e0347 Update manage.ja.md 2018-11-23 09:26:14 +09:00
e6d62c5a7b Update manage.en.md 2018-11-23 09:25:32 +09:00
470e48c0a5 Delete suspend.js 2018-11-23 09:24:00 +09:00
9235f72a2e Update manage.ja.md 2018-11-23 09:23:40 +09:00
9fe6da79b2 Update manage.en.md 2018-11-23 09:23:19 +09:00
1858437eb1 Delete reset-password.js 2018-11-23 09:22:45 +09:00
c3ba0dcd32 Update @types/systeminformation requirement from 3.23.0 to 3.23.1 (#3370)
Updates the requirements on [@types/systeminformation](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-11-23 09:12:36 +09:00
70f4b13089 Update @types/node requirement from 10.12.2 to 10.12.10 (#3369)
Updates the requirements on [@types/node](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-11-23 09:12:29 +09:00
cc57a4b671 Update @types/koa requirement from 2.0.46 to 2.0.47 (#3354)
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>
2018-11-23 09:12:21 +09:00
6902700458 Update @types/redis requirement from 2.8.7 to 2.8.8 (#3353)
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>
2018-11-23 09:12:13 +09:00
b772041547 Update @types/koa-router requirement from 7.0.33 to 7.0.35 (#3352)
Updates the requirements on [@types/koa-router](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-11-23 09:12:01 +09:00
79174c1a19 10.57.0 2018-11-23 08:20:12 +09:00
898850027a Merge pull request #3335 from syuilo/l10n_develop
New Crowdin translations
2018-11-23 08:19:32 +09:00
0d272b1fb0 Resolve #3376 2018-11-23 08:13:17 +09:00
7993a9eb90 New translations ja-JP.yml (English) 2018-11-23 08:12:53 +09:00
42d419970d New translations ja-JP.yml (Norwegian) 2018-11-23 08:05:03 +09:00
ad49268d8b New translations ja-JP.yml (Dutch) 2018-11-23 08:04:53 +09:00
76c345396a New translations ja-JP.yml (Japanese, Kansai) 2018-11-23 08:04:44 +09:00
5690ef1ebc New translations ja-JP.yml (Spanish) 2018-11-23 08:04:35 +09:00
5616404b4d New translations ja-JP.yml (Russian) 2018-11-23 08:04:31 +09:00
f92137f6c2 New translations ja-JP.yml (Portuguese) 2018-11-23 08:04:21 +09:00
ca3373ba4e New translations ja-JP.yml (Polish) 2018-11-23 08:04:12 +09:00
4e6115b414 New translations ja-JP.yml (Korean) 2018-11-23 08:04:03 +09:00
ddf47051c9 New translations ja-JP.yml (Italian) 2018-11-23 08:03:54 +09:00
d45478510c New translations ja-JP.yml (German) 2018-11-23 08:03:45 +09:00
2641f89349 New translations ja-JP.yml (French) 2018-11-23 08:03:35 +09:00
9d46d03c37 New translations ja-JP.yml (English) 2018-11-23 08:03:26 +09:00
25b6de88a9 New translations ja-JP.yml (Chinese Simplified) 2018-11-23 08:03:18 +09:00
a24046e46a New translations ja-JP.yml (Catalan) 2018-11-23 08:03:09 +09:00
7e803ff9a9 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-23 08:01:29 +09:00
246cead2b1 Improve user operations
Resolve #2197
Resolve #3367
2018-11-23 08:01:14 +09:00
214f7f06bb Update koa requirement from 2.6.1 to 2.6.2 (#3386)
Updates the requirements on [koa](https://github.com/koajs/koa) to permit the latest version.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/commits/2.6.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-23 06:06:03 +09:00
6878f73a9f Update ws requirement from 6.1.0 to 6.1.2 (#3385)
Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits/6.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-23 05:23:05 +09:00
336b45b6f7 AP quote (#3384) 2018-11-23 02:10:07 +09:00
2a0b62d26d Fix #3343 (#3383)
Setting "X-Forwarded-Proto: https" in the SSL proxy is the correct way to do this
2018-11-23 02:09:04 +09:00
653ec0cbb0 No cache /notes/:note (#3382) 2018-11-22 23:17:58 +09:00
120ab3f0a3 New translations ja-JP.yml (French) 2018-11-22 18:53:16 +09:00
8bcbbbc1a3 New translations ja-JP.yml (English) 2018-11-22 09:22:41 +09:00
13a75abc91 Update systeminformation requirement from 3.47.0 to 3.49.3 (#3374)
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-11-22 05:31:46 +09:00
eace740c63 Update emojilib requirement from 2.3.0 to 2.4.0 (#3375)
Updates the requirements on [emojilib](https://github.com/muan/emojilib) to permit the latest version.
- [Release notes](https://github.com/muan/emojilib/releases)
- [Commits](https://github.com/muan/emojilib/commits/v2.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-22 05:31:09 +09:00
cb3a54de00 Update apexcharts requirement from 2.2.2 to 2.2.3 (#3373)
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.2.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-22 05:29:47 +09:00
5fbc77795d Update webpack requirement from 4.25.1 to 4.26.0 (#3371)
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.26.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-22 05:29:02 +09:00
ce4feae731 Update vue-i18n requirement from 8.3.1 to 8.3.2 (#3372)
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.3.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-22 05:28:39 +09:00
08f00d4990 Remove unneccesary cast (#3355) 2018-11-22 05:07:25 +09:00
6951f7e74a Fix #3361 (#3362)
* Update create.ts

* Update api.ts
2018-11-22 05:06:51 +09:00
2b4d63b1bb Add some tests 2018-11-22 05:04:45 +09:00
8cbb961493 [MFM] Improve URL parsing
Fix #3368
2018-11-22 05:02:38 +09:00
64c795938d New translations ja-JP.yml (French) 2018-11-22 02:03:40 +09:00
67df681a48 Refactoring 2018-11-22 01:51:26 +09:00
9285bcf8bb New translations ja-JP.yml (Norwegian) 2018-11-21 23:55:53 +09:00
b9b23a4b54 New translations ja-JP.yml (Dutch) 2018-11-21 23:55:48 +09:00
2f6371b085 New translations ja-JP.yml (Japanese, Kansai) 2018-11-21 23:55:38 +09:00
2a5c3475a7 New translations ja-JP.yml (Spanish) 2018-11-21 23:55:29 +09:00
8a2698a5db New translations ja-JP.yml (Russian) 2018-11-21 23:55:19 +09:00
f6919a171a New translations ja-JP.yml (Portuguese) 2018-11-21 23:55:09 +09:00
82ebf67456 New translations ja-JP.yml (Polish) 2018-11-21 23:55:02 +09:00
a60c8b2ee8 New translations ja-JP.yml (Korean) 2018-11-21 23:54:58 +09:00
0a2b8ccfb6 New translations ja-JP.yml (Italian) 2018-11-21 23:54:53 +09:00
698094b787 New translations ja-JP.yml (German) 2018-11-21 23:54:48 +09:00
b57e111ea8 New translations ja-JP.yml (French) 2018-11-21 23:54:41 +09:00
aa6bf2b54e New translations ja-JP.yml (English) 2018-11-21 23:54:31 +09:00
454910d295 New translations ja-JP.yml (Chinese Simplified) 2018-11-21 23:54:21 +09:00
d44e620769 New translations ja-JP.yml (Catalan) 2018-11-21 23:54:12 +09:00
ac14adfd3e Feature / user recommendation config in admin ui (#3357)
* add config for external user recommendation into admin ui

* debug

* correct admin ui

* switch external user recommendation to admin ui config

* debug

* debug

* debug

* Revert "debug"

This reverts commit f4a0460e5bde21cd1f39a735f496a2d74233ef3f.

* explicit parseInt radix

* add Japanese message

* change default engine to https

* remove unused settings

* debug

* nullable externalUserRecommendationTimeout
2018-11-21 23:44:59 +09:00
928d30ee1e New translations ja-JP.yml (Norwegian) 2018-11-21 14:53:16 +09:00
3dd9b0f347 New translations ja-JP.yml (Dutch) 2018-11-21 14:53:10 +09:00
c57dd083c5 New translations ja-JP.yml (Japanese, Kansai) 2018-11-21 14:53:06 +09:00
2a1d6c5406 New translations ja-JP.yml (Spanish) 2018-11-21 14:52:59 +09:00
112e9f69bd New translations ja-JP.yml (Russian) 2018-11-21 14:52:55 +09:00
d50e537888 New translations ja-JP.yml (Portuguese) 2018-11-21 14:52:50 +09:00
86d14d30fa New translations ja-JP.yml (Polish) 2018-11-21 14:52:46 +09:00
710d3689d3 New translations ja-JP.yml (Korean) 2018-11-21 14:52:39 +09:00
3fee011369 New translations ja-JP.yml (Italian) 2018-11-21 14:52:33 +09:00
7cd4b8ba4f New translations ja-JP.yml (German) 2018-11-21 14:52:28 +09:00
31132de18b New translations ja-JP.yml (French) 2018-11-21 14:52:23 +09:00
c6cb271f6f New translations ja-JP.yml (English) 2018-11-21 14:52:18 +09:00
b7c4afd20c New translations ja-JP.yml (Chinese Simplified) 2018-11-21 14:52:14 +09:00
70395d200a New translations ja-JP.yml (Catalan) 2018-11-21 14:52:07 +09:00
562a5f66fc Improve usability 2018-11-21 14:44:49 +09:00
b2f8003602 [MFM] Better inline code parse 2018-11-21 12:55:15 +09:00
b7b36973f7 Fix: stop in DB check (#3356) 2018-11-21 12:45:40 +09:00
f7d5f597f3 10.56.2 2018-11-21 08:33:02 +09:00
79c7712241 Improve MFM 2018-11-21 08:32:40 +09:00
8f5f3985f4 [MFM] Fix hashtag parsing 2018-11-21 08:30:29 +09:00
ef30f36f55 10.56.1 2018-11-21 06:27:11 +09:00
4198497237 Improve test page 2018-11-21 06:25:58 +09:00
9b1612574e [Client] Fix #3114 2018-11-21 06:24:46 +09:00
ca8a218144 10.56.0 2018-11-21 05:47:40 +09:00
db9c2913cf Update index.vue 2018-11-21 05:36:55 +09:00
286674c2bb Fix bug 2018-11-21 05:27:06 +09:00
7c259185bc Fix bug 2018-11-21 05:26:48 +09:00
79ffbf95db Improve MFM parser (#3337)
* wip

* wip

* Refactor

* Refactor

* wip

* wip

* wip

* wip

* Refactor

* Refactor

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Clean up

* Update misskey-flavored-markdown.ts

* wip

* wip

* wip

* wip

* Update parser.ts

* wip

* Add new test

* wip

* Add new test

* Add new test

* wip

* Refactor

* Update parse.ts

* Refactor

* Update parser.ts

* wip
2018-11-21 05:11:00 +09:00
6e347e4221 Refactor checkMongoDb (#3339) 2018-11-20 21:19:14 +09:00
28ccb14166 Create backup.fr.md (#3342)
* Create backup.fr.md

Create backup.fr.md

* Fix typo

Fix typo
2018-11-20 21:18:39 +09:00
389315e000 Fix: ap/show (#3350) 2018-11-20 21:18:14 +09:00
af00464f5b New translations ja-JP.yml (French) 2018-11-20 17:38:45 +09:00
f522b3df91 New translations ja-JP.yml (French) 2018-11-20 17:22:49 +09:00
168db6891f Refactor spawnWorkers (#3338) 2018-11-20 12:25:58 +09:00
4a77548672 Refactor port checking (#3336) 2018-11-20 11:23:32 +09:00
e9ec4a3b84 New translations ja-JP.yml (English) 2018-11-20 06:51:54 +09:00
375b2bb284 Merge pull request #3324 from syuilo/l10n_develop
New Crowdin translations
2018-11-20 05:35:03 +09:00
b922277896 Update typescript-eslint-parser requirement from 21.0.0 to 21.0.1 (#3333)
Updates the requirements on [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser) to permit the latest version.
- [Release notes](https://github.com/eslint/typescript-eslint-parser/releases)
- [Changelog](https://github.com/eslint/typescript-eslint-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/typescript-eslint-parser/commits/v21.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-20 05:34:40 +09:00
8f6f810dbd Update apexcharts requirement from 2.2.0 to 2.2.2 (#3334)
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.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-20 05:34:18 +09:00
8f0c433e05 Cores => Logical cores (#3332) 2018-11-20 05:30:22 +09:00
e332e3c248 Explicitly set max-age (#3330) 2018-11-20 05:29:51 +09:00
2f90c38604 New translations ja-JP.yml (German) 2018-11-20 01:12:33 +09:00
fa33d12bd7 New translations ja-JP.yml (German) 2018-11-20 00:16:06 +09:00
86ab496fd6 New translations ja-JP.yml (Chinese Simplified) 2018-11-19 23:54:55 +09:00
ca0cb6fd42 Merge environmentInfo and machineInfo into index.ts (#3319) 2018-11-19 13:39:10 +09:00
be52779bbc Use descriptive variables to improve readability (#3318) 2018-11-19 13:27:38 +09:00
23b64794a4 Call main at the end (#3317) 2018-11-19 12:58:58 +09:00
d5fed29df3 Merge pull request #3311 from syuilo/l10n_develop
New Crowdin translations
2018-11-19 09:18:45 +09:00
644bc985e7 Fix some image processing (#3313)
* Improve thunmbnail generation

* Respect orientation in Firefox
2018-11-19 09:17:16 +09:00
5c1dc31131 New translations ja-JP.yml (English) 2018-11-19 02:31:46 +09:00
31fae1caa6 New translations ja-JP.yml (French) 2018-11-19 02:22:05 +09:00
9bc85ac511 New translations ja-JP.yml (Norwegian) 2018-11-19 02:13:15 +09:00
69d6dc22b9 New translations ja-JP.yml (Dutch) 2018-11-19 02:13:10 +09:00
c4f81fc1a7 New translations ja-JP.yml (Japanese, Kansai) 2018-11-19 02:13:06 +09:00
9a866766e0 New translations ja-JP.yml (Spanish) 2018-11-19 02:13:02 +09:00
eb7153acee New translations ja-JP.yml (Russian) 2018-11-19 02:12:57 +09:00
f3d98da329 New translations ja-JP.yml (Portuguese) 2018-11-19 02:12:51 +09:00
aac1c50a77 New translations ja-JP.yml (Polish) 2018-11-19 02:12:47 +09:00
0619a27916 New translations ja-JP.yml (Korean) 2018-11-19 02:12:43 +09:00
49ba56493f New translations ja-JP.yml (Italian) 2018-11-19 02:12:38 +09:00
bf0dae8cc3 New translations ja-JP.yml (German) 2018-11-19 02:12:33 +09:00
fbf77afde1 New translations ja-JP.yml (French) 2018-11-19 02:12:27 +09:00
5159caa9ff New translations ja-JP.yml (English) 2018-11-19 02:12:21 +09:00
5aef35f0b7 New translations ja-JP.yml (Chinese Simplified) 2018-11-19 02:12:16 +09:00
4db2843e7b New translations ja-JP.yml (Catalan) 2018-11-19 02:12:10 +09:00
a390e57dff [Client] Improve UI 2018-11-19 02:09:27 +09:00
8d70587814 Refactoring 2018-11-19 02:04:12 +09:00
6f3775de9d New translations ja-JP.yml (French) 2018-11-19 02:01:57 +09:00
5a0a3050ae New translations ja-JP.yml (French) 2018-11-19 01:53:15 +09:00
cbbf141846 New translations ja-JP.yml (French) 2018-11-19 01:42:15 +09:00
43c2b00cf8 Show visibility in note-detail (#3308)
* Show visibility in note-detail

* fix
2018-11-18 22:47:21 +09:00
046ccd49ca Merge pull request #3305 from syuilo/l10n_develop
New Crowdin translations
2018-11-18 22:46:28 +09:00
e7df6f5c0e New translations ja-JP.yml (English) 2018-11-18 21:31:51 +09:00
c67110835c New translations ja-JP.yml (Chinese Simplified) 2018-11-18 15:11:49 +09:00
4c97b847e7 10.55.0 2018-11-18 12:00:07 +09:00
cfa4f0fe0b Add zh-CN 2018-11-18 11:59:26 +09:00
9672343360 New Crowdin translations (#3255)
* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

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

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

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

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

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

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

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

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

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

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

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

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

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

* New translations ja-JP.yml (Italian)

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

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

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

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

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

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

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

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

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

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

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

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

* New translations ja-JP.yml (French)

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

* New translations ja-JP.yml (French)

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

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

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

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

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Simplified)
2018-11-18 10:56:51 +09:00
80fdfe54c4 Add faUserClock icon for follow requests (#3303) 2018-11-18 01:10:57 +09:00
7fcbe87591 Improve relative time detection (#3302) 2018-11-17 20:57:23 +09:00
e401ba9e25 Update visibility text (#3299) 2018-11-17 18:21:05 +09:00
35db61f1b4 To able to store local only visibilities (#3298) 2018-11-17 13:21:40 +09:00
6c72545fc8 [Test] Add a test and some updtes 2018-11-17 12:52:20 +09:00
70385ca670 Update @types/webpack requirement from 4.4.18 to 4.4.19 (#3295)
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-11-17 05:30:30 +09:00
a8e72d39f7 Update vue-svg-inline-loader requirement from 1.2.1 to 1.2.2 (#3294)
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.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-17 05:30:18 +09:00
0bf54b3ff6 Renote visibility (#3290) 2018-11-17 03:25:48 +09:00
db657c2a62 Hide unused login method (#3285) 2018-11-17 02:13:01 +09:00
01964f3926 Add missing Robot icon (used on user profiles) (#3284) 2018-11-17 01:55:37 +09:00
bfd6bb0fda Add missing Map Marker icon (used on user profiles) (#3283) 2018-11-17 01:50:39 +09:00
3fc70996e2 Change math syntax (#3280) 2018-11-17 00:31:49 +09:00
cb0874f15a 10.54.0 2018-11-16 23:19:34 +09:00
9239e37b45 Fix #3273 (#3277) 2018-11-16 23:14:11 +09:00
57d80932a4 Add an optional setting to remain deleted note (#3271)
Co-authored-by: Aya Morisawa <AyaMorisawa4869@gmail.com>
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2018-11-16 23:13:37 +09:00
8569970fbe Update github-bot.ts 2018-11-16 23:10:48 +09:00
713e9ad5f4 Resolve #3274 2018-11-16 23:09:33 +09:00
59e229d962 Update github-bot.ts 2018-11-16 23:02:01 +09:00
3c5f09cda2 Clean up 2018-11-16 23:01:14 +09:00
e42aa2530d Update github-bot.ts
follow dvelop instead master
2018-11-16 23:00:34 +09:00
1fd298ac9c Update docker.en.md (#3272) 2018-11-16 22:47:10 +09:00
1a73f52541 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-16 22:32:17 +09:00
27e458f884 Do not use camelCase in html 2018-11-16 22:32:06 +09:00
ba3e2a9371 Update setup.en.md (#3270)
* [doc] run as root

* [doc] update setup guide headings
2018-11-16 22:31:53 +09:00
831e8f8583 Refactoring 2018-11-16 22:31:28 +09:00
0ff390ed80 [MFM] Improve various parsing
Resolve #2779
Resolve #3053
2018-11-16 21:57:19 +09:00
e3b8495431 [MFM] Better URL parsing 2018-11-16 21:30:01 +09:00
da10ba3fea [Client] Add missing icon
Resolve #3267
2018-11-16 18:34:52 +09:00
cc7de853b4 [Client] Wrap formula component to split code 2018-11-16 18:31:25 +09:00
23d8235197 Revert "[Client] Load katex async to reduce bundle size"
This reverts commit 37e3d60ade.
2018-11-16 18:26:19 +09:00
37e3d60ade [Client] Load katex async to reduce bundle size 2018-11-16 18:22:44 +09:00
83a3426dd5 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-16 17:56:08 +09:00
a2549192ca Update misskey-flavored-markdown.ts 2018-11-16 17:55:48 +09:00
9d3a1cab6e Fix #3224 (#3265) 2018-11-16 17:41:52 +09:00
06f8d8f0a3 Show server version on server.info.vue (#3264) 2018-11-16 17:24:03 +09:00
fa66b79e2d Update the locale when version or language changed (#3263) 2018-11-16 17:13:22 +09:00
81312f5a93 Remove a trailing whitespace (#3261) 2018-11-16 17:04:28 +09:00
ad84901f39 Support math rendering on MFM (#3260) 2018-11-16 17:03:52 +09:00
d2385a0e52 Do not show duplicate url-preview (#3259) 2018-11-16 16:35:13 +09:00
39285fc2d0 10.53.0 2018-11-16 05:56:58 +09:00
6e491c1466 Refactoring 2018-11-16 05:53:17 +09:00
84152aa663 Update typescript-eslint-parser requirement from 20.1.1 to 21.0.0 (#3237)
Updates the requirements on [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser) to permit the latest version.
- [Release notes](https://github.com/eslint/typescript-eslint-parser/releases)
- [Changelog](https://github.com/eslint/typescript-eslint-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/typescript-eslint-parser/commits/v21.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-16 05:49:21 +09:00
600fc65c2f Update showdown requirement from 1.8.7 to 1.9.0 (#3252)
Updates the requirements on [showdown](https://github.com/showdownjs/showdown) to permit the latest version.
- [Release notes](https://github.com/showdownjs/showdown/releases)
- [Changelog](https://github.com/showdownjs/showdown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/showdownjs/showdown/commits/1.9.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-16 05:49:07 +09:00
40e2733424 Update mongodb requirement from 3.1.8 to 3.1.9 (#3253)
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.9)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-16 05:48:39 +09:00
bceb02d760 local only visibility (#3254)
* local only visibility

* fix UI
2018-11-16 05:47:29 +09:00
aaaaf2681a [Client] Add missing icon 2018-11-16 05:38:16 +09:00
3c3ef9bba0 [Client] ✌️ 2018-11-16 05:36:52 +09:00
338f3a981f Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-16 05:26:48 +09:00
a86ae9fa50 Better UX 2018-11-16 05:26:36 +09:00
a3c4e8a1bc [Client] Improve admin dashboard 2018-11-16 05:21:52 +09:00
6a7c18e8db Merge pull request #3250 from syuilo/l10n_develop
New Crowdin translations
2018-11-16 05:10:41 +09:00
672b7a4c3d 🎨 2018-11-16 05:07:59 +09:00
bf3fee4481 Check the port is configured (#3251) 2018-11-16 03:25:35 +09:00
a3c8d1d732 New translations ja-JP.yml (Chinese Simplified) 2018-11-16 00:15:45 +09:00
bb03d8c49a New translations ja-JP.yml (Chinese Simplified) 2018-11-15 23:59:41 +09:00
fbd5abe3b6 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 23:43:21 +09:00
5ac390abe9 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 23:38:10 +09:00
766cae2299 Check Node.js version (#3245)
* Check Node.js version

* Fix bug
2018-11-15 22:17:06 +09:00
d9828fdc6a 10.52.0 2018-11-15 22:04:57 +09:00
4114ce4a04 [Client] Split some components to improve performance 2018-11-15 22:04:12 +09:00
6090630260 Merge pull request #3236 from syuilo/l10n_develop
New Crowdin translations
2018-11-15 21:44:39 +09:00
259cfeae17 Use Node.js official Docker image (#3241)
* Update Dockerfile

* Update Dockerfile
2018-11-15 21:43:02 +09:00
ebe15c4711 New translations ja-JP.yml (English) 2018-11-15 21:03:36 +09:00
75a740a110 New translations ja-JP.yml (English) 2018-11-15 20:53:18 +09:00
0c085c4f74 New translations ja-JP.yml (English) 2018-11-15 20:44:10 +09:00
1d819e79db New translations ja-JP.yml (Norwegian) 2018-11-15 19:24:47 +09:00
515b79dcf0 New translations ja-JP.yml (Dutch) 2018-11-15 19:24:41 +09:00
269e12abb4 New translations ja-JP.yml (Japanese, Kansai) 2018-11-15 19:24:36 +09:00
cf5be6ff5a New translations ja-JP.yml (Spanish) 2018-11-15 19:24:32 +09:00
f140adbc9d New translations ja-JP.yml (Russian) 2018-11-15 19:24:25 +09:00
6c31406bb0 New translations ja-JP.yml (Portuguese) 2018-11-15 19:24:19 +09:00
b6e8626908 New translations ja-JP.yml (Polish) 2018-11-15 19:24:15 +09:00
64a3a4915a New translations ja-JP.yml (Korean) 2018-11-15 19:24:11 +09:00
fd71f24d46 New translations ja-JP.yml (Italian) 2018-11-15 19:24:05 +09:00
65b5c6753f New translations ja-JP.yml (German) 2018-11-15 19:23:59 +09:00
7408bbce37 New translations ja-JP.yml (French) 2018-11-15 19:23:54 +09:00
0f58978c9f New translations ja-JP.yml (English) 2018-11-15 19:23:47 +09:00
01ca3fd6b2 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 19:23:43 +09:00
26c366156b New translations ja-JP.yml (Catalan) 2018-11-15 19:23:37 +09:00
9d8f7b081d WIP: Add Discord auth (#3239)
* Add Discord auth

* Apply review 175263424
2018-11-15 19:15:04 +09:00
9d8ebb795d New translations ja-JP.yml (French) 2018-11-15 18:11:46 +09:00
8be98e4cb8 New translations ja-JP.yml (French) 2018-11-15 17:32:46 +09:00
3c229c9950 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 13:51:55 +09:00
f2263faf7d New translations ja-JP.yml (Chinese Simplified) 2018-11-15 13:44:35 +09:00
39c7cf3e66 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 13:32:36 +09:00
5ee24e5c09 New translations ja-JP.yml (French) 2018-11-15 07:21:58 +09:00
a34fdc2068 10.51.2 2018-11-15 07:04:25 +09:00
2c2cd893b8 🎨 2018-11-15 07:03:46 +09:00
aecf9329bd New translations ja-JP.yml (Norwegian) 2018-11-15 04:24:24 +09:00
b2384605e7 New translations ja-JP.yml (Dutch) 2018-11-15 04:24:20 +09:00
57ab5ab604 New translations ja-JP.yml (Japanese, Kansai) 2018-11-15 04:24:15 +09:00
e493a20301 New translations ja-JP.yml (Spanish) 2018-11-15 04:24:09 +09:00
0bd5ed937c New translations ja-JP.yml (Russian) 2018-11-15 04:24:03 +09:00
6a9b3bc64e New translations ja-JP.yml (Portuguese) 2018-11-15 04:23:58 +09:00
4c1ef3e6a5 New translations ja-JP.yml (Polish) 2018-11-15 04:23:54 +09:00
2ea250f954 New translations ja-JP.yml (Korean) 2018-11-15 04:23:49 +09:00
5d810980f8 New translations ja-JP.yml (Italian) 2018-11-15 04:23:43 +09:00
d51b4e27cc New translations ja-JP.yml (German) 2018-11-15 04:23:37 +09:00
c01c555309 New translations ja-JP.yml (French) 2018-11-15 04:23:33 +09:00
ce2e66d9b0 New translations ja-JP.yml (English) 2018-11-15 04:23:27 +09:00
9550acd61e New translations ja-JP.yml (Chinese Simplified) 2018-11-15 04:23:23 +09:00
d95b5daa6d New translations ja-JP.yml (Catalan) 2018-11-15 04:23:18 +09:00
532a7b90f3 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 00:55:47 +09:00
4e8c200349 New translations ja-JP.yml (Chinese Simplified) 2018-11-15 00:43:37 +09:00
244 changed files with 8142 additions and 5206 deletions

View File

@ -118,12 +118,3 @@ autoAdmin: true
# Clustering # Clustering
#clusterLimit: 1 #clusterLimit: 1
# Summaly proxy
#summalyProxy: "http://example.com"
# User recommendation
#user_recommendation:
# external: true
# engine: http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}
# timeout: 300000

1
.gitignore vendored
View File

@ -17,3 +17,4 @@ api-docs.json
/mongo /mongo
/elasticsearch /elasticsearch
*.code-workspace *.code-workspace
yarn.lock

View File

@ -1,26 +1,27 @@
FROM alpine:3.8 AS base FROM node:11-alpine AS base
ENV NODE_ENV=production ENV NODE_ENV=production
RUN apk add --no-cache nodejs nodejs-npm zlib
RUN npm i -g npm@latest RUN npm i -g npm@latest
WORKDIR /misskey WORKDIR /misskey
FROM base AS builder FROM base AS builder
RUN unlink /usr/bin/free
RUN apk add --no-cache \ RUN apk add --no-cache \
gcc \
g++ \
libc-dev \
python \
autoconf \ autoconf \
automake \ automake \
file \ file \
g++ \
gcc \
libc-dev \
libtool \
make \ make \
nasm \ nasm \
pkgconfig \ pkgconfig \
libtool \ procps \
python \
zlib-dev zlib-dev
RUN npm i -g node-gyp RUN npm i -g node-gyp

View File

@ -73,46 +73,50 @@ Please see [Contribution guide](./CONTRIBUTING.md).
---------------------------------------------------------------- ----------------------------------------------------------------
<!-- PATREON_START --> <!-- PATREON_START -->
<table><tr> <table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=Zeh1u6l_Vmgoy8A1eT1Sltea-_SZSq8t8uOWDRZRh94%3D" alt="weep"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
<td><a href="https://www.patreon.com/negao">negao</a></td> <td><a href="https://www.patreon.com/negao">negao</a></td>
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td> <td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td> <td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c8.patreon.com/2/100/12718187" alt="Peter G."></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td> <td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td> <td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td> <td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td> <td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
<td><a href="https://www.patreon.com/dansup">dansup</a></td> <td><a href="https://www.patreon.com/dansup">dansup</a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
</tr><tr>
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td> <td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table> </tr></table>
<table><tr>
</tr><tr>
</tr></table>
**Last updated:** Wed, 31 Oct 2018 23:21:06 UTC **Last updated:** Sat, 01 Dec 2018 22:05:05 UTC
<!-- PATREON_END --> <!-- PATREON_END -->
:four_leaf_clover: Copyright :four_leaf_clover: Copyright

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,108 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46667 135.46667"
version="1.1"
id="svg8" id="svg8"
inkscape:version="0.92.1 r15371" version="1.1"
sodipodi:docname="favicon.svg" viewBox="0 0 135.46667 135.46667"
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\16.png" height="512"
inkscape:export-xdpi="3" width="512">
inkscape:export-ydpi="3">
<defs <defs
id="defs2"> id="defs2" />
<inkscape:path-effect
effect="simplify"
id="path-effect5115"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
<inkscape:path-effect
effect="simplify"
id="path-effect5111"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
<inkscape:path-effect
effect="simplify"
id="path-effect5104"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4142136"
inkscape:cx="15.466544"
inkscape:cy="235.92965"
inkscape:document-units="px"
inkscape:current-layer="g4502"
showgrid="true"
units="px"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:snap-smooth-nodes="true"
inkscape:snap-center="true"
inkscape:snap-page="true"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="-8"
inkscape:window-y="1072"
inkscape:window-maximized="1"
inkscape:snap-object-midpoints="true"
inkscape:snap-midpoints="true"
inkscape:object-paths="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
objecttolerance="1"
guidetolerance="1"
inkscape:snap-nodes="false"
inkscape:snap-others="false">
<inkscape:grid
type="xygrid"
id="grid4504"
spacingx="4.2333334"
spacingy="4.2333334"
empcolor="#ff3fff"
empopacity="0.25098039"
empspacing="4" />
</sodipodi:namedview>
<metadata <metadata
id="metadata5"> id="metadata5">
<rdf:RDF> <rdf:RDF>
@ -116,32 +25,27 @@
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<g <g
inkscape:label="レイヤー 1" style="fill:#2fa3bc;fill-opacity:1"
inkscape:groupmode="layer" transform="translate(-30.809093,-111.78601)"
id="layer1" id="layer1">
transform="translate(-30.809093,-111.78601)">
<g <g
id="g4502" style="fill:#2fa3bc;fill-opacity:1"
transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"
id="g4502">
<g <g
style="fill:#2fa1bb;fill-opacity:1" id="g5125"
id="g5125"> transform="translate(-1.3333333e-6,-1.3439941e-6)"
style="fill:#2fa3bc;fill-opacity:1">
<g <g
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" aria-label="Mi"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa3bc;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="text4489" id="text4489"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#2fa1bb;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)">
aria-label="Mi">
<path <path
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
inkscape:connector-curvature="0"
id="path5210" id="path5210"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px" transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)"
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" /> d="m 62.474609,76.585938 c -7.47555,0 -14.595784,1.246427 -21.359375,3.738281 C 29.011968,84.595952 19.044417,92.249798 11.212891,103.28516 3.7373405,113.96451 0,125.88934 0,139.06055 v 233.8789 c 0,17.08697 6.0510264,31.85913 18.154297,44.31836 12.459246,12.10327 27.233346,18.15625 44.320312,18.15625 17.442947,0 32.215089,-6.05298 44.318361,-18.15625 12.45925,-12.45923 18.68945,-27.23139 18.68945,-44.31836 V 330.4082 c 0.13441,-9.21122 9.6225,-6.79429 14.41797,0 8.98111,15.55395 28.02226,28.91242 50.19141,28.83594 22.16915,-0.0764 40.58194,-11.03699 50.19336,-28.83594 3.63981,-4.29263 13.89902,-11.60675 14.95117,0 v 42.53125 c 0,17.08697 6.05102,31.85913 18.15429,44.31836 12.45923,12.10327 27.23335,18.15625 44.32032,18.15625 17.44294,0 32.21509,-6.05298 44.31836,-18.15625 12.45923,-12.45923 18.68945,-27.23139 18.68945,-44.31836 v -233.8789 c 0,-13.17121 -3.9146,-25.09604 -11.74609,-35.77539 -7.47557,-11.035362 -17.26588,-18.689208 -29.36914,-22.960941 -7.11956,-2.491854 -14.23982,-3.738281 -21.35938,-3.738281 -19.22286,0 -35.41865,7.476649 -48.58984,22.427734 l -63.40235,74.199218 c -1.42391,1.06791 -6.14093,9.23242 -16.16015,9.23242 -10.01923,0 -14.20109,-8.16451 -15.625,-9.23242 L 110.53125,99.013672 C 97.716024,84.062587 81.697447,76.585938 62.474609,76.585938 Z m 395.060551,0 c -14.9511,-10e-7 -27.76596,5.340179 -38.44532,16.019531 -10.32338,10.323381 -15.48437,22.961011 -15.48437,37.912111 0,14.9511 5.16099,27.76596 15.48437,38.44531 10.67936,10.32338 23.49422,15.48633 38.44532,15.48633 14.95109,0 27.76596,-5.16295 38.44531,-15.48633 C 506.65982,158.28354 512,145.46868 512,130.51758 512,115.56648 506.65982,102.92885 495.98047,92.605469 485.30112,81.926117 472.48625,76.585938 457.53516,76.585938 Z m 0.5332,118.541012 c -14.9511,0 -27.76596,5.34018 -38.44531,16.01953 -10.67936,10.67936 -16.01758,23.49422 -16.01758,38.44532 v 131.89062 c 0,14.9511 5.33822,27.76596 16.01758,38.44531 10.67935,10.32339 23.49421,15.48633 38.44531,15.48633 14.9511,0 27.58873,-5.16294 37.91211,-15.48633 C 506.65982,409.24838 512,396.43352 512,381.48242 V 249.5918 c 0,-14.9511 -5.34018,-27.76596 -16.01953,-38.44532 -10.32338,-10.67935 -22.96101,-16.01953 -37.91211,-16.01953 z"
<path style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa3bc;fill-opacity:1;stroke-width:1.09609616px" />
inkscape:connector-curvature="0"
id="path5212"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#2fa1bb;fill-opacity:1;stroke-width:0.28950602px"
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 B

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1015 B

View File

@ -1,108 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46667 135.46667"
version="1.1"
id="svg8" id="svg8"
inkscape:version="0.92.1 r15371" version="1.1"
sodipodi:docname="mi.svg" viewBox="0 0 135.46667 135.46667"
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png" height="512"
inkscape:export-xdpi="6" width="512">
inkscape:export-ydpi="6">
<defs <defs
id="defs2"> id="defs2" />
<inkscape:path-effect
effect="simplify"
id="path-effect5115"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
<inkscape:path-effect
effect="simplify"
id="path-effect5111"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
<inkscape:path-effect
effect="simplify"
id="path-effect5104"
is_visible="true"
steps="1"
threshold="0.000408163"
smooth_angles="360"
helper_size="0"
simplify_individual_paths="false"
simplify_just_coalesce="false"
simplifyindividualpaths="false"
simplifyJustCoalesce="false" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4142136"
inkscape:cx="232.39583"
inkscape:cy="251.50613"
inkscape:document-units="px"
inkscape:current-layer="g4502"
showgrid="true"
units="px"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:snap-smooth-nodes="true"
inkscape:snap-center="true"
inkscape:snap-page="true"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="-8"
inkscape:window-y="1072"
inkscape:window-maximized="1"
inkscape:snap-object-midpoints="true"
inkscape:snap-midpoints="true"
inkscape:object-paths="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
objecttolerance="1"
guidetolerance="1"
inkscape:snap-nodes="false"
inkscape:snap-others="false">
<inkscape:grid
type="xygrid"
id="grid4504"
spacingx="4.2333334"
spacingy="4.2333334"
empcolor="#ff3fff"
empopacity="0.25098039"
empspacing="4" />
</sodipodi:namedview>
<metadata <metadata
id="metadata5"> id="metadata5">
<rdf:RDF> <rdf:RDF>
@ -111,32 +20,30 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title /> <dc:title></dc:title>
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<g <g
inkscape:label="レイヤー 1" transform="translate(-30.809093,-111.78601)"
inkscape:groupmode="layer" id="layer1">
id="layer1"
transform="translate(-30.809093,-111.78601)">
<g <g
id="g4502" transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"
transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)"> id="g4502">
<g <g
style="fill:#000000;fill-opacity:1" id="g5125"
transform="translate(-1.3333333e-6,-1.3439941e-6)" transform="translate(-1.3333333e-6,-1.3439941e-6)"
id="g5125"> style="fill:#000000;fill-opacity:1">
<g <g
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)" aria-label="Mi"
id="text4489"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
aria-label="Mi"> id="text4489"
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)">
<path <path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:1.09609616px" id="path5210"
d="M 62.474609 76.585938 C 54.999059 76.585938 47.878825 77.832365 41.115234 80.324219 C 29.011968 84.595952 19.044417 92.249798 11.212891 103.28516 C 3.7373405 113.96451 0 125.88934 0 139.06055 L 0 372.93945 C 0 390.02642 6.0510264 404.79858 18.154297 417.25781 C 30.613543 429.36108 45.387643 435.41406 62.474609 435.41406 C 79.917556 435.41406 94.689698 429.36108 106.79297 417.25781 C 119.25222 404.79858 125.48242 390.02642 125.48242 372.93945 L 125.48242 330.4082 C 125.61683 321.19698 135.10492 323.61391 139.90039 330.4082 C 148.8815 345.96215 167.92265 359.32062 190.0918 359.24414 C 212.26095 359.16778 230.67374 348.20715 240.28516 330.4082 C 243.92497 326.11557 254.18418 318.80145 255.23633 330.4082 L 255.23633 372.93945 C 255.23633 390.02642 261.28735 404.79858 273.39062 417.25781 C 285.84985 429.36108 300.62397 435.41406 317.71094 435.41406 C 335.15388 435.41406 349.92603 429.36108 362.0293 417.25781 C 374.48853 404.79858 380.71875 390.02642 380.71875 372.93945 L 380.71875 139.06055 C 380.71875 125.88934 376.80415 113.96451 368.97266 103.28516 C 361.49709 92.249798 351.70678 84.595952 339.60352 80.324219 C 332.48396 77.832365 325.3637 76.585938 318.24414 76.585938 C 299.02128 76.585938 282.82549 84.062587 269.6543 99.013672 C 262.53473 107.20121 258.79542 111.11761 258.43945 110.76172 C 258.43945 110.76172 207.67587 172.14495 206.25195 173.21289 C 204.82804 174.2808 200.11102 182.44531 190.0918 182.44531 C 180.07257 182.44531 175.89071 174.2808 174.4668 173.21289 C 173.04288 172.14495 122.2793 110.76172 122.2793 110.76172 C 121.21136 110.40575 117.29484 106.48923 110.53125 99.013672 C 97.716024 84.062587 81.697447 76.585938 62.474609 76.585938 z M 457.53516 76.585938 C 442.58406 76.585937 429.7692 81.926117 419.08984 92.605469 C 408.76646 102.92885 403.60547 115.56648 403.60547 130.51758 C 403.60547 145.46868 408.76646 158.28354 419.08984 168.96289 C 429.7692 179.28627 442.58406 184.44922 457.53516 184.44922 C 472.48625 184.44922 485.30112 179.28627 495.98047 168.96289 C 506.65982 158.28354 512 145.46868 512 130.51758 C 512 115.56648 506.65982 102.92885 495.98047 92.605469 C 485.30112 81.926117 472.48625 76.585938 457.53516 76.585938 z M 458.06836 195.12695 C 443.11726 195.12695 430.3024 200.46713 419.62305 211.14648 C 408.94369 221.82584 403.60547 234.6407 403.60547 249.5918 L 403.60547 381.48242 C 403.60547 396.43352 408.94369 409.24838 419.62305 419.92773 C 430.3024 430.25112 443.11726 435.41406 458.06836 435.41406 C 473.01946 435.41406 485.65709 430.25112 495.98047 419.92773 C 506.65982 409.24838 512 396.43352 512 381.48242 L 512 249.5918 C 512 234.6407 506.65982 221.82584 495.98047 211.14648 C 485.65709 200.46713 473.01946 195.12695 458.06836 195.12695 z "
transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)" transform="matrix(0.26412464,0,0,0.26412464,24.988264,136.28626)"
id="path5210" /> d="m 62.474609,76.585938 c -7.47555,0 -14.595784,1.246427 -21.359375,3.738281 C 29.011968,84.595952 19.044417,92.249798 11.212891,103.28516 3.7373405,113.96451 0,125.88934 0,139.06055 v 233.8789 c 0,17.08697 6.0510264,31.85913 18.154297,44.31836 12.459246,12.10327 27.233346,18.15625 44.320312,18.15625 17.442947,0 32.215089,-6.05298 44.318361,-18.15625 12.45925,-12.45923 18.68945,-27.23139 18.68945,-44.31836 V 330.4082 c 0.13441,-9.21122 9.6225,-6.79429 14.41797,0 8.98111,15.55395 28.02226,28.91242 50.19141,28.83594 22.16915,-0.0764 40.58194,-11.03699 50.19336,-28.83594 3.63981,-4.29263 13.89902,-11.60675 14.95117,0 v 42.53125 c 0,17.08697 6.05102,31.85913 18.15429,44.31836 12.45923,12.10327 27.23335,18.15625 44.32032,18.15625 17.44294,0 32.21509,-6.05298 44.31836,-18.15625 12.45923,-12.45923 18.68945,-27.23139 18.68945,-44.31836 v -233.8789 c 0,-13.17121 -3.9146,-25.09604 -11.74609,-35.77539 -7.47557,-11.035362 -17.26588,-18.689208 -29.36914,-22.960941 -7.11956,-2.491854 -14.23982,-3.738281 -21.35938,-3.738281 -19.22286,0 -35.41865,7.476649 -48.58984,22.427734 l -63.40235,74.199218 c -1.42391,1.06791 -6.14093,9.23242 -16.16015,9.23242 -10.01923,0 -14.20109,-8.16451 -15.625,-9.23242 L 110.53125,99.013672 C 97.716024,84.062587 81.697447,76.585938 62.474609,76.585938 Z m 395.060551,0 c -14.9511,-10e-7 -27.76596,5.340179 -38.44532,16.019531 -10.32338,10.323381 -15.48437,22.961011 -15.48437,37.912111 0,14.9511 5.16099,27.76596 15.48437,38.44531 10.67936,10.32338 23.49422,15.48633 38.44532,15.48633 14.95109,0 27.76596,-5.16295 38.44531,-15.48633 C 506.65982,158.28354 512,145.46868 512,130.51758 512,115.56648 506.65982,102.92885 495.98047,92.605469 485.30112,81.926117 472.48625,76.585938 457.53516,76.585938 Z m 0.5332,118.541012 c -14.9511,0 -27.76596,5.34018 -38.44531,16.01953 -10.67936,10.67936 -16.01758,23.49422 -16.01758,38.44532 v 131.89062 c 0,14.9511 5.33822,27.76596 16.01758,38.44531 10.67935,10.32339 23.49421,15.48633 38.44531,15.48633 14.9511,0 27.58873,-5.16294 37.91211,-15.48633 C 506.65982,409.24838 512,396.43352 512,381.48242 V 249.5918 c 0,-14.9511 -5.34018,-27.76596 -16.01953,-38.44532 -10.32338,-10.67935 -22.96101,-16.01953 -37.91211,-16.01953 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#000000;fill-opacity:1;stroke-width:1.09609616px" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -1,29 +0,0 @@
const mongo = require('mongodb');
const bcrypt = require('bcryptjs');
const User = require('../built/models/user').default;
const args = process.argv.slice(2);
const user = args[0];
const q = user.startsWith('@') ? {
username: user.split('@')[1],
host: user.split('@')[2] || null
} : { _id: new mongo.ObjectID(user) };
console.log(`Resetting password for ${user}...`);
const passwd = 'yo';
// Generate hash of password
const hash = bcrypt.hashSync(passwd);
User.update(q, {
$set: {
password: hash
}
}).then(() => {
console.log(`Password of ${user} is now '${passwd}'`);
}, e => {
console.error(e);
});

View File

@ -1,23 +0,0 @@
const mongo = require('mongodb');
const User = require('../built/models/user').default;
const args = process.argv.slice(2);
const user = args[0];
const q = user.startsWith('@') ? {
username: user.split('@')[1],
host: user.split('@')[2] || null
} : { _id: new mongo.ObjectID(user) };
console.log(`Suspending ${user}...`);
User.update(q, {
$set: {
isSuspended: true
}
}).then(() => {
console.log(`Suspended ${user}`);
}, e => {
console.error(e);
});

22
docs/backup.fr.md Normal file
View File

@ -0,0 +1,22 @@
Comment faire une sauvegarde de votre Misskey ?
==========================
Assurez-vous d'avoir installé **mongodb-tools**.
---
Dans votre terminal :
``` shell
$ mongodump --archive=db-backup -u <VotreNomdUtilisateur> -p <VotreMotDePasse>
```
Pour plus de détails, merci de consulter [la documentation de mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/).
Restauration
-------
``` shell
$ mongorestore --archive=db-backup
```
Pour plus de détails, merci de consulter [la documentation de mongorestore](https://docs.mongodb.com/manual/reference/program/mongorestore/).

View File

@ -10,7 +10,7 @@ In your shell:
$ mongodump --archive=db-backup -u <YourUserName> -p <YourPassword> $ mongodump --archive=db-backup -u <YourUserName> -p <YourPassword>
``` ```
For details, plese see [mongodump docs](https://docs.mongodb.com/manual/reference/program/mongodump/). For details, please see [mongodump docs](https://docs.mongodb.com/manual/reference/program/mongodump/).
Restore Restore
------- -------

View File

@ -13,7 +13,7 @@ This guide describes how to install and setup Misskey with Docker.
2. `cd misskey` Move to misskey directory. 2. `cd misskey` Move to misskey directory.
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag. 3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) tag.
*2.* Make configuration files *2.* Configure Misskey
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`. 2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
@ -31,12 +31,12 @@ Build misskey with the following:
*5.* That is it. *5.* That is it.
---------------------------------------------------------------- ----------------------------------------------------------------
Well done! Now, you have an environment that run to Misskey. Well done! Now you have an environment to run Misskey.
### Launch normally ### Launch normally
Just `docker-compose up -d`. GLHF! Just `docker-compose up -d`. GLHF!
### Way to Update to latest version of your Misskey ### How to update your Misskey server to the latest version
1. `git fetch` 1. `git fetch`
2. `git stash` 2. `git stash`
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` 3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
@ -45,9 +45,9 @@ Just `docker-compose up -d`. GLHF!
6. Check [ChangeLog](../CHANGELOG.md) for migration information 6. Check [ChangeLog](../CHANGELOG.md) for migration information
7. `docker-compose stop && docker-compose up -d` 7. `docker-compose stop && docker-compose up -d`
### Way to execute cli command: ### How to execute [cli commands](manage.en.md):
`docker-compose run --rm web node cli/mark-admin @example` `docker-compose run --rm web node cli/mark-admin @example`
---------------------------------------------------------------- ----------------------------------------------------------------
If you have any questions or troubles, feel free to contact us! If you have any questions or trouble, feel free to contact us!

View File

@ -8,28 +8,11 @@ coming soon
node cli/mark-admin (User-ID or Username) node cli/mark-admin (User-ID or Username)
``` ```
## Mark as 'verified' user
``` shell
node cli/mark-verified (User-ID or Username)
```
## Suspend users
``` shell
node cli/suspend (User-ID or Username)
```
e.g. e.g.
``` shell ``` shell
# Use id # By id
node cli/suspend 57d01a501fdf2d07be417afe node cli/mark-admin 57d01a501fdf2d07be417afe
# Use username # By username
node cli/suspend @syuilo node cli/suspend @syuilo
# Use username (remote)
node cli/suspend @syuilo@misskey.xyz
```
## Reset password
``` shell
node cli/reset-password (User-ID or Username)
``` ```

View File

@ -8,28 +8,11 @@ coming soon
node cli/mark-admin (ユーザーID または ユーザー名) node cli/mark-admin (ユーザーID または ユーザー名)
``` ```
## 'verified'ユーザーを設定する
``` shell
node cli/mark-verified (ユーザーID または ユーザー名)
```
## ユーザーを凍結する
``` shell
node cli/suspend (ユーザーID または ユーザー名)
```
例: 例:
``` shell ``` shell
# ユーザーID # ユーザーID
node cli/suspend 57d01a501fdf2d07be417afe node cli/mark-admin 57d01a501fdf2d07be417afe
# ユーザー名 # ユーザー名
node cli/suspend @syuilo node cli/mark-admin @syuilo
# ユーザー名 (リモート)
node cli/suspend @syuilo@misskey.xyz
```
## ユーザーのパスワードをリセットする
``` shell
node cli/reset-password (ユーザーID または ユーザー名)
``` ```

View File

@ -10,7 +10,7 @@ This guide describes how to install and setup Misskey.
*1.* Create Misskey user *1.* Create Misskey user
---------------------------------------------------------------- ----------------------------------------------------------------
Running misskey on root is not a good idea so we create a user for that. Running misskey as root is not a good idea so we create a user for that.
In debian for exemple : In debian for exemple :
``` ```
@ -32,7 +32,7 @@ Please install and setup these softwares:
*3.* Setup MongoDB *3.* Setup MongoDB
---------------------------------------------------------------- ----------------------------------------------------------------
In root : As root:
1. `mongo` Go to the mongo shell 1. `mongo` Go to the mongo shell
2. `use misskey` Use the misskey database 2. `use misskey` Use the misskey database
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db. 3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
@ -47,17 +47,17 @@ In root :
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest) 4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Install misskey dependencies. 5. `npm install` Install misskey dependencies.
*(optional)* Generating VAPID keys *(optional)* Generate VAPID keys
---------------------------------------------------------------- ----------------------------------------------------------------
If you want to enable ServiceWorker, you need to generate VAPID keys: If you want to enable ServiceWorker, you need to generate VAPID keys:
Unless you have set your global node_modules location elsewhere, you need to run this in root. Unless you have set your global node_modules location elsewhere, you need to run this as root.
``` shell ``` shell
npm install web-push -g npm install web-push -g
web-push generate-vapid-keys web-push generate-vapid-keys
``` ```
*5.* Make configuration file *5.* Configure Misskey
---------------------------------------------------------------- ----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`. 1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
2. Edit `default.yml` 2. Edit `default.yml`
@ -114,7 +114,7 @@ WantedBy=multi-user.target
You can check if the service is running with `systemctl status misskey`. You can check if the service is running with `systemctl status misskey`.
### Way to Update to latest version of your Misskey ### How to update your Misskey server to the latest version
1. `git fetch` 1. `git fetch`
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` 2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
3. `npm install` 3. `npm install`

View File

@ -26,6 +26,7 @@ common:
close: "閉じる" close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
b: "何かありましたか?" b: "何かありましたか?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "待機中"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定" advanced: "詳細設定"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

View File

@ -26,6 +26,7 @@ common:
close: "Schließen" close: "Schließen"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "Verstanden!" got-it: "Verstanden!"
customization-tips: customization-tips:
title: "Anpassung-Tipps" title: "Anpassung-Tipps"
@ -43,13 +44,13 @@ common:
unknown: "Unbekannt" unknown: "Unbekannt"
future: "Zukunft" future: "Zukunft"
just_now: "Gerade eben" just_now: "Gerade eben"
seconds_ago: "vor {0} Sekunde{0:n}" seconds_ago: "vor {} Sekunde(n)"
minutes_ago: "vor {0} Minuten" minutes_ago: "vor {} Minute(n)"
hours_ago: "vor {0} Stunden" hours_ago: "vor {} Stunde(n)"
days_ago: "vor {0} Tag{0:en}" days_ago: "vor {} Tag(en)"
weeks_ago: "vor {0} Woche{0:n}" weeks_ago: "vor {} Woche(n)"
months_ago: "vor {0} Monat{0:en}" months_ago: "vor {} Monat(en)"
years_ago: "vor {} Jahr{0:en}" years_ago: "vor {} Jahr(en)"
month-and-day: "{day}/{month}" month-and-day: "{day}/{month}"
trash: "Papierkorb" trash: "Papierkorb"
drive: "ドライブ" drive: "ドライブ"
@ -90,6 +91,9 @@ common:
specified: "Direkt" specified: "Direkt"
specified-desc: "Nur für bestimmte Benutzer posten" specified-desc: "Nur für bestimmte Benutzer posten"
private: "Privat" private: "Privat"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "Was machst du gerade?" a: "Was machst du gerade?"
b: "Was ist so passiert?" b: "Was ist so passiert?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'Erneut versuchen' retry: 'Erneut versuchen'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "Oder" or: "Oder"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Warten" waiting: "Warten"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Direkt" specified: "Direkt"
specified-desc: "Poste nur für bestimmte Benutzer" specified-desc: "Poste nur für bestimmte Benutzer"
private: "Privat" private: "Privat"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Laden" fetching: "Laden"
no-broadcasts: "Keine Broadcasts" no-broadcasts: "Keine Broadcasts"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "Dieser Post ist privat" private: "Dieser Post ist privat"
deleted: "Dieser Beitrag wurde entfernt" deleted: "Dieser Beitrag wurde entfernt"
reposted-by: "Repostet von {}"
location: "Ort" location: "Ort"
renote: "Anmerkung" renote: "Anmerkung"
add-reaction: "Reaktion hinzufügen" add-reaction: "Reaktion hinzufügen"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "Eine Abstimmung erstellen" create-poll: "Eine Abstimmung erstellen"
text-remain: "{} Zeichen verbleibend" text-remain: "{} Zeichen verbleibend"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "Sichtbarkeit" visibility: "Sichtbarkeit"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Zitieren..." quote: "Zitieren..."
cancel: "Abbrechen" cancel: "Abbrechen"
renote: "Anmerkung" renote: "Anmerkung"
renote-home: "Renote (Home)"
reposting: "Weitersagen..." reposting: "Weitersagen..."
success: "Weitergesagt!" success: "Weitergesagt!"
failure: "Weitersagen fehlgeschlagen" failure: "Weitersagen fehlgeschlagen"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Profil" profile: "Profil"
notification: "Mitteilungen" notification: "Mitteilungen"
apps: "In App öffnen" apps: "In App öffnen"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Sicherheit" security: "Sicherheit"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "Automatische Pop-out Fenster" auto-popout: "Automatische Pop-out Fenster"
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert." auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
advanced: "Erweiterte Einstellungen" advanced: "Erweiterte Einstellungen"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Karte anzeigen" show-maps: "Karte anzeigen"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "Neuste Version:" latest-version: "Neuste Version:"

View File

@ -16,7 +16,7 @@ common:
reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to others post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”." reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to others post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”."
ui: "Interface" ui: "Interface"
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize." ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
drive: "Misskey Drive" drive: "Drive"
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online." drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!" outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!"
adblock: adblock:
@ -26,10 +26,11 @@ common:
close: "Close" close: "Close"
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised." do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
load-more: "Load more" load-more: "Load more"
enter-password: "パスワードを入力してください"
got-it: "Got it!" got-it: "Got it!"
customization-tips: customization-tips:
title: "Customization tips" title: "Customization tips"
paragraph: "<p>Home customization allows you to add/delete, drag and drop and rearrange widgets.</p><p>You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets.</p><p>To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header.</p><p>To finish the customization, click \"Finish\" on the upper right.</p>" paragraph: "<p>Home customization allows you to add/delete, drag and drop and rearrange widgets.</p><p>You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets.</p><p>To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header.</p><p>To finish the customization, click \"Done\" on the upper right.</p>"
gotit: "Got it!" gotit: "Got it!"
notification: notification:
file-uploaded: "File uploaded!" file-uploaded: "File uploaded!"
@ -90,6 +91,9 @@ common:
specified: "Direct" specified: "Direct"
specified-desc: "Post to specified users only" specified-desc: "Post to specified users only"
private: "Private" private: "Private"
local-public: "Public (Only local)"
local-home: "Home (Only local)"
local-followers: "Followers (Only local)"
note-placeholders: note-placeholders:
a: "What are you doing?" a: "What are you doing?"
b: "What's happening?" b: "What's happening?"
@ -116,10 +120,11 @@ common:
reduce-motion: "Reduce motion in UI" reduce-motion: "Reduce motion in UI"
this-setting-is-this-device-only: "Only for this device" this-setting-is-this-device-only: "Only for this device"
use-os-default-emojis: "Use the OS default Emojis" use-os-default-emojis: "Use the OS default Emojis"
do-not-use-in-production: 'As this is for development, do not use this in production.' do-not-use-in-production: 'This is a development build. Do not use in production.'
is-remote-user: "This user information is copied." is-remote-user: "This user information is copied."
is-remote-post: "This post information is a copy." is-remote-post: "This post information is a copy."
view-on-remote: "View it on remote" view-on-remote: "View it on remote"
renoted-by: "Renoted by {user}"
error: error:
title: 'Something happened :(' title: 'Something happened :('
retry: 'Retry' retry: 'Retry'
@ -204,7 +209,7 @@ common/views/components/games/reversi/reversi.index.vue:
invitations: "Youve got an invitation!" invitations: "Youve got an invitation!"
my-games: "My game" my-games: "My game"
all-games: "All games" all-games: "All games"
enter-username: "Enter a username" enter-username: "Please enter username"
game-state: game-state:
ended: "Finished" ended: "Finished"
playing: "In Progress" playing: "In Progress"
@ -215,7 +220,7 @@ common/views/components/games/reversi/reversi.room.vue:
black-or-white: "Black/White" black-or-white: "Black/White"
black-is: "Black is {}" black-is: "Black is {}"
rules: "Rules" rules: "Rules"
is-llotheo: "The lesser side wins" is-llotheo: "The lesser one wins(Llotheo)"
looped-map: "Looped map" looped-map: "Looped map"
can-put-everywhere: "Can put everywhere" can-put-everywhere: "Can put everywhere"
settings-of-the-bot: "Bot settings" settings-of-the-bot: "Bot settings"
@ -263,7 +268,7 @@ common/views/components/theme.vue:
install: "Install" install: "Install"
installed: "\"{}\" has been installed" installed: "\"{}\" has been installed"
create-a-theme: "Create a theme" create-a-theme: "Create a theme"
save-created-theme: "Save a theme" save-created-theme: "Save theme"
primary-color: "Primary color" primary-color: "Primary color"
secondary-color: "Secondary color" secondary-color: "Secondary color"
text-color: "Text color" text-color: "Text color"
@ -362,7 +367,8 @@ common/views/components/signin.vue:
signin: "Sign in" signin: "Sign in"
or: "Or" or: "Or"
signin-with-twitter: "Log in with Twitter" signin-with-twitter: "Log in with Twitter"
signin-with-github: "Log in with GitHub" signin-with-github: "Sign in with GitHub"
signin-with-discord: "Sign in with Discord"
login-failed: "Log in failed. Make sure you have entered your correct username and password." login-failed: "Log in failed. Make sure you have entered your correct username and password."
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "Invitation code" invitation-code: "Invitation code"
@ -406,7 +412,14 @@ common/views/components/github-setting.vue:
connected-to: "You are connected to this GitHub account" connected-to: "You are connected to this GitHub account"
detail: "More..." detail: "More..."
reconnect: "Reconnect" reconnect: "Reconnect"
connect: "Connect to GitHub" connect: "Link your GitHub account"
disconnect: "Disconnect"
common/views/components/discord-setting.vue:
description: "Once you connect your Discord account to your Misskey account, you will be able to see information about your Discord account on your profile, and you will be able to sign-in using Discord."
connected-to: "You are connected to this Discord account"
detail: "Details…"
reconnect: "Reconnect"
connect: "Link your Discord account"
disconnect: "Disconnect" disconnect: "Disconnect"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Waiting" waiting: "Waiting"
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Direct" specified: "Direct"
specified-desc: "Post to specified users only" specified-desc: "Post to specified users only"
private: "Private" private: "Private"
local-public: "Local (Public)"
local-public-desc: "Do not publish to remote"
local-home: "Home (Only local)"
local-followers: "Followers (Only local)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} users mentioned" count: "{} users mentioned"
empty: "No popular hashtag trends" empty: "No popular hashtag trends"
@ -429,20 +446,24 @@ common/views/components/profile-editor.vue:
location: "Location" location: "Location"
description: "About me" description: "About me"
birthday: "Birthday" birthday: "Birthday"
avatar: "Avatar" avatar: "Icon"
banner: "Banner" banner: "Banner"
is-cat: "This account is a Cat" is-cat: "This account is a Cat"
is-bot: "This account is a Bot" is-bot: "This account is a Bot"
is-locked: "Follower requests require approval" is-locked: "Follower requests require approval"
careful-bot: "Follower requests from bots require approval" careful-bot: "Follower requests from bots require approval"
advanced: "Advanced" advanced: "Other"
privacy: "Privacy" privacy: "Privacy"
save: "Update profile" save: "Save"
saved: "Profile updated successfully" saved: "Profile updated successfully"
uploading: "Uploading" uploading: "Uploading"
upload-failed: "Failed to upload" upload-failed: "Failed to upload"
email: "Email settings"
email-address: "Email Address"
email-verified: "Your email has been verified."
email-not-verified: "Email address is not confirmed. Please check your inbox."
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Fetching" fetching: "Checking"
no-broadcasts: "No announcements" no-broadcasts: "No announcements"
have-a-nice-day: "Have a nice day!" have-a-nice-day: "Have a nice day!"
next: "Next" next: "Next"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "Post is private" private: "Post is private"
deleted: "Post has been removed" deleted: "Post has been removed"
reposted-by: "Reposted by {}"
location: "Location" location: "Location"
renote: "Repost" renote: "Repost"
add-reaction: "Add a reaction" add-reaction: "Add a reaction"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "Reposted by {}"
reply: "Reply" reply: "Reply"
renote: "Renote" renote: "Renote"
add-reaction: "Add a reaction" add-reaction: "Add a reaction"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "Create a poll" create-poll: "Create a poll"
text-remain: "{} characters remaining" text-remain: "{} characters remaining"
recent-tags: "Recent" recent-tags: "Recent"
local-only-message: "This post will only be published locally"
click-to-tagging: "Click to tagging" click-to-tagging: "Click to tagging"
visibility: "Visibility" visibility: "Visibility"
geolocation-alert: "Your device does not provide location services." geolocation-alert: "Your device does not provide location services."
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Quote..." quote: "Quote..."
cancel: "Cancel" cancel: "Cancel"
renote: "Repost" renote: "Repost"
renote-home: "Renote (Home)"
reposting: "Reposting..." reposting: "Reposting..."
success: "Reposted!" success: "Reposted!"
failure: "Failed to Repost" failure: "Failed to Repost"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Profile" profile: "Profile"
notification: "Notification" notification: "Notification"
apps: "Apps" apps: "Apps"
tags: "Hashtags"
mute-and-block: "Mute / Block" mute-and-block: "Mute / Block"
blocking: "Blocking" blocking: "Blocking"
security: "Security" security: "Security"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "Post visibility" note-visibility: "Post visibility"
default-note-visibility: "Default visibility" default-note-visibility: "Default visibility"
remember-note-visibility: "Remember post visibility" remember-note-visibility: "Remember post visibility"
web-search-engine: "Web search engine"
web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}"
auto-popout: "Auto pop-out window" auto-popout: "Auto pop-out window"
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser." auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
advanced: "Advanced settings" advanced: "Advanced settings"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "Show renoted posts of mine in timelines" show-renoted-my-notes: "Show renoted posts of mine in timelines"
show-local-renotes: "Show renoted local posts in timelines" show-local-renotes: "Show renoted local posts in timelines"
show-maps: "Display a map to show the location" show-maps: "Display a map to show the location"
remain-deleted-note: "Continue to show deleted posts"
deck-column-align: "Deck column alignment" deck-column-align: "Deck column alignment"
deck-column-align-center: "Center" deck-column-align-center: "Center"
deck-column-align-left: "Left" deck-column-align-left: "Left"
@ -835,7 +860,7 @@ common/views/components/mute-and-block.vue:
no-blocked-users: "No blocked users" no-blocked-users: "No blocked users"
word-mute: "Word mute" word-mute: "Word mute"
muted-words: "Muted keywords" muted-words: "Muted keywords"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります" muted-words-description: "Separating with spaces results in AND specifications, and delimiting with line breaks results in OR specifications"
save: "Save" save: "Save"
common/views/components/password-settings.vue: common/views/components/password-settings.vue:
reset: "Change password" reset: "Change password"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "Dashboard" dashboard: "Dashboard"
instance: "Instance" instance: "Instance"
emoji: "Emoji" emoji: "Emoji"
moderators: "Moderators"
users: "Users" users: "Users"
update: "Update" federation: "Federation"
announcements: "Announcements" announcements: "Announcements"
hashtags: "Hashtags" hashtags: "Hashtags"
back-to-misskey: "Back to Misskey" back-to-misskey: "Back to Misskey"
@ -947,26 +973,47 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Settings of connecting to Twitter" twitter-integration-config: "Settings of connecting to Twitter"
twitter-integration-info: "The callback URL is set on /api/tw/cb." twitter-integration-info: "The callback URL is set on {url}."
enable-twitter-integration: "Enable connection to Twitter" enable-twitter-integration: "Enable connection to Twitter"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer Secret" twitter-integration-consumer-secret: "Consumer Secret"
github-integration-config: "Setting of connecting to GitHub" github-integration-config: "Setting of connecting to GitHub"
github-integration-info: "The callback URL is set on /api/gh/cb." github-integration-info: "The callback URL is set on {url}."
enable-github-integration: "Enable connection to GitHub" enable-github-integration: "Enable connection to GitHub"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Setting of Discord Integration"
discord-integration-info: "The callback URL is set on {url}."
enable-discord-integration: "Enable Discord connection"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "Proxy account" proxy-account-config: "Proxy account"
proxy-account-info: "Proxy account can follow a remote user to deliver activities if no one in this instance follow him or her. When you add a remote user who is followed by nobody in this instance to your list, in order to get his or her data, proxy account follow him or her instead of your following." proxy-account-info: "Proxy account can follow a remote user to deliver activities if no one in this instance follow him or her. When you add a remote user who is followed by nobody in this instance to your list, in order to get his or her data, proxy account follow him or her instead of your following."
proxy-account-username: "Proxy account user name" proxy-account-username: "Proxy account user name"
proxy-account-username-desc: "Specify the user name of the account that is used as a proxy." proxy-account-username-desc: "Specify the user name of the account that is used as a proxy."
proxy-account-warn: "You must make an account having this username before this action." proxy-account-warn: "You must make an account having this username before this action."
max-note-text-length: "Maximum numbers of post characters" max-note-text-length: "Maximum numbers of post characters"
disable-registration: "Stop user registration" disable-registration: "Disable new user registration"
disable-local-timeline: "Make Local Timeline disabled" disable-local-timeline: "Disable the Local Timeline"
invite: "Invite" invite: "Invite"
save: "Save" save: "Save"
saved: "Saved" saved: "Saved"
user-recommendation-config: "Recommended users"
enable-external-user-recommendation: "Enable to external user recommendation"
external-user-recommendation-engine: "Engine"
external-user-recommendation-engine-desc: "Example: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "Timeout"
external-user-recommendation-timeout-desc: "Number of milliseconds (ex. 300,000)"
email-config: "Email server settings"
email-config-info: "Used to confirm email and password reset etc."
enable-email: "Enable email delivery"
email: "Email Address"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTP Host"
smtp-port: "SMTP Port"
smtp-user: "SMTP User"
smtp-pass: "SMTP Password"
admin/views/charts.vue: admin/views/charts.vue:
title: "Chart" title: "Chart"
per-day: "per Day" per-day: "per Day"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "Response time" network-time: "Response time"
network-usage: "Traffic" network-usage: "Traffic"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "Suspend a user" operation: "Operations"
username-or-userid: "Username or user ID"
user-not-found: "User not found"
lookup: "Look up"
reset-password: "Reset password"
password-updated: "The password is now \"{password}\""
suspend: "Suspend" suspend: "Suspend"
suspended: "Successfully suspended." suspended: "Successfully suspended."
unsuspend-user: "Unsuspend users"
unsuspend: "Unsuspend" unsuspend: "Unsuspend"
unsuspended: "The user has successfully unsuspended." unsuspended: "The user has successfully unsuspended."
verify-user: "User account verification settings"
verify: "Verify account" verify: "Verify account"
verified: "The account is now being verified" verified: "The account is now being verified"
unverify-user: "User account unverification settings"
unverify: "Unverify account" unverify: "Unverify account"
unverified: "The account is now being unverified" unverified: "The account is now being unverified"
users:
title: "Users"
sort:
title: "Sort"
createdAtAsc: "Date Registered (Ascending)"
createdAtDesc: "Date Registered (Descending)"
updatedAtAsc: "Last Updated (Ascending)"
updatedAtDesc: "Last Updated (Descending)"
origin:
title: "Origin"
combined: "Local + Remote"
local: "Local"
remote: "Remote"
createdAt: "Created at"
updatedAt: "Updated at"
admin/views/moderators.vue:
add-moderator:
title: "Register Moderator"
add: "Register"
added: "Registered a Moderator."
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "Add emoji" title: "Add emoji"
@ -1022,7 +1091,7 @@ admin/views/emoji.vue:
remove: "Remove" remove: "Remove"
updated: "Updated" updated: "Updated"
remove-emoji: remove-emoji:
are-you-sure: "Delete \"%1$s\"?" are-you-sure: "Delete \"$1\"?"
removed: "Deleted" removed: "Deleted"
admin/views/announcements.vue: admin/views/announcements.vue:
announcements: "Announcements" announcements: "Announcements"
@ -1033,7 +1102,7 @@ admin/views/announcements.vue:
text: "Content" text: "Content"
saved: "Saved" saved: "Saved"
_remove: _remove:
are-you-sure: "Delete \"%1$s\"?" are-you-sure: "Delete \"$1\"?"
removed: "Deleted" removed: "Deleted"
admin/views/hashtags.vue: admin/views/hashtags.vue:
hided-tags: "Hidden Tags" hided-tags: "Hidden Tags"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "See more" refresh: "See more"
close: "Close" close: "Close"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "Reposted by {}"
private: "This post is private" private: "This post is private"
deleted: "This post has been deleted" deleted: "This post has been deleted"
location: "Location" location: "Location"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Reply" reply: "Reply"
reaction: "Reaction" reaction: "Reaction"
reposted-by: "Reposted by {}"
private: "This post is private" private: "This post is private"
deleted: "This post has been deleted" deleted: "This post has been deleted"
location: "Location" location: "Location"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "Post visibility" note-visibility: "Post visibility"
default-note-visibility: "Default visibility" default-note-visibility: "Default visibility"
remember-note-visibility: "Remember post visibility" remember-note-visibility: "Remember post visibility"
web-search-engine: "Web search engine"
web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Don't mark the post as 'from mobile'" disable-via-mobile: "Don't mark the post as 'from mobile'"
load-raw-images: "Show attached images in original quality" load-raw-images: "Show attached images in original quality"
load-remote-media: "Show media from a remote server" load-remote-media: "Show media from a remote server"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "Connect to your GitHub account" github-connect: "Connect to your GitHub account"
github-reconnect: "Reconnect" github-reconnect: "Reconnect"
github-disconnect: "Disconnect" github-disconnect: "Disconnect"
discord: "Discord Integration"
discord-connect: "Connect to your Discord account"
discord-reconnect: "Reconnect"
discord-disconnect: "Disconnect"
update: "Misskey Update" update: "Misskey Update"
version: "Current version:" version: "Current version:"
latest-version: "Latest version:" latest-version: "Latest version:"
@ -1401,7 +1474,7 @@ deck:
deck/deck.tl-column.vue: deck/deck.tl-column.vue:
is-media-only: "Only media posts" is-media-only: "Only media posts"
is-media-view: "Media view" is-media-view: "Media view"
edit: "Option" edit: "Options"
deck/deck.user-column.vue: deck/deck.user-column.vue:
posts: "Posts" posts: "Posts"
following: "Following" following: "Following"

View File

@ -26,6 +26,7 @@ common:
close: "Cerrar" close: "Cerrar"
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida." do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "¡Listo!" got-it: "¡Listo!"
customization-tips: customization-tips:
title: "Consejos de personalización" title: "Consejos de personalización"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "¿Qué haces?" a: "¿Qué haces?"
b: "¿Qué está pasando?" b: "¿Qué está pasando?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "O" or: "O"
signin-with-twitter: "Ingresar con Twitter" signin-with-twitter: "Ingresar con Twitter"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos." login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "Código de invitación" invitation-code: "Código de invitación"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Un momento" waiting: "Un momento"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Directo" specified: "Directo"
specified-desc: "Publica solo para los seguidores que quieras" specified-desc: "Publica solo para los seguidores que quieras"
private: "Privada" private: "Privada"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Recuperando" fetching: "Recuperando"
no-broadcasts: "Sin emisión" no-broadcasts: "Sin emisión"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "Esta publicación es privada" private: "Esta publicación es privada"
deleted: "Esta publicación ha sido removida" deleted: "Esta publicación ha sido removida"
reposted-by: "Republicado por {}"
location: "Localización" location: "Localización"
renote: "Republicar" renote: "Republicar"
add-reaction: "Agregar una reacción" add-reaction: "Agregar una reacción"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "Crea una encuesta" create-poll: "Crea una encuesta"
text-remain: "quedan {} caracteres" text-remain: "quedan {} caracteres"
recent-tags: "Reciente" recent-tags: "Reciente"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "Click para etiquetar" click-to-tagging: "Click para etiquetar"
visibility: "Visibilidad" visibility: "Visibilidad"
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización." geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Cita..." quote: "Cita..."
cancel: "Cancelar" cancel: "Cancelar"
renote: "Volver a publicar" renote: "Volver a publicar"
renote-home: "Renote (Home)"
reposting: "Publicando de nuevo..." reposting: "Publicando de nuevo..."
success: "¡Publicado!" success: "¡Publicado!"
failure: "La publicación ha fallado" failure: "La publicación ha fallado"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Perfil" profile: "Perfil"
notification: "Notificación" notification: "Notificación"
apps: "Aplicaciones" apps: "Aplicaciones"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Seguridad" security: "Seguridad"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "Ventana emergente automática" auto-popout: "Ventana emergente automática"
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador." auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
advanced: "Configuración avanzada" advanced: "Configuración avanzada"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

View File

@ -4,29 +4,30 @@ meta:
divider: "" divider: ""
common: common:
misskey: "Une ⭐ du fédiverse" misskey: "Une ⭐ du fédiverse"
about-title: "Une ⭐ du fédivers." about-title: "Une ⭐ du fédiverse."
about: "Merci davoir choisis Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre et fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), elle est connectée mutuellement avec 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はオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" about: "Misskey est un <b>réseau social de Microblogage</b> open source. Il offre une interface utilisateur riche et hautement personnalisable, une variété de réactions aux publications et un lecteur pour la gestion centralisée de fichiers. De plus, comme il est possible de se connecter au reste du du Fédiverse, vous pouvez interagir avec d'autres plateformes fédérées. Par exemple, si vous publiez quelque chose, la note sera transmise non seulement aux utilisateurs de Misskey, mais aussi à d'autres plateformes de réseaux sociaux dans le Fédiverse. Imaginez que vous puissiez transmettre des ondes radio d'une planète vers l'autre."
features: "Options" features: "Options"
rich-contents: "Notes" rich-contents: "Notes"
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" rich-contents-desc: "Partagez vos idées, les événements et les sujets qui vous tiennent à cœur ainsi que tout autre chose que vous souhaitez partager avec les autres. Si vous le désirez, vous pouvez décorer vos messages en utilisant une syntaxe différente ou en y joignant des sondages et des fichiers, tels que les photos ou les vidéos que vous aimez."
reaction: "Réactions" reaction: "Réactions"
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" reaction-desc: "Une manière simple d'exprimer vos émotions. Misskey peut attacher diverses réactions aux publications des autres utilisateurs. Si vous goûtez aux réactions sur Misskey une fois, vous ne pourrez plus être en mesure de retourner vers une autre plateforme de réseaux sociaux n'offrant que des \"J'aime\"."
ui: "Interface utilisateur" ui: "Interface utilisateur"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
drive: "Drive" drive: "Drive"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" outro: "Découvrez vous-même les fonctionnalités de Misskey. Étant donné que Misskey est un réseaux social fédéré, vous pouvez essayer dautres instances afin de trouver vos ami·e·s si la présente instance ne vous correspond pas. Bonne chance et amusez-vous bien!"
adblock: adblock:
detected: "Veuillez désactiver votre bloqueur de publicités" detected: "Veuillez désactiver votre bloqueur de publicités"
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé." warning: "<strong>Misskey 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: "Permissions de l'application" 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 peut être compromis."
load-more: "Charger plus" load-more: "Charger plus"
got-it: "J'ai compris !" enter-password: "パスワードを入力してください"
got-it: "Jai compris !"
customization-tips: customization-tips:
title: "Conseils de personnalisation" title: "Conseils de personnalisation"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
@ -44,8 +45,8 @@ common:
future: "à 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 {} minute·s" minutes_ago: "Il y a {} min"
hours_ago: "Il y a {} heure·s" hours_ago: "Il y a {} h"
days_ago: "Il y a {} jours" days_ago: "Il y a {} jours"
weeks_ago: "Il y a {} semaines·s" weeks_ago: "Il y a {} semaines·s"
months_ago: "Il y a {} mois" months_ago: "Il y a {} mois"
@ -90,6 +91,9 @@ common:
specified: "Direct" specified: "Direct"
specified-desc: "Publier uniquement aux utilisateurs·rices mentionnés·es" specified-desc: "Publier uniquement aux utilisateurs·rices mentionnés·es"
private: "Privé" private: "Privé"
local-public: "Local (Public)"
local-home: "Accueil (local uniquement)"
local-followers: "Local (Abonnés)"
note-placeholders: note-placeholders:
a: "Que faites-vous maintenant ?" a: "Que faites-vous maintenant ?"
b: "Quoi de neuf ?" b: "Quoi de neuf ?"
@ -119,7 +123,8 @@ common:
do-not-use-in-production: 'Il sagit dune version de développement. Ne pas utiliser dans un environnement de production.' do-not-use-in-production: 'Il sagit dune version de développement. Ne pas utiliser dans un environnement de production.'
is-remote-user: "Ces informations appartiennent à un·e utilisateur·rice distant·e." is-remote-user: "Ces informations appartiennent à un·e utilisateur·rice distant·e."
is-remote-post: "Ceci est une publication distante." is-remote-post: "Ceci est une publication distante."
view-on-remote: "Consulter le profil complet" view-on-remote: " Consulter le profil complet"
renoted-by: "Renoté par {user}"
error: error:
title: 'Une erreur est survenue' title: 'Une erreur est survenue'
retry: 'Réessayer' retry: 'Réessayer'
@ -158,15 +163,15 @@ common:
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 mignone !" ai-chan-kawaii: "Ai-Chan est mignonne !"
auth/views/form.vue: auth/views/form.vue:
share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte?" share-access: "Désirez-vous autoriser <i>{name}</i> à avoir accès à votre compte?"
permission-ask: "Cette application nécessite les autorisations suivantes :" permission-ask: "Cette application nécessite les autorisations suivantes :"
account-read: "Afficher les informations du compte :" account-read: "Afficher les informations du compte."
account-write: "Modifications des informations du compte :" account-write: "Modifications des informations du compte."
note-write: "Publier." note-write: "Publier."
like-write: "Réagir aux publications." like-write: "Réagir aux publications."
following-write: "Sabonner et se désabonner." following-write: "Suivre des comptes et se désabonner."
drive-read: "Lire votre Drive" drive-read: "Lire votre Drive"
drive-write: "Téléverser/supprimer des fichiers dans votre Drive." drive-write: "Téléverser/supprimer des fichiers dans votre Drive."
notification-read: "Lire vos notifications." notification-read: "Lire vos notifications."
@ -175,13 +180,13 @@ auth/views/form.vue:
accept: "Autoriser laccès" accept: "Autoriser laccès"
auth/views/index.vue: auth/views/index.vue:
loading: "Chargement en cours" loading: "Chargement en cours"
denied: "L'autorisation de l'application a été refusée." denied: "Lautorisation de lapplication a été refusée."
denied-paragraph: "Cette application ne va pas accéder à votre compte." denied-paragraph: "Cette application ne va pas accéder à votre compte."
already-authorized: "Cette application est déjà autorisée" already-authorized: "Cette application est déjà autorisée."
allowed: "Permissions autorisées de lapplication." allowed: "Permissions autorisées de lapplication."
callback-url: "Retour vers l'application" callback-url: "Retour vers lapplication."
please-go-back: "Veillez retourner à l'application." please-go-back: "Veillez retourner à l'application."
error: "La session n'existe pas." error: "La session nexiste pas."
sign-in: "Veuillez vous connecter" sign-in: "Veuillez vous connecter"
common/views/components/games/reversi/reversi.vue: common/views/components/games/reversi/reversi.vue:
matching: matching:
@ -198,7 +203,7 @@ common/views/components/games/reversi/reversi.index.vue:
sub-title: "Jouer à Reversi avec vos ami·e·s !" sub-title: "Jouer à Reversi avec vos ami·e·s !"
invite: "Inviter" invite: "Inviter"
rule: "Comment jouer ?" rule: "Comment jouer ?"
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。" rule-desc: "Reversi est un jeu qui se joue sur un tablier et dans lequel les joueurs placent des pions sur ce dernier, à tour de rôle avec l'adversaire. Le but du jeu est d'avoir plus de pions de sa couleur que l'adversaire à la fin de la partie, celle-ci s'achevant lorsque aucun des deux joueurs ne peut plus jouer de coup légal, généralement lorsque les 64 cases sont occupées."
mode-invite: "Inviter" mode-invite: "Inviter"
mode-invite-desc: "Inviter un·e joueur·se." mode-invite-desc: "Inviter un·e joueur·se."
invitations: "Vous avez reçu une invitation !" invitations: "Vous avez reçu une invitation !"
@ -229,7 +234,7 @@ common/views/components/games/reversi/reversi.room.vue:
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "Échec de connexion au serveur" title: "Échec de connexion au serveur"
description: "Il se peut quil y est un problème avec votre connexion internet, ou le serveur est hors-ligne ou en maintenance. Veuillez {réessayer} plus tard." description: "Il se peut quil y est un problème avec votre connexion internet, ou le serveur est hors-ligne ou en maintenance. Veuillez {réessayer} plus tard."
thanks: "On vous remercie d'utiliser Misskey." thanks: "On vous remercie davoir choisi dutiliser Misskey."
troubleshoot: "Dépanner" troubleshoot: "Dépanner"
common/views/components/connect-failed.troubleshooter.vue: common/views/components/connect-failed.troubleshooter.vue:
title: "Dépannage" title: "Dépannage"
@ -254,8 +259,8 @@ common/views/components/media-banner.vue:
sensitive: "Contenu sensible" sensitive: "Contenu sensible"
click-to-show: "Cliquer pour afficher" click-to-show: "Cliquer pour afficher"
common/views/components/theme.vue: common/views/components/theme.vue:
light-theme: "Thème durant le mode clair" light-theme: "Thème en mode jour"
dark-theme: "Thème durant le mode sombre" dark-theme: "Thème en mode nuit"
light-themes: "Thème clair" light-themes: "Thème clair"
dark-themes: "Thème sombre" dark-themes: "Thème sombre"
install-a-theme: "Installer un thème" install-a-theme: "Installer un thème"
@ -297,7 +302,7 @@ common/views/components/messaging.vue:
no-history: "Pas d'historique" no-history: "Pas d'historique"
common/views/components/messaging-room.vue: common/views/components/messaging-room.vue:
empty: "Pas de conversations" empty: "Pas de conversations"
no-history: "Il n'y a pas plus d'historique" no-history: "Aucun historique"
resize-form: "Faites glisser pour redimensionner" resize-form: "Faites glisser pour redimensionner"
new-message: "Nouveau message" new-message: "Nouveau message"
only-one-file-attached: "Un seul fichier peut être joint au message" only-one-file-attached: "Un seul fichier peut être joint au message"
@ -357,13 +362,14 @@ common/views/components/emoji-picker.vue:
common/views/components/signin.vue: common/views/components/signin.vue:
username: "Nom d'utilisateur·rice" username: "Nom d'utilisateur·rice"
password: "Mot de passe" password: "Mot de passe"
token: "Token" token: "Jeton"
signing-in: "Connexion…" signing-in: "Connexion…"
signin: "Se connecter" signin: "Se connecter"
or: "Ou" or: "Ou"
signin-with-twitter: "Se connecter via Twitter" signin-with-twitter: "Se connecter via Twitter"
signin-with-github: "Se connecter avec GitHub" signin-with-github: "Se connecter avec GitHub"
login-failed: "Échec d'authentification. Veuillez vérifier que votre nom d'utilisateur et mot de passe sont corrects." signin-with-discord: "Se connecter avec Discord"
login-failed: "Échec 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·e <a href=\"{}\">administrateur·rice</a>."
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "Reconnecter" reconnect: "Reconnecter"
connect: "Se connecter avec GitHub" connect: "Se connecter avec GitHub"
disconnect: "Déconnecter" disconnect: "Déconnecter"
common/views/components/discord-setting.vue:
description: "Si vous liez votre compte Discord à votre compte Misskey, vous serez en mesure de voir votre compte Twitter s'afficher sur votre profil, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Discord."
connected-to: "Vous êtes connecté à votre compte Discord"
detail: "Détails …"
reconnect: "Reconnecter"
connect: "Lier votre compte Discord"
disconnect: "Déconnecter"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Veuillez patienter" waiting: "Veuillez patienter"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Direct" specified: "Direct"
specified-desc: "Publier uniquement aux utilisateurs·rices mentionné·e·s" specified-desc: "Publier uniquement aux utilisateurs·rices mentionné·e·s"
private: "Privé" private: "Privé"
local-public: "Local (Public)"
local-public-desc: "Ne pas publier pour les distants"
local-home: "Accueil (local uniquement)"
local-followers: "Local (Abonnés)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} utilisateurs·rices mentionnés·es" count: "{} utilisateurs·rices mentionnés·es"
empty: "Aucune tendance" empty: "Aucune tendance"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "Profil mis à jour avec succès" saved: "Profil mis à jour avec succès"
uploading: "En cours d'envoi …" uploading: "En cours d'envoi …"
upload-failed: "Échec de l'envoi" upload-failed: "Échec de l'envoi"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Récupération" fetching: "Récupération"
no-broadcasts: "Aucune annonce" no-broadcasts: "Aucune annonce"
@ -448,9 +469,9 @@ common/views/widgets/broadcast.vue:
next: "Suivant" next: "Suivant"
common/views/widgets/calendar.vue: common/views/widgets/calendar.vue:
year: "Année {}" year: "Année {}"
month: "{}," month: "Mois {}"
day: "Jour {}" day: "{}"
today: "Aujourd'hui :" today: "Aujourdhui:"
this-month: "Ce mois-ci :" this-month: "Ce mois-ci :"
this-year: "Cette année :" this-year: "Cette année :"
common/views/widgets/donation.vue: common/views/widgets/donation.vue:
@ -493,26 +514,26 @@ common/views/widgets/tips.vue:
tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur." tips-line19: "Plusieurs fenêtres peuvent être détachées en dehors du navigateur."
tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé" tips-line20: "Pourcentage sur le widget calendrier qui indique le pourcentage de temps passé"
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots." tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
tips-line23: "Mayu est mignone avec ses sourcils." tips-line23: "Mayu est mignonne avec ses sourcils."
tips-line24: "Misskey a vu le jour en 2014" tips-line24: "Misskey est fonctionnel depuis 2014"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます" tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
common/views/pages/follow.vue: common/views/pages/follow.vue:
signed-in-as: "Connecté·e en tant que {}" signed-in-as: "Connecté·e en tant que {}"
following: "Suit" following: "Suit"
follow: "Suivre" follow: "Suivre"
request-pending: "Demande d'abonnement en attente" request-pending: "Demande 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 apparaitra comme bannière"
banner: "Bannière" banner: "Bannière"
uploading-banner: "Téléversement d'une nouvelle bannière" uploading-banner: "Téléversement d'une nouvelle bannière"
banner-updated: "La bannière est mise à jour" banner-updated: "Mise à jour de la bannière avec succès"
choose-banner: "Choisir une bannière" choose-banner: "Choisir une bannière"
avatar-crop-title: "Découpez la partie qui apparaitra comme avatar" avatar-crop-title: "Découpez la partie qui apparaitra comme avatar"
avatar: "Avatar" avatar: "Avatar"
uploading-avatar: "Téléversement du nouvel avatar" uploading-avatar: "Téléversement du nouvel avatar"
avatar-updated: "L'avatar est mis à jour" avatar-updated: "Mise à jour de lavatar avec succès"
choose-avatar: "Choisir un avatar" choose-avatar: "Choisir un avatar"
invalid-filetype: "Ce format de fichier nest pas pris en charge" invalid-filetype: "Ce format de fichier nest pas pris en charge"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
@ -524,9 +545,9 @@ desktop/views/components/activity.vue:
title: "Activité" title: "Activité"
toggle: "Afficher les vues" toggle: "Afficher les vues"
desktop/views/components/calendar.vue: desktop/views/components/calendar.vue:
title: "{year} / {month}" title: "{month} / {year}"
prev: "Mois dernier" prev: "Mois précédent"
next: "Mois prochain" next: "Mois suivant"
go: "Cliquez pour naviguer" go: "Cliquez pour naviguer"
desktop/views/components/choose-file-from-drive-window.vue: desktop/views/components/choose-file-from-drive-window.vue:
chosen-files: "{count} fichier·s sélectionné·s" chosen-files: "{count} fichier·s sélectionné·s"
@ -552,7 +573,7 @@ desktop/views/components/drive.file.vue:
rename: "Renommer" rename: "Renommer"
mark-as-sensitive: "Marquer comme sensible" mark-as-sensitive: "Marquer comme sensible"
unmark-as-sensitive: "Ne pas marquer comme sensible" unmark-as-sensitive: "Ne pas marquer comme sensible"
copy-url: "Copier l'URL" copy-url: "Copier lURL"
download: "Télécharger" download: "Télécharger"
else-files: "Autres..." else-files: "Autres..."
set-as-avatar: "Utiliser en tant qu'avatar" set-as-avatar: "Utiliser en tant qu'avatar"
@ -601,13 +622,13 @@ desktop/views/components/media-video.vue:
desktop/views/components/followers-window.vue: desktop/views/components/followers-window.vue:
followers: "{} abonné·e·s" followers: "{} abonné·e·s"
desktop/views/components/followers.vue: desktop/views/components/followers.vue:
empty: "Il semble que vous n'avez pas encore d'abonné·e·s." empty: "Il semble que vous navez pas encore dabonné·e·s."
desktop/views/components/following-window.vue: desktop/views/components/following-window.vue:
following: "Suit {}" following: "Suit {}"
desktop/views/components/following.vue: desktop/views/components/following.vue:
empty: "Vous ne suivez aucun compte." empty: "Vous ne suivez aucun compte."
desktop/views/components/friends-maker.vue: desktop/views/components/friends-maker.vue:
title: "Utilisateurs recommandés :" title: "Utilisateurs·rices recommandé·e·s :"
empty: "Impossible de trouver des utilisateurs·trices à recommander." empty: "Impossible de trouver des utilisateurs·trices à recommander."
fetching: "Chargement" fetching: "Chargement"
refresh: "Plus" refresh: "Plus"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "cette publication est privée" private: "cette publication est privée"
deleted: "cette publication a été supprimée" deleted: "cette publication a été supprimée"
reposted-by: "Republié par {}"
location: "Géolocalisation" location: "Géolocalisation"
renote: "Republier" renote: "Republier"
add-reaction: "Ajouter votre reaction" add-reaction: "Ajouter votre reaction"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "Partagé par {}"
reply: "Répondre" reply: "Répondre"
renote: "Partager" renote: "Partager"
add-reaction: "Ajouter votre réaction" add-reaction: "Ajouter votre réaction"
@ -644,7 +663,7 @@ desktop/views/components/notes.vue:
error: "Échec du chargement." error: "Échec du chargement."
retry: "Réessayer" retry: "Réessayer"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
empty: "Pas de notifications" empty: "Aucune de notification !"
desktop/views/components/post-form.vue: desktop/views/components/post-form.vue:
add-visible-user: "+Ajouter un utilisateur" add-visible-user: "+Ajouter un utilisateur"
attach-location-information: "Attacher des informations de localisation" attach-location-information: "Attacher des informations de localisation"
@ -658,7 +677,7 @@ desktop/views/components/post-form.vue:
replied: "Répondu !" replied: "Répondu !"
reposted: "Reposté !" reposted: "Reposté !"
note-failed: "La note à échoué" note-failed: "La note à échoué"
reply-failed: "La réponse à échoué" reply-failed: "La réponse a échoué"
renote-failed: "Échec lors de la republication" renote-failed: "Échec lors de la republication"
posting: "Publication …" posting: "Publication …"
attach-media-from-local: "Joindre un média depuis votre appareil" attach-media-from-local: "Joindre un média depuis votre appareil"
@ -666,8 +685,9 @@ desktop/views/components/post-form.vue:
attach-cancel: "Annuler le fichier attaché" attach-cancel: "Annuler le fichier attaché"
insert-a-kao: "v('ω')v" insert-a-kao: "v('ω')v"
create-poll: "Créer un sondage" create-poll: "Créer un sondage"
text-remain: "{} charactères restants" text-remain: "{} caractères restants"
recent-tags: "Récent" recent-tags: "Récent"
local-only-message: "Ce message sera publié uniquement sur le fil local"
click-to-tagging: "Cliquer pour tagguer" click-to-tagging: "Cliquer pour tagguer"
visibility: "Visibilité" visibility: "Visibilité"
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation" geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Citer..." quote: "Citer..."
cancel: "Annuler" cancel: "Annuler"
renote: "Republier" renote: "Republier"
renote-home: "Renote (Home)"
reposting: "Republication en cours …" reposting: "Republication en cours …"
success: "Republié !" success: "Republié !"
failure: "La renote a échoué" failure: "La renote a échoué"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Profil" profile: "Profil"
notification: "Notification" notification: "Notification"
apps: "Applications" apps: "Applications"
tags: "Hashtags"
mute-and-block: "Silencé·e·s / Bloqué·e·s" mute-and-block: "Silencé·e·s / Bloqué·e·s"
blocking: "En cours de blocage" blocking: "En cours de blocage"
security: "Sécurité" security: "Sécurité"
@ -706,7 +728,7 @@ desktop/views/components/settings.vue:
password: "Mot de Passe" password: "Mot de Passe"
2fa: "Vérification en deux étapes" 2fa: "Vérification en deux étapes"
other: "Autres" other: "Autres"
license: "License" license: "Licence"
theme: "Thèmes" theme: "Thèmes"
behaviour: "Comportement" behaviour: "Comportement"
fetch-on-scroll: "Chargement lors du défilement" fetch-on-scroll: "Chargement lors du défilement"
@ -714,11 +736,13 @@ desktop/views/components/settings.vue:
note-visibility: "Visibilité de la publication" note-visibility: "Visibilité de la publication"
default-note-visibility: "Visibilité par défaut" default-note-visibility: "Visibilité par défaut"
remember-note-visibility: "Se souvenir du mode de visibilité de la publication" remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "Fenêtre contextuelle automatique" auto-popout: "Fenêtre contextuelle automatique"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "Paramètres avancés" advanced: "Paramètres avancés"
api-via-stream: "Requête API via le flux" api-via-stream: "Requête API via le flux"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "Lorsque ce paramètre est activé, une demande d'API est effectuée via une connexion WebSocket (pour une meilleure performance). Lorsqu'il est désactivé, l'API de récupération native est utilisée. Ce paramètre n'est valide que sur cet appareil."
deck-nav: "デッキ内ナビゲーション" deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "Utiliser le Deck comme IU par défaut" deck-default: "Utiliser le Deck comme IU par défaut"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "Afficher mes republications dans les fils" show-renoted-my-notes: "Afficher mes republications dans les fils"
show-local-renotes: "Afficher les partages locaux sur les fils" show-local-renotes: "Afficher les partages locaux sur les fils"
show-maps: "Afficher la carte" show-maps: "Afficher la carte"
remain-deleted-note: "Continuer à afficher les messages supprimés"
deck-column-align: "Alignement des colonnes du Deck" deck-column-align: "Alignement des colonnes du Deck"
deck-column-align-center: "Centrer" deck-column-align-center: "Centrer"
deck-column-align-left: "À gauche" deck-column-align-left: "À gauche"
@ -757,23 +782,23 @@ desktop/views/components/settings.vue:
language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications." language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications."
cache: "Cache" cache: "Cache"
clean-cache: "Nettoyage" clean-cache: "Nettoyage"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que 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: "Montre automatique"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" auto-watch-desc: "Recevez automatiquement les notifications de publications, réponses et réactions."
about: "À propose de Misskey" about: "À propose de Misskey"
operator: "L'admin de cette instance" operator: "L'admin de cette instance"
update: "Mise à jour de Misskey" update: "Mise à jour de Misskey"
version: "Version :" version: "Version :"
latest-version: "Dernière version :" latest-version: "Dernière version :"
update-checking: "Recherche de mises à jour" update-checking: "Vérification des mises à jour en cours …"
do-update: "Rechercher des mises à jour" do-update: "Rechercher des mises à jour"
update-settings: "Paramètres avancés" update-settings: "Paramètres avancés"
prevent-update: "Reporter les mises à jour (non recommandé)" prevent-update: "Reporter les mises à jour (non recommandé)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。" prevent-update-desc: "Même si ce paramètre est activé, la mise à jour pourrait être appliquée. Ce paramètre n'est valide que sur cet appareil."
no-updates: "Aucune mise à jour disponible" no-updates: "Aucune mise à jour disponible"
no-updates-desc: "Votre Misskey est à jour." no-updates-desc: "Votre client Misskey est à jour."
update-available: "Nouvelle version disponible !" update-available: "Nouvelle version disponible !"
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée." update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
advanced-settings: "Réglages avancés" advanced-settings: "Réglages avancés"
@ -792,23 +817,23 @@ desktop/views/components/settings.2fa.vue:
intro: "Si vous configurez la vérication en deux étapes vous aurez non seulement besoin de votre mot de passe mais aussi un appareil déjà pré-enregistré(tel que votre smartphone) ce qui ameliora grandement la sécurité de votre compte." intro: "Si vous configurez la vérication en deux étapes vous aurez non seulement besoin de votre mot de passe mais aussi un appareil déjà pré-enregistré(tel que votre smartphone) ce qui ameliora grandement la sécurité de votre compte."
detail: "Voir les détails..." detail: "Voir les détails..."
url: "https://www.google.com/landing/2step/" url: "https://www.google.com/landing/2step/"
caution: "Activer la vérification en deux étapes vient aussi avec des contraintes, si vous perdez votre appareil ou ne pouvez tout simplement plus y accèder vous ne serez plus en mesure de vous connecter à Misskey." caution: "Activer la vérification en deux étapes vient aussi avec des contraintes, si vous perdez votre appareil ou ne pouvez tout simplement plus y accéder vous ne serez plus en mesure de vous connecter à Misskey."
register: "Enregistrer un appareil" register: "Enregistrer un appareil"
already-registered: "Cette étape à déjà été complétée" already-registered: "Cette étape à déjà été complétée"
unregister: "Désactiver" unregister: "Désactiver"
unregistered: "La vérication en deux étapes a été desactivée" unregistered: "L'authentification à deux facteurs a été désactivée."
enter-password: "Entrez un mot de passe" enter-password: "Entrez un mot de passe"
authenticator: "Tout d'abord vous devez installer Google Authenticator sur votre appareil" authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil:"
howtoinstall: "Comment installer" howtoinstall: "Comment installer"
scan: "Ensuite scannez le QR code afficher sur votre écran:" scan: "Ensuite scannez le QR code afficher sur votre écran:"
done: "Veuillez entrer le token qui s'affiche sur votre appareil:" done: "Veuillez entrer le token qui s'affiche sur votre appareil:"
submit: "Envoyer" submit: "Envoyer"
success: "L'operation a été complétée avec succès!" success: "Sauvegarde des paramètres avec succès !"
failed: "L'operation a échoué. Veuillez vous assurer que le token a été entrer correctement." failed: "Lopération a échoué. Veuillez vous assurer que le jeton a été saisi correctement."
info: "À partir de maintenant, à chaque fois que vous vous connecter entrez votre mot de passe ainsi que le token généré sur votre appareil." info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil."
common/views/components/api-settings.vue: common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" intro: "Pour accéder à l'API, définissez ce jeton comme la clé de \"i\" dans les paramètres de requête."
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte."
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer." regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
regenerate-token: "Régénérer le jeton" regenerate-token: "Régénérer le jeton"
token: "Jeton :" token: "Jeton :"
@ -817,7 +842,7 @@ common/views/components/api-settings.vue:
title: 'Console API' title: 'Console API'
endpoint: 'Point de terminaison' endpoint: 'Point de terminaison'
parameter: 'Paramètres' parameter: 'Paramètres'
credential-info: "「i」パラメータは自動で付与されます。" credential-info: "Le paramètre \"i\" est requis dans la console."
send: 'Envoyer' send: 'Envoyer'
sending: 'Envoi en cours' sending: 'Envoi en cours'
response: 'Résultat' response: 'Résultat'
@ -828,7 +853,7 @@ common/views/components/drive-settings.vue:
in-use: "utilisé" in-use: "utilisé"
stats: "Statistiques" stats: "Statistiques"
common/views/components/mute-and-block.vue: common/views/components/mute-and-block.vue:
mute-and-block: "Silencer / Bloquer" mute-and-block: "Silencés / Bloqués"
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
block: "En cours blocage" block: "En cours blocage"
no-muted-users: "Aucun utilisateur·rice nest mis·e en sourdine" no-muted-users: "Aucun utilisateur·rice nest mis·e en sourdine"
@ -888,7 +913,7 @@ desktop/views/components/ui.header.search.vue:
placeholder: "Chercher" placeholder: "Chercher"
desktop/views/components/received-follow-requests-window.vue: desktop/views/components/received-follow-requests-window.vue:
title: "Demandes de suivi" title: "Demandes de suivi"
accept: "Approuver" accept: "Accepter"
reject: "Refuser" reject: "Refuser"
desktop/views/components/user-lists-window.vue: desktop/views/components/user-lists-window.vue:
title: "Listes de l'utilisateur" title: "Listes de l'utilisateur"
@ -905,14 +930,15 @@ desktop/views/components/users-list.vue:
desktop/views/components/users-list-item.vue: desktop/views/components/users-list-item.vue:
followed: "vous suit" followed: "vous suit"
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "Fenêtre contextuelle"
close: "Fermer" close: "Fermer"
admin/views/index.vue: admin/views/index.vue:
dashboard: "Tableau de bord" dashboard: "Tableau de bord"
instance: "Instance" instance: "Instance"
emoji: "Emoji" emoji: "Émoji"
moderators: "Modérateurs"
users: "Utilisateur·rice·s" users: "Utilisateur·rice·s"
update: "Mise à jour" federation: "Fédération"
announcements: "Annonces" announcements: "Annonces"
hashtags: "Hashtags" hashtags: "Hashtags"
back-to-misskey: "Retour vers Misskey" back-to-misskey: "Retour vers Misskey"
@ -947,26 +973,47 @@ 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: "LURL callback est définit sur /api/tw/cb" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Activer la connection à Twitter" enable-twitter-integration: "Activer la connection à Twitter"
twitter-integration-consumer-key: "Clé du consommateur" twitter-integration-consumer-key: "Clé du consommateur"
twitter-integration-consumer-secret: "Secret du consommateur" twitter-integration-consumer-secret: "Secret du consommateur"
github-integration-config: "Paramètres dauthentification GitHub" github-integration-config: "Paramètres dauthentification GitHub"
github-integration-info: "LURL callback est définit sur /api/gh/cb" github-integration-info: "コールバックURLは {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-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Activer lauthentification avec Discord"
discord-integration-client-id: "ID client"
discord-integration-client-secret: "Secret client"
proxy-account-config: "Compte proxy" proxy-account-config: "Compte proxy"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "Nom dutilisateur du compte proxy" proxy-account-username: "Nom dutilisateur du compte proxy"
proxy-account-username-desc: "Spécifiez le nom dutilisateur du compte utilisé comme proxy." proxy-account-username-desc: "Spécifiez le nom dutilisateur du compte utilisé comme proxy."
proxy-account-warn: "Avant dentammer cette action, vous devez au préalable avoir créé un compte avec ce nom dutilisateur." proxy-account-warn: "Avant dentamer cette action, vous devez au préalable avoir créé un compte avec ce nom dutilisateur."
max-note-text-length: "Nombre maximal de caractères pour les messages" max-note-text-length: "Nombre maximal de caractères pour les messages"
disable-registration: "Désactiver les inscriptions" disable-registration: "Désactiver les inscriptions"
disable-local-timeline: "Désactiver lheure locale" disable-local-timeline: "Désactiver le fil local"
invite: "Inviter" invite: "Inviter"
save: "Sauvegarder" save: "Sauvegarder"
saved: "Enregistré" saved: "Enregistré"
user-recommendation-config: "Utilisateur·rice·s"
enable-external-user-recommendation: "Activer la recommandation des utilisateur·trice·s distant·e·s"
external-user-recommendation-engine: "Moteur"
external-user-recommendation-engine-desc: "Exemple: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "Délai dexpiration"
external-user-recommendation-timeout-desc: "En millisecondes (par exemple : 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "Graph" title: "Graph"
per-day: "par jour" per-day: "par jour"
@ -979,32 +1026,54 @@ admin/views/charts.vue:
charts: charts:
federation-instances: "Nombre dinstances : augmentation/diminution" federation-instances: "Nombre dinstances : augmentation/diminution"
federation-instances-total: "Nombre total dinstances" federation-instances-total: "Nombre total dinstances"
notes: "投稿の増減 (統合)" notes: "Nombre de publications : augmentation/diminution (combinés)"
local-notes: "投稿の増減 (ローカル)" local-notes: "Nombre des publications : augmentation/diminution (Local)"
remote-notes: "投稿の増減 (リモート)" remote-notes: "Nombre de publications : augmentation/diminution (distants)"
notes-total: "Total des publications" notes-total: "Total des publications"
users: "Nombre dutilisateur·rice·s : augmentation/diminution" users: "Nombre dutilisateur·rice·s : augmentation/diminution"
users-total: "Nombre total des utilisateur·rice·s" users-total: "Nombre total des utilisateur·rice·s"
drive: "ドライブ使用量の増減" drive: "Capacité utilisée comme stockage : augmentation/diminution"
drive-total: "Utilisation totale du lecteur" drive-total: "Utilisation totale du lecteur"
drive-files: "ドライブのファイル数の増減" drive-files: "Le nombre de fichiers sur l'espace de stockage : augmentation/diminution"
drive-files-total: "Nombre total de fichiers sur le lecteur" drive-files-total: "Nombre total de fichiers sur le lecteur"
network-requests: "Requêtes" network-requests: "Requêtes"
network-time: "Temps de réponse" network-time: "Temps de réponse"
network-usage: "Traffic" network-usage: "Traffic"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "Suspendre un·e utilisateur·rice" operation: "Actions"
username-or-userid: "Nom dutilisateur·rice ou ID utilisateur"
user-not-found: "Utilisateur·rice non trouvé·e"
lookup: "Recherche"
reset-password: "Réinitialiser mot de passe"
password-updated: "Le mot de passe est « {password} »"
suspend: "Suspendre" suspend: "Suspendre"
suspended: "Suspendu·e avec succès." suspended: "Suspendu·e avec succès."
unsuspend-user: "Lever la suspension dutilisateur·rice·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·rice a été levée avec succès"
verify-user: "Paramètres de vérification du compte utilisateur"
verify: "Vérification du compte" verify: "Vérification du compte"
verified: "Le compte a été vérifié" verified: "Le compte a été vérifié"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "Ôter la vérification du compte" unverify: "Ôter la vérification du compte"
unverified: "Ce compte n'est plus vérifié" unverified: "Ce compte n'est plus vérifié"
users:
title: "Utilisateur·rice·s"
sort:
title: "Trier par"
createdAtAsc: "Date dinscription (Ascendant)"
createdAtDesc: "Date dinscription (Descendant)"
updatedAtAsc: "Mis à jour récemment (Ascendant)"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "Origine"
combined: "Locaux + distants"
local: "Locaux"
remote: "Distants"
createdAt: "Créé le"
updatedAt: "Mis à jour le"
admin/views/moderators.vue:
add-moderator:
title: "Ajout dun modérateur"
add: "Ajouter"
added: "Ajouté en tant que modérateur"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "Ajouter un émoji" title: "Ajouter un émoji"
@ -1069,7 +1138,7 @@ 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" users: "Utilisateurs·rices"
add-user: "Ajouter un utilisateur" add-user: "Ajouter un utilisateur"
username: "Nom d'utilisateur" username: "Nom d'utilisateur"
desktop/views/pages/user/user.followers-you-know.vue: desktop/views/pages/user/user.followers-you-know.vue:
@ -1079,7 +1148,7 @@ desktop/views/pages/user/user.followers-you-know.vue:
desktop/views/pages/user/user.friends.vue: desktop/views/pages/user/user.friends.vue:
title: "Mentions fréquentes" title: "Mentions fréquentes"
loading: "Chargement en cours" loading: "Chargement en cours"
no-users: "Pas d'utilisateurs" no-users: "Aucune mention fréquente"
desktop/views/pages/user/user.photos.vue: desktop/views/pages/user/user.photos.vue:
title: "Photos" title: "Photos"
loading: "Chargement en cours" loading: "Chargement en cours"
@ -1103,9 +1172,9 @@ desktop/views/pages/user/user.header.vue:
followers: "Abonné·e·s" followers: "Abonné·e·s"
is-bot: "Ce compte est un Bot" is-bot: "Ce compte est un Bot"
years-old: "{age} ans" years-old: "{age} ans"
year: "Année" year: "/"
month: "/" month: "/"
day: "-" day: "/"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "Publications" default: "Publications"
with-replies: "Publications et réponses" with-replies: "Publications et réponses"
@ -1131,14 +1200,14 @@ desktop/views/widgets/trends.vue:
refresh: "Afficher d'autres" refresh: "Afficher d'autres"
nothing: "Rien" nothing: "Rien"
desktop/views/widgets/users.vue: desktop/views/widgets/users.vue:
title: "Utilisateurs" title: "Utilisateurs·rices"
refresh: "Afficher d'autres" refresh: "Afficher d'autres"
no-one: "Personne" no-one: "Personne"
mobile/views/components/drive.vue: mobile/views/components/drive.vue:
used: "utilisé" used: "utilisé"
folder-count: "Dossier(s)" folder-count: "Dossier·s"
count-separator: ", " count-separator: ", "
file-count: "Fichiers(s)" file-count: "Fichier·s"
nothing-in-drive: "Rien" nothing-in-drive: "Rien"
folder-is-empty: "Ce dossier est vide" folder-is-empty: "Ce dossier est vide"
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >" prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
@ -1147,7 +1216,7 @@ mobile/views/components/drive.vue:
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom." root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer." root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
url-prompt: "URL du fichier que vous souhaitez téléverser" url-prompt: "URL du fichier que vous souhaitez téléverser"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。" uploading: "Envoi demandé. Le téléversement pourrait prendre un certain temps avant de s'achever."
mobile/views/components/drive-file-chooser.vue: mobile/views/components/drive-file-chooser.vue:
select-file: "Choisissez un fichier" select-file: "Choisissez un fichier"
mobile/views/components/drive-folder-chooser.vue: mobile/views/components/drive-folder-chooser.vue:
@ -1171,25 +1240,23 @@ mobile/views/components/media-video.vue:
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é·e"
follow: "Sabonner" follow: " Suivre"
request-pending: "Demande en attente" request-pending: "Demande en attente"
follow-processing: "フォロー処理中" follow-processing: "En cours dabonnement"
follow-request: "フォロー申請" follow-request: "Demande dabonnement"
mobile/views/components/friends-maker.vue: mobile/views/components/friends-maker.vue:
title: "Abonnez-vous aux utilisateurs" title: "Abonnez-vous à"
empty: "Impossible de trouver des utilisateurs·trices à recommander." empty: "Impossible de trouver des utilisateurs·trices à recommander."
fetching: "Chargement" fetching: "Chargement"
refresh: "Voir plus" refresh: "Voir plus"
close: "Fermer" close: "Fermer"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "Republié par {}"
private: "cette publication est privée" private: "cette publication est privée"
deleted: "cette publication a été supprimée" deleted: "cette publication a été supprimée"
location: "Géolocalisation" location: "Géolocalisation"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Répondre" reply: "Répondre"
reaction: "Réaction" reaction: "Réaction"
reposted-by: "Republié par {}"
private: "cette publication est privée" private: "cette publication est privée"
deleted: "cette publication a été supprimée" deleted: "cette publication a été supprimée"
location: "Lieu" location: "Lieu"
@ -1202,7 +1269,7 @@ mobile/views/components/note-sub.vue:
bot: "bot" bot: "bot"
cat: "chat" cat: "chat"
mobile/views/components/notifications.vue: mobile/views/components/notifications.vue:
empty: "Pas de notifications" empty: "Aucune de notification !"
mobile/views/components/post-form.vue: mobile/views/components/post-form.vue:
add-visible-user: "Ajouter un utilisateur" add-visible-user: "Ajouter un utilisateur"
submit: "Publier" submit: "Publier"
@ -1236,9 +1303,9 @@ mobile/views/components/ui.nav.vue:
darkmode: "Mode nuit" darkmode: "Mode nuit"
settings: "Réglages" settings: "Réglages"
admin: "Admin" admin: "Admin"
about: "À propose de Misskey" about: "À propos de Misskey"
mobile/views/components/user-timeline.vue: mobile/views/components/user-timeline.vue:
no-notes: "Cette utilisateur semble n'avoir rien poster pour le moment" no-notes: "Il semble que cet·te utilisateur·rice na rien publié pour le moment."
no-notes-with-media: "Aucune notes avec des médias" no-notes-with-media: "Aucune notes avec des médias"
mobile/views/components/users-list.vue: mobile/views/components/users-list.vue:
all: "Tout" all: "Tout"
@ -1280,11 +1347,11 @@ mobile/views/pages/received-follow-requests.vue:
reject: "Refuser" reject: "Refuser"
mobile/views/pages/note.vue: mobile/views/pages/note.vue:
title: "Post" title: "Post"
prev: "Note précedante" prev: "Note précédente"
next: "Note suivante" next: "Note suivante"
mobile/views/pages/notifications.vue: mobile/views/pages/notifications.vue:
notifications: "Notifications" notifications: "Notifications"
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?" read-all: "Êtes-vous sûr de vouloir marquer lensemble des notifications comme étant lues ?"
mobile/views/pages/games/reversi.vue: mobile/views/pages/games/reversi.vue:
reversi: "Reversi" reversi: "Reversi"
mobile/views/pages/search.vue: mobile/views/pages/search.vue:
@ -1298,7 +1365,7 @@ mobile/views/pages/settings.vue:
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications." lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
recommended: "Recommandé" recommended: "Recommandé"
auto: "Automatique" auto: "Automatique"
specify-language: "Spécifier la langue" specify-language: "Sélectionnez votre langue"
design: "Affichage et design" design: "Affichage et design"
dark-mode: "Mode nuit" dark-mode: "Mode nuit"
i-am-under-limited-internet: "J'ai un accès Internet limité" i-am-under-limited-internet: "J'ai un accès Internet limité"
@ -1306,7 +1373,7 @@ mobile/views/pages/settings.vue:
contrasted-acct: "Nom dutilisateur contrasté" contrasted-acct: "Nom dutilisateur contrasté"
timeline: "Fil d'actualité" timeline: "Fil d'actualité"
show-reply-target: "Afficher les réponses" show-reply-target: "Afficher les réponses"
show-my-renotes: "Afficher mes republications" show-my-renotes: "Afficher mes partages"
show-renoted-my-notes: "Afficher mes publications partagées" show-renoted-my-notes: "Afficher mes publications partagées"
show-local-renotes: "Afficher les publications partagées localement" show-local-renotes: "Afficher les publications partagées localement"
post-style: "Style de la publication" post-style: "Style de la publication"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "Visibilité de la publication" note-visibility: "Visibilité de la publication"
default-note-visibility: "Visibilité par défaut" default-note-visibility: "Visibilité par défaut"
remember-note-visibility: "Se souvenir du mode de visibilité de la publication" remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'" disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
load-raw-images: "Afficher les photos jointes en haute qualité" load-raw-images: "Afficher les photos jointes en haute qualité"
load-remote-media: "Afficher les médias sur le serveur distant" load-remote-media: "Afficher les médias sur le serveur distant"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "Se connecter à votre compte GitHub" github-connect: "Se connecter à votre compte GitHub"
github-reconnect: "Reconnecter" github-reconnect: "Reconnecter"
github-disconnect: "Déconnecter" github-disconnect: "Déconnecter"
discord: "Intégration avec Discord"
discord-connect: "Connecter votre compte Discord"
discord-reconnect: "Reconnecter"
discord-disconnect: "Déconnecter"
update: "Mise à jour de Misskey" update: "Mise à jour de Misskey"
version: "Version :" version: "Version :"
latest-version: "Dernière version :" latest-version: "Dernière version :"
@ -1354,7 +1427,7 @@ mobile/views/pages/user.vue:
notes: "Notes" notes: "Notes"
overview: "Aperçu" overview: "Aperçu"
timeline: "Fil d'actualité" timeline: "Fil d'actualité"
media: "Media" media: "Média"
is-suspended: "This account has been suspended." is-suspended: "This account has been suspended."
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
unmute: "Enlever la sourdine" unmute: "Enlever la sourdine"
@ -1367,13 +1440,13 @@ mobile/views/pages/user/home.vue:
activity: "Activité" activity: "Activité"
keywords: "Mot clés" keywords: "Mot clés"
domains: "Domaines" domains: "Domaines"
frequently-replied-users: "Utilisateurs qui interagissent souvent" frequently-replied-users: "Utilisateurs·rices mentionné·e·s souvent"
followers-you-know: "Abonné·e·s que vous connaissez" followers-you-know: "Abonné·e·s que vous connaissez"
last-used-at: "Dernière connexion il y a" last-used-at: "Dernière connexion il y a"
mobile/views/pages/user/home.followers-you-know.vue: mobile/views/pages/user/home.followers-you-know.vue:
no-users: "Aucun utilisateur connu" no-users: "Aucun utilisateur·rice connu·e"
mobile/views/pages/user/home.friends.vue: mobile/views/pages/user/home.friends.vue:
no-users: "Pass d'utilisateurs" no-users: "Aucun utilisateur·rice connu·e"
mobile/views/pages/user/home.notes.vue: mobile/views/pages/user/home.notes.vue:
no-notes: "Pas de notes" no-notes: "Pas de notes"
mobile/views/pages/user/home.photos.vue: mobile/views/pages/user/home.photos.vue:
@ -1425,7 +1498,7 @@ docs:
require-permission: "Ce point de communication nécessite la permission {permission}." require-permission: "Ce point de communication nécessite la permission {permission}."
has-limit: "Il ya un taux limite." has-limit: "Il ya un taux limite."
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。" duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。" min-interval-limit: "Vous ne pourrez pas effectuer une nouvelle requête si {interval} millisecondes ne se sont pas écoulées depuis la dernière demande."
show-src: "Vous pouvez voir le code source ce point de communication." show-src: "Vous pouvez voir le code source ce point de communication."
show-src-link: "Consulter le code sur GitHub" show-src-link: "Consulter le code sur GitHub"
generated: "Ce document est généré à partir de la définition de lAPI." generated: "Ce document est généré à partir de la définition de lAPI."
@ -1451,7 +1524,7 @@ dev/views/new-app.vue:
callback-url-desc: "Vous pouvez définir lURL de redirection lorsque lutilisateur sest authentifié via formulaire dauthentification." callback-url-desc: "Vous pouvez définir lURL de redirection lorsque lutilisateur sest authentifié via formulaire dauthentification."
authority: "Autorisations " authority: "Autorisations "
authority-desc: "Sont accessibles via lAPI, uniquement les fonctionnalités demandées ici." authority-desc: "Sont accessibles via lAPI, uniquement les fonctionnalités demandées ici."
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。" authority-warning: "Vous pouvez le changer même après avoir créé l'application, mais si vous attribuez une nouvelle permission, toutes les clés utilisateur associées seront dès lors invalides."
account-read: "Afficher les informations du compte" account-read: "Afficher les informations du compte"
account-write: "Modifications des informations du compte" account-write: "Modifications des informations du compte"
note-write: "Publications." note-write: "Publications."

View File

@ -5,7 +5,7 @@
const fs = require('fs'); const fs = require('fs');
const yaml = require('js-yaml'); const yaml = require('js-yaml');
const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL']; const langs = ['de-DE', 'en-US', 'fr-FR', 'ja-JP', 'ja-KS', 'pl-PL', 'es-ES', 'nl-NL', 'zh-CN', 'ko-KR'];
const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8')); const loadLocale = lang => yaml.safeLoad(fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
const locales = langs.map(lang => ({ [lang]: loadLocale(lang) })); const locales = langs.map(lang => ({ [lang]: loadLocale(lang) }));

View File

@ -1,10 +1,10 @@
--- ---
meta: meta:
lang: "日本語" lang: "In Italiano"
divider: "" divider: ""
common: common:
misskey: "A ⭐ of fediverse" misskey: "A ⭐ of the fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of the fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
intro: intro:
title: "Misskeyって" title: "Misskeyって"
@ -26,6 +26,7 @@ common:
close: "閉じる" close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
b: "何かありましたか?" b: "何かありましたか?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "待機中"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定" advanced: "詳細設定"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

View File

@ -26,6 +26,7 @@ common:
close: "閉じる" close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
@ -96,6 +97,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
@ -130,6 +134,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
@ -399,6 +404,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
@ -450,6 +456,14 @@ common/views/components/github-setting.vue:
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "待機中"
@ -462,6 +476,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
@ -486,6 +504,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
@ -708,13 +730,11 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -752,6 +772,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -772,6 +793,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -790,6 +812,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -806,6 +829,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定" advanced: "詳細設定"
@ -834,6 +859,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -1036,7 +1062,7 @@ admin/views/index.vue:
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター" moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -1073,15 +1099,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -1093,6 +1124,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
@ -1121,18 +1168,35 @@ admin/views/charts.vue:
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue: admin/views/moderators.vue:
add-moderator: add-moderator:
@ -1351,7 +1415,6 @@ mobile/views/components/friends-maker.vue:
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1359,7 +1422,6 @@ mobile/views/components/note.vue:
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1519,6 +1581,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1530,6 +1594,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"
@ -1560,6 +1628,9 @@ mobile/views/pages/user.vue:
block: "ブロック" block: "ブロック"
unblock: "ブロック解除" unblock: "ブロック解除"
years-old: "{age}歳" years-old: "{age}歳"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
list-pushed: "{user}を{list}に追加しました"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿" recent-notes: "最近の投稿"

View File

@ -26,6 +26,7 @@ common:
close: "さいなら" close: "さいなら"
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。" do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "ほい" got-it: "ほい"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "今から言うユーザー以外に見せんとってや" specified-desc: "今から言うユーザー以外に見せんとってや"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今なにしてん?" a: "今なにしてん?"
b: "何かあったんか?" b: "何かあったんか?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "ちゃんとした情報見せてや!" view-on-remote: "ちゃんとした情報見せてや!"
renoted-by: "{user}がRenote"
error: error:
title: '問題が起こったわ' title: '問題が起こったわ'
retry: 'もっぺん' retry: 'もっぺん'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "それか" or: "それか"
signin-with-twitter: "Twitterでサインイン" signin-with-twitter: "Twitterでサインイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。" login-failed: "なんかログインできんかったわ。ユーザー名とパスワードとかを確認してや。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待っとる" waiting: "待っとる"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "今から言うユーザー以外に見せんとってや" specified-desc: "今から言うユーザー以外に見せんとってや"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "流行は自分で作るんや" empty: "流行は自分で作るんや"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存したで" saved: "プロフィールを保存したで"
uploading: "アップロードしとります" uploading: "アップロードしとります"
upload-failed: "これアップロードでけへんわ" upload-failed: "これアップロードでけへんわ"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "見てみるわ…" fetching: "見てみるわ…"
no-broadcasts: "お知らせはあらへんで" no-broadcasts: "お知らせはあらへんで"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は見せられへんわ" private: "この投稿は見せられへんわ"
deleted: "この投稿なんか無くなってもうたわ" deleted: "この投稿なんか無くなってもうたわ"
reposted-by: "{}がRenote"
location: "ここおるで:" location: "ここおるで:"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返す" reply: "返す"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近のタグ" recent-tags: "最近のタグ"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。" geolocation-alert: "あんさんのつことる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "取ってくる……" quote: "取ってくる……"
cancel: "やめとくわ" cancel: "やめとくわ"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "やっとります..." reposting: "やっとります..."
success: "Renoteしたで" success: "Renoteしたで"
failure: "Renoteでけへん" failure: "Renoteでけへん"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "もとからの公開範囲" default-note-visibility: "もとからの公開範囲"
remember-note-visibility: "投稿の公開範囲おぼえといて" remember-note-visibility: "投稿の公開範囲おぼえといて"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
advanced: "もっと設定" advanced: "もっと設定"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや" show-renoted-my-notes: "わしのRenoteもタイムライン載せてくれや"
show-local-renotes: "ローカル投稿のRenoteも見たいんや" show-local-renotes: "ローカル投稿のRenoteも見たいんや"
show-maps: "地図勝手にバァーって開いてくれ" show-maps: "地図勝手にバァーって開いてくれ"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "真ん中" deck-column-align-center: "真ん中"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "知っといてや" announcements: "知っといてや"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっとあるやろ!" refresh: "もっとあるやろ!"
close: "さいなら" close: "さいなら"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は見せられへんわ" private: "この投稿は見せられへんわ"
deleted: "この投稿なんか無くなってもうたわ" deleted: "この投稿なんか無くなってもうたわ"
location: "ここおるで:" location: "ここおるで:"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返す" reply: "返す"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は見せられへんわ" private: "この投稿は見せられへんわ"
deleted: "この投稿なんか無くなってもうたわ" deleted: "この投稿なんか無くなってもうたわ"
location: "ここおるで:" location: "ここおるで:"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "もとからの公開範囲" default-note-visibility: "もとからの公開範囲"
remember-note-visibility: "投稿の公開範囲おぼえといて" remember-note-visibility: "投稿の公開範囲おぼえといて"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ" disable-via-mobile: "「モバイルからの投稿」フラグなんて要らんわ"
load-raw-images: "添付された画像もべっぴんさんのままにしといてな" load-raw-images: "添付された画像もべっぴんさんのままにしといてな"
load-remote-media: "東京とか、リモートサーバーのメディアも見せてや" load-remote-media: "東京とか、リモートサーバーのメディアも見せてや"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "あんたのMisskeyいつのや" update: "あんたのMisskeyいつのや"
version: "バージョン:" version: "バージョン:"
latest-version: "いっちゃん新しいやつ:" latest-version: "いっちゃん新しいやつ:"

File diff suppressed because it is too large Load Diff

View File

@ -26,6 +26,7 @@ common:
close: "閉じる" close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
b: "何かありましたか?" b: "何かありましたか?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Bezig met wachten" waiting: "Bezig met wachten"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Bezig met ophalen" fetching: "Bezig met ophalen"
no-broadcasts: "Geen uitzendingen" no-broadcasts: "Geen uitzendingen"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "(dit bericht is privé)" private: "(dit bericht is privé)"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "Locatie" location: "Locatie"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "Peiling creëren" create-poll: "Peiling creëren"
text-remain: "{} resterende tekens" text-remain: "{} resterende tekens"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Citeren..." quote: "Citeren..."
cancel: "Annuleren" cancel: "Annuleren"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "Bezig met herplaatsen..." reposting: "Bezig met herplaatsen..."
success: "Hergeplaatst!" success: "Hergeplaatst!"
failure: "Renote mislukt" failure: "Renote mislukt"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Profiel" profile: "Profiel"
notification: "Melding" notification: "Melding"
apps: "Apps" apps: "Apps"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Beveiliging" security: "Beveiliging"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "Venster automatisch uitvouwen" auto-popout: "Venster automatisch uitvouwen"
auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser." auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser."
advanced: "Geavanceerde instellingen" advanced: "Geavanceerde instellingen"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn" show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Kaart tonen" show-maps: "Kaart tonen"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "Renote door {}"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Beantwoorden" reply: "Beantwoorden"
reaction: "Reactie" reaction: "Reactie"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Zonder 'mobiele berichten'" disable-via-mobile: "Zonder 'mobiele berichten'"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey-update" update: "Misskey-update"
version: "Huidige versie:" version: "Huidige versie:"
latest-version: "Nieuwste versie:" latest-version: "Nieuwste versie:"

View File

@ -1,6 +1,6 @@
--- ---
meta: meta:
lang: "norsk" lang: "Norsk Bokmål"
divider: "" divider: ""
common: common:
misskey: "En ⭐ av fediverse" misskey: "En ⭐ av fediverse"
@ -26,6 +26,7 @@ common:
close: "Lukk" close: "Lukk"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "Skjønner!" got-it: "Skjønner!"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "Privat" private: "Privat"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
b: "何かありましたか?" b: "何かありましたか?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "Eller" or: "Eller"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Venter" waiting: "Venter"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Direkte" specified: "Direkte"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "Privat" private: "Privat"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Henter" fetching: "Henter"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "Lokasjon" location: "Lokasjon"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "Nylig" recent-tags: "Nylig"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "Synlighet" visibility: "Synlighet"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "Avbryt" cancel: "Avbryt"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "Notifikasjon" notification: "Notifikasjon"
apps: "Apper" apps: "Apper"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "Avanserte innstillinger" advanced: "Avanserte innstillinger"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "Se mer" refresh: "Se mer"
close: "Lukk" close: "Lukk"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "Lokasjon" location: "Lokasjon"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Svar" reply: "Svar"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "Lokasjon" location: "Lokasjon"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

View File

@ -7,16 +7,16 @@ common:
about-title: "⭐ Fediwersum" about-title: "⭐ Fediwersum"
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?" about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
intro: intro:
title: "Misskeyって?" title: "Czym jest Misskey?"
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
features: "特徴" features: "特徴"
rich-contents: "投稿" rich-contents: "投稿"
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
reaction: "リアクション" reaction: "Reakcje"
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
ui: "インターフェース" ui: "Interfejs"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
drive: "ドライブ" drive: "Dysk"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
adblock: adblock:
@ -26,6 +26,7 @@ common:
close: "Zamknij" close: "Zamknij"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "Rozumiem!" got-it: "Rozumiem!"
customization-tips: customization-tips:
title: "Wskazówki o dostosowywaniu" title: "Wskazówki o dostosowywaniu"
@ -52,7 +53,7 @@ common:
years_ago: "{} lat temu" years_ago: "{} lat temu"
month-and-day: "{month}-{day}" month-and-day: "{month}-{day}"
trash: "Kosz" trash: "Kosz"
drive: "ドライブ" drive: "Dysk"
messaging: "トーク" messaging: "トーク"
weekday-short: weekday-short:
sunday: "N" sunday: "N"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "Co robisz?" a: "Co robisz?"
b: "Co się wydarzyło?" b: "Co się wydarzyło?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -188,8 +193,8 @@ common/views/components/games/reversi/reversi.vue:
waiting-for: "Oczekiwanie na {}" waiting-for: "Oczekiwanie na {}"
cancel: "Anuluj" cancel: "Anuluj"
common/views/components/games/reversi/reversi.game.vue: common/views/components/games/reversi/reversi.game.vue:
surrender: "投了" surrender: "Poddaj się"
surrendered: "投了により" surrendered: "Przez poddanie się"
is-llotheo: "石の少ない方が勝ち(ロセオ)" is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ" looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード" can-put-everywhere: "どこでも置けるモード"
@ -289,8 +294,8 @@ common/views/components/theme.vue:
import-by-code: "またはコードをペースト" import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。" theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue: common/views/components/cw-button.vue:
hide: "隠す" hide: "Ukryj"
show: "もっと見る" show: "Pokaż więcej"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Znajdź użytkownika" search-user: "Znajdź użytkownika"
you: "Ty" you: "Ty"
@ -346,7 +351,7 @@ 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: "カスタム絵文字"
people: "" people: "Ludzie"
animals-and-nature: "動物&自然" animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物" food-and-drink: "食べ物&飲み物"
activity: "アクティビティ" activity: "アクティビティ"
@ -362,7 +367,8 @@ common/views/components/signin.vue:
signin: "Zaloguj" signin: "Zaloguj"
or: "または" or: "または"
signin-with-twitter: "Zaloguj się za pomocą Twittera" signin-with-twitter: "Zaloguj się za pomocą Twittera"
signin-with-github: "GitHubでログイン" signin-with-github: "Zaloguj się za pomocą GitHuba"
signin-with-discord: "Zaloguj się za pomocą Discorda"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "Oczekiwanie" waiting: "Oczekiwanie"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "Bezpośredni" specified: "Bezpośredni"
specified-desc: "Tylko dla określonych użytkowników" specified-desc: "Tylko dla określonych użytkowników"
private: "Prywatny" private: "Prywatny"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Sprawdzanie" fetching: "Sprawdzanie"
no-broadcasts: "Brak transmisji" no-broadcasts: "Brak transmisji"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
reposted-by: "Udostępniono przez {}"
location: "Informacje o lokalizacji" location: "Informacje o lokalizacji"
renote: "Udostępnienie" renote: "Udostępnienie"
add-reaction: "Dodaj reakcję" add-reaction: "Dodaj reakcję"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "Utwórz ankietę" create-poll: "Utwórz ankietę"
text-remain: "pozostałe znaki: {}" text-remain: "pozostałe znaki: {}"
recent-tags: "Ostatnie" recent-tags: "Ostatnie"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "Naciśnij aby oznaczyć" click-to-tagging: "Naciśnij aby oznaczyć"
visibility: "Widoczność" visibility: "Widoczność"
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji." geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "Cytuj…" quote: "Cytuj…"
cancel: "Anuluj" cancel: "Anuluj"
renote: "Udostępnij" renote: "Udostępnij"
renote-home: "Renote (Home)"
reposting: "Udostępnianie…" reposting: "Udostępnianie…"
success: "Udostępniono!" success: "Udostępniono!"
failure: "Nie udało się udostępnić" failure: "Nie udało się udostępnić"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "Profil" profile: "Profil"
notification: "Powiadomienia" notification: "Powiadomienia"
apps: "Aplikacje" apps: "Aplikacje"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Bezpieczeństwo" security: "Bezpieczeństwo"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "Automatycznie pojawiające się okna" auto-popout: "Automatycznie pojawiające się okna"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "Ustawienia zaawansowane" advanced: "Ustawienia zaawansowane"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Automatycznie pokazuj mapę" show-maps: "Automatycznie pokazuj mapę"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,9 +936,10 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "Ogłoszenia"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue: admin/views/dashboard.vue:
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1025,7 +1094,7 @@ admin/views/emoji.vue:
are-you-sure: "「$1」を削除しますか" are-you-sure: "「$1」を削除しますか"
removed: "削除しました" removed: "削除しました"
admin/views/announcements.vue: admin/views/announcements.vue:
announcements: "お知らせ" announcements: "Ogłoszenia"
save: "保存" save: "保存"
remove: "削除" remove: "削除"
add: "追加" add: "追加"
@ -1045,10 +1114,10 @@ desktop/views/pages/welcome.vue:
signin-button: "Zaloguj się" signin-button: "Zaloguj się"
signup-button: "Zarejestruj się" signup-button: "Zarejestruj się"
timeline: "Oś czasu" timeline: "Oś czasu"
announcements: "お知らせ" announcements: "Ogłoszenia"
photos: "最近の画像" photos: "Ostatnie obrazy"
powered-by-misskey: "Oparto o <b>Misskey</b>." powered-by-misskey: "Oparto o <b>Misskey</b>."
info: "情報" info: "Informacje"
desktop/views/pages/drive.vue: desktop/views/pages/drive.vue:
title: "Dysk Misskey" title: "Dysk Misskey"
desktop/views/pages/home-customize.vue: desktop/views/pages/home-customize.vue:
@ -1102,7 +1171,7 @@ desktop/views/pages/user/user.header.vue:
following: "Śledzeni" following: "Śledzeni"
followers: "Śledzący" followers: "Śledzący"
is-bot: "To konto jest botem" is-bot: "To konto jest botem"
years-old: "{age}" years-old: "{age} lat"
year: "年" year: "年"
month: "月" month: "月"
day: "日" day: "日"
@ -1171,10 +1240,10 @@ mobile/views/components/media-video.vue:
click-to-show: "Naciśnij aby wyświetlić" click-to-show: "Naciśnij aby wyświetlić"
common/views/components/follow-button.vue: common/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "Śledź"
request-pending: "フォロー許可待ち" request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中" follow-processing: "フォロー処理中"
follow-request: "フォロー申請" 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"
empty: "Nie znaleziono podobnych użytkowników." empty: "Nie znaleziono podobnych użytkowników."
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "Więcej" refresh: "Więcej"
close: "Zamknij" close: "Zamknij"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "Udostępniono przez {}"
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
location: "Informacje o lokalizacji" location: "Informacje o lokalizacji"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Odpowiedz" reply: "Odpowiedz"
reaction: "Reakcja" reaction: "Reakcja"
reposted-by: "Udostępniono przez {}"
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
location: "Informacje o lokalizacji" location: "Informacje o lokalizacji"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”" disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości" load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów" load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Aktualizacja Misskey" update: "Aktualizacja Misskey"
version: "Wersja:" version: "Wersja:"
latest-version: "Najnowsza wersja:" latest-version: "Najnowsza wersja:"
@ -1360,7 +1433,7 @@ mobile/views/pages/user.vue:
unmute: "ミュート解除" unmute: "ミュート解除"
block: "ブロック" block: "ブロック"
unblock: "ブロック解除" unblock: "ブロック解除"
years-old: "{age}" years-old: "{age} lat"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
recent-notes: "Ostatnie wpisy" recent-notes: "Ostatnie wpisy"
images: "Zdjęcia" images: "Zdjęcia"

View File

@ -26,6 +26,7 @@ common:
close: "Fechar" close: "Fechar"
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida." do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
load-more: "もっと読み込む" load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
got-it: "Entendi!" got-it: "Entendi!"
customization-tips: customization-tips:
title: "Dicas de personalização" title: "Dicas de personalização"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "O que está fazendo?" a: "O que está fazendo?"
b: "O que está acontecendo?" b: "O que está acontecendo?"
@ -120,6 +124,7 @@ common:
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: '問題が発生しました'
retry: 'やり直す' retry: 'やり直す'
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "待機中"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定" advanced: "詳細設定"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Atualizar Misskey" update: "Atualizar Misskey"
version: "Versão atual;" version: "Versão atual;"
latest-version: "Última versão:" latest-version: "Última versão:"

View File

@ -7,61 +7,62 @@ common:
about-title: "Мы — ⭐ fediverse" about-title: "Мы — ⭐ fediverse"
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом." about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
intro: intro:
title: "Misskeyって?" title: "Что такое Misskey?"
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" about: "Misskey - это <b>децентрализованный сервис микроблогинга</b> с открытым исходным кодом. Он имеет такие функции, как: навороченный, полностью настраиваемый пользовательский интерфейс, множество реакций на посты, бесплатное хранилище файлов с интегрированной системой управления и ещё куча передовых фишек. А ещё сетевая система под названием “Fediverse” позволяет нам общаться с пользователями других социальных сетей. Например, если ты что-нибудь запостишь, то твой пост будет отослан не только в Misskey, но ещё и mastodon. Просто представь, что планета посылает микроволны на другую планету для коммуникации."
features: "特徴" features: "Особенности"
rich-contents: "投稿" rich-contents: "Посты"
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" rich-contents-desc: "Просто выложи свою идею, актуальные темы и всё, что тебе хочется показать миру. Ты можешь декорировать свои слова, прикреплять свои любимые картинки, отправлять файлы с фильмами и создать голосование - это те вещи, которые ты можешь сделать с помощью Misskey!"
reaction: "リアクション" reaction: "Реакции"
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" reaction-desc: "Самый лёгкий способ выразить свои эмоции. Misskey позволяет добавлять различные виды реакций к постам других людей. Эмоциональный опыт из Misskey никогда не появится в других социальных сетях, позволяющих только жать “лайки”."
ui: "インターフェース" ui: "Интерфейс"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" ui-desc: "Нет такого интерфейса, понравившегося всем. Поэтому у Misskey имеется пользовательский интерфейс, широко настраиваемый под ваши вкусы. Создай себе уникальную домашнюю страницу редактируя, подстраивая оформление ленты и размещая виджеты, которые тоже можно кастомизировать."
drive: "ドライブ" drive: "Хранилище файлов"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" drive-desc: "Хотите запостить картинку, которую уже отправляли ранее? Хочется сортировать, переименовать и создать папку для ваших выложенных файлов? Тогда Misskey Drive - это лучшее решение для вас. Очень лёгкий способ делиться своими файлами онлайн."
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" outro: "Попробуйте будущие, уникальные для Misskey функции своими глазами! Если чувствуете, что это не в вашем вкусе, то попробуйте другие инстанции, ведь Misskey - это децентрализованная социальная сеть, так что ты можешь с лёгкостью найти себе товарищей. И наконец, GLHF!"
adblock: adblock:
detected: "広告ブロッカーを無効にしてください" detected: "Пожалуйста, отключите блокировщик рекламы."
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。" warning: "Некоторые функции перестанут быть доступными или будут работать неправильно, если включена блокировка рекламы. <strong>В Misskey нет рекламы</strong>."
application-authorization: "アプリの連携" application-authorization: "Авторизация приложений"
close: "閉じる" close: "Закрыть"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。" do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность."
load-more: "もっと読み込む" load-more: "Загрузить больше"
enter-password: "パスワードを入力してください"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>" paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!" gotit: "Got it!"
notification: notification:
file-uploaded: "ファイルがアップロードされました" file-uploaded: "Файл отправлен!"
message-from: "{}さんからメッセージ:" message-from: "Сообщение от {}:"
reversi-invited: "対局への招待があります" reversi-invited: "Приглашён в игру"
reversi-invited-by: "{}さんから" reversi-invited-by: "Был приглашён {}:"
notified-by: "{}さんから" notified-by: "{}さんから"
reply-from: "{}さんから返信:" reply-from: "Ответ от {}:"
quoted-by: "{}さんが引用:" quoted-by: "Цитировано {}:"
time: time:
unknown: "なぞのじかん" unknown: "неизвестно"
future: "未来" future: "сейчас"
just_now: "たった今" just_now: "сейчас"
seconds_ago: "{}秒前" seconds_ago: "{} секунд назад"
minutes_ago: "{}分前" minutes_ago: "{} минут назад"
hours_ago: "{}時間前" hours_ago: "{} часов назад"
days_ago: "{}日前" days_ago: "{} дней назад"
weeks_ago: "{}週間前" weeks_ago: "{} недель назад"
months_ago: "{}ヶ月前" months_ago: "{} месяцев назад"
years_ago: "{}年前" years_ago: "{} лет назад"
month-and-day: "{month}月 {day}日" month-and-day: "{day}.{month}"
trash: "ゴミ箱" trash: "Мусорное ведро"
drive: "ドライブ" drive: "Drive"
messaging: "トーク" messaging: "Чат"
weekday-short: weekday-short:
sunday: "" sunday: "Вс"
monday: "" monday: "Пн"
tuesday: "" tuesday: "Вт"
wednesday: "" wednesday: "Ср"
thursday: "" thursday: "Чт"
friday: "" friday: "Пт"
saturday: "" saturday: "Сб"
weekday: weekday:
sunday: "日曜日" sunday: "日曜日"
monday: "月曜日" monday: "月曜日"
@ -90,6 +91,9 @@ common:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "今どうしてる?"
b: "何かありましたか?" b: "何かありましたか?"
@ -108,59 +112,60 @@ common:
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示" show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける" use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント" verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする" disable-animated-mfm: "Отключить анимированный текст в постах"
always-show-nsfw: "常に閲覧注意のメディアを表示する" always-show-nsfw: "Всегда показывать NSFW контент"
always-mark-nsfw: "常にメディアを閲覧注意として投稿" always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW"
show-full-acct: "ユーザー名のホストを省略しない" show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する" show-via: "показать через"
reduce-motion: "UIの動きを減らす" reduce-motion: "Уменьшить движение в интерфейсе"
this-setting-is-this-device-only: "このデバイスのみ" this-setting-is-this-device-only: "Только для этого устройства"
use-os-default-emojis: "OS標準の絵文字を使用" use-os-default-emojis: "Использовать стандартные Emoji из ОС"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。' do-not-use-in-production: 'Эта сборка для разработчиков. Не используйте в продакшне.'
is-remote-user: "このユーザー情報はコピーです。" is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。" is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る" view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
error: error:
title: '問題が発生しました' title: 'Что-то пошло не так :('
retry: 'やり直す' retry: 'Повторить'
reversi: reversi:
drawn: "引き分け" drawn: "Ничья"
my-turn: "あなたのターンです" my-turn: "Ваш ход"
opponent-turn: "相手のターンです" opponent-turn: "Ход оппонента"
turn-of: "{name}のターンです" turn-of: "Ход {name}"
past-turn-of: "{name}のターン" past-turn-of: "Ход {name}"
won: "{name}の勝ち" won: "{name} победил"
black: "" black: "Чёрный"
white: "" white: "Белый"
total: "合計" total: "Всего"
this-turn: "{count}ターン目" this-turn: "Ход {count}"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "Аналоговые часы"
profile: "プロフィール" profile: "Профиль"
calendar: "カレンダー" calendar: "Календарь"
timemachine: "カレンダー(タイムマシン)" timemachine: "Календарь (машина времени)"
activity: "アクティビティ" activity: "Активность"
rss: "RSSリーダー" rss: "Ридер RSS"
memo: "付箋" memo: "Заметка"
trends: "トレンド" trends: "Популярное"
photo-stream: "フォトストリーム" photo-stream: "Фотопоток"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
slideshow: "スライドショー" slideshow: "Слайдшоу"
version: "バージョン" version: "Версия"
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "Уведомления"
users: "おすすめユーザー" users: "Рекомендованные пользователи"
polls: "アンケート" polls: "Голосования"
post-form: "投稿フォーム" post-form: "投稿フォーム"
server: "サーバー情報" server: "Информация о сервере"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ" hashtags: "Хэштеги"
dev: "アプリの作成に失敗しました。再度お試しください。" dev: "Не удалось создать приложение. Пожалуйста, попробуйте ещё раз."
ai-chan-kawaii: "藍ちゃかわいい" ai-chan-kawaii: "Ai-chan kawaii!"
auth/views/form.vue: auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?" share-access: "Вы разрешаете <i>{name}</i> получить доступ к вашему аккаунту?"
permission-ask: "このアプリは次の権限を要求しています:" permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。" account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。" account-write: "アカウントの情報を操作する。"
@ -206,28 +211,28 @@ common/views/components/games/reversi/reversi.index.vue:
all-games: "みんなの対局" all-games: "みんなの対局"
enter-username: "ユーザー名を入力してください" enter-username: "ユーザー名を入力してください"
game-state: game-state:
ended: "終了" ended: "Завершено"
playing: "進行中" playing: "В процессе"
common/views/components/games/reversi/reversi.room.vue: common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "ゲームの設定" settings-of-the-game: "Настройки игры"
choose-map: "マップを選択" choose-map: "マップを選択"
random: "ランダム" random: "Случайно"
black-or-white: "先手/後手" black-or-white: "Чёрные/Белые"
black-is: "{}が黒" black-is: "{} ходит чёрными"
rules: "ルール" rules: "Правила"
is-llotheo: "石の少ない方が勝ち(ロセオ)" is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ" looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード" can-put-everywhere: "どこでも置けるモード"
settings-of-the-bot: "Botの設定" settings-of-the-bot: "Настройки бота"
this-game-is-started-soon: "ゲームは数秒後に開始されます" this-game-is-started-soon: "Игра вот-вот начнётся"
waiting-for-other: "相手の準備が完了するのを待っています" waiting-for-other: "Ожидание оппонента"
waiting-for-me: "あなたの準備が完了するのを待っています" waiting-for-me: "あなたの準備が完了するのを待っています"
waiting-for-both: "準備中" waiting-for-both: "準備中"
cancel: "キャンセル" cancel: "Отмена"
ready: "準備完了" ready: "Готов"
cancel-ready: "準備続行" cancel-ready: "準備続行"
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "サーバーに接続できません" title: "Невозможно подключиться к серверу"
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。" description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
thanks: "いつもMisskeyをご利用いただきありがとうございます。" thanks: "いつもMisskeyをご利用いただきありがとうございます。"
troubleshoot: "トラブルシュート" troubleshoot: "トラブルシュート"
@ -363,6 +368,7 @@ common/views/components/signin.vue:
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue: common/views/components/signup.vue:
invitation-code: "招待コード" invitation-code: "招待コード"
@ -408,6 +414,13 @@ common/views/components/github-setting.vue:
reconnect: "再接続する" reconnect: "再接続する"
connect: "GitHubと接続する" connect: "GitHubと接続する"
disconnect: "切断する" disconnect: "切断する"
common/views/components/discord-setting.vue:
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
connected-to: "次のDiscordアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Discordと接続する"
disconnect: "切断する"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "待機中"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
@ -419,6 +432,10 @@ common/views/components/visibility-chooser.vue:
specified: "ダイレクト" specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "指定したユーザーにのみ公開"
private: "非公開" private: "非公開"
local-public: "公開 (ローカルのみ)"
local-public-desc: "リモートへは公開しない"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
@ -441,6 +458,10 @@ common/views/components/profile-editor.vue:
saved: "プロフィールを保存しました" saved: "プロフィールを保存しました"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "確認中"
no-broadcasts: "お知らせはありません" no-broadcasts: "お知らせはありません"
@ -628,12 +649,10 @@ desktop/views/components/messaging-window.vue:
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報" location: "位置情報"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
desktop/views/components/note.vue: desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信" reply: "返信"
renote: "Renote" renote: "Renote"
add-reaction: "リアクション" add-reaction: "リアクション"
@ -668,6 +687,7 @@ desktop/views/components/post-form.vue:
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近" recent-tags: "最近"
local-only-message: "この投稿はローカルにのみ公開されます"
click-to-tagging: "クリックでタグ付け" click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲" visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません" geolocation-alert: "お使いの端末は位置情報に対応していません"
@ -685,6 +705,7 @@ desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "引用する..."
cancel: "キャンセル" cancel: "キャンセル"
renote: "Renote" renote: "Renote"
renote-home: "Renote (Home)"
reposting: "しています..." reposting: "しています..."
success: "Renoteしました" success: "Renoteしました"
failure: "Renoteに失敗しました" failure: "Renoteに失敗しました"
@ -699,6 +720,7 @@ desktop/views/components/settings.vue:
profile: "プロフィール" profile: "プロフィール"
notification: "通知" notification: "通知"
apps: "アプリ" apps: "アプリ"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
@ -714,6 +736,8 @@ desktop/views/components/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定" advanced: "詳細設定"
@ -741,6 +765,7 @@ desktop/views/components/settings.vue:
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する" show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する" show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開" show-maps: "マップの自動展開"
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの位置" deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央" deck-column-align-center: "中央"
deck-column-align-left: "左" deck-column-align-left: "左"
@ -911,8 +936,9 @@ admin/views/index.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
instance: "インスタンス" instance: "インスタンス"
emoji: "カスタム絵文字" emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー" users: "ユーザー"
update: "更新" federation: "連合"
announcements: "お知らせ" announcements: "お知らせ"
hashtags: "ハッシュタグ" hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る" back-to-misskey: "Misskeyに戻る"
@ -947,15 +973,20 @@ admin/views/instance.vue:
recaptcha-site-key: "reCAPTCHA site key" recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key" recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定" twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。" twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする" enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key" twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret" twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定" github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。" github-integration-info: "コールバックURLは {url} に設定します。"
enable-github-integration: "GitHub連携を有効にする" enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID" github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret" github-integration-client-secret: "Client Secret"
discord-integration-config: "Discord連携の設定"
discord-integration-info: "コールバックURLは {url} に設定します。"
enable-discord-integration: "Discord連携を有効にする"
discord-integration-client-id: "Client ID"
discord-integration-client-secret: "Client Secret"
proxy-account-config: "プロキシアカウントの設定" proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。" proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名" proxy-account-username: "プロキシアカウントのユーザー名"
@ -967,6 +998,22 @@ admin/views/instance.vue:
invite: "招待" invite: "招待"
save: "保存" save: "保存"
saved: "保存しました" saved: "保存しました"
user-recommendation-config: "おすすめユーザー"
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
enable-email: "メール配信を有効にする"
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
admin/views/charts.vue: admin/views/charts.vue:
title: "チャート" title: "チャート"
per-day: "1日ごと" per-day: "1日ごと"
@ -993,18 +1040,40 @@ admin/views/charts.vue:
network-time: "応答時間" network-time: "応答時間"
network-usage: "通信量" network-usage: "通信量"
admin/views/users.vue: admin/views/users.vue:
suspend-user: "ユーザーの凍結" operation: "操作"
username-or-userid: "ユーザー名またはユーザーID"
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結" suspend: "凍結"
suspended: "凍結しました" suspended: "凍結しました"
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除" unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました" unsuspended: "凍結を解除しました"
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする" verify: "公式アカウントにする"
verified: "公式アカウントにしました" verified: "公式アカウントにしました"
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する" unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました" unverified: "公式アカウントを解除しました"
users:
title: "ユーザー"
sort:
title: "ソート"
createdAtAsc: "登録日時が古い順"
createdAtDesc: "登録日時が新しい順"
updatedAtAsc: "更新日時が古い順"
updatedAtDesc: "更新日時が新しい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
createdAt: "登録日時"
updatedAt: "更新日時"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
admin/views/emoji.vue: admin/views/emoji.vue:
add-emoji: add-emoji:
title: "絵文字の登録" title: "絵文字の登録"
@ -1182,14 +1251,12 @@ mobile/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
mobile/views/components/note.vue: mobile/views/components/note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "返信" reply: "返信"
reaction: "リアクション" reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
location: "位置情報" location: "位置情報"
@ -1321,6 +1388,8 @@ mobile/views/pages/settings.vue:
note-visibility: "投稿の公開範囲" note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲" default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する" remember-note-visibility: "投稿の公開範囲を記憶する"
web-search-engine: "ウェブ検索エンジン"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
@ -1332,6 +1401,10 @@ mobile/views/pages/settings.vue:
github-connect: "GitHubアカウントに接続する" github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する" github-reconnect: "再接続する"
github-disconnect: "切断する" github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "10.51.1", "version": "10.60.0",
"clientVersion": "2.0.11802", "clientVersion": "2.0.12331",
"codename": "nighthike", "codename": "nighthike",
"main": "./built/index.js", "main": "./built/index.js",
"private": true, "private": true,
@ -35,7 +35,7 @@
"@types/deep-equal": "1.0.1", "@types/deep-equal": "1.0.1",
"@types/double-ended-queue": "2.1.0", "@types/double-ended-queue": "2.1.0",
"@types/elasticsearch": "5.0.28", "@types/elasticsearch": "5.0.28",
"@types/file-type": "5.2.1", "@types/file-type": "5.2.2",
"@types/gulp": "3.8.36", "@types/gulp": "3.8.36",
"@types/gulp-htmlmin": "1.3.32", "@types/gulp-htmlmin": "1.3.32",
"@types/gulp-mocha": "0.0.32", "@types/gulp-mocha": "0.0.32",
@ -46,14 +46,15 @@
"@types/is-root": "1.0.0", "@types/is-root": "1.0.0",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "3.11.2", "@types/js-yaml": "3.11.2",
"@types/koa": "2.0.46", "@types/katex": "0.5.0",
"@types/koa": "2.0.47",
"@types/koa-bodyparser": "5.0.1", "@types/koa-bodyparser": "5.0.1",
"@types/koa-compress": "2.0.8", "@types/koa-compress": "2.0.8",
"@types/koa-favicon": "2.0.19", "@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1", "@types/koa-logger": "3.1.1",
"@types/koa-mount": "3.0.1", "@types/koa-mount": "3.0.1",
"@types/koa-multer": "1.0.0", "@types/koa-multer": "1.0.0",
"@types/koa-router": "7.0.33", "@types/koa-router": "7.0.35",
"@types/koa-send": "4.1.1", "@types/koa-send": "4.1.1",
"@types/koa-views": "2.0.3", "@types/koa-views": "2.0.3",
"@types/koa__cors": "2.2.3", "@types/koa__cors": "2.2.3",
@ -62,13 +63,15 @@
"@types/mocha": "5.2.5", "@types/mocha": "5.2.5",
"@types/mongodb": "3.1.14", "@types/mongodb": "3.1.14",
"@types/ms": "0.7.30", "@types/ms": "0.7.30",
"@types/node": "10.12.2", "@types/node": "10.12.10",
"@types/nodemailer": "4.6.5",
"@types/oauth": "0.9.1", "@types/oauth": "0.9.1",
"@types/parsimmon": "1.10.0",
"@types/portscanner": "2.1.0", "@types/portscanner": "2.1.0",
"@types/pug": "2.0.4", "@types/pug": "2.0.4",
"@types/qrcode": "1.3.0", "@types/qrcode": "1.3.0",
"@types/ratelimiter": "2.1.28", "@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.7", "@types/redis": "2.8.8",
"@types/request": "2.48.1", "@types/request": "2.48.1",
"@types/request-promise-native": "1.0.15", "@types/request-promise-native": "1.0.15",
"@types/rimraf": "2.0.2", "@types/rimraf": "2.0.2",
@ -76,17 +79,17 @@
"@types/sharp": "0.21.0", "@types/sharp": "0.21.0",
"@types/showdown": "1.7.5", "@types/showdown": "1.7.5",
"@types/speakeasy": "2.0.3", "@types/speakeasy": "2.0.3",
"@types/systeminformation": "3.23.0", "@types/systeminformation": "3.23.1",
"@types/tinycolor2": "1.4.1", "@types/tinycolor2": "1.4.1",
"@types/tmp": "0.0.33", "@types/tmp": "0.0.33",
"@types/uuid": "3.4.4", "@types/uuid": "3.4.4",
"@types/webpack": "4.4.18", "@types/webpack": "4.4.19",
"@types/webpack-stream": "3.2.10", "@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.40", "@types/websocket": "0.0.40",
"@types/ws": "6.0.1", "@types/ws": "6.0.1",
"animejs": "2.2.0", "animejs": "2.2.0",
"apexcharts": "2.2.0", "apexcharts": "2.2.3",
"autobind-decorator": "2.2.1", "autobind-decorator": "2.3.1",
"autosize": "4.0.2", "autosize": "4.0.2",
"autwh": "0.1.0", "autwh": "0.1.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
@ -107,7 +110,7 @@
"diskusage": "0.2.5", "diskusage": "0.2.5",
"double-ended-queue": "2.1.0-0", "double-ended-queue": "2.1.0-0",
"elasticsearch": "15.2.0", "elasticsearch": "15.2.0",
"emojilib": "2.3.0", "emojilib": "2.4.0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "5.8.0", "eslint": "5.8.0",
"eslint-plugin-vue": "4.7.1", "eslint-plugin-vue": "4.7.1",
@ -140,7 +143,8 @@
"jsdom": "13.0.0", "jsdom": "13.0.0",
"json5": "2.1.0", "json5": "2.1.0",
"json5-loader": "1.0.1", "json5-loader": "1.0.1",
"koa": "2.6.1", "katex": "0.10.0",
"koa": "2.6.2",
"koa-bodyparser": "4.2.1", "koa-bodyparser": "4.2.1",
"koa-compress": "3.0.0", "koa-compress": "3.0.0",
"koa-favicon": "2.0.1", "koa-favicon": "2.0.1",
@ -158,16 +162,18 @@
"mocha": "5.2.0", "mocha": "5.2.0",
"moji": "0.5.1", "moji": "0.5.1",
"moment": "2.22.2", "moment": "2.22.2",
"mongodb": "3.1.8", "mongodb": "3.1.9",
"monk": "6.0.6", "monk": "6.0.6",
"ms": "2.1.1", "ms": "2.1.1",
"nan": "2.11.1", "nan": "2.11.1",
"nested-property": "0.0.7", "nested-property": "0.0.7",
"nodemailer": "4.7.0",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"object-assign-deep": "0.4.0", "object-assign-deep": "0.4.0",
"on-build-webpack": "0.1.0", "on-build-webpack": "0.1.0",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"parse5": "5.1.0", "parse5": "5.1.0",
"parsimmon": "1.12.0",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"postcss-loader": "3.0.0", "postcss-loader": "3.0.0",
"progress-bar-webpack-plugin": "1.11.0", "progress-bar-webpack-plugin": "1.11.0",
@ -189,7 +195,7 @@
"s-age": "1.1.2", "s-age": "1.1.2",
"seedrandom": "2.4.4", "seedrandom": "2.4.4",
"sharp": "0.21.0", "sharp": "0.21.0",
"showdown": "1.8.7", "showdown": "1.9.0",
"showdown-highlightjs-extension": "0.1.2", "showdown-highlightjs-extension": "0.1.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
"stringz": "1.0.0", "stringz": "1.0.0",
@ -197,17 +203,17 @@
"stylus": "0.54.5", "stylus": "0.54.5",
"stylus-loader": "3.0.2", "stylus-loader": "3.0.2",
"summaly": "2.2.0", "summaly": "2.2.0",
"systeminformation": "3.47.0", "systeminformation": "3.51.3",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "1.1.0", "terser-webpack-plugin": "1.1.0",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"tinycolor2": "1.4.1", "tinycolor2": "1.4.1",
"tmp": "0.0.33", "tmp": "0.0.33",
"ts-loader": "5.3.0", "ts-loader": "5.3.1",
"ts-node": "7.0.1", "ts-node": "7.0.1",
"tslint": "5.10.0", "tslint": "5.10.0",
"typescript": "3.1.6", "typescript": "3.1.6",
"typescript-eslint-parser": "20.1.1", "typescript-eslint-parser": "21.0.1",
"uglify-es": "3.3.9", "uglify-es": "3.3.9",
"url-loader": "1.1.2", "url-loader": "1.1.2",
"uuid": "3.3.2", "uuid": "3.3.2",
@ -216,24 +222,24 @@
"vue-color": "2.7.0", "vue-color": "2.7.0",
"vue-content-loading": "1.5.3", "vue-content-loading": "1.5.3",
"vue-cropperjs": "2.2.2", "vue-cropperjs": "2.2.2",
"vue-i18n": "8.3.1", "vue-i18n": "8.3.2",
"vue-js-modal": "1.3.26", "vue-js-modal": "1.3.27",
"vue-loader": "15.4.2", "vue-loader": "15.4.2",
"vue-marquee-text-component": "1.1.0", "vue-marquee-text-component": "1.1.0",
"vue-router": "3.0.1", "vue-router": "3.0.2",
"vue-style-loader": "4.1.2", "vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.2.1", "vue-svg-inline-loader": "1.2.2",
"vue-template-compiler": "2.5.17", "vue-template-compiler": "2.5.17",
"vuedraggable": "2.16.0", "vuedraggable": "2.16.0",
"vuewordcloud": "18.7.11", "vuewordcloud": "18.7.11",
"vuex": "3.0.1", "vuex": "3.0.1",
"vuex-persistedstate": "2.5.4", "vuex-persistedstate": "2.5.4",
"web-push": "3.3.3", "web-push": "3.3.3",
"webfinger.js": "2.6.6", "webfinger.js": "2.7.0",
"webpack": "4.25.1", "webpack": "4.26.1",
"webpack-cli": "3.1.2", "webpack-cli": "3.1.2",
"websocket": "1.0.28", "websocket": "1.0.28",
"ws": "6.1.0", "ws": "6.1.2",
"xev": "2.0.1" "xev": "2.0.1"
} }
} }

View File

@ -9,7 +9,7 @@
<ui-textarea v-model="announcement.text"> <ui-textarea v-model="announcement.text">
<span>{{ $t('text') }}</span> <span>{{ $t('text') }}</span>
</ui-textarea> </ui-textarea>
<ui-horizon-group> <ui-horizon-group class="fit-bottom">
<ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button> <ui-button @click="save()"><fa :icon="['far', 'save']"/> {{ $t('save') }}</ui-button>
<ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button> <ui-button @click="remove(i)"><fa :icon="['far', 'trash-alt']"/> {{ $t('remove') }}</ui-button>
</ui-horizon-group> </ui-horizon-group>
@ -48,7 +48,7 @@ export default Vue.extend({
}, },
remove(i) { remove(i) {
this.$root.alert({ this.$root.dialog({
type: 'warning', type: 'warning',
text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title), text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title),
showCancelButton: true showCancelButton: true
@ -56,7 +56,7 @@ export default Vue.extend({
if (!res) return; if (!res) return;
this.announcements = this.announcements.filter((_, j) => j !== i); this.announcements = this.announcements.filter((_, j) => j !== i);
this.save(true); this.save(true);
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('_remove.removed') text: this.$t('_remove.removed')
}); });
@ -68,13 +68,13 @@ export default Vue.extend({
broadcasts: this.announcements broadcasts: this.announcements
}).then(() => { }).then(() => {
if (!silent) { if (!silent) {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('saved') text: this.$t('saved')
}); });
} }
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });

View File

@ -8,13 +8,19 @@
<p>{{ $t('@.ai-chan-kawaii') }}</p> <p>{{ $t('@.ai-chan-kawaii') }}</p>
</header> </header>
<marquee-text v-if="instances.length > 0" class="instances" :repeat="10" :duration="60">
<span v-for="instance in instances" class="instance">
<b :style="{ background: instance.bg }">{{ instance.host }}</b>{{ instance.notesCount | number }} / {{ instance.usersCount | number }}
</span>
</marquee-text>
<div v-if="stats" class="stats"> <div v-if="stats" class="stats">
<div> <div>
<div> <div>
<div><fa icon="user"/></div> <div><fa icon="user"/></div>
<div> <div>
<span>{{ $t('accounts') }}</span> <span>{{ $t('accounts') }}</span>
<b class="primary">{{ stats.originalUsersCount | number }}</b> <b>{{ stats.originalUsersCount | number }}</b>
</div> </div>
</div> </div>
<div> <div>
@ -27,7 +33,7 @@
<div><fa icon="pencil-alt"/></div> <div><fa icon="pencil-alt"/></div>
<div> <div>
<span>{{ $t('notes') }}</span> <span>{{ $t('notes') }}</span>
<b class="primary">{{ stats.originalNotesCount | number }}</b> <b>{{ stats.originalNotesCount | number }}</b>
</div> </div>
</div> </div>
<div> <div>
@ -84,6 +90,8 @@ import XCpuMemory from "./cpu-memory.vue";
import XCharts from "./charts.vue"; import XCharts from "./charts.vue";
import XApLog from "./ap-log.vue"; import XApLog from "./ap-log.vue";
import { faDatabase } from '@fortawesome/free-solid-svg-icons'; import { faDatabase } from '@fortawesome/free-solid-svg-icons';
import MarqueeText from 'vue-marquee-text-component';
import randomColor from 'randomcolor';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('admin/views/dashboard.vue'), i18n: i18n('admin/views/dashboard.vue'),
@ -91,7 +99,8 @@ export default Vue.extend({
components: { components: {
XCpuMemory, XCpuMemory,
XCharts, XCharts,
XApLog XApLog,
MarqueeText
}, },
data() { data() {
@ -99,6 +108,8 @@ export default Vue.extend({
stats: null, stats: null,
connection: null, connection: null,
meta: null, meta: null,
instances: [],
clock: null,
faDatabase faDatabase
}; };
}, },
@ -106,22 +117,40 @@ export default Vue.extend({
created() { created() {
this.connection = this.$root.stream.useSharedConnection('serverStats'); this.connection = this.$root.stream.useSharedConnection('serverStats');
this.updateStats();
this.clock = setInterval(this.updateStats, 1000);
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.meta = meta; this.meta = meta;
}); });
this.$root.api('stats').then(stats => { this.$root.api('instances', {
this.stats = stats; sort: '+notes'
}).then(instances => {
instances.forEach(i => {
i.bg = randomColor({
seed: i.host,
luminosity: 'dark'
});
});
this.instances = instances;
}); });
}, },
beforeDestroy() { beforeDestroy() {
this.connection.dispose(); this.connection.dispose();
clearInterval(this.clock);
}, },
methods: { methods: {
setChartSrc(src) { setChartSrc(src) {
this.$refs.charts.setSrc(src); this.$refs.charts.setSrc(src);
},
updateStats() {
this.$root.api('stats', {}, false, true).then(stats => {
this.stats = stats;
});
} }
} }
}); });
@ -136,7 +165,6 @@ export default Vue.extend({
> header > header
display flex display flex
margin-bottom 16px
padding-bottom 16px padding-bottom 16px
border-bottom solid 1px var(--adminDashboardHeaderBorder) border-bottom solid 1px var(--adminDashboardHeaderBorder)
color var(--adminDashboardHeaderFg) color var(--adminDashboardHeaderFg)
@ -161,6 +189,20 @@ export default Vue.extend({
margin-left auto margin-left auto
margin-right 0 margin-right 0
> .instances
padding 16px
color var(--adminDashboardHeaderFg)
font-size 13px
>>> .instance
margin 0 10px
> b
padding 2px 6px
margin-right 4px
border-radius 4px
color #fff
> .stats > .stats
display flex display flex
justify-content space-between justify-content space-between
@ -201,9 +243,6 @@ export default Vue.extend({
> b > b
display block display block
&.primary
color var(--primary)
> div:last-child > div:last-child
display flex display flex
padding 6px 16px padding 6px 16px

View File

@ -38,7 +38,7 @@
<i slot="icon"><fa icon="link"/></i> <i slot="icon"><fa icon="link"/></i>
<span>{{ $t('add-emoji.url') }}</span> <span>{{ $t('add-emoji.url') }}</span>
</ui-input> </ui-input>
<ui-horizon-group> <ui-horizon-group class="fit-bottom">
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button> <ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button> <ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
</ui-horizon-group> </ui-horizon-group>
@ -75,13 +75,13 @@ export default Vue.extend({
url: this.url, url: this.url,
aliases: this.aliases.split(' ').filter(x => x.length > 0) aliases: this.aliases.split(' ').filter(x => x.length > 0)
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('add-emoji.added') text: this.$t('add-emoji.added')
}); });
this.fetchEmojis(); this.fetchEmojis();
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });
@ -103,12 +103,12 @@ export default Vue.extend({
url: emoji.url, url: emoji.url,
aliases: emoji.aliases.split(' ').filter(x => x.length > 0) aliases: emoji.aliases.split(' ').filter(x => x.length > 0)
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('updated') text: this.$t('updated')
}); });
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });
@ -116,7 +116,7 @@ export default Vue.extend({
}, },
removeEmoji(emoji) { removeEmoji(emoji) {
this.$root.alert({ this.$root.dialog({
type: 'warning', type: 'warning',
text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name), text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name),
showCancelButton: true showCancelButton: true
@ -126,13 +126,13 @@ export default Vue.extend({
this.$root.api('admin/emoji/remove', { this.$root.api('admin/emoji/remove', {
id: emoji.id id: emoji.id
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('remove-emoji.removed') text: this.$t('remove-emoji.removed')
}); });
this.fetchEmojis(); this.fetchEmojis();
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });

View File

@ -22,12 +22,12 @@
<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('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> --> <!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }"><fa icon="cloud" fixed-width/>{{ $t('@.drive') }}</li> -->
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">{{ $t('update') }}</li> -->
</ul> </ul>
<div class="back-to-misskey"> <div class="back-to-misskey">
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a> <a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
@ -37,9 +37,6 @@
</div> </div>
</nav> </nav>
<main> <main>
<marquee-text v-if="instances.length > 0" class="instances" :repeat="10" :duration="20">
<span v-for="instance in instances" class="instance"><b :style="{ background: instance.bg }">{{ instance.host }}</b>{{ instance.notesCount | number }}</span>
</marquee-text>
<div class="page"> <div class="page">
<div v-if="page == 'dashboard'"><x-dashboard/></div> <div v-if="page == 'dashboard'"><x-dashboard/></div>
<div v-if="page == 'instance'"><x-instance/></div> <div v-if="page == 'instance'"><x-instance/></div>
@ -66,10 +63,8 @@ import XEmoji from "./emoji.vue";
import XAnnouncements from "./announcements.vue"; import XAnnouncements from "./announcements.vue";
import XHashtags from "./hashtags.vue"; import XHashtags from "./hashtags.vue";
import XUsers from "./users.vue"; import XUsers from "./users.vue";
import { faHeadset, faArrowLeft } 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';
import MarqueeText from 'vue-marquee-text-component';
import randomColor from 'randomcolor';
// Detect the user agent // Detect the user agent
const ua = navigator.userAgent.toLowerCase(); const ua = navigator.userAgent.toLowerCase();
@ -84,8 +79,7 @@ export default Vue.extend({
XEmoji, XEmoji,
XAnnouncements, XAnnouncements,
XHashtags, XHashtags,
XUsers, XUsers
MarqueeText
}, },
provide: { provide: {
isMobile isMobile
@ -96,25 +90,12 @@ export default Vue.extend({
version, version,
isMobile, isMobile,
navOpend: !isMobile, navOpend: !isMobile,
instances: [],
faGrin, faGrin,
faArrowLeft, faArrowLeft,
faHeadset faHeadset,
faShareAlt
}; };
}, },
created() {
this.$root.api('instances', {
sort: '+notes'
}).then(instances => {
instances.forEach(i => {
i.bg = randomColor({
seed: i.host,
luminosity: 'dark'
});
});
this.instances = instances;
});
},
methods: { methods: {
nav(page: string) { nav(page: string) {
this.page = page; this.page = page;
@ -285,22 +266,8 @@ export default Vue.extend({
width 100% width 100%
padding 0 0 0 250px padding 0 0 0 250px
> .instances
padding 8px
background rgba(0, 0, 0, 0.7)
color #fff
font-size 14px
>>> .instance
margin 0 10px
> b
padding 0px 6px
margin-right 4px
border-radius 4px
> .page > .page
max-width 1300px max-width 1150px
&.isMobile &.isMobile
> main > main

View File

@ -12,11 +12,15 @@
<section class="fit-bottom"> <section class="fit-bottom">
<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header> <header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header>
<ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input> <ui-input v-model="maintainerName">{{ $t('maintainer-name') }}</ui-input>
<ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="['far', 'envelope']"/></i>{{ $t('maintainer-email') }}</ui-input> <ui-input v-model="maintainerEmail" type="email"><i slot="icon"><fa :icon="farEnvelope"/></i>{{ $t('maintainer-email') }}</ui-input>
</section> </section>
<section class="fit-top fit-bottom"> <section class="fit-top fit-bottom">
<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input> <ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input>
</section> </section>
<section>
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
</section>
<section class="fit-bottom"> <section class="fit-bottom">
<header><fa icon="cloud"/> {{ $t('drive-config') }}</header> <header><fa icon="cloud"/> {{ $t('drive-config') }}</header>
<ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch> <ui-switch v-model="cacheRemoteFiles">{{ $t('cache-remote-files') }}<span slot="desc">{{ $t('cache-remote-files-desc') }}</span></ui-switch>
@ -37,10 +41,28 @@
<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info> <ui-info warn>{{ $t('proxy-account-warn') }}</ui-info>
</section> </section>
<section> <section>
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch> <header><fa :icon="farEnvelope"/> {{ $t('email-config') }}</header>
<ui-switch v-model="enableEmail">{{ $t('enable-email') }}<span slot="desc">{{ $t('email-config-info') }}</span></ui-switch>
<ui-input v-model="email" type="email" :disabled="!enableEmail">{{ $t('email') }}</ui-input>
<ui-horizon-group inputs>
<ui-input v-model="smtpHost" :disabled="!enableEmail">{{ $t('smtp-host') }}</ui-input>
<ui-input v-model="smtpPort" type="number" :disabled="!enableEmail">{{ $t('smtp-port') }}</ui-input>
</ui-horizon-group>
<ui-horizon-group inputs>
<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input>
<ui-input v-model="smtpPass" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input>
</ui-horizon-group>
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
</section> </section>
<section> <section>
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch> <header>summaly Proxy</header>
<ui-input v-model="summalyProxy">URL</ui-input>
</section>
<section>
<header><fa :icon="faUserPlus"/> {{ $t('user-recommendation-config') }}</header>
<ui-switch v-model="enableExternalUserRecommendation">{{ $t('enable-external-user-recommendation') }}</ui-switch>
<ui-input v-model="externalUserRecommendationEngine" :disabled="!enableExternalUserRecommendation">{{ $t('external-user-recommendation-engine') }}<span slot="desc">{{ $t('external-user-recommendation-engine-desc') }}</span></ui-input>
<ui-input v-model="externalUserRecommendationTimeout" type="number" :disabled="!enableExternalUserRecommendation">{{ $t('external-user-recommendation-timeout') }}<span slot="suffix">ms</span><span slot="desc">{{ $t('external-user-recommendation-timeout-desc') }}</span></ui-input>
</section> </section>
<section> <section>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
@ -59,7 +81,7 @@
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div> <div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
<section> <section>
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch> <ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
<ui-info>{{ $t('twitter-integration-info') }}</ui-info> <ui-info>{{ $t('twitter-integration-info', { url: `${url}/api/tw/cb` }) }}</ui-info>
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input> <ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input> <ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
@ -70,27 +92,40 @@
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div> <div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
<section> <section>
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch> <ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
<ui-info>{{ $t('github-integration-info') }}</ui-info> <ui-info>{{ $t('github-integration-info', { url: `${url}/api/gh/cb` }) }}</ui-info>
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input> <ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input> <ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button> <ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord-integration-config') }}</div>
<section>
<ui-switch v-model="enableDiscordIntegration">{{ $t('enable-discord-integration') }}</ui-switch>
<ui-info>{{ $t('discord-integration-info', { url: `${url}/api/dc/cb` }) }}</ui-info>
<ui-input v-model="discordClientId" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-id') }}</ui-input>
<ui-input v-model="discordClientSecret" :disabled="!enableDiscordIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('discord-integration-client-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section>
</ui-card>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../i18n'; import i18n from '../../i18n';
import { host } from '../../config'; import { url, host } from '../../config';
import { toUnicode } from 'punycode'; import { toUnicode } from 'punycode';
import { faHeadset, faShieldAlt, faGhost } from '@fortawesome/free-solid-svg-icons'; import { faHeadset, faShieldAlt, faGhost, faUserPlus } from '@fortawesome/free-solid-svg-icons';
import { faEnvelope as farEnvelope } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('admin/views/instance.vue'), i18n: i18n('admin/views/instance.vue'),
data() { data() {
return { return {
url,
host: toUnicode(host), host: toUnicode(host),
maintainerName: null, maintainerName: null,
maintainerEmail: null, maintainerEmail: null,
@ -113,9 +148,23 @@ export default Vue.extend({
enableGithubIntegration: false, enableGithubIntegration: false,
githubClientId: null, githubClientId: null,
githubClientSecret: null, githubClientSecret: null,
enableDiscordIntegration: false,
discordClientId: null,
discordClientSecret: null,
proxyAccount: null, proxyAccount: null,
inviteCode: null, inviteCode: null,
faHeadset, faShieldAlt, faGhost enableExternalUserRecommendation: false,
externalUserRecommendationEngine: null,
externalUserRecommendationTimeout: null,
summalyProxy: null,
enableEmail: false,
email: null,
smtpSecure: false,
smtpHost: null,
smtpPort: null,
smtpUser: null,
smtpPass: null,
faHeadset, faShieldAlt, faGhost, faUserPlus, farEnvelope
}; };
}, },
@ -141,6 +190,20 @@ export default Vue.extend({
this.enableGithubIntegration = meta.enableGithubIntegration; this.enableGithubIntegration = meta.enableGithubIntegration;
this.githubClientId = meta.githubClientId; this.githubClientId = meta.githubClientId;
this.githubClientSecret = meta.githubClientSecret; this.githubClientSecret = meta.githubClientSecret;
this.enableDiscordIntegration = meta.enableDiscordIntegration;
this.discordClientId = meta.discordClientId;
this.discordClientSecret = meta.discordClientSecret;
this.enableExternalUserRecommendation = meta.enableExternalUserRecommendation;
this.externalUserRecommendationEngine = meta.externalUserRecommendationEngine;
this.externalUserRecommendationTimeout = meta.externalUserRecommendationTimeout;
this.summalyProxy = meta.summalyProxy;
this.enableEmail = meta.enableEmail;
this.email = meta.email;
this.smtpSecure = meta.smtpSecure;
this.smtpHost = meta.smtpHost;
this.smtpPort = meta.smtpPort;
this.smtpUser = meta.smtpUser;
this.smtpPass = meta.smtpPass;
}); });
}, },
@ -149,7 +212,7 @@ export default Vue.extend({
this.$root.api('admin/invite').then(x => { this.$root.api('admin/invite').then(x => {
this.inviteCode = x.code; this.inviteCode = x.code;
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });
@ -180,13 +243,27 @@ export default Vue.extend({
enableGithubIntegration: this.enableGithubIntegration, enableGithubIntegration: this.enableGithubIntegration,
githubClientId: this.githubClientId, githubClientId: this.githubClientId,
githubClientSecret: this.githubClientSecret, githubClientSecret: this.githubClientSecret,
enableDiscordIntegration: this.enableDiscordIntegration,
discordClientId: this.discordClientId,
discordClientSecret: this.discordClientSecret,
enableExternalUserRecommendation: this.enableExternalUserRecommendation,
externalUserRecommendationEngine: this.externalUserRecommendationEngine,
externalUserRecommendationTimeout: parseInt(this.externalUserRecommendationTimeout, 10),
summalyProxy: this.summalyProxy,
enableEmail: this.enableEmail,
email: this.email,
smtpSecure: this.smtpSecure,
smtpHost: this.smtpHost,
smtpPort: parseInt(this.smtpPort, 10),
smtpUser: this.smtpUser,
smtpPass: this.smtpPass
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('saved') text: this.$t('saved')
}); });
}).catch(e => { }).catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e text: e
}); });

View File

@ -34,14 +34,14 @@ export default Vue.extend({
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));
await this.$root.api('admin/moderators/add', { userId: user.id }); await this.$root.api('admin/moderators/add', { userId: user.id });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('add-moderator.added') text: this.$t('add-moderator.added')
}); });
}; };
await process().catch(e => { await process().catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e.toString() text: e.toString()
}); });

View File

@ -1,42 +1,63 @@
<template> <template>
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw"> <div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
<ui-card> <ui-card>
<div slot="title">{{ $t('verify-user') }}</div> <div slot="title"><fa :icon="faTerminal"/> {{ $t('operation') }}</div>
<section class="fit-top"> <section class="fit-top">
<ui-input v-model="verifyUsername" type="text"> <ui-input v-model="target" type="text">
<span slot="prefix">@</span> <span>{{ $t('username-or-userid') }}</span>
</ui-input> </ui-input>
<ui-button @click="verifyUser" :disabled="verifying">{{ $t('verify') }}</ui-button> <ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button>
<ui-horizon-group>
<ui-button @click="verifyUser" :disabled="verifying"><fa :icon="faCertificate"/> {{ $t('verify') }}</ui-button>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
</ui-horizon-group>
<ui-horizon-group>
<ui-button @click="suspendUser" :disabled="suspending"><fa :icon="faSnowflake"/> {{ $t('suspend') }}</ui-button>
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
</ui-horizon-group>
<ui-button @click="showUser"><fa :icon="faSearch"/> {{ $t('lookup') }}</ui-button>
<ui-textarea v-if="user" :value="user | json5" readonly tall style="margin-top:16px;"></ui-textarea>
</section> </section>
</ui-card> </ui-card>
<ui-card> <ui-card>
<div slot="title">{{ $t('unverify-user') }}</div> <div slot="title"><fa :icon="faUsers"/> {{ $t('users.title') }}</div>
<section class="fit-top"> <section class="fit-top">
<ui-input v-model="unverifyUsername" type="text"> <ui-horizon-group inputs>
<span slot="prefix">@</span> <ui-select v-model="sort">
</ui-input> <span slot="label">{{ $t('users.sort.title') }}</span>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button> <option value="-createdAt">{{ $t('users.sort.createdAtAsc') }}</option>
</section> <option value="+createdAt">{{ $t('users.sort.createdAtDesc') }}</option>
</ui-card> <option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option>
<option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option>
<ui-card> </ui-select>
<div slot="title">{{ $t('suspend-user') }}</div> <ui-select v-model="origin">
<section class="fit-top"> <span slot="label">{{ $t('users.origin.title') }}</span>
<ui-input v-model="suspendUsername" type="text"> <option value="combined">{{ $t('users.origin.combined') }}</option>
<span slot="prefix">@</span> <option value="local">{{ $t('users.origin.local') }}</option>
</ui-input> <option value="remote">{{ $t('users.origin.remote') }}</option>
<ui-button @click="suspendUser" :disabled="suspending">{{ $t('suspend') }}</ui-button> </ui-select>
</section> </ui-horizon-group>
</ui-card> <div class="kofvwchc" v-for="user in users">
<div>
<ui-card> <a :href="user | userPage(null, true)">
<div slot="title">{{ $t('unsuspend-user') }}</div> <mk-avatar class="avatar" :user="user" :disable-link="true"/>
<section class="fit-top"> </a>
<ui-input v-model="unsuspendUsername" type="text"> </div>
<span slot="prefix">@</span> <div>
</ui-input> <header>
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button> <b>{{ user | userName }}</b>
<span class="username">@{{ user | acct }}</span>
</header>
<div>
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
</div>
<div>
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span>
</div>
</div>
</div>
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
</section> </section>
</ui-card> </ui-card>
</div> </div>
@ -46,38 +67,98 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../i18n'; import i18n from '../../i18n';
import parseAcct from "../../../../misc/acct/parse"; import parseAcct from "../../../../misc/acct/parse";
import { faCertificate, faUsers, faTerminal, faSearch, faKey } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('admin/views/users.vue'), i18n: i18n('admin/views/users.vue'),
data() { data() {
return { return {
verifyUsername: null, user: null,
target: null,
verifying: false, verifying: false,
unverifyUsername: null,
unverifying: false, unverifying: false,
suspendUsername: null,
suspending: false, suspending: false,
unsuspendUsername: null, unsuspending: false,
unsuspending: false sort: '+createdAt',
origin: 'combined',
limit: 10,
offset: 0,
users: [],
existMore: false,
faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey
}; };
}, },
watch: {
sort() {
this.users = [];
this.offset = 0;
this.fetchUsers();
},
origin() {
this.users = [];
this.offset = 0;
this.fetchUsers();
}
},
mounted() {
this.fetchUsers();
},
methods: { methods: {
async fetchUser() {
try {
return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target });
} catch (e) {
if (e == 'user not found') {
this.$root.dialog({
type: 'error',
text: this.$t('user-not-found')
});
} else {
this.$root.dialog({
type: 'error',
text: e.toString()
});
}
}
},
async showUser() {
const user = await this.fetchUser();
this.$root.api('admin/show-user', { userId: user.id }).then(info => {
this.user = info;
});
},
async resetPassword() {
const user = await this.fetchUser();
this.$root.api('admin/reset-password', { userId: user.id }).then(res => {
this.$root.dialog({
type: 'success',
text: this.$t('password-updated', { password: res.password })
});
});
},
async verifyUser() { async verifyUser() {
this.verifying = true; this.verifying = true;
const process = async () => { const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.verifyUsername)); const user = await this.fetchUser();
await this.$root.api('admin/verify-user', { userId: user.id }); await this.$root.api('admin/verify-user', { userId: user.id });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('verified') text: this.$t('verified')
}); });
}; };
await process().catch(e => { await process().catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e.toString() text: e.toString()
}); });
@ -90,16 +171,16 @@ export default Vue.extend({
this.unverifying = true; this.unverifying = true;
const process = async () => { const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.unverifyUsername)); const user = await this.fetchUser();
await this.$root.api('admin/unverify-user', { userId: user.id }); await this.$root.api('admin/unverify-user', { userId: user.id });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('unverified') text: this.$t('unverified')
}); });
}; };
await process().catch(e => { await process().catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e.toString() text: e.toString()
}); });
@ -112,16 +193,16 @@ export default Vue.extend({
this.suspending = true; this.suspending = true;
const process = async () => { const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.suspendUsername)); const user = await this.fetchUser();
await this.$root.api('admin/suspend-user', { userId: user.id }); await this.$root.api('admin/suspend-user', { userId: user.id });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('suspended') text: this.$t('suspended')
}); });
}; };
await process().catch(e => { await process().catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e.toString() text: e.toString()
}); });
@ -134,22 +215,40 @@ export default Vue.extend({
this.unsuspending = true; this.unsuspending = true;
const process = async () => { const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.unsuspendUsername)); const user = await this.fetchUser();
await this.$root.api('admin/unsuspend-user', { userId: user.id }); await this.$root.api('admin/unsuspend-user', { userId: user.id });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('unsuspended') text: this.$t('unsuspended')
}); });
}; };
await process().catch(e => { await process().catch(e => {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: e.toString() text: e.toString()
}); });
}); });
this.unsuspending = false; this.unsuspending = false;
},
fetchUsers() {
this.$root.api('users', {
origin: this.origin,
sort: this.sort,
offset: this.offset,
limit: this.limit + 1
}).then(users => {
if (users.length == this.limit + 1) {
users.pop();
this.existMore = true;
} else {
this.existMore = false;
}
this.users = this.users.concat(users);
this.offset += this.limit;
});
} }
} }
}); });
@ -160,4 +259,24 @@ export default Vue.extend({
@media (min-width 500px) @media (min-width 500px)
padding 16px padding 16px
.kofvwchc
display flex
padding 16px 0
border-top solid 1px var(--faceDivider)
> div:first-child
> a
> .avatar
width 64px
height 64px
> div:last-child
flex 1
padding-left 16px
> header
> .username
margin-left 8px
opacity 0.7
</style> </style>

View File

@ -41,6 +41,7 @@
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev'; if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth'; if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin'; if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin';
if (`${url.pathname}/`.startsWith('/test/')) app = 'test';
//#endregion //#endregion
// Script version // Script version
@ -69,11 +70,14 @@
//#endregion //#endregion
let locale = localStorage.getItem('locale'); let locale = localStorage.getItem('locale');
if (locale == null) { const localeKey = localStorage.getItem('localeKey');
if (locale == null || localeKey != `${ver}.${lang}`) {
const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`) const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`)
.then(response => response.json()); .then(response => response.json());
localStorage.setItem('locale', JSON.stringify(locale)); localStorage.setItem('locale', JSON.stringify(locale));
localStorage.setItem('localeKey', `${ver}.${lang}`);
} }
// Detect the user agent // Detect the user agent

View File

@ -21,12 +21,12 @@ export default async function($root: any, force = false, silent = false) {
console.error(e); console.error(e);
} }
if (!silent) { /*if (!silent) {
$root.alert({ $root.dialog({
title: $root.$t('@.update-available-title'), title: $root.$t('@.update-available-title'),
text: $root.$t('@.update-available', { newer, current }) text: $root.$t('@.update-available', { newer, current })
}); });
} }*/
return newer; return newer;
} else { } else {

View File

@ -4,7 +4,7 @@ export default ($root: any) => {
require('fuckadblock'); require('fuckadblock');
function adBlockDetected() { function adBlockDetected() {
$root.alert({ $root.dialog({
title: $root.$t('@.adblock.detected'), title: $root.$t('@.adblock.detected'),
text: $root.$t('@.adblock.warning') text: $root.$t('@.adblock.warning')
}); });

View File

@ -2,7 +2,7 @@ const faces = [
'(=^・・^=)', '(=^・・^=)',
'v(\'ω\')v', 'v(\'ω\')v',
'🐡( \'-\' 🐡 )フグパンチ!!!!', '🐡( \'-\' 🐡 )フグパンチ!!!!',
'🖕(´・_・`)🖕', '✌️(´・_・`)✌️',
'(。><。)', '(。><。)',
'(Δ・x・Δ)' '(Δ・x・Δ)'
]; ];

View File

@ -1,5 +1,5 @@
import parse from '../../../../mfm/parse'; import parse from '../../../../mfm/parse';
import { sum } from '../../../../prelude/array'; import { sum, unique } from '../../../../prelude/array';
import shouldMuteNote from './should-mute-note'; import shouldMuteNote from './should-mute-note';
import MkNoteMenu from '../views/components/note-menu.vue'; import MkNoteMenu from '../views/components/note-menu.vue';
import MkReactionPicker from '../views/components/reaction-picker.vue'; import MkReactionPicker from '../views/components/reaction-picker.vue';
@ -78,9 +78,10 @@ export default (opts: Opts = {}) => ({
urls(): string[] { urls(): string[] {
if (this.appearNote.text) { if (this.appearNote.text) {
const ast = parse(this.appearNote.text); const ast = parse(this.appearNote.text);
return ast // TODO: 再帰的にURL要素がないか調べる
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent) return unique(ast
.map(t => t.url); .filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.props.silent))
.map(t => t.props.url));
} else { } else {
return null; return null;
} }
@ -141,7 +142,7 @@ export default (opts: Opts = {}) => ({
this.$root.api('notes/favorites/create', { this.$root.api('notes/favorites/create', {
noteId: this.appearNote.id noteId: this.appearNote.id
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
splash: true splash: true
}); });

View File

@ -20,7 +20,7 @@ export default function(me, settings, note) {
} }
} }
if (!isMyNote && note.text && settings.mutedWords.some(q => !q.some(word => !note.text.includes(word)))) { if (!isMyNote && note.text && settings.mutedWords.some(q => q.length > 0 && !q.some(word => !note.text.includes(word)))) {
return true; return true;
} }

View File

@ -187,7 +187,8 @@ export default Vue.extend({
} else { } else {
this.$root.api('users/search', { this.$root.api('users/search', {
query: this.q, query: this.q,
limit: 30 limit: 10,
detail: false
}).then(users => { }).then(users => {
this.users = users; this.users = users;
this.fetching = false; this.fetching = false;

View File

@ -2,10 +2,13 @@
<div class="felqjxyj" :class="{ splash }"> <div class="felqjxyj" :class="{ splash }">
<div class="bg" ref="bg" @click="onBgClick"></div> <div class="bg" ref="bg" @click="onBgClick"></div>
<div class="main" ref="main"> <div class="main" ref="main">
<div class="icon" :class="type"><fa :icon="icon"/></div> <div class="icon" v-if="type" :class="type"><fa :icon="icon"/></div>
<header v-if="title" v-html="title"></header> <header v-if="title" v-html="title"></header>
<div class="body" v-if="text" v-html="text"></div> <div class="body" v-if="text" v-html="text"></div>
<ui-horizon-group no-grow class="buttons" v-if="!splash"> <ui-select v-if="select" v-model="selectedValue">
<option v-for="item in select.items" :value="item.value">{{ item.text }}</option>
</ui-select>
<ui-horizon-group no-grow class="buttons fit-bottom" v-if="!splash">
<ui-button @click="ok" primary autofocus>OK</ui-button> <ui-button @click="ok" primary autofocus>OK</ui-button>
<ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button> <ui-button @click="cancel" v-if="showCancelButton">Cancel</ui-button>
</ui-horizon-group> </ui-horizon-group>
@ -33,6 +36,9 @@ export default Vue.extend({
type: String, type: String,
required: false required: false
}, },
select: {
required: false
},
showCancelButton: { showCancelButton: {
type: Boolean, type: Boolean,
default: false default: false
@ -43,6 +49,12 @@ export default Vue.extend({
} }
}, },
data() {
return {
selectedValue: null
};
},
computed: { computed: {
icon(): any { icon(): any {
switch (this.type) { switch (this.type) {
@ -83,7 +95,8 @@ export default Vue.extend({
methods: { methods: {
ok() { ok() {
this.$emit('ok'); const result = this.select ? this.selectedValue : true;
this.$emit('ok', result);
this.close(); this.close();
}, },
@ -180,8 +193,11 @@ export default Vue.extend({
display block display block
margin 0 auto margin 0 auto
& + header
margin-top 16px
> header > header
margin 16px 0 8px 0 margin 0 0 8px 0
font-weight bold font-weight bold
font-size 20px font-size 20px

View File

@ -0,0 +1,64 @@
<template>
<div class="mk-discord-setting">
<p>{{ $t('description') }}</p>
<p class="account" v-if="$store.state.i.discord" :title="`Discord ID: ${$store.state.i.discord.id}`">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
<p>
<a :href="`${apiUrl}/connect/discord`" target="_blank" @click.prevent="connect">{{ $store.state.i.discord ? this.$t('reconnect') : this.$t('connect') }}</a>
<span v-if="$store.state.i.discord"> or </span>
<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
</p>
<p class="id" v-if="$store.state.i.discord">Discord ID: {{ $store.state.i.discord.id }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { apiUrl } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/discord-setting.vue'),
data() {
return {
form: null,
apiUrl
};
},
mounted() {
this.$watch('$store.state.i', () => {
if (this.$store.state.i.discord && this.form)
this.form.close();
}, {
deep: true
});
},
methods: {
connect() {
this.form = window.open(apiUrl + '/connect/discord',
'discord_connect_window',
'height=570, width=520');
},
disconnect() {
window.open(apiUrl + '/disconnect/discord',
'discord_disconnect_window',
'height=570, width=520');
}
}
});
</script>
<style lang="stylus" scoped>
.mk-discord-setting
.account
border solid 1px #e1e8ed
border-radius 4px
padding 16px
a
font-weight bold
color inherit
.id
color #8899a6
</style>

View File

@ -0,0 +1,26 @@
<template>
<span v-html="compiledFormula"></span>
</template>
<script lang="ts">
import Vue from 'vue';
import * as katex from 'katex';
export default Vue.extend({
props: {
formula: {
type: String,
required: true
}
},
computed: {
compiledFormula(): any {
return katex.renderToString(this.formula);
}
}
});
</script>
<style>
@import "../../../../../../node_modules/katex/dist/katex.min.css";
</style>

View File

@ -0,0 +1,20 @@
<template>
<x-formula :formula="formula"/>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
components: {
XFormula: () => import('./formula-core.vue').then(m => m.default)
},
props: {
formula: {
type: String,
required: true
}
}
});
</script>

View File

@ -50,15 +50,13 @@
</div> </div>
<div class="player" v-if="game.isEnded"> <div class="player" v-if="game.isEnded">
<div>
<button @click="logPos = 0" :disabled="logPos == 0"><fa icon="angle-double-left"/></button>
<button @click="logPos--" :disabled="logPos == 0"><fa icon="angle-left"/></button>
</div>
<span>{{ logPos }} / {{ logs.length }}</span> <span>{{ logPos }} / {{ logs.length }}</span>
<div> <ui-horizon-group>
<button @click="logPos++" :disabled="logPos == logs.length"><fa icon="angle-right"/></button> <ui-button @click="logPos = 0" :disabled="logPos == 0"><fa :icon="faAngleDoubleLeft"/></ui-button>
<button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa icon="angle-double-right"/></button> <ui-button @click="logPos--" :disabled="logPos == 0"><fa :icon="faAngleLeft"/></ui-button>
</div> <ui-button @click="logPos++" :disabled="logPos == logs.length"><fa :icon="faAngleRight"/></ui-button>
<ui-button @click="logPos = logs.length" :disabled="logPos == logs.length"><fa :icon="faAngleDoubleRight"/></ui-button>
</ui-horizon-group>
</div> </div>
<div class="info"> <div class="info">
@ -75,6 +73,7 @@ import i18n from '../../../../../i18n';
import * as CRC32 from 'crc-32'; import * as CRC32 from 'crc-32';
import Reversi, { Color } from '../../../../../../../games/reversi/core'; import Reversi, { Color } from '../../../../../../../games/reversi/core';
import { url } from '../../../../../config'; import { url } from '../../../../../config';
import { faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/games/reversi/reversi.game.vue'), i18n: i18n('common/views/components/games/reversi/reversi.game.vue'),
@ -99,7 +98,8 @@ export default Vue.extend({
o: null as Reversi, o: null as Reversi,
logs: [], logs: [],
logPos: 0, logPos: 0,
pollingClock: null pollingClock: null,
faAngleDoubleLeft, faAngleLeft, faAngleRight, faAngleDoubleRight
}; };
}, },
@ -449,7 +449,9 @@ export default Vue.extend({
padding-bottom 16px padding-bottom 16px
> .player > .player
padding-bottom 32px padding 0 16px 32px 16px
margin 0 auto
max-width 500px
> span > span
display inline-block display inline-block

View File

@ -22,8 +22,8 @@
<div v-for="(x, i) in game.settings.map.join('')" <div v-for="(x, i) in game.settings.map.join('')"
:data-none="x == ' '" :data-none="x == ' '"
@click="onPixelClick(i, x)"> @click="onPixelClick(i, x)">
<template v-if="x == 'b'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template> <fa v-if="x == 'b'" :icon="fasCircle"/>
<template v-if="x == 'w'"><template v-if="$store.state.device.darkmode"><fa :icon="['far', 'circle']"/></template><template v-else><fa icon="circle"/></template></template> <fa v-if="x == 'w'" :icon="farCircle"/>
</div> </div>
</div> </div>
</div> </div>
@ -117,6 +117,8 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../../../i18n'; import i18n from '../../../../../i18n';
import * as maps from '../../../../../../../games/reversi/maps'; import * as maps from '../../../../../../../games/reversi/maps';
import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';
import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/games/reversi/reversi.room.vue'), i18n: i18n('common/views/components/games/reversi/reversi.room.vue'),
@ -129,7 +131,8 @@ export default Vue.extend({
mapName: maps.eighteight.name, mapName: maps.eighteight.name,
maps: maps, maps: maps,
form: null, form: null,
messages: [] messages: [],
fasCircle, farCircle
}; };
}, },

View File

@ -22,7 +22,10 @@ export default Vue.extend({
}, },
methods: { methods: {
search() { search() {
window.open(`https://www.google.com/?#q=${this.query}`, '_blank'); const engine = this.$store.state.settings.webSearchEngine ||
'https://www.google.com/?#q={{query}}';
const url = engine.replace('{{query}}', this.query)
window.open(url, '_blank');
} }
} }
}); });

View File

@ -65,5 +65,6 @@ export default Vue.extend({
max-height 100% max-height 100%
margin auto margin auto
cursor zoom-out cursor zoom-out
image-orientation from-image
</style> </style>

View File

@ -10,13 +10,14 @@ import trends from './trends.vue';
import analogClock from './analog-clock.vue'; import analogClock from './analog-clock.vue';
import menu from './menu.vue'; import menu from './menu.vue';
import noteHeader from './note-header.vue'; import noteHeader from './note-header.vue';
import renote from './renote.vue';
import signin from './signin.vue'; import signin from './signin.vue';
import signup from './signup.vue'; import signup from './signup.vue';
import forkit from './forkit.vue'; import forkit from './forkit.vue';
import acct from './acct.vue'; import acct from './acct.vue';
import avatar from './avatar.vue'; import avatar from './avatar.vue';
import nav from './nav.vue'; import nav from './nav.vue';
import misskeyFlavoredMarkdown from './misskey-flavored-markdown'; import misskeyFlavoredMarkdown from './misskey-flavored-markdown.vue';
import poll from './poll.vue'; import poll from './poll.vue';
import pollEditor from './poll-editor.vue'; import pollEditor from './poll-editor.vue';
import reactionIcon from './reaction-icon.vue'; import reactionIcon from './reaction-icon.vue';
@ -27,8 +28,6 @@ import uploader from './uploader.vue';
import streamIndicator from './stream-indicator.vue'; import streamIndicator from './stream-indicator.vue';
import ellipsis from './ellipsis.vue'; import ellipsis from './ellipsis.vue';
import urlPreview from './url-preview.vue'; import urlPreview from './url-preview.vue';
import twitterSetting from './twitter-setting.vue';
import githubSetting from './github-setting.vue';
import fileTypeIcon from './file-type-icon.vue'; import fileTypeIcon from './file-type-icon.vue';
import emoji from './emoji.vue'; import emoji from './emoji.vue';
import welcomeTimeline from './welcome-timeline.vue'; import welcomeTimeline from './welcome-timeline.vue';
@ -55,6 +54,7 @@ Vue.component('mk-trends', trends);
Vue.component('mk-analog-clock', analogClock); Vue.component('mk-analog-clock', analogClock);
Vue.component('mk-menu', menu); Vue.component('mk-menu', menu);
Vue.component('mk-note-header', noteHeader); Vue.component('mk-note-header', noteHeader);
Vue.component('mk-renote', renote);
Vue.component('mk-signin', signin); Vue.component('mk-signin', signin);
Vue.component('mk-signup', signup); Vue.component('mk-signup', signup);
Vue.component('mk-forkit', forkit); Vue.component('mk-forkit', forkit);
@ -72,8 +72,6 @@ Vue.component('mk-uploader', uploader);
Vue.component('mk-stream-indicator', streamIndicator); Vue.component('mk-stream-indicator', streamIndicator);
Vue.component('mk-ellipsis', ellipsis); Vue.component('mk-ellipsis', ellipsis);
Vue.component('mk-url-preview', urlPreview); Vue.component('mk-url-preview', urlPreview);
Vue.component('mk-twitter-setting', twitterSetting);
Vue.component('mk-github-setting', githubSetting);
Vue.component('mk-file-type-icon', fileTypeIcon); Vue.component('mk-file-type-icon', fileTypeIcon);
Vue.component('mk-emoji', emoji); Vue.component('mk-emoji', emoji);
Vue.component('mk-welcome-timeline', welcomeTimeline); Vue.component('mk-welcome-timeline', welcomeTimeline);

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="onchrpzrvnoruiaenfcqvccjfuupzzwv"> <div class="onchrpzrvnoruiaenfcqvccjfuupzzwv" :class="{ big: $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">
@ -125,6 +125,11 @@ export default Vue.extend({
position initial position initial
&.big
> .popover
> button
font-size 15px
> .backdrop > .backdrop
position fixed position fixed
top 0 top 0
@ -180,6 +185,7 @@ export default Vue.extend({
padding 8px 16px padding 8px 16px
width 100% width 100%
color var(--popupFg) color var(--popupFg)
white-space nowrap
&:hover &:hover
color var(--primaryForeground) color var(--primaryForeground)

View File

@ -34,6 +34,7 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../i18n'; import i18n from '../../../i18n';
import parse from '../../../../../mfm/parse'; import parse from '../../../../../mfm/parse';
import { unique } from '../../../../../prelude/array';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/messaging-room.message.vue'), i18n: i18n('common/views/components/messaging-room.message.vue'),
@ -49,9 +50,9 @@ export default Vue.extend({
urls(): string[] { urls(): string[] {
if (this.message.text) { if (this.message.text) {
const ast = parse(this.message.text); const ast = parse(this.message.text);
return ast return unique(ast
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent) .filter(t => ((t.name == 'url' || t.name == 'link') && t.props.url && !t.silent))
.map(t => t.url); .map(t => t.props.url));
} else { } else {
return null; return null;
} }

View File

@ -115,9 +115,11 @@ export default Vue.extend({
} }
this.$root.api('users/search', { this.$root.api('users/search', {
query: this.q, query: this.q,
max: 5 localOnly: true,
limit: 10,
detail: false
}).then(users => { }).then(users => {
this.result = users; this.result = users.filter(user => user.id != this.$store.state.i.id);
}); });
}, },
navigate(user) { navigate(user) {

View File

@ -1,10 +1,39 @@
import Vue, { VNode } from 'vue'; import Vue, { VNode } from 'vue';
import { length } from 'stringz'; import { length } from 'stringz';
import { Node } from '../../../../../mfm/parser';
import parse from '../../../../../mfm/parse'; import parse from '../../../../../mfm/parse';
import getAcct from '../../../../../misc/acct/render';
import MkUrl from './url.vue'; import MkUrl from './url.vue';
import MkGoogle from './google.vue';
import { concat } from '../../../../../prelude/array'; import { concat } from '../../../../../prelude/array';
import MkFormula from './formula.vue';
import MkGoogle from './google.vue';
import { toUnicode } from 'punycode';
import syntaxHighlight from '../../../../../mfm/syntax-highlight';
function getTextCount(tokens: Node[]): number {
let count = 0;
const extract = (tokens: Node[]) => {
tokens.filter(x => x.name === 'text').forEach(x => {
count += length(x.props.text);
});
tokens.filter(x => x.children).forEach(x => {
extract(x.children);
});
};
extract(tokens);
return count;
}
function getChildrenCount(tokens: Node[]): number {
let count = 0;
const extract = (tokens: Node[]) => {
tokens.filter(x => x.children).forEach(x => {
count++;
extract(x.children);
});
};
extract(tokens);
return count;
}
export default Vue.component('misskey-flavored-markdown', { export default Vue.component('misskey-flavored-markdown', {
props: { props: {
@ -20,6 +49,10 @@ export default Vue.component('misskey-flavored-markdown', {
type: Boolean, type: Boolean,
default: true default: true
}, },
author: {
type: Object,
default: null
},
i: { i: {
type: Object, type: Object,
default: null default: null
@ -30,23 +63,24 @@ export default Vue.component('misskey-flavored-markdown', {
}, },
render(createElement) { render(createElement) {
let ast: any[]; if (this.text == null || this.text == '') return;
let ast: Node[];
if (this.ast == null) { if (this.ast == null) {
// Parse text to ast // Parse text to ast
ast = parse(this.text); ast = parse(this.text);
} else { } else {
ast = this.ast as any[]; ast = this.ast as Node[];
} }
let bigCount = 0; let bigCount = 0;
let motionCount = 0; let motionCount = 0;
// Parse ast to DOM const genEl = (ast: Node[]) => concat(ast.map((token): VNode[] => {
const els = concat(ast.map((token): VNode[] => { switch (token.name) {
switch (token.type) {
case 'text': { case 'text': {
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n'); const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n');
if (this.shouldBreak) { if (this.shouldBreak) {
const x = text.split('\n') const x = text.split('\n')
@ -59,12 +93,12 @@ export default Vue.component('misskey-flavored-markdown', {
} }
case 'bold': { case 'bold': {
return [createElement('b', token.bold)]; return [createElement('b', genEl(token.children))];
} }
case 'big': { case 'big': {
bigCount++; bigCount++;
const isLong = length(token.big) > 10; const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
const isMany = bigCount > 3; const isMany = bigCount > 3;
return (createElement as any)('strong', { return (createElement as any)('strong', {
attrs: { attrs: {
@ -74,12 +108,20 @@ export default Vue.component('misskey-flavored-markdown', {
name: 'animate-css', name: 'animate-css',
value: { classes: 'tada', iteration: 'infinite' } value: { classes: 'tada', iteration: 'infinite' }
}] }]
}, token.big); }, genEl(token.children));
}
case 'center': {
return [createElement('div', {
attrs: {
style: 'text-align:center;'
}
}, genEl(token.children))];
} }
case 'motion': { case 'motion': {
motionCount++; motionCount++;
const isLong = length(token.motion) > 10; const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
const isMany = motionCount > 3; const isMany = motionCount > 3;
return (createElement as any)('span', { return (createElement as any)('span', {
attrs: { attrs: {
@ -89,13 +131,14 @@ export default Vue.component('misskey-flavored-markdown', {
name: 'animate-css', name: 'animate-css',
value: { classes: 'rubberBand', iteration: 'infinite' } value: { classes: 'rubberBand', iteration: 'infinite' }
}] }]
}, token.motion); }, genEl(token.children));
} }
case 'url': { case 'url': {
return [createElement(MkUrl, { return [createElement(MkUrl, {
key: Math.random(),
props: { props: {
url: token.content, url: token.props.url,
target: '_blank', target: '_blank',
style: 'color:var(--mfmLink);' style: 'color:var(--mfmLink);'
} }
@ -106,75 +149,75 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement('a', { return [createElement('a', {
attrs: { attrs: {
class: 'link', class: 'link',
href: token.url, href: token.props.url,
target: '_blank', target: '_blank',
title: token.url, title: token.props.url,
style: 'color:var(--mfmLink);' style: 'color:var(--mfmLink);'
} }
}, token.title)]; }, genEl(token.children))];
} }
case 'mention': { case 'mention': {
const host = token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host;
const canonical = host != null ? `@${token.props.username}@${toUnicode(host)}` : `@${token.props.username}`;
return (createElement as any)('router-link', { return (createElement as any)('router-link', {
key: Math.random(),
attrs: { attrs: {
to: `/${token.canonical}`, to: `/${canonical}`,
dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token), // TODO
//dataIsMe: (this as any).i && getAcct((this as any).i) == getAcct(token),
style: 'color:var(--mfmMention);' style: 'color:var(--mfmMention);'
}, },
directives: [{ directives: [{
name: 'user-preview', name: 'user-preview',
value: token.canonical value: canonical
}] }]
}, token.canonical); }, canonical);
} }
case 'hashtag': { case 'hashtag': {
return [createElement('router-link', { return [createElement('router-link', {
key: Math.random(),
attrs: { attrs: {
to: `/tags/${encodeURIComponent(token.hashtag)}`, to: `/tags/${encodeURIComponent(token.props.hashtag)}`,
style: 'color:var(--mfmHashtag);' style: 'color:var(--mfmHashtag);'
} }
}, token.content)]; }, `#${token.props.hashtag}`)];
} }
case 'code': { case 'blockCode': {
return [createElement('pre', { return [createElement('pre', {
class: 'code' class: 'code'
}, [ }, [
createElement('code', { createElement('code', {
domProps: { domProps: {
innerHTML: token.html innerHTML: syntaxHighlight(token.props.code)
} }
}) })
])]; ])];
} }
case 'inline-code': { case 'inlineCode': {
return [createElement('code', { return [createElement('code', {
domProps: { domProps: {
innerHTML: token.html innerHTML: syntaxHighlight(token.props.code)
} }
})]; })];
} }
case 'quote': { case 'quote': {
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
if (this.shouldBreak) { if (this.shouldBreak) {
const x = text2.split('\n')
.map(t => [createElement('span', t), createElement('br')]);
x[x.length - 1].pop();
return [createElement('div', { return [createElement('div', {
attrs: { attrs: {
class: 'quote' class: 'quote'
} }
}, x)]; }, genEl(token.children))];
} else { } else {
return [createElement('span', { return [createElement('span', {
attrs: { attrs: {
class: 'quote' class: 'quote'
} }
}, text2.replace(/\n/g, ' '))]; }, genEl(token.children))];
} }
} }
@ -183,15 +226,16 @@ export default Vue.component('misskey-flavored-markdown', {
attrs: { attrs: {
class: 'title' class: 'title'
} }
}, token.title)]; }, genEl(token.children))];
} }
case 'emoji': { case 'emoji': {
const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || []; const customEmojis = (this.$root.getMetaSync() || { emojis: [] }).emojis || [];
return [createElement('mk-emoji', { return [createElement('mk-emoji', {
key: Math.random(),
attrs: { attrs: {
emoji: token.emoji, emoji: token.props.emoji,
name: token.name name: token.props.name
}, },
props: { props: {
customEmojis: this.customEmojis || customEmojis customEmojis: this.customEmojis || customEmojis
@ -199,24 +243,35 @@ export default Vue.component('misskey-flavored-markdown', {
})]; })];
} }
case 'search': { case 'math': {
return [createElement(MkGoogle, { //const MkFormula = () => import('./formula.vue').then(m => m.default);
return [createElement(MkFormula, {
key: Math.random(),
props: { props: {
q: token.query formula: token.props.formula
}
})];
}
case 'search': {
//const MkGoogle = () => import('./google.vue').then(m => m.default);
return [createElement(MkGoogle, {
key: Math.random(),
props: {
q: token.props.query
} }
})]; })];
} }
default: { default: {
console.log('unknown ast type:', token.type); console.log('unknown ast type:', token.name);
return []; return [];
} }
} }
})); }));
// el.tag === 'br' のとき i !== 0 が保証されるため、短絡評価により els[i - 1] は配列外参照しない // Parse ast to DOM
const _els = els.filter((el, i) => !(el.tag === 'br' && ['div', 'pre'].includes(els[i - 1].tag))); return createElement('span', genEl(ast));
return createElement('span', _els);
} }
}); });

View File

@ -0,0 +1,57 @@
<template>
<mfm v-bind="$attrs" class="havbbuyv"/>
</template>
<script lang="ts">
import Vue from 'vue';
import Mfm from './mfm';
export default Vue.extend({
components: {
Mfm
}
});
</script>
<style lang="stylus" scoped>
.havbbuyv
>>> .title
display block
margin-bottom 4px
padding 4px
font-size 90%
text-align center
background var(--mfmTitleBg)
border-radius 4px
>>> .code
margin 8px 0
>>> .quote
margin 8px
padding 6px 0 6px 12px
color var(--mfmQuote)
border-left solid 3px var(--mfmQuoteLine)
>>> code
padding 4px 8px
margin 0 0.5em
font-size 80%
color #525252
background rgba(0, 0, 0, 0.05)
border-radius 2px
>>> pre > code
padding 16px
margin 0
>>> [data-is-me]:after
content "you"
padding 0 4px
margin-left 4px
font-size 80%
color var(--primaryForeground)
background var(--primary)
border-radius 4px
</style>

View File

@ -72,7 +72,7 @@ export default Vue.extend({
methods: { methods: {
save() { save() {
this._mutedWords = this.mutedWords.split('\n').map(line => line.split(' ')); this._mutedWords = this.mutedWords.split('\n').map(line => line.split(' ').filter(x => x != ''));
} }
} }
}); });

View File

@ -14,11 +14,12 @@
<mk-time :time="note.createdAt"/> <mk-time :time="note.createdAt"/>
</router-link> </router-link>
<span class="visibility" v-if="note.visibility != 'public'"> <span class="visibility" v-if="note.visibility != 'public'">
<template v-if="note.visibility == 'home'"><fa icon="home"/></template> <fa v-if="note.visibility == 'home'" icon="home"/>
<template v-if="note.visibility == 'followers'"><fa icon="unlock"/></template> <fa v-if="note.visibility == 'followers'" icon="unlock"/>
<template v-if="note.visibility == 'specified'"><fa icon="envelope"/></template> <fa v-if="note.visibility == 'specified'" icon="envelope"/>
<template v-if="note.visibility == 'private'"><fa icon="lock"/></template> <fa v-if="note.visibility == 'private'" icon="lock"/>
</span> </span>
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
</div> </div>
</header> </header>
</template> </template>
@ -115,4 +116,7 @@ export default Vue.extend({
> .visibility > .visibility
margin-left 8px margin-left 8px
> .localOnly
margin-left 4px
</style> </style>

View File

@ -78,7 +78,7 @@ export default Vue.extend({
this.$root.api('i/pin', { this.$root.api('i/pin', {
noteId: this.note.id noteId: this.note.id
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
splash: true splash: true
}); });
@ -95,7 +95,7 @@ export default Vue.extend({
}, },
del() { del() {
this.$root.alert({ this.$root.dialog({
type: 'warning', type: 'warning',
text: this.$t('delete-confirm'), text: this.$t('delete-confirm'),
showCancelButton: true showCancelButton: true
@ -114,7 +114,7 @@ export default Vue.extend({
this.$root.api('notes/favorites/create', { this.$root.api('notes/favorites/create', {
noteId: this.note.id noteId: this.note.id
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
splash: true splash: true
}); });
@ -126,7 +126,7 @@ export default Vue.extend({
this.$root.api('notes/favorites/delete', { this.$root.api('notes/favorites/delete', {
noteId: this.note.id noteId: this.note.id
}).then(() => { }).then(() => {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
splash: true splash: true
}); });

View File

@ -25,7 +25,7 @@ export default Vue.extend({
type: 'password' type: 'password'
}).then(newPassword2 => { }).then(newPassword2 => {
if (newPassword !== newPassword2) { if (newPassword !== newPassword2) {
this.$root.alert({ this.$root.dialog({
title: null, title: null,
text: this.$t('not-match') text: this.$t('not-match')
}); });

View File

@ -66,6 +66,19 @@
<ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch> <ui-switch v-model="carefulBot" @change="save(false)">{{ $t('careful-bot') }}</ui-switch>
</div> </div>
</section> </section>
<section v-if="enableEmail">
<header>{{ $t('email') }}</header>
<div>
<template v-if="$store.state.i.email != null">
<ui-info v-if="$store.state.i.emailVerified">{{ $t('email-verified') }}</ui-info>
<ui-info v-else warn>{{ $t('email-not-verified') }}</ui-info>
</template>
<ui-input v-model="email" type="email"><span>{{ $t('email-address') }}</span></ui-input>
<ui-button @click="updateEmail()">{{ $t('save') }}</ui-button>
</div>
</section>
</ui-card> </ui-card>
</template> </template>
@ -77,9 +90,12 @@ import { toUnicode } from 'punycode';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/profile-editor.vue'), i18n: i18n('common/views/components/profile-editor.vue'),
data() { data() {
return { return {
host: toUnicode(host), host: toUnicode(host),
enableEmail: false,
email: null,
name: null, name: null,
username: null, username: null,
location: null, location: null,
@ -113,7 +129,11 @@ export default Vue.extend({
}, },
created() { created() {
this.name = this.$store.state.i.name || ''; this.$root.getMeta().then(meta => {
this.enableEmail = meta.enableEmail;
});
this.email = this.$store.state.i.email;
this.name = this.$store.state.i.name;
this.username = this.$store.state.i.username; this.username = this.$store.state.i.username;
this.location = this.$store.state.i.profile.location; this.location = this.$store.state.i.profile.location;
this.description = this.$store.state.i.description; this.description = this.$store.state.i.description;
@ -179,8 +199,8 @@ export default Vue.extend({
location: this.location || null, location: this.location || null,
description: this.description || null, description: this.description || null,
birthday: this.birthday || null, birthday: this.birthday || null,
avatarId: this.avatarId, avatarId: this.avatarId || undefined,
bannerId: this.bannerId, bannerId: this.bannerId || undefined,
isCat: !!this.isCat, isCat: !!this.isCat,
isBot: !!this.isBot, isBot: !!this.isBot,
isLocked: !!this.isLocked, isLocked: !!this.isLocked,
@ -193,12 +213,24 @@ export default Vue.extend({
this.$store.state.i.bannerUrl = i.bannerUrl; this.$store.state.i.bannerUrl = i.bannerUrl;
if (notify) { if (notify) {
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('saved') text: this.$t('saved')
}); });
} }
}); });
},
updateEmail() {
this.$input({
title: this.$t('@.enter-password'),
type: 'password'
}).then(password => {
this.$root.api('i/update_email', {
password: password,
email: this.email == '' ? null : this.email
});
});
} }
} }
}); });

View File

@ -0,0 +1,108 @@
<template>
<div class="puqkfets" :class="{ mini }">
<mk-avatar class="avatar" :user="note.user"/>
<fa icon="retweet"/>
<i18n path="@.renoted-by" tag="span">
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId" place="user">{{ note.user | userName }}</router-link>
</i18n>
<div class="info">
<span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span>
<mk-time :time="note.createdAt"/>
<span class="visibility" v-if="note.visibility != 'public'">
<fa v-if="note.visibility == 'home'" icon="home"/>
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
<fa v-if="note.visibility == 'specified'" icon="envelope"/>
<fa v-if="note.visibility == 'private'" icon="lock"/>
</span>
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
export default Vue.extend({
i18n: i18n(),
props: {
note: {
type: Object,
required: true
},
mini: {
type: Boolean,
required: false,
default: false
}
}
});
</script>
<style lang="stylus" scoped>
.puqkfets
display flex
align-items center
padding 16px 32px 8px 32px
line-height 28px
white-space pre
color var(--renoteText)
background linear-gradient(to bottom, var(--renoteGradient) 0%, var(--face) 100%)
&.mini
padding 8px 16px
@media (min-width 500px)
padding 16px
@media (min-width 600px)
padding 16px 32px
> .avatar
@media (min-width 500px)
width 28px
height 28px
> .avatar
flex-shrink 0
display inline-block
width 28px
height 28px
margin 0 8px 0 0
border-radius 6px
> [data-icon]
margin-right 4px
> span
overflow hidden
flex-shrink 1
text-overflow ellipsis
white-space nowrap
> .name
font-weight bold
> .info
margin-left auto
font-size 0.9em
> .mobile
margin-right 8px
> .mk-time
flex-shrink 0
> .visibility
margin-left 8px
[data-icon]
margin-right 0
> .localOnly
margin-left 4px
[data-icon]
margin-right 0
</style>

View File

@ -12,8 +12,9 @@
</ui-input> </ui-input>
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/> <ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/>
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button> <ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button>
<p style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p> <p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
<p style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p> <p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
<p v-if="meta && meta.enableDiscordIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/discord`">{{ $t('signin-with-discord') /* TODO: Make these layouts better */ }}</a></p>
</form> </form>
</template> </template>
@ -40,9 +41,15 @@ export default Vue.extend({
password: '', password: '',
token: '', token: '',
apiUrl, apiUrl,
host: toUnicode(host) host: toUnicode(host),
meta: null
}; };
}, },
created() {
this.$root.getMeta().then(meta => {
this.meta = meta;
});
},
methods: { methods: {
onUsernameChange() { onUsernameChange() {
this.$root.api('users/show', { this.$root.api('users/show', {
@ -60,7 +67,8 @@ export default Vue.extend({
username: this.username, username: this.username,
password: this.password, password: this.password,
token: this.user && this.user.twoFactorEnabled ? this.token : undefined token: this.user && this.user.twoFactorEnabled ? this.token : undefined
}, true).then(() => { }, true).then(res => {
localStorage.setItem('i', res.i);
location.reload(); location.reload();
}).catch(() => { }).catch(() => {
alert(this.$t('login-failed')); alert(this.$t('login-failed'));

View File

@ -223,7 +223,7 @@ export default Vue.extend({
try { try {
theme = JSON5.parse(code); theme = JSON5.parse(code);
} catch (e) { } catch (e) {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: this.$t('invalid-theme') text: this.$t('invalid-theme')
}); });
@ -236,7 +236,7 @@ export default Vue.extend({
} }
if (theme.id == null) { if (theme.id == null) {
this.$root.alert({ this.$root.dialog({
type: 'error', type: 'error',
text: this.$t('invalid-theme') text: this.$t('invalid-theme')
}); });
@ -244,7 +244,7 @@ export default Vue.extend({
} }
if (this.$store.state.device.themes.some(t => t.id == theme.id)) { if (this.$store.state.device.themes.some(t => t.id == theme.id)) {
this.$root.alert({ this.$root.dialog({
type: 'info', type: 'info',
text: this.$t('already-installed') text: this.$t('already-installed')
}); });
@ -256,7 +256,7 @@ export default Vue.extend({
key: 'themes', value: themes key: 'themes', value: themes
}); });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('installed').replace('{}', theme.name) text: this.$t('installed').replace('{}', theme.name)
}); });
@ -269,7 +269,7 @@ export default Vue.extend({
key: 'themes', value: themes key: 'themes', value: themes
}); });
this.$root.alert({ this.$root.dialog({
type: 'info', type: 'info',
text: this.$t('uninstalled').replace('{}', theme.name) text: this.$t('uninstalled').replace('{}', theme.name)
}); });
@ -306,7 +306,7 @@ export default Vue.extend({
const theme = this.myTheme; const theme = this.myTheme;
if (theme.name == null || theme.name.trim() == '') { if (theme.name == null || theme.name.trim() == '') {
this.$root.alert({ this.$root.dialog({
type: 'warning', type: 'warning',
text: this.$t('theme-name-required') text: this.$t('theme-name-required')
}); });
@ -320,7 +320,7 @@ export default Vue.extend({
key: 'themes', value: themes key: 'themes', value: themes
}); });
this.$root.alert({ this.$root.dialog({
type: 'success', type: 'success',
text: this.$t('saved') text: this.$t('saved')
}); });

View File

@ -53,8 +53,8 @@ export default Vue.extend({
ago >= 3600 ? this.$t('@.time.hours_ago') .replace('{}', (~~(ago / 3600)).toString()) : ago >= 3600 ? this.$t('@.time.hours_ago') .replace('{}', (~~(ago / 3600)).toString()) :
ago >= 60 ? this.$t('@.time.minutes_ago').replace('{}', (~~(ago / 60)).toString()) : ago >= 60 ? this.$t('@.time.minutes_ago').replace('{}', (~~(ago / 60)).toString()) :
ago >= 10 ? this.$t('@.time.seconds_ago').replace('{}', (~~(ago % 60)).toString()) : ago >= 10 ? this.$t('@.time.seconds_ago').replace('{}', (~~(ago % 60)).toString()) :
ago >= 0 ? this.$t('@.time.just_now') : ago >= -1 ? this.$t('@.time.just_now') :
ago < 0 ? this.$t('@.time.future') : ago < -1 ? this.$t('@.time.future') :
this.$t('@.time.unknown')); this.$t('@.time.unknown'));
} }
}, },

View File

@ -79,6 +79,10 @@ export default Vue.extend({
* *
pointer-events none pointer-events none
user-select none
&:disabled
opacity 0.7
&:focus &:focus
&:after &:after
@ -107,30 +111,30 @@ export default Vue.extend({
color var(--text) color var(--text)
background var(--buttonBg) background var(--buttonBg)
&:hover &:not(:disabled):hover
background var(--buttonHoverBg) background var(--buttonHoverBg)
&:active &:not(:disabled):active
background var(--buttonActiveBg) background var(--buttonActiveBg)
&.primary &.primary
color var(--primaryForeground) color var(--primaryForeground)
background var(--primary) background var(--primary)
&:hover &:not(:disabled):hover
background var(--primaryLighten5) background var(--primaryLighten5)
&:active &:not(:disabled):active
background var(--primaryDarken5) background var(--primaryDarken5)
&:not(.fill) &:not(.fill)
color var(--primary) color var(--primary)
background none background none
&:hover &:not(:disabled):hover
color var(--primaryDarken5) color var(--primaryDarken5)
&:active &:not(:disabled):active
background var(--primaryAlpha03) background var(--primaryAlpha03)
</style> </style>

View File

@ -22,6 +22,7 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.ui-card .ui-card
margin 16px margin 16px
max-width 850px
color var(--faceText) color var(--faceText)
background var(--face) background var(--face)
border-radius var(--round) border-radius var(--round)

View File

@ -27,9 +27,17 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.vnxwkwuf .vnxwkwuf
margin 16px 0
&.inputs &.inputs
margin 32px 0 margin 32px 0
&.fit-top
margin-top 0
&.fit-bottom
margin-bottom 0
&:not(.noGrow) &:not(.noGrow)
display flex display flex
@ -37,5 +45,6 @@ export default Vue.extend({
flex 1 flex 1
> *:not(:last-child) > *:not(:last-child)
margin-right 16px margin-right 16px !important
</style> </style>

View File

@ -9,27 +9,30 @@
<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"
:type="type" :type="type"
v-model="v" v-model="v"
:disabled="disabled" :disabled="disabled"
:required="required" :required="required"
:readonly="readonly" :readonly="readonly"
:pattern="pattern" :pattern="pattern"
:autocomplete="autocomplete" :autocomplete="autocomplete"
:spellcheck="spellcheck" :spellcheck="spellcheck"
@focus="focused = true" @focus="focused = true"
@blur="focused = false"> @blur="focused = false"
>
</template> </template>
<template v-else> <template v-else>
<input ref="input" <input ref="input"
type="text" type="text"
:value="placeholder" :value="placeholder"
readonly readonly
@click="chooseFile"> @click="chooseFile"
>
<input ref="file" <input ref="file"
type="file" type="file"
:value="value" :value="value"
@change="onChangeFile"> @change="onChangeFile"
>
</template> </template>
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div> <div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
</div> </div>
@ -325,6 +328,9 @@ root(fill)
margin 6px 0 margin 6px 0
font-size 13px font-size 13px
&:empty
display none
* *
margin 0 margin 0

View File

@ -1,15 +1,17 @@
<template> <template>
<div class="ui-select" :class="[{ focused, filled }, styl]"> <div class="ui-select" :class="[{ focused, disabled, filled, inline }, styl]">
<div class="icon" ref="icon"><slot name="icon"></slot></div> <div class="icon" ref="icon"><slot name="icon"></slot></div>
<div class="input" @click="focus"> <div class="input" @click="focus">
<span class="label" ref="label"><slot name="label"></slot></span> <span class="label" ref="label"><slot name="label"></slot></span>
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div> <div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
<select ref="input" <select ref="input"
:value="v" :value="v"
:required="required" :required="required"
@input="$emit('input', $event.target.value)" :disabled="disabled"
@focus="focused = true" @input="$emit('input', $event.target.value)"
@blur="focused = false"> @focus="focused = true"
@blur="focused = false"
>
<slot></slot> <slot></slot>
</select> </select>
<div class="suffix"><slot name="suffix"></slot></div> <div class="suffix"><slot name="suffix"></slot></div>
@ -22,6 +24,11 @@
import Vue from 'vue'; import Vue from 'vue';
export default Vue.extend({ export default Vue.extend({
inject: {
horizonGrouped: {
default: false
}
},
props: { props: {
value: { value: {
required: false required: false
@ -30,11 +37,22 @@ export default Vue.extend({
type: Boolean, type: Boolean,
required: false required: false
}, },
disabled: {
type: Boolean,
required: false
},
styl: { styl: {
type: String, type: String,
required: false, required: false,
default: 'line' default: 'line'
} },
inline: {
type: Boolean,
required: false,
default(): boolean {
return this.horizonGrouped;
}
},
}, },
data() { data() {
return { return {
@ -122,7 +140,7 @@ root(fill)
transition-duration 0.3s transition-duration 0.3s
font-size 16px font-size 16px
line-height 32px line-height 32px
color rgba(#000, 0.54) color var(--inputLabel)
pointer-events none pointer-events none
//will-change transform //will-change transform
transform-origin top left transform-origin top left
@ -171,6 +189,9 @@ root(fill)
margin 6px 0 margin 6px 0
font-size 13px font-size 13px
&:empty
display none
* *
margin 0 margin 0
@ -200,4 +221,14 @@ root(fill)
&:not(.fill) &:not(.fill)
root(false) root(false)
&.inline
display inline-block
margin 0
&.disabled
opacity 0.7
&, *
cursor not-allowed !important
</style> </style>

View File

@ -123,7 +123,7 @@ export default Vue.extend({
> span > span
display block display block
line-height 20px line-height 20px
color currentColor color var(--text)
transition inherit transition inherit
> p > p

View File

@ -126,6 +126,8 @@ root(fill)
> textarea > textarea
display block display block
width 100% width 100%
min-width 100%
max-width 100%
min-height 100px min-height 100px
padding 0 padding 0
font inherit font inherit
@ -143,6 +145,9 @@ root(fill)
font-size 13px font-size 13px
opacity 0.7 opacity 0.7
&:empty
display none
* *
margin 0 margin 0

View File

@ -35,6 +35,25 @@
<span>{{ $t('private') }}</span> <span>{{ $t('private') }}</span>
</div> </div>
</div> </div>
<div @click="choose('local-public')" :class="{ active: v == 'local-public' }">
<div><fa icon="globe"/></div>
<div>
<span>{{ $t('local-public') }}</span>
<span>{{ $t('local-public-desc') }}</span>
</div>
</div>
<div @click="choose('local-home')" :class="{ active: v == 'local-home' }">
<div><fa icon="home"/></div>
<div>
<span>{{ $t('local-home') }}</span>
</div>
</div>
<div @click="choose('local-followers')" :class="{ active: v == 'local-followers' }">
<div><fa icon="unlock"/></div>
<div>
<span>{{ $t('local-followers') }}</span>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>

View File

@ -14,7 +14,7 @@
</div> </div>
</header> </header>
<div class="text"> <div class="text">
<misskey-flavored-markdown v-if="note.text" :text="note.text" :customEmojis="note.emojis"/> <misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :custom-emojis="note.emojis"/>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,3 +1,10 @@
import Vue from 'vue';
import * as JSON5 from 'json5';
Vue.filter('json5', x => {
return JSON5.stringify(x, null, 2);
});
require('./bytes'); require('./bytes');
require('./number'); require('./number');
require('./user'); require('./user');

View File

@ -1,6 +1,7 @@
import Vue from 'vue'; import Vue from 'vue';
import getAcct from '../../../../../misc/acct/render'; import getAcct from '../../../../../misc/acct/render';
import getUserName from '../../../../../misc/get-user-name'; import getUserName from '../../../../../misc/get-user-name';
import { url } from '../../../config';
Vue.filter('acct', user => { Vue.filter('acct', user => {
return getAcct(user); return getAcct(user);
@ -10,6 +11,6 @@ Vue.filter('userName', user => {
return getUserName(user); return getUserName(user);
}); });
Vue.filter('userPage', (user, path?) => { Vue.filter('userPage', (user, path?, absolute = false) => {
return `/@${Vue.filter('acct')(user)}${(path ? `/${path}` : '')}`; return `${absolute ? url : ''}/@${Vue.filter('acct')(user)}${(path ? `/${path}` : '')}`;
}); });

View File

@ -9,7 +9,7 @@
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link> <router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
<span class="username">@{{ user | acct }}</span> <span class="username">@{{ user | acct }}</span>
<div class="description"> <div class="description">
<misskey-flavored-markdown v-if="user.description" :text="user.description" :i="$store.state.i"/> <misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i"/>
</div> </div>
</div> </div>
</main> </main>

View File

@ -3,7 +3,7 @@
<x-pie class="pie" :value="usage"/> <x-pie class="pie" :value="usage"/>
<div> <div>
<p><fa icon="microchip"/>CPU</p> <p><fa icon="microchip"/>CPU</p>
<p>{{ meta.cpu.cores }} Cores</p> <p>{{ meta.cpu.cores }} Logical cores</p>
<p>{{ meta.cpu.model }}</p> <p>{{ meta.cpu.model }}</p>
</div> </div>
</div> </div>

View File

@ -3,6 +3,7 @@
<p>Maintainer: <b><a :href="'mailto:' + meta.maintainer.email" target="_blank">{{ meta.maintainer.name }}</a></b></p> <p>Maintainer: <b><a :href="'mailto:' + meta.maintainer.email" target="_blank">{{ meta.maintainer.name }}</a></b></p>
<p>Machine: {{ meta.machine }}</p> <p>Machine: {{ meta.machine }}</p>
<p>Node: {{ meta.node }}</p> <p>Node: {{ meta.node }}</p>
<p>Version: {{ meta.version }} </p>
</div> </div>
</template> </template>

View File

@ -8,7 +8,7 @@ export default ($root: any) => {
const regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$'); const regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$');
if (!regex.test(file.name) ) { if (!regex.test(file.name) ) {
$root.alert({ $root.dialog({
title: '%fa:info-circle% %i18n:desktop.invalid-filetype%', title: '%fa:info-circle% %i18n:desktop.invalid-filetype%',
text: null text: null
}); });
@ -87,7 +87,7 @@ export default ($root: any) => {
value: i.avatarUrl value: i.avatarUrl
}); });
$root.alert({ $root.dialog({
title: '%fa:info-circle% %i18n:desktop.avatar-updated%', title: '%fa:info-circle% %i18n:desktop.avatar-updated%',
text: null text: null
}); });

View File

@ -87,7 +87,7 @@ export default ($root: any) => {
value: i.bannerUrl value: i.bannerUrl
}); });
$root.alert({ $root.dialog({
title: '%fa:info-circle% %i18n:desktop.banner-updated%', title: '%fa:info-circle% %i18n:desktop.banner-updated%',
text: null text: null
}); });

View File

@ -170,7 +170,7 @@ export default Vue.extend({
copyUrl() { copyUrl() {
copyToClipboard(this.file.url); copyToClipboard(this.file.url);
this.$root.alert({ this.$root.dialog({
title: this.$t('contextmenu.copied'), title: this.$t('contextmenu.copied'),
text: this.$t('contextmenu.copied-url-to-clipboard') text: this.$t('contextmenu.copied-url-to-clipboard')
}); });

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