Compare commits

...

1751 Commits

Author SHA1 Message Date
cb0673b1ec 10.51.0 2018-11-15 06:26:15 +09:00
cd018db945 Update src/client/app/admin/views/index.vue 2018-11-15 06:23:40 +09:00
50fe67b99b [Client] Improve admin panel 2018-11-15 06:21:31 +09:00
1dba82aae5 [API] Add /instances 2018-11-15 06:21:13 +09:00
17c6d64750 [Client] Prevent cache locale file 2018-11-15 05:20:25 +09:00
b4c04efa23 Improve usability 2018-11-15 05:00:30 +09:00
152dd74abf 10.50.0 2018-11-15 04:26:33 +09:00
0985f7f609 [Client] Fix bugs 2018-11-15 04:24:40 +09:00
56d571c0f0 Moderator system
Closes #2357
2018-11-15 04:15:42 +09:00
dc9a19b9c7 [Client] Add missing icon 2018-11-15 03:17:48 +09:00
88a2c7715a [Client] Add missing icon 2018-11-15 03:14:52 +09:00
2fa8cb1b73 10.49.7 2018-11-15 01:46:01 +09:00
5f8a66fdb9 🎨 2018-11-15 01:45:13 +09:00
57320a94f9 [Client] Add missing icon 2018-11-15 01:43:26 +09:00
89f045d624 🎨 2018-11-15 01:43:06 +09:00
1a77dea7ed [Client] Fix icon 2018-11-15 01:09:50 +09:00
d063d59a91 [Client] Improve UI 2018-11-15 00:01:49 +09:00
90429b787c 10.49.6 2018-11-14 20:40:21 +09:00
7a2ef04ec3 [Client] Improve UI 2018-11-14 20:36:15 +09:00
76a9ea8d3d 10.49.5 2018-11-14 20:27:12 +09:00
0a05a2d060 🎨 2018-11-14 20:23:51 +09:00
a7e2ee3b0c Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-14 20:21:45 +09:00
40efa90dd5 🎨 2018-11-14 20:21:35 +09:00
4ca0a22bfc Fix: default order of users/notes (#3234) 2018-11-14 20:18:47 +09:00
20a943b193 🎨 2018-11-14 20:17:12 +09:00
552df8737d [Client] Add missing icon 2018-11-14 18:07:38 +09:00
860f622d79 10.49.4 2018-11-14 18:04:30 +09:00
e76bf5707a [Client] Fix icons 2018-11-14 18:03:38 +09:00
bf37a72f59 🎨 2018-11-14 18:00:23 +09:00
840ad75830 [Client] Better thumbnail generation 2018-11-14 18:00:15 +09:00
4c7dd7228f 10.49.3 2018-11-14 16:39:27 +09:00
46a51addad ServiceWorkerはメンテナンスされていないのでとりあえず無効化 2018-11-14 16:39:04 +09:00
0a5fe37025 New Crowdin translations (#3205)
* 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 (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 (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* 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 (English)

* 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 (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 (English)

* 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 (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 (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 (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 (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 (English)

* 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 (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 (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 (French)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)
2018-11-14 16:35:55 +09:00
00bb403497 Fix #3228 (#3230)
* Update index.ts

* fix sw.js path

* Revert "Update index.ts"

This reverts commit e0b1d4239f16b65512f5dbdd93c8765f708b5282.
2018-11-14 16:35:00 +09:00
11afa8140c [Client] Improve alert component 2018-11-14 16:30:58 +09:00
850396e9da [Client] Add missing icons 2018-11-14 14:57:59 +09:00
5ee75be49e 🎨 2018-11-14 14:47:18 +09:00
879116a20c Update vue-sweetalert2 requirement from 1.5.7 to 1.5.9 (#3229)
Updates the requirements on [vue-sweetalert2](https://github.com/avil13/vue-sweetalert2) to permit the latest version.
- [Release notes](https://github.com/avil13/vue-sweetalert2/releases)
- [Commits](https://github.com/avil13/vue-sweetalert2/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-14 13:27:37 +09:00
e509b1f488 Update github-bot.ts 2018-11-14 05:33:48 +09:00
468ff7037f 10.49.2 2018-11-14 03:07:55 +09:00
df23504ccf [Client] Fix #3227 2018-11-14 03:05:13 +09:00
66e3cb8eda Update src/client/app/init.ts 2018-11-14 02:04:24 +09:00
6ddd2389dc [Client] Add missing icons 2018-11-14 01:45:15 +09:00
402efb8c50 [Client] Fix imports 2018-11-14 01:40:29 +09:00
7b6eae0ce4 Fix error 2018-11-14 01:32:38 +09:00
26ce9725ce [Client] Fix #3009 2018-11-14 01:31:36 +09:00
ebfaa18f12 Create setup.fr.md (#3225) 2018-11-14 00:15:33 +09:00
cc81d41a05 [Client] Some optimizations 2018-11-13 23:33:30 +09:00
212176ee5c Use terser instead of uglifyjs 2018-11-13 23:10:51 +09:00
a63ec05e41 [Client] Some optimizations 2018-11-13 23:06:31 +09:00
0dcb527bf3 [Client] Fix bug 2018-11-13 22:45:28 +09:00
54710f17fc [Client] Some performance optimizations 2018-11-13 22:43:09 +09:00
e58a6593c0 [Client] Fix bug 2018-11-13 22:42:31 +09:00
62132570e1 [Client] Split components to reduce bundle size 2018-11-13 20:21:52 +09:00
9f0b8ba2f8 Fix: notes/create hangs when rejected (#3221) 2018-11-13 19:34:09 +09:00
adbe0fbcd1 10.49.1 2018-11-13 16:33:21 +09:00
7896242f57 [Client] Fix #3213 2018-11-13 16:19:46 +09:00
4a6722b9e9 Merge branch 'master' into develop 2018-11-13 15:01:52 +09:00
7c9fb5228b Improve usability 2018-11-13 15:01:05 +09:00
81805b01cc sort user timeline by date (#3210) 2018-11-13 01:17:59 +09:00
50824a7245 10.49.0 2018-11-13 01:12:27 +09:00
6f2953f3a7 [Client] Clear cached locale data when shouldFlush is true 2018-11-13 01:11:36 +09:00
dd3f007582 [Client] Improve post-form widget 2018-11-13 01:04:15 +09:00
a4b2b093fc 🎨 2018-11-13 00:21:49 +09:00
0fbf56219f [Client] Emoji picker
Closes #3130
2018-11-13 00:12:55 +09:00
0acacf7a8e 10.48.1 2018-11-12 06:12:45 +09:00
c84500d914 Clean up 2018-11-12 06:12:22 +09:00
a9cfbda858 10.48.0 2018-11-12 05:48:09 +09:00
33e79e4bb8 [Client] Split some components to reduce bundle size 2018-11-12 05:35:09 +09:00
fab389e624 [Client] Stop generate scripts for each languages
Resolve #3172
2018-11-12 05:03:12 +09:00
b1b02d0e32 [Client] Enable code splitting
And some optimizations
2018-11-12 04:09:02 +09:00
0b40194d31 🎨 2018-11-12 01:20:26 +09:00
c2038bec73 Improve streaming 2018-11-12 00:31:09 +09:00
8674d55c8e Hotfix typo 2018-11-11 21:34:50 +09:00
c7c0c9e79d 10.47.0 2018-11-11 21:24:10 +09:00
2dff48167c 🎨 2018-11-11 21:18:24 +09:00
71d42f64dc [Client] Implement word mute
Closes #1739
2018-11-11 21:17:51 +09:00
1b4072610a [Client] Fix i18n 2018-11-11 19:15:08 +09:00
3826a820bb [Client] Fix i18n
Closes #3192
2018-11-11 19:13:10 +09:00
625eb376ae Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-11 19:10:24 +09:00
72cbab6514 [Clinet] Fix i18n 2018-11-11 19:10:15 +09:00
c7a7059e26 New Crowdin translations (#3186)
* 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 (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 (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 (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 (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* 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 (English)

* 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 (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 (English)

* 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 (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 (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 (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 (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 (English)
2018-11-11 18:52:23 +09:00
550593b208 Update @types/mongodb requirement from 3.1.12 to 3.1.14 (#3193)
Updates the requirements on [@types/mongodb](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-11 18:30:38 +09:00
f76255fa63 Update @types/webpack requirement from 4.4.17 to 4.4.18 (#3194)
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-11 18:30:27 +09:00
15a2881083 [API] Fix #3203 2018-11-11 18:26:09 +09:00
37bfb79123 Update setup.en.md (#3202)
初期状態のDebianやUbuntuだとpythonがないとインストールできなかったため(ConoHa, Vultr, DigitalOceanで検証済み)
2018-11-11 14:47:53 +09:00
b62203b1f1 Check MongoDB version (#3185)
* Check MongoDB version

* Fix bug
2018-11-11 14:27:00 +09:00
16136c252a fix self host detection (#3201) 2018-11-11 13:11:16 +09:00
75864a5125 Fix #3190 2018-11-11 13:08:48 +09:00
a59f53e6da Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-11 12:43:52 +09:00
2ceaccf9ab Fix chart engine 2018-11-11 12:43:35 +09:00
036d46c459 show self host in unicode (#3200) 2018-11-11 12:35:30 +09:00
5d3d78a73e Better text 2018-11-11 02:44:54 +09:00
6012e98ae6 Improve streaming API 2018-11-11 02:22:34 +09:00
9c0e990568 Better chart generation 2018-11-10 23:25:09 +09:00
6167ed4c9f Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-10 17:10:29 +09:00
988d5405c3 Clean up: Remove unused dependencies 2018-11-10 17:10:22 +09:00
ad0ea2fab2 Update config.yml (#3195) 2018-11-10 10:42:12 +09:00
d62c67208f [Client] Show domain in admin page 2018-11-10 04:28:56 +09:00
2da1432e52 Update CONTRIBUTING.md 2018-11-10 00:47:36 +09:00
69eefc1425 [Client] Fix bug 2018-11-10 00:30:58 +09:00
27bdb26202 Fix #3187 2018-11-10 00:28:50 +09:00
8b9454eaee 10.46.2 2018-11-09 23:31:00 +09:00
6827bc0624 New Crowdin translations (#3094)
* 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 (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 (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 (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 (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 (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 (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 (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* 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 (English)

* 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 (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 (English)

* 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 (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)
2018-11-09 23:29:12 +09:00
1fa24d709d Fix i18n text 2018-11-09 23:11:55 +09:00
fa4ea494bf Fix note menu (#3184) 2018-11-09 22:40:17 +09:00
9f32713093 Eliminate mutable variable to construct menu items (#3183) 2018-11-09 22:35:33 +09:00
380f9bb975 10.46.1 2018-11-09 22:20:30 +09:00
5bcce97ff0 Fix bug 2018-11-09 22:19:43 +09:00
825fdb2475 [Client] Fix bug 2018-11-09 22:11:11 +09:00
460bb21c1e Fix bug 2018-11-09 22:02:48 +09:00
251cef3129 🎨 2018-11-09 21:46:35 +09:00
d81c87af22 [Client] Fix bug 2018-11-09 21:42:36 +09:00
8f58e7208d 10.46.0 2018-11-09 21:35:11 +09:00
cf0b7e26b5 Remove duplicated option 2018-11-09 21:30:12 +09:00
3a1c3f9656 [Client] Fix bug 2018-11-09 21:27:27 +09:00
035bdd0279 Add showVia option (#3182)
* Resolve #3160

* Fix bug

* Fix bug
2018-11-09 21:10:21 +09:00
f7c596beac Delete update-remote-user.js 2018-11-09 19:05:16 +09:00
ac8817ef34 [Client] Fix bug 2018-11-09 18:38:10 +09:00
372db65604 [Client] Fix i18n 2018-11-09 18:34:32 +09:00
4a92635eae 🎨 2018-11-09 18:32:09 +09:00
5e140d9a11 🎨 2018-11-09 18:25:30 +09:00
0b53ef9bae [Client] Fix bug 2018-11-09 18:25:21 +09:00
3f79c9ae49 Refactor client (#3178)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip
2018-11-09 16:00:29 +09:00
5d882dc3df [Client] Fix bug 2018-11-09 14:19:30 +09:00
5b4205bdbc Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-09 14:15:52 +09:00
20cf2b3f77 [Client] Fix i18n 2018-11-09 14:15:29 +09:00
3c0d2db3bc Rename: setDifference -> difference (#3177)
* Improve setDifference

* Rename: setDifference -> difference
2018-11-09 14:14:53 +09:00
9aa65fb600 [Client] Fix bug 2018-11-09 14:13:40 +09:00
4dcb15ef0d [Client] Fix bug 2018-11-09 14:10:50 +09:00
ae6293cb6b [Client] Improve usability 2018-11-09 14:10:23 +09:00
2614771a7c 🎨 2018-11-09 13:54:00 +09:00
ba2ebfad4f [Client] Fix error 2018-11-09 13:53:44 +09:00
51ba738c4b Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-09 13:47:28 +09:00
c8081ed353 Fix i18n 2018-11-09 13:47:22 +09:00
500fc47618 Add group function (#3175) 2018-11-09 13:03:46 +09:00
276edd7cc2 Use sum function (#3174) 2018-11-09 11:02:23 +09:00
a9436306ab Fix #3170 (#3173) 2018-11-09 11:01:55 +09:00
21d9afebc3 Update autobind-decorator requirement from 2.1.0 to 2.2.1 (#3151)
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.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-09 08:45:19 +09:00
ab66162dbe Update @types/minio requirement from 7.0.0 to 7.0.1 (#3153)
Updates the requirements on [@types/minio](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-09 08:45:06 +09:00
0aacca3e78 Update systeminformation requirement from 3.45.9 to 3.47.0 (#3154)
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-09 08:44:58 +09:00
bdcaa07cc8 Update vue-sweetalert2 requirement from 1.5.6 to 1.5.7 (#3171)
Updates the requirements on [vue-sweetalert2](https://github.com/avil13/vue-sweetalert2) to permit the latest version.
- [Release notes](https://github.com/avil13/vue-sweetalert2/releases)
- [Commits](https://github.com/avil13/vue-sweetalert2/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-09 08:44:49 +09:00
5b684c6deb On remote notes, not use content for detecting mentions (#3170)
* On remote note, detect mentioned users from to/cc

* fix
2018-11-09 08:44:19 +09:00
5ef8a8b5f0 [Client] Fix #3168 2018-11-09 08:41:06 +09:00
10fa824f95 [Client] Fix #2759 2018-11-09 08:31:05 +09:00
fccbecf159 [Client] Fix bug 2018-11-09 08:26:32 +09:00
60ef3e3563 Refactor & Clean up 2018-11-09 08:13:34 +09:00
ba845f5218 Clean up 2018-11-09 04:02:12 +09:00
5105981e93 [Doc] Update docs 2018-11-09 03:54:45 +09:00
f05a688ac2 [API] Fix #3169 2018-11-09 03:52:03 +09:00
4bc919a912 [chore] Update dependencies 🚀 2018-11-09 03:46:55 +09:00
25a69ec1b6 Refactoring of i18n (#3165)
Refactoring of i18n
2018-11-09 03:44:35 +09:00
21303bd06a Update CircleCI configuration (#3163)
* Update config.yml

* Update config.yml
2018-11-08 18:49:45 +09:00
480d1c9f09 Justify margin (#3164) 2018-11-08 15:47:10 +09:00
57f6ce280e Update README.md (#3159) 2018-11-08 15:19:14 +09:00
f052d8912b wip: フォロー/フォロワーページ (#3157)
フォロー/フォロワーページ
2018-11-08 15:16:39 +09:00
6c95120023 via の表示を改善 (#3161) 2018-11-08 13:54:59 +09:00
24766fb79e 🎨 2018-11-08 11:20:50 +09:00
300d3da6ff Update apexcharts requirement from 2.1.9 to 2.2.0 (#3152)
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)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-08 10:18:01 +09:00
d779e18546 10.45.0 2018-11-08 02:10:36 +09:00
3261d54cd3 Resolve #2320 2018-11-08 02:09:15 +09:00
e0ec56abb5 Fix bug 2018-11-08 01:42:02 +09:00
1056a7167d [Client] Improve usabiliy 2018-11-07 23:04:59 +09:00
b8e1162e2d Fix test 2018-11-07 21:30:28 +09:00
4c81e400c4 [MFM] Fix title parsing 2018-11-07 21:17:27 +09:00
a29d7a0475 10.44.2 2018-11-07 21:14:16 +09:00
d5408c429b Fix bug 2018-11-07 20:59:40 +09:00
501b07c383 [Test] Add MFM test 2018-11-07 19:58:05 +09:00
9dd21a19ff 10.44.1 2018-11-07 19:49:46 +09:00
a8d05cba5a Fix #3149 2018-11-07 19:43:21 +09:00
f5ddfb29f2 10.44.0 2018-11-07 13:16:29 +09:00
ba228a6b10 Clean up 2018-11-07 13:15:09 +09:00
cb6f390fb6 GitHub / Twitter連携の設定をDBに保存するように 2018-11-07 13:14:52 +09:00
5675ecead9 Fix 2018-11-07 12:30:56 +09:00
001bb7bbcd インスタンスの対象言語の設定を実装 2018-11-07 12:28:53 +09:00
1585bb12cf 🎨 2018-11-07 12:17:57 +09:00
26b47c18fd [Client] Fix #2737 2018-11-07 12:15:28 +09:00
665fa7f2aa [API] Improve drive/files/upload_from_url 2018-11-07 12:12:43 +09:00
0068dc30d3 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-07 12:09:33 +09:00
8f39655fef Fix bug 2018-11-07 12:09:24 +09:00
b1a4fc03bc Update @types/koa-router requirement from 7.0.32 to 7.0.33 (#3147)
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-07 09:24:13 +09:00
05d20f1044 Update @types/request requirement from 2.48.0 to 2.48.1 (#3146)
Updates the requirements on [@types/request](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-07 09:24:04 +09:00
66a90b3fb1 Update qrcode requirement from 1.3.0 to 1.3.2 (#3145)
Updates the requirements on [qrcode](https://github.com/soldair/node-qrcode) to permit the latest version.
- [Release notes](https://github.com/soldair/node-qrcode/releases)
- [Commits](https://github.com/soldair/node-qrcode/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-07 09:23:47 +09:00
826d9d9fdf Update typescript requirement from 3.1.5 to 3.1.6 (#3144)
Updates the requirements on [typescript](https://github.com/Microsoft/TypeScript) to permit the latest version.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits/v3.1.6)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-07 09:23:38 +09:00
4a9a61f108 10.43.1 2018-11-07 03:57:08 +09:00
b72d15b56c [Client] Improve usability 2018-11-07 03:48:58 +09:00
8c68992594 Fix deploy fails on CircleCI 2018-11-07 02:06:32 +09:00
c052028fc3 10.43.0 2018-11-07 01:19:03 +09:00
c46fbcf345 Clean up 2018-11-07 01:18:21 +09:00
06b66f0209 メンテナ情報をDBに保存するように 2018-11-07 01:12:26 +09:00
2de48110bb ghostの設定をDBに保存するように 2018-11-07 00:44:56 +09:00
87d4452d19 Clean up 2018-11-07 00:16:32 +09:00
328fc64ca9 🎨 2018-11-07 00:16:08 +09:00
a6f8327aa2 reCAPTCHAの設定をDBに保存するように 2018-11-07 00:08:21 +09:00
d5ab6b41c9 10.42.2 2018-11-06 20:54:15 +09:00
ffdd0b7de7 [API] 文字列での真理値表現に対応
multipart/formdata では文字列しか送れないっぽい?
2018-11-06 20:53:50 +09:00
1808eb6eee 10.42.1 2018-11-06 20:49:03 +09:00
438563b505 [API] Fix bug 2018-11-06 20:47:56 +09:00
92dfcdad57 Fix #3141 2018-11-06 20:47:07 +09:00
c178cfabfa 10.42.0 2018-11-06 15:52:28 +09:00
260e4c955d 🎨 2018-11-06 15:51:18 +09:00
0c46f5ce70 Clean up 2018-11-06 15:51:05 +09:00
6d67cd07a0 [Client] Use dynamic import to reduce bundle size 2018-11-06 15:37:41 +09:00
fb8af53751 [Client] Improve usability & Refactoring 2018-11-06 15:08:22 +09:00
37999f4af7 [API] Implement notes/watching/ 2018-11-06 14:58:20 +09:00
3b6ab327c1 Twemojiで合字に対応 (#3140)
* Twemojiで合字に対応

* split emoji regex
2018-11-06 14:09:40 +09:00
d3ff3a7d54 10.41.0 2018-11-06 08:06:08 +09:00
cf36106520 🎨 2018-11-06 08:04:34 +09:00
1642fbec31 [Client] カスタム絵文字サジェストの結果をアルファベット順にソートするように 2018-11-06 08:02:19 +09:00
b195fd8145 🎨 2018-11-06 07:57:16 +09:00
5f59b980a7 Fix: download file (#3138)
* Fix: url download

* not explicitly close on end

* resolve on stream finish

* remove unnecessary code

* reject on file error
2018-11-06 07:53:03 +09:00
2a5c19cd01 リモートのファイルをキャッシュするかどうかの設定をDBに保存するように 2018-11-06 07:52:13 +09:00
42e007ddb7 🎨 2018-11-06 07:28:49 +09:00
756dc397d9 🎨 2018-11-06 07:22:39 +09:00
8f714b5b12 ドライブ容量の設定をDBに保存するようにしたりリファクタリングしたり 2018-11-06 07:14:43 +09:00
06bb2a1c7c Clean up 2018-11-06 06:25:35 +09:00
ac50bb9225 Resolve #3137 2018-11-06 06:24:31 +09:00
8fd95de25b 整理 2018-11-06 06:12:51 +09:00
0e14b2eba4 Update file-type requirement from 10.3.0 to 10.4.0 (#3135)
Updates the requirements on [file-type](https://github.com/sindresorhus/file-type) to permit the latest version.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/commits/v10.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-06 06:08:41 +09:00
08413a7550 Update webpack requirement from 4.23.1 to 4.25.1 (#3136)
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.25.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-06 05:35:53 +09:00
5e0f2a5b06 [Client] Fix bug 2018-11-06 04:10:30 +09:00
3b505709c6 10.40.1 2018-11-06 04:02:04 +09:00
af32d1f81e [Client] Fix bug 2018-11-06 04:01:22 +09:00
67d8773e38 [Client] Fix bug 2018-11-06 03:59:58 +09:00
e445d39c2f [Client] Use v-if instaed of v-show 2018-11-06 03:59:02 +09:00
961ed969db メッセージでのカスタム絵文字対応 2018-11-06 03:57:02 +09:00
e9a3495225 Resolve #3132 2018-11-06 03:48:23 +09:00
6c5a78aeb2 Fix #3133 (#3134) 2018-11-06 03:31:16 +09:00
34e249317a 10.40.0 2018-11-06 02:06:15 +09:00
6d8ea89f09 Resolve #3126 2018-11-06 02:05:16 +09:00
64f89ba13e Better error code 2018-11-06 01:57:31 +09:00
f6b2f76bbf 10.39.1 2018-11-06 01:52:39 +09:00
1235bef038 [API] Fix bug 2018-11-06 01:51:42 +09:00
2e11f3a843 Clean up 2018-11-06 01:49:35 +09:00
84b7e0bb7d 🎨 2018-11-06 01:48:33 +09:00
9f5dc2c0df [WIP] Use FontAwesome Component for Vue (#3127)
* wip

* Rename

* Clean up

* Clean up

* wip

* wip

* Enable tree shaking

* ✌️

* ✌️

* wip

* wip

* Clean up
2018-11-06 01:40:11 +09:00
e640dbc501 🎨 2018-11-05 22:45:45 +09:00
85db090d9f 🎨 2018-11-05 22:42:08 +09:00
9f2d8e1d51 10.39.0 2018-11-05 21:07:24 +09:00
0c98a90b75 [Client] カスタム絵文字にホバーしたときに拡大するエフェクトを追加 2018-11-05 21:04:19 +09:00
0047920c1a Merge pull request #3117 from syuilo/twemoji
Use Twemoji
2018-11-05 20:52:55 +09:00
e4bb534f20 Better emoji regexp 2018-11-05 20:49:17 +09:00
3fc04fcdc5 Improve readdability 2018-11-05 20:49:02 +09:00
e542dcac30 Fix test 2018-11-05 20:40:39 +09:00
a0b13505a0 Insert missing spaces 2018-11-05 20:15:09 +09:00
389f9bfea2 Add test 2018-11-05 20:14:49 +09:00
630a534cee Fix test 2018-11-05 20:10:28 +09:00
5744c391e6 Revert "Fix test fails"
This reverts commit b9b05a7401.
2018-11-05 20:10:00 +09:00
b9b05a7401 Fix test fails 2018-11-05 19:50:38 +09:00
359470a263 Fix bug 2018-11-05 19:40:09 +09:00
3fe934ee62 Better alt value 2018-11-05 19:33:28 +09:00
3abe632f06 Clean up 2018-11-05 19:29:50 +09:00
65961bc15b Refactoring & 設定でTwemojiを使うかどうか切り替えられるように 2018-11-05 19:20:35 +09:00
12f932d48a Update CI configuration (#3120)
* Update config.yml

* Add `npm prune` command

refs: https://misskey.xyz/notes/5bd9b87168b2a30045edb3aa

* Ensure package-lock.json exists
2018-11-05 17:38:57 +09:00
54e9147782 Refactoring codes
refs: https://github.com/syuilo/misskey/pull/3117#pullrequestreview-171437187
2018-11-05 17:04:17 +09:00
31b7626d01 Make code better
refs: https://github.com/syuilo/misskey/pull/3117#pullrequestreview-171423739
refs: https://github.com/syuilo/misskey/pull/3117#pullrequestreview-171424596
refs: https://github.com/syuilo/misskey/pull/3117#pullrequestreview-171425303
2018-11-05 16:19:14 +09:00
200ebefe92 Add support for unicode emojis
refs: https://github.com/syuilo/misskey/pull/3117#issuecomment-435745613
2018-11-05 15:15:37 +09:00
9d29a2e85a 10.38.8 2018-11-05 13:47:57 +09:00
c62a225542 oops 2018-11-05 13:46:46 +09:00
d5d995a3e6 Refactor 2018-11-05 13:38:50 +09:00
b7f10fdc10 Fix bug
refs: https://github.com/syuilo/misskey/pull/3117#discussion_r230624389
2018-11-05 13:24:54 +09:00
cbba03b376 [Client] Fix bug 2018-11-05 13:23:30 +09:00
f84e9c7dc8 絵文字サジェストでスペースを挿入しないように 2018-11-05 12:35:50 +09:00
a22ddb1fb9 ✌️ 2018-11-05 11:58:41 +09:00
0d23ce3d45 Make /api/v1/instance and /api/v1/custom_emojis better (#3118)
* Separate commits

From commit dca110ebaa.

* Re-separate commits

From commit 9719387bee.
2018-11-05 11:57:17 +09:00
9719387bee Re-separate commits 2018-11-05 11:51:14 +09:00
dca110ebaa Separate commits
Flash Back 90's
2018-11-05 11:39:13 +09:00
136f23c7ad Merge branch 'develop' into twemoji 2018-11-05 11:21:34 +09:00
0963e6d6e1 Use Twemoji 2018-11-05 11:19:40 +09:00
712802e682 10.38.7 2018-11-05 11:11:23 +09:00
abe99c3c73 Update locales/ja-JP.yml 2018-11-05 11:10:02 +09:00
d7a3b71028 投稿の最大文字数情報を設定ファイルではなくDBに保存するように 2018-11-05 11:09:05 +09:00
10c434f24a Remove Travis
Closes #3109
2018-11-05 10:52:07 +09:00
fe46c53ea6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-05 10:48:51 +09:00
cdd123dfd3 [doc] specify node version 2018-11-05 10:48:40 +09:00
a1a3ee44b5 Implement /api/v1/custom_emojis (#3116) 2018-11-05 10:45:57 +09:00
4e7fbd8967 Implement /api/v1/custom_emojis 2018-11-05 10:42:46 +09:00
a86c419f95 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-05 10:40:15 +09:00
e3ec0ad97e [Client] Improve admin panel usability 2018-11-05 10:40:01 +09:00
75791981ce Fix #3115 2018-11-05 10:34:53 +09:00
e813fe16b9 [API] Better validation of admin/emoji/add 2018-11-05 10:33:49 +09:00
42ac7b954d Improve admin panel usability 2018-11-05 10:32:45 +09:00
c1bbf5dab6 [Client] Fix error 2018-11-05 10:29:57 +09:00
e16dc2a910 Update README.md (#3112) 2018-11-05 01:57:08 +09:00
e236c05d79 10.38.6 2018-11-05 01:43:31 +09:00
454c1e3faf [API] Fix bug 2018-11-05 01:42:41 +09:00
43daf814df [Client] 絵文字登録フォームに便利情報を表示 2018-11-05 01:33:06 +09:00
c40b630530 10.38.5 2018-11-04 23:20:06 +09:00
7fc0698ecf 🎨 2018-11-04 23:15:46 +09:00
4f3c8b940e [API] Fix #3099 2018-11-04 23:13:35 +09:00
1855ab60f1 Resolve #3098 2018-11-04 23:00:43 +09:00
af4f1a7bd6 Clean up 2018-11-04 22:05:42 +09:00
8646a9c49c Add GitHub auth (#3095) 2018-11-04 22:03:55 +09:00
8d7c033cf5 Clean up 2018-11-04 21:21:34 +09:00
b8900e32de 🎨 2018-11-04 21:14:17 +09:00
d48c25d2c9 [API] Fix #3097 2018-11-04 21:11:54 +09:00
a87c5899c5 Fix typo 2018-11-04 20:08:31 +09:00
147ad69864 Revert "Add GitHub auth"
This reverts commit c146006476.
2018-11-04 19:22:04 +09:00
c146006476 Add GitHub auth 2018-11-04 19:17:30 +09:00
a0f10d7ca1 10.38.4 2018-11-04 18:38:04 +09:00
299b91edc4 [API] Improve admin/emoji/add 2018-11-04 18:37:12 +09:00
95c89ca6db RE: [Client] Fix bug 2018-11-04 18:36:19 +09:00
7fe0d71e7f [Client] Fix bug 2018-11-04 18:35:55 +09:00
fbbb506e86 🎨 2018-11-04 18:31:27 +09:00
ec80b06a45 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-04 18:24:20 +09:00
41e1619f1f [Client] Fix bug 2018-11-04 18:24:08 +09:00
ba6a9c6a93 Merge pull request #3092 from syuilo/l10n_develop
New Crowdin translations
2018-11-04 18:22:19 +09:00
18571c52fb Fix: emoji regex (#3093) 2018-11-04 17:36:37 +09:00
5d5dfeaa83 New translations ja-JP.yml (Japanese, Kansai) 2018-11-04 17:11:19 +09:00
3669d8c0f3 New translations ja-JP.yml (Japanese, Kansai) 2018-11-04 17:01:11 +09:00
69d72819c6 10.38.3 2018-11-04 15:18:37 +09:00
54dcc10250 Fix bug for Mastodon(?) 2018-11-04 15:17:52 +09:00
1edfce8f73 [Client] スマホ/タブレットからでも管理者ページを使えるように 2018-11-04 15:16:05 +09:00
675e573a8c 🎨 2018-11-04 14:23:28 +09:00
1080fa63a9 10.38.2 2018-11-04 11:09:31 +09:00
8047086988 Good bye package-lock 2018-11-04 11:08:46 +09:00
449b9f7fa0 [Client] Improve admin panel 2018-11-04 11:08:03 +09:00
b7a15bf6ca 絵文字を作成した/更新した時にupdateAtを更新するように 2018-11-04 10:42:16 +09:00
7c3873887d 10.38.1 2018-11-04 03:45:05 +09:00
247ea4cf12 Merge pull request #3083 from syuilo/l10n_develop
New Crowdin translations
2018-11-04 03:44:30 +09:00
0b7af5c669 [Client] Fix bug 2018-11-04 03:44:06 +09:00
2b62a4e2e5 New translations ja-JP.yml (English) 2018-11-04 03:42:45 +09:00
65bfa3c0d6 Fix: update_client_setting (#3086) 2018-11-04 03:33:37 +09:00
84db15694d Do not send needless emojis in note
投稿作成時に含まれている絵文字を保存しておくように

SEE: https://github.com/syuilo/misskey/pull/3085#issuecomment-435608434
2018-11-04 03:32:20 +09:00
746189ba37 New translations ja-JP.yml (Norwegian) 2018-11-04 03:23:44 +09:00
74e845b3ac New translations ja-JP.yml (Dutch) 2018-11-04 03:23:39 +09:00
90fe70540e New translations ja-JP.yml (Japanese, Kansai) 2018-11-04 03:23:36 +09:00
f28af75191 New translations ja-JP.yml (Spanish) 2018-11-04 03:23:31 +09:00
924bb2bc70 New translations ja-JP.yml (Russian) 2018-11-04 03:23:26 +09:00
19d60f3d51 New translations ja-JP.yml (Portuguese) 2018-11-04 03:23:22 +09:00
6903476868 New translations ja-JP.yml (Polish) 2018-11-04 03:23:16 +09:00
cf0dccc209 New translations ja-JP.yml (Korean) 2018-11-04 03:23:10 +09:00
cfd959129d New translations ja-JP.yml (Italian) 2018-11-04 03:23:06 +09:00
819287951c New translations ja-JP.yml (German) 2018-11-04 03:23:02 +09:00
e136193925 New translations ja-JP.yml (French) 2018-11-04 03:22:57 +09:00
8c631864d9 New translations ja-JP.yml (English) 2018-11-04 03:22:53 +09:00
d7d0f6ae2e New translations ja-JP.yml (Chinese Simplified) 2018-11-04 03:22:47 +09:00
b83b3fb9d1 New translations ja-JP.yml (Catalan) 2018-11-04 03:22:43 +09:00
dfce5bc0af [Client] Improve Emoji management page of admin panel 2018-11-04 03:18:57 +09:00
3487ddabea [API] Implement some Emoji APIs 2018-11-04 03:18:32 +09:00
2dbff75e7a New translations ja-JP.yml (French) 2018-11-04 02:53:30 +09:00
02465ded9f New translations ja-JP.yml (French) 2018-11-04 02:41:50 +09:00
ffcd387945 New translations ja-JP.yml (French) 2018-11-04 02:31:36 +09:00
4806346707 New translations ja-JP.yml (French) 2018-11-04 02:21:09 +09:00
31c3f6abf7 Fix: welcome-timeline (#3084) 2018-11-04 01:49:08 +09:00
83e47fdd60 New translations ja-JP.yml (English) 2018-11-04 01:21:56 +09:00
340ce7fa4c 10.38.0 2018-11-04 00:26:00 +09:00
ac86fee9b4 Merge pull request #3080 from syuilo/l10n_develop
New Crowdin translations
2018-11-04 00:13:09 +09:00
6dfa283d7a New translations ja-JP.yml (English) 2018-11-04 00:11:31 +09:00
0cce8a4d21 🎨 2018-11-04 00:10:13 +09:00
1c6d9ab2ef New translations ja-JP.yml (Norwegian) 2018-11-04 00:05:11 +09:00
6ca265e579 New translations ja-JP.yml (Dutch) 2018-11-04 00:04:59 +09:00
c612c4bf18 New translations ja-JP.yml (Japanese, Kansai) 2018-11-04 00:04:50 +09:00
481a791a60 New translations ja-JP.yml (Spanish) 2018-11-04 00:04:39 +09:00
cb516c2943 New translations ja-JP.yml (Russian) 2018-11-04 00:04:29 +09:00
c0abd6f0c0 New translations ja-JP.yml (Portuguese) 2018-11-04 00:04:17 +09:00
47695ed685 New translations ja-JP.yml (Polish) 2018-11-04 00:04:07 +09:00
4ca8020ef5 New translations ja-JP.yml (Korean) 2018-11-04 00:03:56 +09:00
bfac83d5b8 New translations ja-JP.yml (Italian) 2018-11-04 00:03:47 +09:00
4cd2e55fd3 New translations ja-JP.yml (German) 2018-11-04 00:03:37 +09:00
61c7e7bc48 New translations ja-JP.yml (French) 2018-11-04 00:03:28 +09:00
bef41718e2 New translations ja-JP.yml (English) 2018-11-04 00:03:16 +09:00
5b4b52bb97 New translations ja-JP.yml (Chinese Simplified) 2018-11-04 00:03:08 +09:00
8901b6d774 New translations ja-JP.yml (Catalan) 2018-11-04 00:02:57 +09:00
e3a24e9215 [Client] Improve admin panel 2018-11-03 23:57:14 +09:00
a515c1f53e Improve API documentation 2018-11-03 22:49:36 +09:00
2e22874dec Refactoring 2018-11-03 22:40:12 +09:00
30f0b1c30d Add missing semicolons 2018-11-03 22:38:12 +09:00
600aea4dbb [MFM] Fix emoji syntax parsing 2018-11-03 22:35:24 +09:00
f5d53d784d [Client] Improve admin panel 2018-11-03 22:21:20 +09:00
1061e1f7ae i18n 2018-11-03 22:20:09 +09:00
1d5fc04aa6 🎨 2018-11-03 22:03:06 +09:00
d1cf0c7998 Clean up 2018-11-03 22:01:58 +09:00
84218abf2b [Client] Make possible to change password in mobile
モバイル版からパスワードの変更を行えるように
2018-11-03 21:53:03 +09:00
5bebdb2511 🎨 2018-11-03 20:10:55 +09:00
9c8e9b4165 🎨 2018-11-03 20:03:21 +09:00
7b786bfde3 Improve usability of Admin panel 2018-11-03 19:57:44 +09:00
42a08642a4 Misskeyのバージョンもクライアントの環境変数に突っ込むように 2018-11-03 17:04:33 +09:00
e88f7ca7b2 [Client] Fix some charts 2018-11-03 16:44:05 +09:00
c26ed1421b [API] Increase chart limit 2018-11-03 16:43:50 +09:00
ed2f94a3c1 oops 2018-11-03 15:28:11 +09:00
daba7fe87c [MFM] Fix title syntax parsing 2018-11-03 15:28:00 +09:00
afc9caf7bf Improve performance 2018-11-03 15:21:07 +09:00
67697a7aa6 Merge pull request #3067 from syuilo/l10n_develop
New Crowdin translations
2018-11-03 15:14:13 +09:00
1623d9e70c 🎨 2018-11-03 15:05:00 +09:00
c304351335 🎨 2018-11-03 13:39:17 +09:00
c1520763c6 🎨 2018-11-03 13:30:57 +09:00
4853bc9414 Update src/client/app/admin/views/charts.vue 2018-11-03 13:08:49 +09:00
e7c865f8e3 Bump @types/request from 2.47.1 to 2.48.0 (#3054)
Bumps [@types/request](https://github.com/DefinitelyTyped/DefinitelyTyped) from 2.47.1 to 2.48.0.
- [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-03 12:38:17 +09:00
46cb377bc2 Bump css-loader from 1.0.0 to 1.0.1 (#3070)
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v1.0.0...v1.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-03 12:37:54 +09:00
373a5ba3e1 Bump @types/node from 10.12.0 to 10.12.2 (#3072)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) from 10.12.0 to 10.12.2.
- [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-03 12:37:38 +09:00
3bedef67c8 Bump elasticsearch from 15.1.1 to 15.2.0 (#3073)
Bumps [elasticsearch](https://github.com/elastic/elasticsearch-js) from 15.1.1 to 15.2.0.
- [Release notes](https://github.com/elastic/elasticsearch-js/releases)
- [Changelog](https://github.com/elastic/elasticsearch-js/blob/master/docs/changelog.asciidoc)
- [Commits](https://github.com/elastic/elasticsearch-js/compare/v15.1.1...v15.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-03 12:37:28 +09:00
17ea19ada8 Bump typescript from 3.1.4 to 3.1.5 (#3069)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.1.4...v3.1.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-03 12:37:11 +09:00
1f5b2285fd Bump file-type from 10.2.0 to 10.3.0 (#3071)
Bumps [file-type](https://github.com/sindresorhus/file-type) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v10.2.0...v10.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-03 12:36:59 +09:00
17f0001966 New translations ja-JP.yml (English) 2018-11-03 11:51:00 +09:00
04ba09a6af New translations ja-JP.yml (Norwegian) 2018-11-03 11:43:16 +09:00
70d2744319 New translations ja-JP.yml (Dutch) 2018-11-03 11:43:06 +09:00
6b2f0929ec New translations ja-JP.yml (Japanese, Kansai) 2018-11-03 11:42:55 +09:00
f2629bd3f2 New translations ja-JP.yml (Spanish) 2018-11-03 11:42:46 +09:00
9e6c29c3c0 New translations ja-JP.yml (Russian) 2018-11-03 11:42:38 +09:00
abda973094 New translations ja-JP.yml (Portuguese) 2018-11-03 11:42:27 +09:00
86b08dd5bd New translations ja-JP.yml (Polish) 2018-11-03 11:42:17 +09:00
617e331f0f New translations ja-JP.yml (Korean) 2018-11-03 11:42:06 +09:00
cc438a9372 New translations ja-JP.yml (Italian) 2018-11-03 11:41:58 +09:00
b0fb218bfd New translations ja-JP.yml (German) 2018-11-03 11:41:50 +09:00
fc85a607e6 New translations ja-JP.yml (French) 2018-11-03 11:41:42 +09:00
fb244c45e3 New translations ja-JP.yml (English) 2018-11-03 11:41:34 +09:00
c123784c54 New translations ja-JP.yml (Chinese Simplified) 2018-11-03 11:41:24 +09:00
342a5276fc New translations ja-JP.yml (Catalan) 2018-11-03 11:41:15 +09:00
51a32846ee Update src/client/app/admin/views/ap-log.vue 2018-11-03 11:39:56 +09:00
35865429a8 🎨 2018-11-03 11:39:18 +09:00
aadd5b95b8 Improve admin dashboard 2018-11-03 11:38:00 +09:00
f9f2ca51ac Improve stats API 2018-11-03 11:37:44 +09:00
1cb93a8c10 🎨 2018-11-03 11:37:17 +09:00
7e5dbb2ba5 Fix bug 2018-11-03 11:36:11 +09:00
2772e3d80e New translations ja-JP.yml (English) 2018-11-03 03:51:41 +09:00
223c578734 Improve admin dashboard 2018-11-03 03:30:28 +09:00
d01315dee2 🎨 2018-11-03 03:08:41 +09:00
7dafb4ce4c New translations ja-JP.yml (Norwegian) 2018-11-03 03:04:52 +09:00
9671db9b14 New translations ja-JP.yml (Dutch) 2018-11-03 03:04:41 +09:00
bec559f67c New translations ja-JP.yml (Japanese, Kansai) 2018-11-03 03:04:33 +09:00
14053c1394 New translations ja-JP.yml (Spanish) 2018-11-03 03:04:24 +09:00
55e4b1c828 New translations ja-JP.yml (Russian) 2018-11-03 03:04:17 +09:00
dda3421159 New translations ja-JP.yml (Portuguese) 2018-11-03 03:04:08 +09:00
45e7488e60 New translations ja-JP.yml (Polish) 2018-11-03 03:03:55 +09:00
30c7bd66b7 New translations ja-JP.yml (Korean) 2018-11-03 03:03:45 +09:00
af4f5bdac0 New translations ja-JP.yml (Italian) 2018-11-03 03:03:37 +09:00
3d1a8cc341 New translations ja-JP.yml (German) 2018-11-03 03:03:28 +09:00
0e52fb2544 New translations ja-JP.yml (French) 2018-11-03 03:03:18 +09:00
e6d6c0a17c New translations ja-JP.yml (English) 2018-11-03 03:03:10 +09:00
cfd2d47e00 New translations ja-JP.yml (Chinese Simplified) 2018-11-03 03:03:00 +09:00
83301a879d New translations ja-JP.yml (Catalan) 2018-11-03 03:02:51 +09:00
d7881ba129 Improve admin page 2018-11-03 03:00:23 +09:00
b9fef1edf7 New translations ja-JP.yml (Norwegian) 2018-11-03 02:14:35 +09:00
2c606f7b23 New translations ja-JP.yml (Dutch) 2018-11-03 02:14:27 +09:00
03797607ed New translations ja-JP.yml (Japanese, Kansai) 2018-11-03 02:14:19 +09:00
254b7f500d New translations ja-JP.yml (Spanish) 2018-11-03 02:14:09 +09:00
51edd51bf2 New translations ja-JP.yml (Russian) 2018-11-03 02:14:00 +09:00
0d403f4a3f New translations ja-JP.yml (Portuguese) 2018-11-03 02:13:52 +09:00
0fa134addd New translations ja-JP.yml (Polish) 2018-11-03 02:13:44 +09:00
7002270084 New translations ja-JP.yml (Korean) 2018-11-03 02:13:37 +09:00
1c5452d047 New translations ja-JP.yml (Italian) 2018-11-03 02:13:26 +09:00
f0d62c07bf New translations ja-JP.yml (German) 2018-11-03 02:13:18 +09:00
496ca55bba New translations ja-JP.yml (French) 2018-11-03 02:13:11 +09:00
79cfba226b New translations ja-JP.yml (English) 2018-11-03 02:13:00 +09:00
f69b60dffe New translations ja-JP.yml (Chinese Simplified) 2018-11-03 02:12:51 +09:00
513385133f New translations ja-JP.yml (Catalan) 2018-11-03 02:12:43 +09:00
6f1e2f6636 Improve admin page 2018-11-03 02:06:34 +09:00
8ae94c034d Update hashtags.ts 2018-11-02 23:46:57 +09:00
cd9696f25e Update src/server/api/endpoints/aggregation/hashtags.ts 2018-11-02 23:32:40 +09:00
d62a6bab41 Remove needless properties 2018-11-02 23:27:47 +09:00
20df002746 🍕 2018-11-02 23:23:01 +09:00
fa6b01546e New translations ja-JP.yml (English) 2018-11-02 23:22:06 +09:00
91b37a6e52 New translations ja-JP.yml (Norwegian) 2018-11-02 23:14:33 +09:00
d8171d7c8b New translations ja-JP.yml (Dutch) 2018-11-02 23:14:23 +09:00
fa96e2daf1 New translations ja-JP.yml (Japanese, Kansai) 2018-11-02 23:14:15 +09:00
87708c3b84 New translations ja-JP.yml (Spanish) 2018-11-02 23:14:06 +09:00
6319023cc9 New translations ja-JP.yml (Russian) 2018-11-02 23:13:58 +09:00
efad9d1b60 New translations ja-JP.yml (Portuguese) 2018-11-02 23:13:48 +09:00
a1dea657fa New translations ja-JP.yml (Polish) 2018-11-02 23:13:38 +09:00
6b1b75717b New translations ja-JP.yml (Korean) 2018-11-02 23:13:31 +09:00
efe08e0bd3 New translations ja-JP.yml (Italian) 2018-11-02 23:13:22 +09:00
62892c4894 New translations ja-JP.yml (German) 2018-11-02 23:13:15 +09:00
0c2a62da11 New translations ja-JP.yml (French) 2018-11-02 23:13:07 +09:00
5bc9e9aadd New translations ja-JP.yml (English) 2018-11-02 23:12:56 +09:00
112c33d35b New translations ja-JP.yml (Chinese Simplified) 2018-11-02 23:12:48 +09:00
864da3030f New translations ja-JP.yml (Catalan) 2018-11-02 23:12:38 +09:00
f2e719b361 [Client] Admin page improved 2018-11-02 23:05:53 +09:00
6aab515389 New translations ja-JP.yml (English) 2018-11-02 22:59:53 +09:00
819b535ab0 [API] Implement admin/add-emoji 2018-11-02 15:04:02 +09:00
60e95ac2ac Clean up 2018-11-02 14:53:55 +09:00
9b94ddff0a Clean up 2018-11-02 13:49:09 +09:00
174f8022eb Refactor 2018-11-02 13:47:44 +09:00
ddc3c5ba68 Better index 2018-11-02 12:49:18 +09:00
a7e6b766be Resolve #2623 2018-11-02 12:49:08 +09:00
befc35a3ac Update src/server/api/endpoints/meta.ts 2018-11-02 12:16:03 +09:00
2e9bbf389e Better index 2018-11-02 12:08:28 +09:00
80b5fda292 Remote custom emojis (#3074)
* Remote custom emojis

* んほおおおおお
2018-11-02 08:59:40 +09:00
c48cbd95f6 Fix bug 2018-11-02 03:41:09 +09:00
931bdc6aac Refactoring, Clean up and bug fixes 2018-11-02 03:32:24 +09:00
7f81506c8b New translations ja-JP.yml (French) 2018-11-01 22:01:38 +09:00
b4b9e76c8d Refactoring 2018-11-01 21:28:39 +09:00
e5a3dcf868 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-11-01 21:01:55 +09:00
825648535c Refactoring 2018-11-01 21:01:47 +09:00
5cbc908ba3 Fix typo 2018-11-01 19:32:11 +09:00
895cf53ee1 Fix bug 2018-11-01 18:05:14 +09:00
e41f74e77c 10.37.0 2018-11-01 11:52:33 +09:00
c21caad1c5 Custom emoji (#3061)
* wip

* wip

* wip
2018-11-01 11:51:49 +09:00
86fcd3a378 Fix bug 2018-11-01 10:00:15 +09:00
2b3687b3cb 10.36.1 2018-11-01 09:35:24 +09:00
5d61c7c691 Refactor and use original image for banner 2018-11-01 09:30:51 +09:00
1bb266e7c7 Update package-lock.json 2018-11-01 09:19:31 +09:00
1fca8d322c Clean up 2018-11-01 09:19:22 +09:00
325cd03a59 Improve performance 2018-11-01 09:08:00 +09:00
2f7e6baa05 Clean up 2018-11-01 09:02:54 +09:00
d252e066fe Improve performance 2018-11-01 09:00:18 +09:00
fe7bd9ab3c Bump typescript-eslint-parser from 20.0.0 to 20.1.1 (#3057)
Bumps [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser) from 20.0.0 to 20.1.1.
- [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/compare/v20.0.0...v20.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-01 08:24:13 +09:00
84e3f41305 Bump ts-loader from 5.2.2 to 5.3.0 (#3055)
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 5.2.2 to 5.3.0.
- [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/compare/v5.2.2...v5.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-01 08:24:05 +09:00
3e8cccad0d Bump jsdom from 12.2.0 to 13.0.0 (#3058)
Bumps [jsdom](https://github.com/jsdom/jsdom) from 12.2.0 to 13.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/12.2.0...13.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-01 08:23:38 +09:00
a2b94d67f7 Update README.md [AUTOGEN] (#3060) 2018-11-01 08:23:11 +09:00
6ab61e73b0 Bump apexcharts from 2.1.6 to 2.1.9 (#3056)
Bumps [apexcharts](https://github.com/apexcharts/apexcharts.js) from 2.1.6 to 2.1.9.
- [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/compare/v2.1.6...v2.1.9)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-01 08:22:53 +09:00
051c6973af Update README.md [AUTOGEN] (#3059) 2018-11-01 08:20:56 +09:00
806a49ec3d 10.36.0 2018-11-01 00:12:13 +09:00
3829fe128a Update src/server/api/endpoints/users/relation.ts 2018-11-01 00:11:52 +09:00
649177985d [API] Implement users/relation 2018-11-01 00:11:21 +09:00
c15148b23c [API] Include detailed user information for block/mute response 2018-10-31 23:34:35 +09:00
261a3f5d91 Better rate limitting 2018-10-31 23:03:14 +09:00
256ba78ba5 Fix 2018-10-31 22:55:17 +09:00
04aff8866e [MFM] Better hashtag detection 2018-10-31 22:38:05 +09:00
1a51b98700 Refactor 2018-10-31 22:35:02 +09:00
f64100226d Revert "Clean up"
This reverts commit 8948a0d3a4.
2018-10-31 22:10:25 +09:00
b7805e48a6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-31 22:08:27 +09:00
0d9556620d Update package-lock.json 2018-10-31 22:08:19 +09:00
a51828a7a2 Update test.yml (#3052) 2018-10-31 22:07:26 +09:00
7e2009f408 Update config.yml (#3051) 2018-10-31 22:00:21 +09:00
008d950a39 10.35.1 2018-10-31 18:07:59 +09:00
22d5862afb 🎨 2018-10-31 18:07:00 +09:00
de569147a5 Fix #3041 2018-10-31 17:56:21 +09:00
a82c3db750 Merge pull request #3038 from syuilo/l10n_develop
New Crowdin translations
2018-10-31 13:44:10 +09:00
80706d10af Bump @types/speakeasy from 2.0.2 to 2.0.3 (#3012)
Bumps [@types/speakeasy](https://github.com/DefinitelyTyped/DefinitelyTyped) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-31 13:43:45 +09:00
93f01ed4df Bump typescript from 3.1.3 to 3.1.4 (#3049)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.1.3...v3.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-31 13:42:47 +09:00
a3a28e5557 Bump file-type from 10.1.0 to 10.2.0 (#3039)
Bumps [file-type](https://github.com/sindresorhus/file-type) from 10.1.0 to 10.2.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v10.1.0...v10.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-31 13:42:31 +09:00
8948a0d3a4 Clean up 2018-10-31 13:28:05 +09:00
d849ea9b41 Clean up 2018-10-31 13:23:12 +09:00
0144575f3f Improve performance 2018-10-31 13:20:24 +09:00
bdbe646ca7 Improve performance 2018-10-31 13:14:45 +09:00
1a1483a242 Update package-lock.json 2018-10-31 12:29:38 +09:00
962346785b New translations ja-JP.yml (English) 2018-10-31 11:31:00 +09:00
a73da3cd70 10.35.0 2018-10-31 11:30:49 +09:00
9c27d0ae3f Add CircleCI badge (#3050) 2018-10-31 11:29:25 +09:00
525d5218c1 🎨 2018-10-31 11:29:03 +09:00
e23b13ec7f [API] Include detailed user information of blocking API responses 2018-10-31 11:24:36 +09:00
29b000e03c Remove needless async/await 2018-10-31 11:22:49 +09:00
6a7b0df810 New translations ja-JP.yml (Norwegian) 2018-10-31 11:22:11 +09:00
4142de9195 New translations ja-JP.yml (Dutch) 2018-10-31 11:22:07 +09:00
9195e1be00 New translations ja-JP.yml (Japanese, Kansai) 2018-10-31 11:22:03 +09:00
75382d13fd New translations ja-JP.yml (Spanish) 2018-10-31 11:21:59 +09:00
d444280a28 New translations ja-JP.yml (Russian) 2018-10-31 11:21:52 +09:00
52fc0fe04a New translations ja-JP.yml (Portuguese) 2018-10-31 11:21:48 +09:00
216bebadf1 New translations ja-JP.yml (Polish) 2018-10-31 11:21:44 +09:00
a5592931cb New translations ja-JP.yml (Korean) 2018-10-31 11:21:39 +09:00
a2228417ff New translations ja-JP.yml (Italian) 2018-10-31 11:21:35 +09:00
3e1e292c3e New translations ja-JP.yml (German) 2018-10-31 11:21:31 +09:00
f2f039ae9e New translations ja-JP.yml (French) 2018-10-31 11:21:27 +09:00
29dde1eda0 New translations ja-JP.yml (English) 2018-10-31 11:21:21 +09:00
45d3792ce0 New translations ja-JP.yml (Chinese Simplified) 2018-10-31 11:21:17 +09:00
875d0aaebb New translations ja-JP.yml (Catalan) 2018-10-31 11:21:13 +09:00
26c9d8ff6f Clean up 2018-10-31 11:20:54 +09:00
5e3372e932 Merge pull request #3047 from mei23/mei-1031-blokings-list
blockings list
2018-10-31 11:17:24 +09:00
f7069dcd18 良い感じに 2018-10-31 11:16:13 +09:00
560bb65384 blockings list 2018-10-31 04:59:01 +09:00
50cd6a036e Implement /api/v1/instance (#3045)
* Update mastodon.ts

* Update types.ts

* Update mastodon.ts
2018-10-31 02:17:54 +09:00
441ab2b5f8 Fix: can't recognize rebirthed instance user (#3046)
* resync uri from WebFinger

* trigger resync on user page

* allways update on resync

* Revert "trigger resync on user page"

This reverts commit 8ff139fb49ee61ad55e4b42c562f8a2c3f8098ac.

* background resync
2018-10-31 02:16:13 +09:00
ba5ed188a1 Add Crowdin info to translate docs (#3044) 2018-10-30 22:56:13 +09:00
72e672f08d Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-30 21:55:25 +09:00
120474ec6a Fix bug 2018-10-30 21:55:16 +09:00
eee57c47f5 Use cache when default.yml update (#3042)
* Use cache when default.yml update

* Install latest npm in base image
2018-10-30 21:18:03 +09:00
4c160869b8 Update test/api.ts 2018-10-30 21:17:26 +09:00
3720a7fbe0 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-30 14:34:39 +09:00
7afa541a53 Fix #3040 2018-10-30 14:34:32 +09:00
6f979c8275 Configure CI (#3037)
* Update config.yml

* Configure CI

* Use Vesion 2.1

* Fix error

* Ensure binary builds

* Ensure misskey builds

* Store artifacts

* Ensure node-gyp builds

* Fix typo

* Fix typo

* Ensure binary builds

* Update working directory

* Cache test npm packages

* Revert "Update working directory"

* Ensure misskey builds

* Ensure node-gyp builds

* Fix missing configurations

* Configure deploy filters

* Use latest npm in Docker
2018-10-30 12:36:14 +09:00
d399241e65 Refactor 2018-10-30 09:36:20 +09:00
e85dec030a [Client] Fix bug 2018-10-30 09:27:57 +09:00
d0220764cc New translations ja-JP.yml (French) 2018-10-30 05:31:25 +09:00
75c1df9531 New translations ja-JP.yml (French) 2018-10-30 05:11:49 +09:00
bca7156d6b New translations ja-JP.yml (French) 2018-10-30 05:02:28 +09:00
64277b7157 10.34.0 2018-10-29 21:55:33 +09:00
4a72543f65 Merge pull request #3019 from syuilo/l10n_develop
New Crowdin translations
2018-10-29 21:53:58 +09:00
5b84d29807 Better indexes 2018-10-29 21:53:40 +09:00
a11061ec2b New translations ja-JP.yml (English) 2018-10-29 21:51:37 +09:00
24cfb93b2e Update .circleci/config.yml 2018-10-29 21:48:35 +09:00
502b42d63a New translations ja-JP.yml (Norwegian) 2018-10-29 21:43:46 +09:00
612672b79c New translations ja-JP.yml (Dutch) 2018-10-29 21:43:42 +09:00
abc670e1b1 New translations ja-JP.yml (Japanese, Kansai) 2018-10-29 21:43:38 +09:00
d589ccdd01 New translations ja-JP.yml (Spanish) 2018-10-29 21:43:34 +09:00
acb07d9f7d New translations ja-JP.yml (Russian) 2018-10-29 21:43:29 +09:00
f4d2186719 New translations ja-JP.yml (Portuguese) 2018-10-29 21:43:25 +09:00
d0ede5c665 New translations ja-JP.yml (Polish) 2018-10-29 21:43:20 +09:00
554cbb5e9b New translations ja-JP.yml (Korean) 2018-10-29 21:43:16 +09:00
dbd32a56bf New translations ja-JP.yml (Italian) 2018-10-29 21:43:10 +09:00
7f500235c6 New translations ja-JP.yml (German) 2018-10-29 21:43:05 +09:00
39a58084c8 New translations ja-JP.yml (French) 2018-10-29 21:43:01 +09:00
cde0fde836 New translations ja-JP.yml (English) 2018-10-29 21:42:56 +09:00
e70cca0fda New translations ja-JP.yml (Chinese Simplified) 2018-10-29 21:42:52 +09:00
919bd7eb82 New translations ja-JP.yml (Catalan) 2018-10-29 21:42:45 +09:00
312cff3d6f Fix 2018-10-29 21:39:35 +09:00
0d86eef3d7 Format 2018-10-29 21:38:09 +09:00
13acf570e7 Improve performance 2018-10-29 21:35:46 +09:00
fa17623fa8 モバイル版からブロックできるように 2018-10-29 21:32:38 +09:00
06fd525950 Refactor 2018-10-29 21:32:21 +09:00
4805b5115a 🎨 2018-10-29 21:09:32 +09:00
108dcb3e61 物理削除系の処理を削除
これらの処理はパフォーマンス的に現実的でないし、すべてのモデルの関係を把握している必要があり保守が困難
論理削除でなんとかする
2018-10-29 21:06:23 +09:00
780d272535 New translations ja-JP.yml (Norwegian) 2018-10-29 20:44:27 +09:00
02ea4b81a5 New translations ja-JP.yml (Dutch) 2018-10-29 20:44:22 +09:00
7c1bdc6d36 New translations ja-JP.yml (Japanese, Kansai) 2018-10-29 20:44:15 +09:00
78c7b8b836 New translations ja-JP.yml (Spanish) 2018-10-29 20:44:10 +09:00
227da30acb New translations ja-JP.yml (Russian) 2018-10-29 20:44:03 +09:00
610805026f New translations ja-JP.yml (Portuguese) 2018-10-29 20:43:57 +09:00
c02399c3d2 New translations ja-JP.yml (Polish) 2018-10-29 20:43:51 +09:00
e0799d4153 New translations ja-JP.yml (Korean) 2018-10-29 20:43:45 +09:00
6df83f1aa9 New translations ja-JP.yml (Italian) 2018-10-29 20:43:41 +09:00
efb5ad1d9b New translations ja-JP.yml (German) 2018-10-29 20:43:35 +09:00
716976f016 New translations ja-JP.yml (French) 2018-10-29 20:43:31 +09:00
7892f41b84 New translations ja-JP.yml (English) 2018-10-29 20:43:26 +09:00
d549e03b3f New translations ja-JP.yml (Chinese Simplified) 2018-10-29 20:43:22 +09:00
c511ef21ff New translations ja-JP.yml (Catalan) 2018-10-29 20:43:18 +09:00
d64dc45899 User blocking (Following part) (#3035)
* block wip

* UndoBlock

* UnBlock

* wip

* follow

* UI

* fix
2018-10-29 20:32:42 +09:00
bcb0588409 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-29 19:33:00 +09:00
0975959eb9 Clean up 2018-10-29 19:32:20 +09:00
e985a6d9d3 Update config.yml 2018-10-29 19:27:47 +09:00
b893305974 Delete appveyor.yml 2018-10-29 19:19:41 +09:00
724fdd44e4 Clean up 2018-10-29 19:13:16 +09:00
b480ef669c Fix doc 2018-10-29 19:11:01 +09:00
4b145da046 Fix MFM parsing 2018-10-29 19:09:24 +09:00
83d168ece3 Fix API definition 2018-10-29 19:04:58 +09:00
ae44fe7818 Refactor 2018-10-29 15:09:03 +09:00
f8981b3acb Update src/server/api/endpoints/notes/reactions.ts 2018-10-29 15:07:50 +09:00
050b324885 ? 2018-10-29 10:52:42 +09:00
e74c0df6c6 Fix #3034 2018-10-29 10:52:36 +09:00
22d0d11895 Update note-reaction.ts 2018-10-28 21:41:39 +09:00
80d0c0cf74 Bump eslint from 5.7.0 to 5.8.0 (#3030)
Bumps [eslint](https://github.com/eslint/eslint) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.7.0...v5.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-28 21:38:27 +09:00
518646b925 Fix: Unexpected remote user is selected (#3032) 2018-10-28 07:49:58 +09:00
479d7e0087 Merge pull request #3031 from syuilo/patch-autogen 2018-10-27 13:37:02 +09:00
8ea1a555f4 Update README.md [AUTOGEN] 2018-10-27 13:36:06 +09:00
04024dc37c Update README.md [AUTOGEN] (#3024) 2018-10-27 03:47:04 +09:00
060ff9288f Build assets in CircleCI. (#3021) 2018-10-27 03:46:48 +09:00
197116ee78 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 22:12:16 +09:00
a1e0015257 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 22:01:37 +09:00
7e701ef9e0 10.33.0 2018-10-26 15:23:10 +09:00
3d6fb661bb Update src/client/app/desktop/views/components/settings.2fa.vue 2018-10-26 15:17:50 +09:00
fc372496da Client: Make drive folder deletable 2018-10-26 15:06:55 +09:00
ad7258fe9c Fix bug 2018-10-26 15:06:27 +09:00
bd707cb2a8 🎨 2018-10-26 14:51:57 +09:00
1839b5f205 Improve usability 2018-10-26 14:47:30 +09:00
02b47f963c API: Better error response 2018-10-26 14:38:34 +09:00
f8a7f9378a Improve usability 2018-10-26 14:38:22 +09:00
65cb253be4 Update src/client/app/common/views/components/ui/textarea.vue 2018-10-26 14:38:03 +09:00
a12356b24b Merge pull request #3010 from syuilo/l10n_develop
New Crowdin translations
2018-10-26 08:55:11 +09:00
6a67ad7f93 New translations ja-JP.yml (English) 2018-10-26 08:51:31 +09:00
140a7f0b1c New translations ja-JP.yml (Norwegian) 2018-10-26 08:42:29 +09:00
00159bc6b5 New translations ja-JP.yml (Dutch) 2018-10-26 08:42:24 +09:00
9542260103 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 08:42:20 +09:00
72074578df New translations ja-JP.yml (Spanish) 2018-10-26 08:42:15 +09:00
3b4750a988 New translations ja-JP.yml (Russian) 2018-10-26 08:42:11 +09:00
aeec5f0163 New translations ja-JP.yml (Portuguese) 2018-10-26 08:42:05 +09:00
9c94d8c8d6 New translations ja-JP.yml (Polish) 2018-10-26 08:41:59 +09:00
581712a2c8 New translations ja-JP.yml (Korean) 2018-10-26 08:41:54 +09:00
b25b51aaca New translations ja-JP.yml (Italian) 2018-10-26 08:41:50 +09:00
fb97e13a61 New translations ja-JP.yml (German) 2018-10-26 08:41:44 +09:00
36e154fdb2 New translations ja-JP.yml (French) 2018-10-26 08:41:40 +09:00
ca273a24b4 New translations ja-JP.yml (English) 2018-10-26 08:41:36 +09:00
d828bf2889 New translations ja-JP.yml (Chinese Simplified) 2018-10-26 08:41:32 +09:00
87efccef18 New translations ja-JP.yml (Catalan) 2018-10-26 08:41:28 +09:00
e0bf522e7f Client: Improve API settings 2018-10-26 08:37:30 +09:00
5b1cd3bd3c Fix bug 2018-10-26 08:36:50 +09:00
f00489196d Bump @types/mocha from 5.2.3 to 5.2.5 (#3006)
Bumps [@types/mocha](https://github.com/DefinitelyTyped/DefinitelyTyped) from 5.2.3 to 5.2.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-26 06:40:31 +09:00
dd53bf7e51 Bump html-minifier from 3.5.20 to 3.5.21 (#3015)
Bumps [html-minifier](https://github.com/kangax/html-minifier) from 3.5.20 to 3.5.21.
- [Release notes](https://github.com/kangax/html-minifier/releases)
- [Commits](https://github.com/kangax/html-minifier/compare/v3.5.20...v3.5.21)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-26 06:40:01 +09:00
35a6da26d2 Bump apexcharts from 2.1.5 to 2.1.6 (#3013)
Bumps [apexcharts](https://github.com/apexcharts/apexcharts.js) from 2.1.5 to 2.1.6.
- [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/compare/v2.1.5...v2.1.6)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-26 06:39:48 +09:00
c8c8748a0b Bump webpack from 4.23.0 to 4.23.1 (#3011)
Bumps [webpack](https://github.com/webpack/webpack) from 4.23.0 to 4.23.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.23.0...v4.23.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-26 06:38:08 +09:00
46d0065a90 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 01:01:40 +09:00
990b0180a8 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 00:51:35 +09:00
f3bfb72251 New translations ja-JP.yml (Japanese, Kansai) 2018-10-26 00:42:19 +09:00
0358a7edc6 10.32.0 2018-10-25 17:31:13 +09:00
37f99fca04 Update appveyor.yml 2018-10-25 17:25:35 +09:00
50dfc8ab82 Disable ElasticSearch in CI enviroment 2018-10-25 17:16:39 +09:00
c70c739b0c Remove some unused packages 2018-10-25 16:15:33 +09:00
5918285326 Bug fix and some refactoring 2018-10-25 16:10:48 +09:00
b1dead1186 Merge pull request #2995 from syuilo/l10n_develop
New Crowdin translations
2018-10-25 11:51:43 +09:00
3e36e132c3 New translations ja-JP.yml (English) 2018-10-25 11:51:05 +09:00
fa8d1809e7 New translations ja-JP.yml (Norwegian) 2018-10-25 11:42:18 +09:00
e12b668d04 New translations ja-JP.yml (Dutch) 2018-10-25 11:42:15 +09:00
e5506f7d8c New translations ja-JP.yml (Japanese, Kansai) 2018-10-25 11:42:11 +09:00
b1ac7e5cb3 New translations ja-JP.yml (Spanish) 2018-10-25 11:42:05 +09:00
ffd164a5f3 New translations ja-JP.yml (Russian) 2018-10-25 11:41:59 +09:00
cb27414026 New translations ja-JP.yml (Portuguese) 2018-10-25 11:41:55 +09:00
e320912f33 New translations ja-JP.yml (Polish) 2018-10-25 11:41:51 +09:00
d23aaae698 New translations ja-JP.yml (Korean) 2018-10-25 11:41:45 +09:00
120c0fe848 New translations ja-JP.yml (Italian) 2018-10-25 11:41:41 +09:00
34857b9520 New translations ja-JP.yml (German) 2018-10-25 11:41:37 +09:00
a87dcece4c New translations ja-JP.yml (French) 2018-10-25 11:41:33 +09:00
01e2479004 New translations ja-JP.yml (English) 2018-10-25 11:41:28 +09:00
0fd63fe091 New translations ja-JP.yml (Chinese Simplified) 2018-10-25 11:41:24 +09:00
cc98801c67 New translations ja-JP.yml (Catalan) 2018-10-25 11:41:15 +09:00
2724d74108 Better text 2018-10-25 11:35:55 +09:00
6d0c0d3a5f New translations ja-JP.yml (Norwegian) 2018-10-25 11:32:30 +09:00
15f8f63317 New translations ja-JP.yml (Dutch) 2018-10-25 11:32:24 +09:00
d970d65968 New translations ja-JP.yml (Japanese, Kansai) 2018-10-25 11:32:20 +09:00
04d359691b New translations ja-JP.yml (Spanish) 2018-10-25 11:32:14 +09:00
bfc519944a New translations ja-JP.yml (Russian) 2018-10-25 11:32:08 +09:00
9f69fd14a2 New translations ja-JP.yml (Portuguese) 2018-10-25 11:32:04 +09:00
85058787b2 New translations ja-JP.yml (Polish) 2018-10-25 11:31:58 +09:00
ec851623e0 New translations ja-JP.yml (Korean) 2018-10-25 11:31:52 +09:00
e05429a3ec New translations ja-JP.yml (Italian) 2018-10-25 11:31:47 +09:00
f651c41816 New translations ja-JP.yml (German) 2018-10-25 11:31:43 +09:00
6b88d99ae2 New translations ja-JP.yml (French) 2018-10-25 11:31:38 +09:00
814469cdca New translations ja-JP.yml (English) 2018-10-25 11:31:34 +09:00
536bf8f141 New translations ja-JP.yml (Chinese Simplified) 2018-10-25 11:31:28 +09:00
6a27290815 New translations ja-JP.yml (Catalan) 2018-10-25 11:31:22 +09:00
7dde3465e2 Improve drive information 2018-10-25 11:30:30 +09:00
0206a4ac83 Clean up 2018-10-25 08:42:07 +09:00
380f5a972c Implement featured note API 2018-10-25 07:04:15 +09:00
407467a236 Update Node.js to v11 2018-10-25 06:16:49 +09:00
bcfa9e18bf Update src/client/app/desktop/views/pages/deck/deck.notes.vue 2018-10-25 06:14:31 +09:00
69b730e91a Clean up 2018-10-25 06:04:06 +09:00
6c6c003d68 Bump webpack from 4.22.0 to 4.23.0 (#3007)
Bumps [webpack](https://github.com/webpack/webpack) from 4.22.0 to 4.23.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.22.0...v4.23.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-25 05:43:25 +09:00
fd652b70d6 Fix: Remove unused import 2018-10-25 05:33:40 +09:00
804a5ab6a8 Bump eslint from 5.0.1 to 5.7.0 (#3002)
Bumps [eslint](https://github.com/eslint/eslint) from 5.0.1 to 5.7.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v5.0.1...v5.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-24 19:03:33 +09:00
d984a1aa19 Bump highlight.js from 9.12.0 to 9.13.1 (#3000)
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.12.0 to 9.13.1.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/9.12.0...9.13.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-24 19:02:55 +09:00
e05b5a6ab8 Bump ts-loader from 4.4.1 to 5.2.2 (#3001)
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 4.4.1 to 5.2.2.
- [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/compare/v4.4.1...v5.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-24 19:02:22 +09:00
3ff84db421 Bump typescript from 2.9.2 to 3.1.3 (#2999)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 2.9.2 to 3.1.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v2.9.2...v3.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-24 19:00:26 +09:00
74ca73ecb4 Bump koa from 2.5.1 to 2.6.1 (#2998)
Bumps [koa](https://github.com/koajs/koa) from 2.5.1 to 2.6.1.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/compare/2.5.1...2.6.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-10-24 19:00:01 +09:00
37032f68ae Update README.md 2018-10-24 18:56:15 +09:00
21d3605737 Update appveyor.yml 2018-10-24 18:51:08 +09:00
0a7c1caf43 Update appveyor.yml 2018-10-24 18:49:56 +09:00
24b57335fa Use package-lock 2018-10-24 18:43:55 +09:00
9f981d875a Implement drive/folders/delete 2018-10-24 18:37:58 +09:00
6dcc3800e0 Improve some API definitions 2018-10-24 18:32:19 +09:00
44e9be5a1c Better default theme 🎨 2018-10-24 15:48:27 +09:00
6a8c560d21 Docker関連の修正 (#2997)
* Modify Dockerfile and docker-compose.yml

* Fix MongoDB connection error
* Use alpine-3.8 instead of alpine-edge as base image
* Modify install packages
* Modify Mongodb image tag name

* Update Docker documents

* Add 'Download misskey' paragraph

* Make redis optional for Docker
2018-10-24 14:36:42 +09:00
0afe8c6b34 New translations ja-JP.yml (English) 2018-10-24 11:31:23 +09:00
0f5d7f52a0 New translations ja-JP.yml (Norwegian) 2018-10-24 08:02:23 +09:00
aaaefa0ee2 New translations ja-JP.yml (Dutch) 2018-10-24 08:02:18 +09:00
276929bc7e New translations ja-JP.yml (Japanese, Kansai) 2018-10-24 08:02:14 +09:00
32882f1397 New translations ja-JP.yml (Spanish) 2018-10-24 08:02:10 +09:00
7dc380c485 New translations ja-JP.yml (Russian) 2018-10-24 08:02:06 +09:00
49aaa9a5d3 New translations ja-JP.yml (Portuguese) 2018-10-24 08:02:01 +09:00
84462eb3f2 New translations ja-JP.yml (Polish) 2018-10-24 08:01:57 +09:00
91709ca979 New translations ja-JP.yml (Korean) 2018-10-24 08:01:52 +09:00
9ece71e652 New translations ja-JP.yml (Italian) 2018-10-24 08:01:46 +09:00
4e93f6c6ff New translations ja-JP.yml (German) 2018-10-24 08:01:42 +09:00
ad9f1fb7c7 New translations ja-JP.yml (French) 2018-10-24 08:01:37 +09:00
abaeea6d8b New translations ja-JP.yml (English) 2018-10-24 08:01:31 +09:00
8efbcc4c6b New translations ja-JP.yml (Chinese Simplified) 2018-10-24 08:01:26 +09:00
8ef31cab8c New translations ja-JP.yml (Catalan) 2018-10-24 08:01:19 +09:00
37ae53e55c Update locales/ja-JP.yml 2018-10-24 07:52:57 +09:00
d01f06bdf4 New translations ja-JP.yml (Norwegian) 2018-10-24 06:56:47 +09:00
0d4a8d118a New translations ja-JP.yml (Dutch) 2018-10-24 06:56:42 +09:00
7e6ec83b1f New translations ja-JP.yml (Japanese, Kansai) 2018-10-24 06:56:37 +09:00
9eb515cfae New translations ja-JP.yml (Spanish) 2018-10-24 06:56:33 +09:00
d0da019a21 New translations ja-JP.yml (Russian) 2018-10-24 06:56:27 +09:00
57a13c9ad3 New translations ja-JP.yml (Portuguese) 2018-10-24 06:56:23 +09:00
7f39100634 New translations ja-JP.yml (Polish) 2018-10-24 06:56:17 +09:00
9ab96ef39a New translations ja-JP.yml (Korean) 2018-10-24 06:56:13 +09:00
ed21d797a6 New translations ja-JP.yml (Italian) 2018-10-24 06:56:08 +09:00
15960746bb New translations ja-JP.yml (German) 2018-10-24 06:56:02 +09:00
e0f1e3ca71 New translations ja-JP.yml (French) 2018-10-24 06:55:57 +09:00
51d0524182 New translations ja-JP.yml (English) 2018-10-24 06:55:53 +09:00
16801aa5c4 New translations ja-JP.yml (Chinese Simplified) 2018-10-24 06:55:49 +09:00
cd23f66834 New translations ja-JP.yml (Catalan) 2018-10-24 06:55:42 +09:00
cc5d2b2875 10.31.0 2018-10-24 06:51:45 +09:00
94ef03db9e Implement federation chart 2018-10-24 06:44:09 +09:00
038bd100b2 Implement federation chart API 2018-10-24 06:34:04 +09:00
3b5c3f086a Fix: Add missing import 2018-10-24 06:20:42 +09:00
a136715111 Implement #2993 2018-10-24 06:17:55 +09:00
daa22d68fa Make max allowed text length configurable (#2992)
* Make max allowed text length configurable

* Fix canPost
2018-10-24 04:00:04 +09:00
f24d202024 10.30.3 2018-10-23 14:52:25 +09:00
d3e0b8574b 🎨 2018-10-23 14:44:26 +09:00
f4482cc34a 🎨 2018-10-23 14:33:00 +09:00
3ff226cd6b 🎨 2018-10-23 14:28:15 +09:00
5c0d37d021 10.30.2 2018-10-23 12:59:17 +09:00
b958959cca Merge pull request #2990 from syuilo/l10n_develop
New Crowdin translations
2018-10-23 12:58:10 +09:00
762418d0fa New translations ja-JP.yml (English) 2018-10-23 12:51:51 +09:00
6831f0c192 New translations ja-JP.yml (Norwegian) 2018-10-23 12:42:47 +09:00
64635fff2d New translations ja-JP.yml (Dutch) 2018-10-23 12:42:42 +09:00
e7e861fb5c New translations ja-JP.yml (Japanese, Kansai) 2018-10-23 12:42:37 +09:00
08523ce271 New translations ja-JP.yml (Spanish) 2018-10-23 12:42:31 +09:00
833f63c1a9 New translations ja-JP.yml (Russian) 2018-10-23 12:42:26 +09:00
1c05825bc8 New translations ja-JP.yml (Portuguese) 2018-10-23 12:42:21 +09:00
26bb088a3d New translations ja-JP.yml (Polish) 2018-10-23 12:42:17 +09:00
5c361cef23 New translations ja-JP.yml (Korean) 2018-10-23 12:42:12 +09:00
04bef96aee New translations ja-JP.yml (Italian) 2018-10-23 12:42:06 +09:00
a791981da9 New translations ja-JP.yml (German) 2018-10-23 12:42:01 +09:00
264c47e07a New translations ja-JP.yml (French) 2018-10-23 12:41:55 +09:00
863c44d15c New translations ja-JP.yml (English) 2018-10-23 12:41:51 +09:00
cdec6f202e New translations ja-JP.yml (Chinese Simplified) 2018-10-23 12:41:46 +09:00
bdf6c739a9 New translations ja-JP.yml (Catalan) 2018-10-23 12:41:40 +09:00
843dd5fb58 Improve user column 2018-10-23 12:32:24 +09:00
c05853289a 10.30.1 2018-10-23 10:01:22 +09:00
11c5d257f2 ハッシュタグチャートでローカルとリモートを分離するように 2018-10-23 09:59:43 +09:00
cee1a27348 🎨 2018-10-23 09:41:28 +09:00
690dc75e45 🎨 2018-10-23 09:39:27 +09:00
8dc82b7a6e 10.30.0 2018-10-23 07:46:50 +09:00
a396b519bb Merge pull request #2988 from syuilo/l10n_develop
New Crowdin translations
2018-10-23 07:17:31 +09:00
d5f9ce0893 New translations ja-JP.yml (Norwegian) 2018-10-23 07:14:38 +09:00
c1d7ae99ab New translations ja-JP.yml (Dutch) 2018-10-23 07:14:34 +09:00
d8aee7c310 New translations ja-JP.yml (Japanese, Kansai) 2018-10-23 07:14:30 +09:00
3e43d847ca New translations ja-JP.yml (Spanish) 2018-10-23 07:14:24 +09:00
70273931b2 New translations ja-JP.yml (Russian) 2018-10-23 07:14:18 +09:00
cc94d2acc5 New translations ja-JP.yml (Portuguese) 2018-10-23 07:14:13 +09:00
327d9702ca New translations ja-JP.yml (Polish) 2018-10-23 07:14:08 +09:00
1cdb285fe6 New translations ja-JP.yml (Korean) 2018-10-23 07:14:03 +09:00
e9e61e3034 New translations ja-JP.yml (Italian) 2018-10-23 07:13:56 +09:00
b613a51035 New translations ja-JP.yml (German) 2018-10-23 07:13:52 +09:00
63e62ecb02 New translations ja-JP.yml (French) 2018-10-23 07:13:47 +09:00
d11122af3f New translations ja-JP.yml (English) 2018-10-23 07:13:43 +09:00
e8ddb7f6ee New translations ja-JP.yml (Chinese Simplified) 2018-10-23 07:13:39 +09:00
5ad0a158bc New translations ja-JP.yml (Catalan) 2018-10-23 07:13:34 +09:00
e3ea29a8b6 fix(package): update systeminformation to version 3.45.9 (#2987)
Closes #2986
2018-10-23 07:12:27 +09:00
ead201ac3d More missing i18n stuff (#2981)
* More missing i18n stuff

Not tested, please check before merege

* Add missing colons

* Revert some changes
2018-10-23 07:11:56 +09:00
19af2d7a7b Implement #2983 2018-10-23 07:04:00 +09:00
8ba87443ca Use camelCase instead of snake_case 2018-10-23 07:01:43 +09:00
162ace2fd6 Improve some API definitions 2018-10-23 06:59:52 +09:00
f51fdc0dbf Update src/client/app/desktop/views/pages/deck/deck.user-column.vue 2018-10-23 06:49:23 +09:00
d3d612a89b Resolve #2978 2018-10-23 06:47:06 +09:00
7c7f32d9a6 Refactoring 2018-10-23 05:36:35 +09:00
c8b6b6e44f fix(package): update file-type to version 10.1.0 (#2984) 2018-10-23 04:51:47 +09:00
12daa80071 Fix build error for Docker (#2982) 2018-10-23 04:39:00 +09:00
2f8cc36d4b Complement file extension from MIME (#2979) 2018-10-23 04:37:37 +09:00
1af4f94338 Implement #2961 2018-10-22 22:00:54 +09:00
172a0a85aa Show chart in user column 2018-10-22 22:00:32 +09:00
d37c06884d 🎨 2018-10-22 20:06:55 +09:00
80e52c57e1 Fix #2958 2018-10-22 18:23:20 +09:00
213a7f137e 🎨 2018-10-22 18:19:25 +09:00
4848b71ca0 Update src/docs/stream.ja-JP.md 2018-10-22 18:08:26 +09:00
13bad106cc Implement some chart APIs 2018-10-22 17:37:55 +09:00
3bebf82501 Implement #2980 2018-10-22 17:36:36 +09:00
e9a8090d7e Refactor 2018-10-22 17:13:06 +09:00
e2a79abbe0 Doc: Better parameter description 2018-10-22 17:06:53 +09:00
d7f57a4415 Improve usability 2018-10-22 16:58:22 +09:00
9dd5ed7f1a Refactor 2018-10-22 16:51:45 +09:00
432e18a0c0 Update doc 2018-10-22 11:59:15 +09:00
9a2d435cb1 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-22 10:23:20 +09:00
b02274c178 Use router-link instead of a to improve usability 2018-10-22 10:22:07 +09:00
91408bceb1 Merge pull request #2960 from syuilo/l10n_develop
New Crowdin translations
2018-10-22 09:29:53 +09:00
e1fd7e3f0c New translations ja-JP.yml (English) 2018-10-22 06:01:16 +09:00
d18498cb6b New translations ja-JP.yml (German) 2018-10-22 05:51:47 +09:00
b3986b8963 New translations ja-JP.yml (English) 2018-10-22 05:51:43 +09:00
75e3d6f7fb New translations ja-JP.yml (English) 2018-10-22 05:31:54 +09:00
ded78aa294 New translations ja-JP.yml (Norwegian) 2018-10-22 05:23:02 +09:00
58e8938364 New translations ja-JP.yml (Dutch) 2018-10-22 05:22:57 +09:00
6e8e6c7352 New translations ja-JP.yml (Japanese, Kansai) 2018-10-22 05:22:53 +09:00
270de03646 New translations ja-JP.yml (Spanish) 2018-10-22 05:22:48 +09:00
b6c7ff109b New translations ja-JP.yml (Russian) 2018-10-22 05:22:43 +09:00
9b72a5a46d New translations ja-JP.yml (Portuguese) 2018-10-22 05:22:39 +09:00
626e06c5fd New translations ja-JP.yml (Polish) 2018-10-22 05:22:35 +09:00
b09d10ac52 New translations ja-JP.yml (Korean) 2018-10-22 05:22:30 +09:00
d1568cda19 New translations ja-JP.yml (Italian) 2018-10-22 05:22:25 +09:00
3400b4fa0d New translations ja-JP.yml (German) 2018-10-22 05:22:20 +09:00
4455f110b1 New translations ja-JP.yml (French) 2018-10-22 05:22:16 +09:00
25fc37449b New translations ja-JP.yml (English) 2018-10-22 05:22:11 +09:00
e5ffc7c492 New translations ja-JP.yml (Chinese Simplified) 2018-10-22 05:22:08 +09:00
5c118e6d8a New translations ja-JP.yml (Catalan) 2018-10-22 05:22:02 +09:00
b49c70e67e Update locales/ja-JP.yml 2018-10-22 05:18:05 +09:00
3760fdeed0 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-22 05:16:42 +09:00
3aece449e4 Improve API definitions 2018-10-22 05:16:27 +09:00
dcd2d8be77 New translations ja-JP.yml (Norwegian) 2018-10-22 05:12:54 +09:00
b90e6f9abb New translations ja-JP.yml (Dutch) 2018-10-22 05:12:49 +09:00
d984652aa1 New translations ja-JP.yml (Japanese, Kansai) 2018-10-22 05:12:45 +09:00
f176de6d2e New translations ja-JP.yml (Spanish) 2018-10-22 05:12:39 +09:00
ef31efabb2 New translations ja-JP.yml (Russian) 2018-10-22 05:12:35 +09:00
53763acb76 New translations ja-JP.yml (Portuguese) 2018-10-22 05:12:30 +09:00
6f39010133 New translations ja-JP.yml (Polish) 2018-10-22 05:12:24 +09:00
04b5fe6af4 New translations ja-JP.yml (Korean) 2018-10-22 05:12:19 +09:00
626f43f424 New translations ja-JP.yml (Italian) 2018-10-22 05:12:14 +09:00
bebcc72deb New translations ja-JP.yml (German) 2018-10-22 05:12:08 +09:00
9f285779ec New translations ja-JP.yml (French) 2018-10-22 05:12:04 +09:00
57d3e9fc32 New translations ja-JP.yml (English) 2018-10-22 05:12:00 +09:00
84cf09c1d0 New translations ja-JP.yml (Chinese Simplified) 2018-10-22 05:11:56 +09:00
0848bad960 New translations ja-JP.yml (Catalan) 2018-10-22 05:11:52 +09:00
c1b13c3b5b #2939 part 4 (#2977) 2018-10-22 05:04:33 +09:00
8abc4ed65a New translations ja-JP.yml (Norwegian) 2018-10-22 05:03:14 +09:00
0eebe620cb New translations ja-JP.yml (Dutch) 2018-10-22 05:03:10 +09:00
62a0d87795 New translations ja-JP.yml (Japanese, Kansai) 2018-10-22 05:03:06 +09:00
8318633749 New translations ja-JP.yml (Spanish) 2018-10-22 05:03:01 +09:00
a453f8aa2e New translations ja-JP.yml (Russian) 2018-10-22 05:02:57 +09:00
54d2b90c25 New translations ja-JP.yml (Portuguese) 2018-10-22 05:02:53 +09:00
7e1865984d New translations ja-JP.yml (Polish) 2018-10-22 05:02:48 +09:00
a2c56cc112 New translations ja-JP.yml (Korean) 2018-10-22 05:02:43 +09:00
5c0ee8ca48 New translations ja-JP.yml (Italian) 2018-10-22 05:02:38 +09:00
7397b2b82b New translations ja-JP.yml (German) 2018-10-22 05:02:33 +09:00
ddcbe21ce6 New translations ja-JP.yml (French) 2018-10-22 05:02:27 +09:00
8fc7d1377d New translations ja-JP.yml (English) 2018-10-22 05:02:22 +09:00
092403f362 New translations ja-JP.yml (Chinese Simplified) 2018-10-22 05:02:18 +09:00
bb179922b9 New translations ja-JP.yml (Catalan) 2018-10-22 05:02:13 +09:00
c29f912461 #2939 part 3 (#2976) 2018-10-22 04:59:27 +09:00
83d3e1cfe6 #2939 part 2 (#2975)
I hope it's correct
2018-10-22 04:58:18 +09:00
2914f0f65d #2939 (#2974) 2018-10-22 04:47:12 +09:00
99aa588ae7 Implement per user drive stats 2018-10-22 04:44:10 +09:00
0085e1f3ab Fix bug 2018-10-22 04:36:57 +09:00
53a9eb13f8 Fix bug 2018-10-22 04:31:45 +09:00
b8c56c4dda Implemet per user notes stats 2018-10-22 04:30:27 +09:00
59266b3190 Fix bug 2018-10-22 03:41:50 +09:00
0dc94547f5 Fix bug 2018-10-22 03:34:56 +09:00
29fc6de330 Refactor 2018-10-22 03:30:45 +09:00
e24d0c40cd fix(package): update webpack to version 4.22.0 (#2969) 2018-10-22 02:28:08 +09:00
e95845777a Fix og:image on user page (#2972) 2018-10-22 02:27:45 +09:00
167648f61c Use thumbnail instead of original in photo-stream (#2971) 2018-10-22 02:27:23 +09:00
9e6d6ff0dd New translations ja-JP.yml (English) 2018-10-21 22:01:18 +09:00
e659cc3d58 New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 21:41:24 +09:00
ff6d45571a New translations ja-JP.yml (English) 2018-10-21 21:41:20 +09:00
6cc9a2c945 New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 21:31:16 +09:00
a873401bd7 New translations ja-JP.yml (English) 2018-10-21 21:31:11 +09:00
6b19745241 New translations ja-JP.yml (English) 2018-10-21 20:02:04 +09:00
982fae80aa New translations ja-JP.yml (English) 2018-10-21 19:21:37 +09:00
77b15a3535 Update stats.ts 2018-10-21 18:43:45 +09:00
72754ede4e Fix several file processings (#2968)
* Ignore image error in person

* Fix hang while processing empty file
2018-10-21 18:35:36 +09:00
b8ed8336e0 Improve readability 2018-10-21 17:58:02 +09:00
13f82856f9 Implement following stats 2018-10-21 17:51:35 +09:00
a62013f54d Refactor 2018-10-21 17:28:27 +09:00
4c180869c6 Imprement hashtag stats 2018-10-21 16:54:07 +09:00
7bbf022978 Refactor 2018-10-21 16:18:02 +09:00
6b0d48423d Refactor 2018-10-21 15:08:07 +09:00
a617b8dbed Refactor 2018-10-21 14:53:04 +09:00
c57f472caf Improve readability 2018-10-21 14:47:44 +09:00
e1ba19fd7e Improve readability 2018-10-21 14:44:37 +09:00
1bf8cbeb29 Clean up 2018-10-21 14:15:02 +09:00
f13faf2243 Refactoring & Better stats aggregation 2018-10-21 14:08:05 +09:00
6cccd9d288 Implement unique incremebt 2018-10-21 12:37:00 +09:00
be2cde106b Update stats.ts 2018-10-21 10:35:37 +09:00
17263fb459 ✌️ 2018-10-21 10:24:56 +09:00
fed04ef5ae Reduce network traffic of API response 2018-10-21 10:05:15 +09:00
969b6dbcad Resolve #2963 2018-10-21 09:20:11 +09:00
aa50d0ee11 🎨 2018-10-21 08:47:34 +09:00
f09999ad5a Update README.md (#2965)
Improve instructions documentation.
2018-10-21 07:45:35 +09:00
35814faf8a Update user.header.vue (#2964)
Use new birthday translations in user.header.vue
2018-10-21 07:34:50 +09:00
8447a7fafa New translations ja-JP.yml (Norwegian) 2018-10-21 07:32:08 +09:00
c6e6c5e3ce New translations ja-JP.yml (Dutch) 2018-10-21 07:32:02 +09:00
85cbd8dd47 New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 07:31:58 +09:00
bebc9003a3 New translations ja-JP.yml (Spanish) 2018-10-21 07:31:53 +09:00
3c081fbd65 New translations ja-JP.yml (Russian) 2018-10-21 07:31:49 +09:00
fdcf874306 New translations ja-JP.yml (Portuguese) 2018-10-21 07:31:44 +09:00
6cbb741fa1 New translations ja-JP.yml (Polish) 2018-10-21 07:31:41 +09:00
24129c1cb9 New translations ja-JP.yml (Korean) 2018-10-21 07:31:37 +09:00
f0938c36f5 New translations ja-JP.yml (Italian) 2018-10-21 07:31:33 +09:00
484a6eda2e New translations ja-JP.yml (German) 2018-10-21 07:31:27 +09:00
3f2ebffbe7 New translations ja-JP.yml (French) 2018-10-21 07:31:23 +09:00
ff278a7d8f New translations ja-JP.yml (English) 2018-10-21 07:31:19 +09:00
844a3c3aff New translations ja-JP.yml (Chinese Simplified) 2018-10-21 07:31:16 +09:00
0db48993e9 New translations ja-JP.yml (Catalan) 2018-10-21 07:31:10 +09:00
81e21c4314 Birthday translations (#2962)
Add language terms for birthday years, months, days, years old.
2018-10-21 07:24:28 +09:00
ba0e57396d Refactoring 2018-10-21 07:10:35 +09:00
6a728d160a New translations ja-JP.yml (Norwegian) 2018-10-21 04:12:12 +09:00
180e507bc8 New translations ja-JP.yml (Dutch) 2018-10-21 04:12:09 +09:00
f3b7611ded New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 04:12:04 +09:00
c344de5546 New translations ja-JP.yml (Spanish) 2018-10-21 04:11:59 +09:00
0bd0aa2bf7 New translations ja-JP.yml (Russian) 2018-10-21 04:11:53 +09:00
c786cbb3a1 New translations ja-JP.yml (Portuguese) 2018-10-21 04:11:48 +09:00
cd856f653d New translations ja-JP.yml (Polish) 2018-10-21 04:11:44 +09:00
d528c09da6 New translations ja-JP.yml (Korean) 2018-10-21 04:11:40 +09:00
76b7ad006d New translations ja-JP.yml (Italian) 2018-10-21 04:11:36 +09:00
ff33e405a3 New translations ja-JP.yml (German) 2018-10-21 04:11:33 +09:00
f74de26d63 New translations ja-JP.yml (French) 2018-10-21 04:11:29 +09:00
2c823798d8 New translations ja-JP.yml (English) 2018-10-21 04:11:24 +09:00
381e261bbb New translations ja-JP.yml (Chinese Simplified) 2018-10-21 04:11:20 +09:00
ba9bb5db6c New translations ja-JP.yml (Catalan) 2018-10-21 04:11:15 +09:00
cd12bb33a5 Fix: Remove duplicated key 2018-10-21 04:01:35 +09:00
e333aee232 New translations ja-JP.yml (Norwegian) 2018-10-21 03:02:48 +09:00
54571f60c3 New translations ja-JP.yml (Dutch) 2018-10-21 03:02:45 +09:00
dd743aaeac New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 03:02:41 +09:00
22c76dc9f8 New translations ja-JP.yml (Spanish) 2018-10-21 03:02:35 +09:00
7c7e09cf64 New translations ja-JP.yml (Russian) 2018-10-21 03:02:31 +09:00
e5e3d69371 New translations ja-JP.yml (Portuguese) 2018-10-21 03:02:27 +09:00
82a700b24e New translations ja-JP.yml (Polish) 2018-10-21 03:02:24 +09:00
0579425a4f New translations ja-JP.yml (Korean) 2018-10-21 03:02:18 +09:00
218e74569d New translations ja-JP.yml (Italian) 2018-10-21 03:02:14 +09:00
448f54cf84 New translations ja-JP.yml (German) 2018-10-21 03:02:09 +09:00
c139e13049 New translations ja-JP.yml (French) 2018-10-21 03:02:05 +09:00
65116fef32 New translations ja-JP.yml (English) 2018-10-21 03:02:00 +09:00
a0a35b7dca New translations ja-JP.yml (Chinese Simplified) 2018-10-21 03:01:56 +09:00
11fb8a24b7 New translations ja-JP.yml (Catalan) 2018-10-21 03:01:50 +09:00
512336685c Localized dev/views/new-app.vue (#2959)
* Localized read-all message

* Fixed some weirdness:   src/client/app/init.ts

* Unfucked server api stuff (sorry lol):   src/server/api/endpoints/i/read_all_unread_notes.ts

* Clean up

* Added localization lines to:   locales/ja-JP.yml
Localized:   src/client/app/dev/views/apps.vue

* Fix potential error:   src/client/app/dev/views/apps.vue

* Added relevant localization lines:   locales/ja-JP.yml
Localized:   src/client/app/dev/views/new-app.vue
2018-10-21 03:01:09 +09:00
484f281c19 10.29.1 2018-10-21 00:33:37 +09:00
2169bc5d3e Merge pull request #2955 from syuilo/l10n_develop
New Crowdin translations
2018-10-21 00:33:00 +09:00
c653c84ad2 New translations ja-JP.yml (English) 2018-10-21 00:31:04 +09:00
050f75aa60 New translations ja-JP.yml (Norwegian) 2018-10-21 00:22:05 +09:00
dae3f3552a New translations ja-JP.yml (Dutch) 2018-10-21 00:22:02 +09:00
8b09b170d6 New translations ja-JP.yml (Japanese, Kansai) 2018-10-21 00:21:58 +09:00
ec88f2ed8a New translations ja-JP.yml (Spanish) 2018-10-21 00:21:53 +09:00
607d8502ff New translations ja-JP.yml (Russian) 2018-10-21 00:21:49 +09:00
2f084d7c15 New translations ja-JP.yml (Portuguese) 2018-10-21 00:21:45 +09:00
5bf6e7d8f9 New translations ja-JP.yml (Polish) 2018-10-21 00:21:41 +09:00
31cb9fbfaf New translations ja-JP.yml (Korean) 2018-10-21 00:21:37 +09:00
c7c48f3bea New translations ja-JP.yml (Italian) 2018-10-21 00:21:33 +09:00
6732d22e6c New translations ja-JP.yml (German) 2018-10-21 00:21:29 +09:00
04c6b7fe31 New translations ja-JP.yml (French) 2018-10-21 00:21:25 +09:00
2687879dbd New translations ja-JP.yml (English) 2018-10-21 00:21:21 +09:00
20a660fa89 New translations ja-JP.yml (Chinese Simplified) 2018-10-21 00:21:16 +09:00
ba9781e1a8 New translations ja-JP.yml (Catalan) 2018-10-21 00:21:12 +09:00
f65ac74914 i18n 2018-10-21 00:18:01 +09:00
6c33d9aeed 🎨 2018-10-20 23:44:35 +09:00
68e86ad40d Fix bug 2018-10-20 23:43:42 +09:00
0aa4aa49a7 New translations ja-JP.yml (Dutch) 2018-10-20 20:21:32 +09:00
0ff3846e49 New translations ja-JP.yml (Portuguese) 2018-10-20 20:21:28 +09:00
bfb81299c3 New translations ja-JP.yml (Polish) 2018-10-20 20:21:24 +09:00
0362a8e73c New translations ja-JP.yml (English) 2018-10-20 20:21:19 +09:00
f00f5cbed1 10.29.0 2018-10-20 15:51:47 +09:00
c4e8cabae9 ファイル作成APIにforceオプションを実装 2018-10-20 15:50:13 +09:00
1729d05e8c Localized mark all as read message (#2956)
* Localized read-all message

* Fixed some weirdness:   src/client/app/init.ts

* Unfucked server api stuff (sorry lol):   src/server/api/endpoints/i/read_all_unread_notes.ts

* Clean up
2018-10-20 15:46:01 +09:00
770fb46ca7 Improve usability 2018-10-20 15:41:27 +09:00
a3c4e54bc0 🎨 2018-10-20 15:37:17 +09:00
b8a77fbada Show image info in tooltip 2018-10-20 15:21:24 +09:00
9182ebfc19 New translations ja-JP.yml (Norwegian) 2018-10-20 12:04:11 +09:00
25c0cf5848 New translations ja-JP.yml (Dutch) 2018-10-20 12:04:06 +09:00
a160dc0a4d New translations ja-JP.yml (Japanese, Kansai) 2018-10-20 12:04:01 +09:00
28f1ca9c17 New translations ja-JP.yml (Spanish) 2018-10-20 12:03:55 +09:00
6399a0f046 New translations ja-JP.yml (Russian) 2018-10-20 12:03:49 +09:00
639413608b New translations ja-JP.yml (Portuguese) 2018-10-20 12:03:44 +09:00
c14e4c7d22 New translations ja-JP.yml (Polish) 2018-10-20 12:03:40 +09:00
c74ac64237 New translations ja-JP.yml (Korean) 2018-10-20 12:03:36 +09:00
4b3289ed99 New translations ja-JP.yml (Italian) 2018-10-20 12:03:31 +09:00
0c432b39dc New translations ja-JP.yml (German) 2018-10-20 12:03:27 +09:00
c4b9276713 New translations ja-JP.yml (French) 2018-10-20 12:03:22 +09:00
df300c0663 New translations ja-JP.yml (English) 2018-10-20 12:03:17 +09:00
518114cbbd New translations ja-JP.yml (Chinese Simplified) 2018-10-20 12:03:12 +09:00
999f0e4d58 New translations ja-JP.yml (Catalan) 2018-10-20 12:03:08 +09:00
c2663529c1 Localized BSoD messages. (#2953)
* Added VSCode workspace files to :   .gitignore

* Localized Blue Screen of Death:   locales/ja-JP.yml
Localized Blue Screen of Death:   src/client/app/init.ts
2018-10-20 11:57:23 +09:00
9df74a02b6 Fix bug 2018-10-20 11:24:02 +09:00
71c9964e19 Fix bug and clean up 2018-10-20 11:19:27 +09:00
ae2e47f6a9 Merge pull request #2950 from syuilo/l10n_develop
New Crowdin translations
2018-10-20 09:45:44 +09:00
1524d35f66 New translations ja-JP.yml (English) 2018-10-20 09:41:11 +09:00
845be966a0 10.28.0 2018-10-20 09:39:56 +09:00
80818d79eb Fix bug 2018-10-20 09:38:36 +09:00
cb9b3c00dd Use router-link instead of a to improve usability 2018-10-20 09:34:34 +09:00
b3997fb5df New translations ja-JP.yml (Norwegian) 2018-10-20 09:33:07 +09:00
09dde6b78a New translations ja-JP.yml (Dutch) 2018-10-20 09:32:57 +09:00
3345d3ab35 New translations ja-JP.yml (Japanese, Kansai) 2018-10-20 09:32:51 +09:00
366be7bbdd New translations ja-JP.yml (Spanish) 2018-10-20 09:32:47 +09:00
7008ea66f8 New translations ja-JP.yml (Russian) 2018-10-20 09:32:43 +09:00
70f881e989 New translations ja-JP.yml (Portuguese) 2018-10-20 09:32:38 +09:00
94d2355089 New translations ja-JP.yml (Polish) 2018-10-20 09:32:33 +09:00
dfbe48b25b New translations ja-JP.yml (Korean) 2018-10-20 09:32:29 +09:00
931cb38b54 New translations ja-JP.yml (Italian) 2018-10-20 09:32:23 +09:00
e5fd34f94e New translations ja-JP.yml (German) 2018-10-20 09:32:17 +09:00
c638d7eb48 New translations ja-JP.yml (French) 2018-10-20 09:32:12 +09:00
7e96384618 New translations ja-JP.yml (English) 2018-10-20 09:32:08 +09:00
829cb99f5b New translations ja-JP.yml (Chinese Simplified) 2018-10-20 09:32:04 +09:00
1f93c99304 New translations ja-JP.yml (Catalan) 2018-10-20 09:32:00 +09:00
dbb7c756cd Fix bug 2018-10-20 09:31:56 +09:00
13f381710c Validate param 2018-10-20 09:31:52 +09:00
70897c0e9a 🎨 2018-10-20 09:28:48 +09:00
f51d1c5264 Fix test 2018-10-20 09:14:16 +09:00
70d0937aab Fix #2949 2018-10-20 09:03:04 +09:00
7d1ab6102f 10.27.0 2018-10-20 08:04:52 +09:00
77ddd778be ハッシュタグもデッキ内ナビゲーションするように 2018-10-20 08:03:45 +09:00
890ecb693f Improve 2018-10-20 07:28:01 +09:00
209fe7dcaf Improve deck usability 2018-10-20 07:21:22 +09:00
e0d6f7c7c4 RP --> RN 2018-10-20 07:01:09 +09:00
5d3fe9599b Improve performance 2018-10-20 06:42:19 +09:00
0fe0b6d254 10.26.0 2018-10-20 02:52:11 +09:00
b794216eaf Merge pull request #2940 from syuilo/l10n_develop
New Crowdin translations
2018-10-20 02:51:43 +09:00
1fccde38f6 デッキのキーボードショートカットを強化 2018-10-20 02:49:39 +09:00
41bd436d3e デッキのキーボードショートカットを強化 2018-10-20 02:40:37 +09:00
c66155ed48 Improve shortcut key detection 2018-10-20 01:45:31 +09:00
627bd410fa New translations ja-JP.yml (German) 2018-10-19 22:22:36 +09:00
41a3932c6b New translations ja-JP.yml (English) 2018-10-19 22:12:39 +09:00
785b8d7846 New translations ja-JP.yml (French) 2018-10-19 21:02:41 +09:00
622c8f9598 New translations ja-JP.yml (French) 2018-10-19 20:52:24 +09:00
ef978a6364 10.25.0 2018-10-19 15:07:46 +09:00
d95fbe1c6b fix(package): update reconnecting-websocket to version 4.1.10 (#2937) 2018-10-19 15:04:46 +09:00
d4ffddc2ab Merge pull request #2936 from syuilo/l10n_develop
New Crowdin translations
2018-10-19 15:04:36 +09:00
3d497cedfc デッキで'T'のショートカットを使えるように 2018-10-19 15:03:23 +09:00
e8de29ae79 Resolve #2935 2018-10-19 14:34:51 +09:00
b622946844 10.24.0 2018-10-19 11:14:27 +09:00
d013f78cc7 New translations ja-JP.yml (Norwegian) 2018-10-19 11:12:15 +09:00
2afbafdb3b New translations ja-JP.yml (Dutch) 2018-10-19 11:12:11 +09:00
67148114a8 New translations ja-JP.yml (Japanese, Kansai) 2018-10-19 11:12:05 +09:00
7903140ec2 New translations ja-JP.yml (Spanish) 2018-10-19 11:12:01 +09:00
cefd296200 New translations ja-JP.yml (Russian) 2018-10-19 11:11:55 +09:00
99d1c15851 New translations ja-JP.yml (Portuguese) 2018-10-19 11:11:51 +09:00
a3107ab26f New translations ja-JP.yml (Polish) 2018-10-19 11:11:46 +09:00
854cfae75b New translations ja-JP.yml (Korean) 2018-10-19 11:11:42 +09:00
36ab82957d New translations ja-JP.yml (Italian) 2018-10-19 11:11:36 +09:00
de9f54386c New translations ja-JP.yml (German) 2018-10-19 11:11:32 +09:00
7f43820765 New translations ja-JP.yml (French) 2018-10-19 11:11:28 +09:00
955e907e7f New translations ja-JP.yml (English) 2018-10-19 11:11:24 +09:00
4c18022e7d New translations ja-JP.yml (Chinese Simplified) 2018-10-19 11:11:20 +09:00
509f59e46d New translations ja-JP.yml (Catalan) 2018-10-19 11:11:16 +09:00
f14c372f5e Resolve #2719 2018-10-19 11:10:49 +09:00
f028800a96 10.23.1 2018-10-19 10:26:16 +09:00
8a1ce7a4f3 Merge pull request #2934 from syuilo/l10n_develop
New Crowdin translations
2018-10-19 10:25:19 +09:00
ea7a139ae0 New translations ja-JP.yml (English) 2018-10-19 10:21:31 +09:00
63959eb3da New translations ja-JP.yml (Norwegian) 2018-10-19 10:12:38 +09:00
a6adbc4e56 New translations ja-JP.yml (Dutch) 2018-10-19 10:12:33 +09:00
b418cb67ba New translations ja-JP.yml (Japanese, Kansai) 2018-10-19 10:12:29 +09:00
0ccc360c0a New translations ja-JP.yml (Spanish) 2018-10-19 10:12:24 +09:00
1e0dda3c40 New translations ja-JP.yml (Russian) 2018-10-19 10:12:20 +09:00
9197793bc8 New translations ja-JP.yml (Portuguese) 2018-10-19 10:12:16 +09:00
29f62241bc New translations ja-JP.yml (Polish) 2018-10-19 10:12:12 +09:00
8de1e91dec New translations ja-JP.yml (Korean) 2018-10-19 10:12:08 +09:00
de822a22d4 New translations ja-JP.yml (Italian) 2018-10-19 10:12:05 +09:00
f2cef456bd New translations ja-JP.yml (German) 2018-10-19 10:11:59 +09:00
5d681d0fd6 New translations ja-JP.yml (French) 2018-10-19 10:11:55 +09:00
2ed24ebd75 New translations ja-JP.yml (English) 2018-10-19 10:11:51 +09:00
6e6824ecb0 New translations ja-JP.yml (Chinese Simplified) 2018-10-19 10:11:47 +09:00
0504a4f659 New translations ja-JP.yml (Catalan) 2018-10-19 10:11:42 +09:00
9a261755d2 Fix key 2018-10-19 10:05:30 +09:00
8533663b26 ✌️ 2018-10-19 09:20:11 +09:00
0a4015b8a2 Refactoring 2018-10-19 09:19:55 +09:00
dcfe56322e New translations ja-JP.yml (Norwegian) 2018-10-19 07:12:41 +09:00
d00a693026 New translations ja-JP.yml (Dutch) 2018-10-19 07:12:35 +09:00
fb36ecad70 New translations ja-JP.yml (Japanese, Kansai) 2018-10-19 07:12:32 +09:00
26c39768ca New translations ja-JP.yml (Spanish) 2018-10-19 07:12:28 +09:00
df8abcfce8 New translations ja-JP.yml (Russian) 2018-10-19 07:12:24 +09:00
e3aab0e9e3 New translations ja-JP.yml (Portuguese) 2018-10-19 07:12:18 +09:00
e3dfc49ed0 New translations ja-JP.yml (Polish) 2018-10-19 07:12:14 +09:00
8485284f63 New translations ja-JP.yml (Korean) 2018-10-19 07:12:10 +09:00
e549e19c03 New translations ja-JP.yml (Italian) 2018-10-19 07:12:06 +09:00
2ace47cbb9 New translations ja-JP.yml (German) 2018-10-19 07:12:02 +09:00
dc184e7bc9 New translations ja-JP.yml (French) 2018-10-19 07:11:57 +09:00
aef1bd094b New translations ja-JP.yml (English) 2018-10-19 07:11:53 +09:00
4f8b22f53b New translations ja-JP.yml (Chinese Simplified) 2018-10-19 07:11:48 +09:00
0f3cbafe91 New translations ja-JP.yml (Catalan) 2018-10-19 07:11:44 +09:00
16ad232c40 10.23.0 2018-10-19 07:06:41 +09:00
4d235a2be5 Merge pull request #2931 from syuilo/l10n_develop
New Crowdin translations
2018-10-19 07:05:44 +09:00
aadf6fa9b1 UI整理 2018-10-19 07:03:29 +09:00
a72e9bc8b2 New translations ja-JP.yml (English) 2018-10-19 07:02:12 +09:00
f11ef93a81 🎨 2018-10-19 06:57:57 +09:00
9136556218 New translations ja-JP.yml (Norwegian) 2018-10-19 06:52:58 +09:00
3ead008295 New translations ja-JP.yml (Dutch) 2018-10-19 06:52:54 +09:00
9ff5693442 New translations ja-JP.yml (Japanese, Kansai) 2018-10-19 06:52:48 +09:00
ac84b42394 New translations ja-JP.yml (Spanish) 2018-10-19 06:52:44 +09:00
a79361c71f New translations ja-JP.yml (Russian) 2018-10-19 06:52:38 +09:00
85e17d5dc7 New translations ja-JP.yml (Portuguese) 2018-10-19 06:52:35 +09:00
45493fd093 New translations ja-JP.yml (Polish) 2018-10-19 06:52:29 +09:00
6f987a2391 New translations ja-JP.yml (Korean) 2018-10-19 06:52:24 +09:00
ddf785a393 New translations ja-JP.yml (Italian) 2018-10-19 06:52:18 +09:00
b8e20fe717 New translations ja-JP.yml (German) 2018-10-19 06:52:15 +09:00
82555bf9b6 New translations ja-JP.yml (French) 2018-10-19 06:52:11 +09:00
ffe6f6c168 New translations ja-JP.yml (English) 2018-10-19 06:52:05 +09:00
6b11f5bb7d New translations ja-JP.yml (Chinese Simplified) 2018-10-19 06:52:01 +09:00
1a65d14864 New translations ja-JP.yml (Catalan) 2018-10-19 06:51:57 +09:00
6c1f1ffdb1 デッキのカラムを左揃えか中央揃えか選べるように 2018-10-19 06:47:55 +09:00
61cdbd5dd2 New translations ja-JP.yml (English) 2018-10-19 06:41:45 +09:00
e7e321e2b3 fix(package): update vue-sweetalert2 to version 1.5.6 (#2932) 2018-10-19 06:38:46 +09:00
fb5f6fdc10 未読の投稿をすべて既読にできるように 2018-10-19 06:36:59 +09:00
00290fbf75 Fix bug 2018-10-19 06:29:25 +09:00
ff02dc723b 🎨 2018-10-19 06:24:15 +09:00
67521c0d2a New translations ja-JP.yml (Norwegian) 2018-10-19 06:23:12 +09:00
da8765150b New translations ja-JP.yml (Dutch) 2018-10-19 06:23:06 +09:00
ea7f51bc12 New translations ja-JP.yml (Japanese, Kansai) 2018-10-19 06:23:02 +09:00
1b34b3b7e2 New translations ja-JP.yml (Spanish) 2018-10-19 06:22:59 +09:00
bca4ceb7ae New translations ja-JP.yml (Russian) 2018-10-19 06:22:53 +09:00
5648cd53d0 New translations ja-JP.yml (Portuguese) 2018-10-19 06:22:49 +09:00
8dab37539f New translations ja-JP.yml (Polish) 2018-10-19 06:22:45 +09:00
2dd42c0061 New translations ja-JP.yml (Korean) 2018-10-19 06:22:39 +09:00
dfafed504a New translations ja-JP.yml (Italian) 2018-10-19 06:22:35 +09:00
9fcd2bcb0a New translations ja-JP.yml (German) 2018-10-19 06:22:29 +09:00
4c701b91a6 New translations ja-JP.yml (French) 2018-10-19 06:22:25 +09:00
84f7aa6d09 New translations ja-JP.yml (English) 2018-10-19 06:22:21 +09:00
82f0c64dee New translations ja-JP.yml (Chinese Simplified) 2018-10-19 06:22:18 +09:00
4b7c6b124b New translations ja-JP.yml (Catalan) 2018-10-19 06:22:14 +09:00
e043b678d4 i18n 2018-10-19 06:21:11 +09:00
fef4f7fce8 #2930 (#2933)
* wip

* wip

* Clean up

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* 🎨

* wip

* wip
2018-10-19 06:18:33 +09:00
9732b3521a New translations ja-JP.yml (French) 2018-10-18 07:13:01 +09:00
a59fcc4aec New translations ja-JP.yml (French) 2018-10-18 07:03:14 +09:00
979e1e78fb New translations ja-JP.yml (French) 2018-10-18 06:51:20 +09:00
c1a929022f Merge pull request #2929 from syuilo/l10n_develop
New Crowdin translations
2018-10-18 05:15:59 +09:00
611bb81032 Merge pull request #2928 from syuilo/greenkeeper/webpack-4.21.0
Update webpack to the latest version 🚀
2018-10-18 05:15:43 +09:00
5047020e6d New translations ja-JP.yml (German) 2018-10-18 05:12:23 +09:00
fb74a6a689 New translations ja-JP.yml (German) 2018-10-18 05:03:26 +09:00
a14a216c8d New translations ja-JP.yml (English) 2018-10-18 05:03:19 +09:00
549e212a59 New translations ja-JP.yml (English) 2018-10-18 04:52:34 +09:00
1bdc91ad47 New translations ja-JP.yml (German) 2018-10-18 04:42:28 +09:00
67f288479c New translations ja-JP.yml (English) 2018-10-18 04:42:22 +09:00
496e45c2bb New translations ja-JP.yml (German) 2018-10-18 04:32:18 +09:00
e458bd3cc7 New translations ja-JP.yml (English) 2018-10-18 04:32:12 +09:00
031911c463 New translations ja-JP.yml (German) 2018-10-18 04:21:47 +09:00
4aa7f638f9 New translations ja-JP.yml (German) 2018-10-18 04:20:03 +09:00
f6f4ea69ae fix(package): update webpack to version 4.21.0 2018-10-17 17:54:09 +00:00
ef945597f2 Merge pull request #2926 from syuilo/l10n_develop
New Crowdin translations
2018-10-17 22:43:47 +09:00
3ab4e1d368 fix(package): update showdown to version 1.8.7 (#2925) 2018-10-17 22:43:23 +09:00
c6216f5b5f fix(package): update @types/elasticsearch to version 5.0.28 (#2924) 2018-10-17 22:43:04 +09:00
4f24d58a79 Make clear elasticsearch is required and not optional for the search to work (#2927) 2018-10-17 22:42:45 +09:00
73d6e7ba66 New translations ja-JP.yml (Japanese, Kansai) 2018-10-17 13:21:23 +09:00
949707e18e New translations ja-JP.yml (Japanese, Kansai) 2018-10-17 13:12:49 +09:00
f51b299c17 10.22.1 2018-10-17 05:54:52 +09:00
d2e0faa533 Disable secure cookie 2018-10-17 05:54:31 +09:00
22015044a5 10.22.0 2018-10-17 04:17:19 +09:00
61f86dcb2b Resolve #2923
Allow option to disable sending HSTS headers even if https:// is used in url
2018-10-17 04:15:41 +09:00
8f3bce6b11 Add some messaging API tests 2018-10-17 04:01:13 +09:00
ee736e73a9 Merge pull request #2922 from syuilo/greenkeeper/reconnecting-websocket-4.1.9
Update reconnecting-websocket to the latest version 🚀
2018-10-17 03:54:08 +09:00
99f867897e fix(package): update reconnecting-websocket to version 4.1.9 2018-10-16 18:53:19 +00:00
c66c5b6e75 Fix bug 2018-10-17 03:47:32 +09:00
f25ecc19b9 🎨 2018-10-17 03:41:55 +09:00
48e09970f3 Merge pull request #2921 from syuilo/l10n_develop
New Crowdin translations
2018-10-16 22:46:43 +09:00
f05cb79604 10.21.3 2018-10-16 22:26:43 +09:00
46d3293edd Fix #2920 2018-10-16 22:21:08 +09:00
9703d613cf 10.21.2 2018-10-16 20:59:49 +09:00
704e217dbb オブジェクトストレージのURLに拡張子を含めるように 2018-10-16 20:59:36 +09:00
a103032d94 10.21.1 2018-10-16 20:34:32 +09:00
c7207a4bd7 Fix #2919 2018-10-16 20:33:13 +09:00
35c65fe589 Clean up 2018-10-16 20:29:35 +09:00
6d5bd0c484 10.21.0 2018-10-16 20:19:55 +09:00
cfbb6e8092 オブジェクトストレージのURLにファイル名を含めるのを廃止 2018-10-16 20:14:06 +09:00
feef4a933e Update src/tools/clean-remote-files.ts 2018-10-16 20:10:46 +09:00
468bc67569 Improve test 2018-10-16 19:52:14 +09:00
0d517fa52f Greenkeeper/monorepo.fortawesome 5.4.1 (#2917)
* fix(package): update @fortawesome/fontawesome-svg-core to version 1.2.6

Closes #2861

* fix(package): update @fortawesome/free-regular-svg-icons to version 5.4.1

Closes #2861

* fix(package): update @fortawesome/free-solid-svg-icons to version 5.4.1

Closes #2861
2018-10-16 12:28:45 +09:00
d9054367c1 fix(package): update @fortawesome/free-brands-svg-icons to version 5.4.1 (#2916)
Closes #2859
2018-10-16 12:27:03 +09:00
1213373027 Use cache with RSS (#2915) 2018-10-16 12:24:54 +09:00
100a525507 Update autogen.sh (#2914)
refs: 8b98c08a81 (commitcomment-30911933)
2018-10-16 11:45:11 +09:00
1bec4e2d12 10.20.0 2018-10-16 11:44:35 +09:00
03cd1d27bf New Crowdin translations (#2910)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2018-10-16 11:38:43 +09:00
9427a756c9 Update mongodb 2018-10-16 11:38:09 +09:00
d32b2a8ce5 fix(package): update @types/node to version 10.12.0 (#2912) 2018-10-16 10:46:45 +09:00
15473b4368 fix(package): update @types/webpack to version 4.4.17 (#2911) 2018-10-16 10:46:38 +09:00
54de0dc4a7 Update config for CI 2018-10-16 10:36:27 +09:00
0162eaf826 Update signin.ts 2018-10-16 10:33:05 +09:00
572cfafbe1 Add some API tests 2018-10-16 10:18:47 +09:00
4d6335ce9a Add some tests and fix 2018-10-16 09:45:36 +09:00
1c9c4af9f1 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-16 08:58:54 +09:00
a6844ebc9d Add some tests 2018-10-16 08:58:45 +09:00
072492c29b Implement /api/v1/instance/peers (#2913)
* Implement /api/v1/instance/peers

* Use punycode

* Remove Cache-Control

* Rename
2018-10-16 08:55:55 +09:00
99da4f9839 Add some tests and some fixes 2018-10-16 08:54:36 +09:00
88664486af Refactor 2018-10-16 08:27:20 +09:00
80daf7c749 Implement API tests 2018-10-16 06:37:21 +09:00
92ba64c35c New translations ja-JP.yml (German) 2018-10-16 06:11:24 +09:00
a8ee51ffd6 New translations ja-JP.yml (German) 2018-10-16 05:51:14 +09:00
5538afc61d New translations ja-JP.yml (German) 2018-10-16 05:42:36 +09:00
beb2f7e558 fix(package): update @types/sharp to version 0.21.0 (#2908) 2018-10-16 05:21:07 +09:00
6243184c95 fix(package): update @types/gulp-uglify to version 3.0.6 (#2906) 2018-10-16 05:20:57 +09:00
1b3baef966 Merge pull request #2898 from syuilo/l10n_develop
New Crowdin translations
2018-10-16 05:20:40 +09:00
98f38ee29b fix(package): update vue-svg-inline-loader to version 1.2.1 (#2909) 2018-10-16 05:20:17 +09:00
09b82bfea4 fix(package): update chart.js to version 2.7.3 (#2907) 2018-10-16 05:20:02 +09:00
937f686264 New translations ja-JP.yml (Russian) 2018-10-15 20:53:38 +09:00
9bc9cbac21 New translations ja-JP.yml (English) 2018-10-15 18:22:42 +09:00
6024550158 New translations ja-JP.yml (Norwegian) 2018-10-15 18:14:29 +09:00
4ae5f82171 New translations ja-JP.yml (Dutch) 2018-10-15 18:14:23 +09:00
6d2c9dcee9 New translations ja-JP.yml (Japanese, Kansai) 2018-10-15 18:14:18 +09:00
0f1b0e1870 New translations ja-JP.yml (Spanish) 2018-10-15 18:14:11 +09:00
81c682cdc8 New translations ja-JP.yml (Russian) 2018-10-15 18:14:05 +09:00
ab9fa67d9f New translations ja-JP.yml (Portuguese) 2018-10-15 18:14:00 +09:00
9537fce335 New translations ja-JP.yml (Polish) 2018-10-15 18:13:53 +09:00
9d97e7e348 New translations ja-JP.yml (Korean) 2018-10-15 18:13:48 +09:00
ebe7939412 New translations ja-JP.yml (Italian) 2018-10-15 18:13:43 +09:00
807e3e8ca7 New translations ja-JP.yml (German) 2018-10-15 18:13:37 +09:00
a59faf9117 New translations ja-JP.yml (French) 2018-10-15 18:13:32 +09:00
d786036155 New translations ja-JP.yml (English) 2018-10-15 18:13:25 +09:00
61d6ed5489 New translations ja-JP.yml (Chinese Simplified) 2018-10-15 18:13:21 +09:00
b38200d48a New translations ja-JP.yml (Catalan) 2018-10-15 18:13:16 +09:00
a0c396a842 10.19.0 2018-10-15 18:03:28 +09:00
88fbc53e37 Resolve #2314 2018-10-15 18:02:57 +09:00
a2206b2d52 🎨 2018-10-15 17:55:59 +09:00
a95ff447d7 🎨 2018-10-15 17:43:25 +09:00
49dbd7f9d2 Fix following from Preroma does not complete (#2905)
* In Follow Accept/Reject, send previous received id

* In Follow Accept/Reject, send Activity.actor
2018-10-15 16:51:22 +09:00
2ad2779096 10.18.0 2018-10-15 06:03:50 +09:00
23045369aa 🎨 2018-10-15 06:03:15 +09:00
116faf26e6 10.17.0 2018-10-15 05:29:58 +09:00
2582b8d132 🎨 2018-10-15 05:28:35 +09:00
63f7941073 🎨 2018-10-15 05:18:39 +09:00
676f026085 🎨 2018-10-15 04:36:31 +09:00
a13319fd86 New translations ja-JP.yml (Norwegian) 2018-10-14 19:52:13 +09:00
be8765278c New translations ja-JP.yml (Dutch) 2018-10-14 19:52:08 +09:00
c8bb3dc209 New translations ja-JP.yml (Japanese, Kansai) 2018-10-14 19:52:03 +09:00
ea16befb73 New translations ja-JP.yml (Spanish) 2018-10-14 19:51:59 +09:00
20b1bb7681 New translations ja-JP.yml (Russian) 2018-10-14 19:51:55 +09:00
bd10eb50eb New translations ja-JP.yml (Portuguese) 2018-10-14 19:51:50 +09:00
d47c0eb31a New translations ja-JP.yml (Polish) 2018-10-14 19:51:45 +09:00
177e8bb19f New translations ja-JP.yml (Korean) 2018-10-14 19:51:41 +09:00
d156111637 New translations ja-JP.yml (Italian) 2018-10-14 19:51:37 +09:00
8c13d3e50b New translations ja-JP.yml (German) 2018-10-14 19:51:33 +09:00
6ff01016f0 New translations ja-JP.yml (French) 2018-10-14 19:51:30 +09:00
5d659da012 New translations ja-JP.yml (English) 2018-10-14 19:51:26 +09:00
28e7552a1a New translations ja-JP.yml (Chinese Simplified) 2018-10-14 19:51:21 +09:00
53d264814b New translations ja-JP.yml (Catalan) 2018-10-14 19:51:15 +09:00
2d6b20d34b 10.16.0 2018-10-14 19:45:51 +09:00
99073b56df Resolve #2900 2018-10-14 19:44:30 +09:00
5dce81c0db 非ASCIIなドメインへのメンションの修正 (#2903)
* punycodeでされたmentionのラベルをunicodeとして表示する

* post-form mentionはpunycodeにする

* mentionの表示はURLもAPI向けもunicodeにする
2018-10-14 16:56:19 +09:00
be82d845a4 expose user recommendation config in /api/meta (#2902) 2018-10-14 16:54:09 +09:00
f49ccd0cd3 10.15.0 2018-10-14 10:17:04 +09:00
69d83f535d Clean up 2018-10-14 10:16:07 +09:00
c7988fb6f5 🎨 2018-10-14 10:16:02 +09:00
3961fd08c9 Fix #2901 2018-10-14 10:06:10 +09:00
e3faf64061 10.14.0 2018-10-14 09:49:16 +09:00
ed83993e15 Fix 2018-10-14 09:48:47 +09:00
0f8847bb74 Resolve #2618 2018-10-14 09:47:38 +09:00
a72cfa7535 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-14 06:46:49 +09:00
514b74a19d Clean up 2018-10-14 06:44:20 +09:00
a2c124306f Update mios.ts 2018-10-14 05:26:36 +09:00
273f67e268 Fix bug 2018-10-13 23:12:48 +09:00
2870a7e463 10.13.0 2018-10-13 20:12:28 +09:00
935b074a7a New translations ja-JP.yml (Norwegian) 2018-10-13 20:12:19 +09:00
9d9c609bfb New translations ja-JP.yml (Dutch) 2018-10-13 20:12:15 +09:00
f6a664f181 New translations ja-JP.yml (Japanese, Kansai) 2018-10-13 20:12:10 +09:00
fce68d1f75 New translations ja-JP.yml (Spanish) 2018-10-13 20:12:06 +09:00
88739c2444 New translations ja-JP.yml (Russian) 2018-10-13 20:12:02 +09:00
7e2f10fce3 New translations ja-JP.yml (Portuguese) 2018-10-13 20:11:58 +09:00
a494c3a5cc New translations ja-JP.yml (Polish) 2018-10-13 20:11:53 +09:00
d6bb702883 New translations ja-JP.yml (Korean) 2018-10-13 20:11:48 +09:00
d15a972c68 New translations ja-JP.yml (Italian) 2018-10-13 20:11:44 +09:00
2ae7d31725 New translations ja-JP.yml (German) 2018-10-13 20:11:40 +09:00
2e329b1888 New translations ja-JP.yml (French) 2018-10-13 20:11:36 +09:00
522d40328b New translations ja-JP.yml (English) 2018-10-13 20:11:32 +09:00
2ecbff45bf New translations ja-JP.yml (Chinese Simplified) 2018-10-13 20:11:28 +09:00
b6f7282c13 New translations ja-JP.yml (Catalan) 2018-10-13 20:11:24 +09:00
65e5cfa68e Resolve #2853 2018-10-13 20:11:00 +09:00
10e59957d1 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-13 19:26:22 +09:00
4f74373df3 Better id 2018-10-13 19:25:59 +09:00
2d414bbf86 Merge pull request #2897 from syuilo/greenkeeper/reconnecting-websocket-4.1.8
Update reconnecting-websocket to the latest version 🚀
2018-10-13 19:25:23 +09:00
a199969b81 fix(package): update reconnecting-websocket to version 4.1.8 2018-10-13 10:22:45 +00:00
3aef5e6748 Better id 2018-10-13 19:16:47 +09:00
2b536a7443 connectedイベントはpongパラメータがtrueの時だけ発行するように 2018-10-13 19:14:05 +09:00
20fe68de05 10.12.1 2018-10-13 18:11:24 +09:00
c7684b59de 🎨 2018-10-13 18:08:30 +09:00
a7237d157a Resolve #2600 2018-10-13 17:57:40 +09:00
35f91fa280 10.12.0 2018-10-13 13:25:48 +09:00
299ac32225 🎨 2018-10-13 13:25:07 +09:00
a038738d72 🎨 2018-10-13 13:22:14 +09:00
2b0a919fb5 Resolve #2894 2018-10-13 13:13:15 +09:00
946c706913 Better design 2018-10-13 12:51:01 +09:00
89b5d976ee Add some keyboard shortcuts of note 2018-10-13 12:48:33 +09:00
6f679bb6b4 Merge pull request #2896 from syuilo/greenkeeper/reconnecting-websocket-4.1.7
Update reconnecting-websocket to the latest version 🚀
2018-10-13 11:11:31 +09:00
db4e7b0e16 Merge pull request #2893 from syuilo/l10n_develop
New Crowdin translations
2018-10-13 11:11:16 +09:00
9ca942490d New translations ja-JP.yml (English) 2018-10-13 10:50:54 +09:00
ebcf249c8b New translations ja-JP.yml (Japanese, Kansai) 2018-10-13 10:41:05 +09:00
939c487503 New translations ja-JP.yml (English) 2018-10-13 10:41:01 +09:00
981a8b267e New translations ja-JP.yml (Japanese, Kansai) 2018-10-13 10:31:22 +09:00
9531da80a0 fix(package): update reconnecting-websocket to version 4.1.7 2018-10-12 23:51:14 +00:00
e1109b168c Clean up 2018-10-13 04:48:09 +09:00
b7c70039aa Merge pull request #2895 from syuilo/greenkeeper/reconnecting-websocket-4.1.6
Update reconnecting-websocket to the latest version 🚀
2018-10-13 02:13:32 +09:00
17b6f6cf2a fix(package): update reconnecting-websocket to version 4.1.6 2018-10-12 17:09:56 +00:00
dd88483ba4 10.11.1 2018-10-13 01:33:20 +09:00
0ff27f65b3 Fix bug 2018-10-13 01:33:00 +09:00
b1655740df Improve perforance 2018-10-13 01:17:23 +09:00
6d562aece1 New translations ja-JP.yml (Norwegian) 2018-10-13 01:05:49 +09:00
2182c3372b New translations ja-JP.yml (Dutch) 2018-10-13 01:05:44 +09:00
d3331bfe82 New translations ja-JP.yml (Japanese, Kansai) 2018-10-13 01:05:39 +09:00
cfc4a2e8b4 New translations ja-JP.yml (Spanish) 2018-10-13 01:05:35 +09:00
36c41c8eb3 New translations ja-JP.yml (Russian) 2018-10-13 01:05:31 +09:00
d255157e6e New translations ja-JP.yml (Portuguese) 2018-10-13 01:05:27 +09:00
c12e07277d New translations ja-JP.yml (Polish) 2018-10-13 01:05:21 +09:00
06b4fb5095 New translations ja-JP.yml (Korean) 2018-10-13 01:05:17 +09:00
8fafdcb428 New translations ja-JP.yml (Italian) 2018-10-13 01:05:10 +09:00
537a606bb6 New translations ja-JP.yml (German) 2018-10-13 01:05:06 +09:00
3dc7a4463c New translations ja-JP.yml (French) 2018-10-13 01:05:02 +09:00
fd6ff05b60 New translations ja-JP.yml (English) 2018-10-13 01:04:58 +09:00
1a159e41b8 New translations ja-JP.yml (Chinese Simplified) 2018-10-13 01:04:53 +09:00
23533cdd16 New translations ja-JP.yml (Catalan) 2018-10-13 01:04:47 +09:00
2f598b8fa1 10.11.0 2018-10-13 01:04:29 +09:00
bca349fec1 Improve performance 2018-10-13 01:00:43 +09:00
719fac6480 お気に入りを解除できるように 2018-10-13 00:54:30 +09:00
1012b2b2c7 10.10.1 2018-10-12 21:44:39 +09:00
5149be4b1b Fix bug 2018-10-12 21:44:04 +09:00
d12deeb0d8 Merge pull request #2889 from syuilo/greenkeeper/@types/elasticsearch-5.0.27
Update @types/elasticsearch to the latest version 🚀
2018-10-12 20:08:14 +09:00
9df81d1939 10.10.0 2018-10-12 14:38:21 +09:00
3be0079868 Merge pull request #2890 from syuilo/l10n_develop
New Crowdin translations
2018-10-12 14:36:54 +09:00
9b253ccb3a Refactor 2018-10-12 14:34:54 +09:00
dded76099c Refactor and usability improvements 2018-10-12 14:28:48 +09:00
41a7ec7d3d Fix bug 2018-10-12 13:53:40 +09:00
168c773ba0 Fix user recommendation query (last activity) (#2892) 2018-10-12 13:48:26 +09:00
9abed92196 New translations ja-JP.yml (French) 2018-10-12 05:26:16 +09:00
4a75e3602a New translations ja-JP.yml (French) 2018-10-12 05:13:53 +09:00
1a689f6641 削除された投稿はタイムライン上で表示しないようにする (#2887)
* Excepts deleted notes on query

* Hide deleted notes

* Use v-show
2018-10-12 05:10:40 +09:00
08d7ae11d6 fix(package): update @types/elasticsearch to version 5.0.27 2018-10-11 19:58:29 +00:00
9535759787 trim filename 2018-10-12 04:01:45 +09:00
f8fc31f14a スクロール時に新着情報を取得した際に、アイコンが被るのを修正 (#2888) 2018-10-12 03:28:37 +09:00
b74bf97761 10.9.2 2018-10-11 23:52:18 +09:00
a090b908bd Fix bug 2018-10-11 23:52:11 +09:00
3046821026 10.9.1 2018-10-11 23:09:12 +09:00
e94c73efe2 Fix 2018-10-11 23:07:20 +09:00
e85f9f4aa5 共有可能チャンネルに接続しようとしていて、かつそのチャンネルに既に接続していたら無意味なので無視するように 2018-10-11 23:01:57 +09:00
ad67886f96 Resolve #543 2018-10-11 22:35:34 +09:00
5df0e102fd Fix 2018-10-11 22:17:27 +09:00
a04f0e3545 10.9.0 2018-10-11 21:27:33 +09:00
dff9c7ac48 Clean up and fix 2018-10-11 21:25:55 +09:00
3a80b59986 並列に処理するように 2018-10-11 21:14:20 +09:00
07560a4fdd 10.8.0 2018-10-11 18:38:31 +09:00
7edca21c05 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-11 18:35:50 +09:00
34105abd9d Fix 2018-10-11 18:35:19 +09:00
1bbca48a0b Update setup.ja.md 2018-10-11 18:20:27 +09:00
21f6a86772 Update setup.ja.md 2018-10-11 18:18:15 +09:00
6559197c55 Clean up 2018-10-11 18:10:41 +09:00
05f9ad11bb Redisがインストールされているときはイベントの共有にRedisのpub/subを使うように 2018-10-11 18:09:41 +09:00
f06d586680 10.7.2 2018-10-11 17:27:39 +09:00
4f45e8125c Fix 2018-10-11 17:25:53 +09:00
cc2843503d 10.7.1 2018-10-11 17:00:48 +09:00
324a974dec Fix bug 2018-10-11 17:00:22 +09:00
4d4ffd70ac 10.7.0 2018-10-11 15:58:39 +09:00
bf98a11b65 Reduce memory usage in file migration tool 2018-10-11 15:56:18 +09:00
1117ce4b54 Redisをオプションにしたり 2018-10-11 15:50:27 +09:00
57e93b9b4e fix(package): update @types/node to version 10.11.7 (#2885) 2018-10-11 05:41:01 +09:00
9e4b061ed0 Fix bug 2018-10-11 05:26:51 +09:00
1067bef7d6 Fix bug 2018-10-11 05:26:09 +09:00
8bff529acd Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-11 02:48:32 +09:00
4b08677839 ✌️ 2018-10-11 02:48:19 +09:00
70997cb551 fix(package): update vue-color to version 2.7.0 (#2884) 2018-10-11 02:22:57 +09:00
bf0ef17e23 Improve error logs 2018-10-11 02:19:21 +09:00
7dae5107f8 Improve fault tolerance 2018-10-11 02:11:12 +09:00
2dea88a147 Update stream.ts 2018-10-10 22:13:32 +09:00
f44c2a3e4f 10.6.0 2018-10-10 21:24:32 +09:00
1fad3cbaae 🎨 2018-10-10 21:23:38 +09:00
40d2e3e97c 🎨 2018-10-10 21:04:53 +09:00
2efabe612e fix(package): update @types/node to version 10.11.6 (#2876) 2018-10-10 21:01:25 +09:00
3107cbd6b9 fix(package): update @types/koa-logger to version 3.1.1 (#2877) 2018-10-10 21:01:18 +09:00
3a061ed1c3 New Crowdin translations (#2878)
* 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)
2018-10-10 21:01:08 +09:00
d4f0e6461a fix(package): update @types/webpack to version 4.4.16 (#2880) 2018-10-10 21:01:00 +09:00
3285687652 fix(package): update url-loader to version 1.1.2 (#2883) 2018-10-10 21:00:47 +09:00
51c53f64d0 Fix #2881, Fix #2879 2018-10-10 20:59:10 +09:00
1d582f5ad2 Fix syntax error 2018-10-10 20:58:42 +09:00
8a62748e39 🎨 2018-10-10 20:02:56 +09:00
b9290a021b New translations ja-JP.yml (French) 2018-10-10 07:51:07 +09:00
129ce93868 New translations ja-JP.yml (French) 2018-10-10 07:41:10 +09:00
5f41e5d6d0 New translations ja-JP.yml (French) 2018-10-10 07:31:22 +09:00
c706d030ea New translations ja-JP.yml (French) 2018-10-10 07:21:14 +09:00
34716a34f8 New translations ja-JP.yml (French) 2018-10-10 07:02:04 +09:00
6db3d6dfb6 fix(package): update @types/mongodb to version 3.1.12 (#2874) 2018-10-10 03:47:12 +09:00
38e2853dcf 10.5.0 2018-10-10 03:38:39 +09:00
ba5a540ca3 Log misskey version 2018-10-10 03:37:51 +09:00
fb1e05c2e9 ストリーミングAPIでチャンネルに接続したときにconnectedメッセージを返すように 2018-10-10 03:28:11 +09:00
aba84612a7 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-10 03:24:18 +09:00
9bebbf4e03 Add alias 2018-10-10 03:24:09 +09:00
e41b3f9c10 Merge pull request #2873 from mei23/mei-1010-pull-recquery
Fix users recommendation query
2018-10-10 02:18:31 +09:00
890dc05022 lint fix 2018-10-10 02:08:26 +09:00
375f86ec82 Fix users recommendation query 2018-10-10 02:04:16 +09:00
db248a69c8 10.4.0 2018-10-09 23:02:38 +09:00
5951288159 Merge pull request #2863 from syuilo/l10n_develop
New Crowdin translations
2018-10-09 23:01:51 +09:00
17b92c9db2 Fix bug 2018-10-09 22:48:45 +09:00
962d1060d9 New translations ja-JP.yml (Korean) 2018-10-09 22:32:14 +09:00
cb2640d961 New translations ja-JP.yml (Korean) 2018-10-09 22:11:31 +09:00
29aeb0f082 fix(package): update @types/webpack to version 4.4.15 (#2868) 2018-10-09 15:14:22 +09:00
990347f856 Fix 2018-10-09 15:13:06 +09:00
7a406c1f13 Docker (#2867)
* Dockerize Misskey

* Add a new line at EOF

* Add support Elasticsearch

* /

* Add setup document for docker

* Add english document

* Edit docs

* docker -> Docker

* Arrange format

* Update docker.en.md

* Modify title
2018-10-09 15:09:50 +09:00
9432af2ab5 10.3.0 2018-10-09 15:09:24 +09:00
136b13e7ca Fix bug and refactor 2018-10-09 15:08:31 +09:00
ba1c823fb1 🎨 2018-10-09 14:58:37 +09:00
f1301a4780 fix(package): update @types/redis to version 2.8.7 (#2866) 2018-10-09 09:38:47 +09:00
7957cd4963 fix(package): update @types/node to version 10.11.5 (#2865) 2018-10-09 09:38:40 +09:00
ee6590d03f fix(package): update @types/mongodb to version 3.1.11 (#2864) 2018-10-09 09:38:31 +09:00
f2a1238b20 fix(package): update commander to version 2.19.0 (#2862) 2018-10-09 09:38:21 +09:00
e9ce84f368 New translations ja-JP.yml (Norwegian) 2018-10-09 07:04:09 +09:00
52e84decb4 New translations ja-JP.yml (Dutch) 2018-10-09 07:04:03 +09:00
e893002bb6 New translations ja-JP.yml (Japanese, Kansai) 2018-10-09 07:03:59 +09:00
3792103e80 New translations ja-JP.yml (Spanish) 2018-10-09 07:03:54 +09:00
7a861c9481 New translations ja-JP.yml (Russian) 2018-10-09 07:03:47 +09:00
942b565224 New translations ja-JP.yml (Portuguese) 2018-10-09 07:03:43 +09:00
88390d7a9a New translations ja-JP.yml (Polish) 2018-10-09 07:03:39 +09:00
966fc4c5d7 New translations ja-JP.yml (Korean) 2018-10-09 07:03:34 +09:00
84dbdf1196 New translations ja-JP.yml (Italian) 2018-10-09 07:03:29 +09:00
211e7f90d9 New translations ja-JP.yml (German) 2018-10-09 07:03:23 +09:00
e54b8e3fb2 New translations ja-JP.yml (French) 2018-10-09 07:03:18 +09:00
836c89ed33 New translations ja-JP.yml (English) 2018-10-09 07:03:12 +09:00
c7c73afea1 New translations ja-JP.yml (Chinese Simplified) 2018-10-09 07:03:06 +09:00
7b9ca63b1e New translations ja-JP.yml (Catalan) 2018-10-09 07:02:59 +09:00
c464183329 Improve theme manager 2018-10-09 06:46:52 +09:00
389f420cad Update src/tools/move-drive-files.ts 2018-10-09 05:46:21 +09:00
6b2888383c 10.2.1 2018-10-09 05:36:39 +09:00
3c38a867b4 Fix bug 2018-10-09 05:35:40 +09:00
7f5a69f4d8 Fix bug 2018-10-09 05:31:26 +09:00
bb9ab31d5e Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-09 05:15:48 +09:00
9def80af8a 10.2.0 2018-10-09 05:15:31 +09:00
9256bcdbe4 fix(package): update debug to version 4.1.0 (#2857) 2018-10-09 05:12:19 +09:00
9b775022bc Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-09 05:11:55 +09:00
32371ed2bd Fix #2858 2018-10-09 05:11:42 +09:00
8b98c08a81 Update README.md 2018-10-09 05:07:59 +09:00
7cf72f7447 Merge pull request #2860 from mei23/mei-1009-v10d
互換ストリーム / に main streamの内容も流す
2018-10-09 04:35:08 +09:00
913385b10d / に main stream も流す 2018-10-09 03:29:11 +09:00
7306468d08 Merge pull request #2856 from syuilo/greenkeeper/typescript-eslint-parser-20.0.0
Update typescript-eslint-parser to the latest version 🚀
2018-10-09 02:59:13 +09:00
11e5667778 fix(package): update typescript-eslint-parser to version 20.0.0 2018-10-08 17:15:23 +00:00
38cc02e261 Add tool 2018-10-09 02:14:03 +09:00
d52cf46cc1 10.1.0 2018-10-09 01:52:18 +09:00
c6110dd996 Fix bug
Closes #2855
2018-10-09 01:50:49 +09:00
51d8de2c38 Improve readability 2018-10-09 01:33:40 +09:00
4455a1aa9d Fix bug 2018-10-09 01:33:31 +09:00
040d395ddb 🎨 2018-10-09 01:26:04 +09:00
8296cac636 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-09 01:02:04 +09:00
3eafe8b87d Better api definition 2018-10-09 01:01:48 +09:00
c01512e261 Merge pull request #2854 from syuilo/greenkeeper/style-loader-0.23.1
Update style-loader to the latest version 🚀
2018-10-09 00:56:03 +09:00
e5cf3aecd5 Merge pull request #2830 from sei0o/fix-2346
fix #2346
2018-10-09 00:55:47 +09:00
a8f90b41b7 fix(package): update style-loader to version 0.23.1 2018-10-08 13:43:10 +00:00
b79169b975 Deleted dump.rdb 2018-10-08 22:26:26 +09:00
437d52e2ed Improve theme 2018-10-08 18:42:19 +09:00
1329721440 Merge pull request #2828 from hakaba-hitoyo/feature/external-user-recommendation
External user recommendation
2018-10-08 18:31:00 +09:00
6affb4fe97 Merge pull request #2851 from mei23/mei-1008-fix-apshow2
ap/showが返ってこないことがあるのを修正
2018-10-08 17:33:46 +09:00
15395686aa ap/showが返ってこないことがあるのを修正 2018-10-08 16:01:38 +09:00
047bcc78ad 10.0.0 2018-10-08 15:52:37 +09:00
9df68618f2 Merge pull request #2850 from syuilo/greenkeeper/sharp-0.21.0
fix(package): update sharp to version 0.21.0
2018-10-08 15:49:38 +09:00
732db087ab Merge pull request #2754 from syuilo/l10n_develop
New Crowdin translations
2018-10-08 15:48:30 +09:00
0e95b33b6a Improve theme 2018-10-08 15:47:41 +09:00
816ae7eb7e 🎨 2018-10-08 15:43:43 +09:00
5a5ff194fa New translations ja-JP.yml (English) 2018-10-08 15:43:00 +09:00
a60edf9cff Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-10-08 15:42:37 +09:00
1c2dbb914e Improve usability 2018-10-08 15:42:21 +09:00
9c170c426b Merge branch 'develop' into l10n_develop 2018-10-08 15:37:24 +09:00
c6239c8ad9 fix(package): update @types/mongodb to version 3.1.10 (#2849)
Closes #2752
2018-10-08 15:36:33 +09:00
159b361bac New translations ja-JP.yml (Norwegian) 2018-10-08 15:32:29 +09:00
160f64c18e New translations ja-JP.yml (Dutch) 2018-10-08 15:32:25 +09:00
e5916b3789 New translations ja-JP.yml (Japanese, Kansai) 2018-10-08 15:32:20 +09:00
70982b33c5 New translations ja-JP.yml (Spanish) 2018-10-08 15:32:15 +09:00
b4d614ad45 New translations ja-JP.yml (Russian) 2018-10-08 15:32:10 +09:00
6d2ef41b37 New translations ja-JP.yml (Portuguese) 2018-10-08 15:32:05 +09:00
e102237aab New translations ja-JP.yml (Polish) 2018-10-08 15:32:00 +09:00
665af87031 New translations ja-JP.yml (Korean) 2018-10-08 15:31:56 +09:00
6f4e439697 New translations ja-JP.yml (Italian) 2018-10-08 15:31:51 +09:00
742dcf35c9 New translations ja-JP.yml (German) 2018-10-08 15:31:45 +09:00
9cd70c568c New translations ja-JP.yml (French) 2018-10-08 15:31:39 +09:00
facabf274f New translations ja-JP.yml (English) 2018-10-08 15:31:35 +09:00
e3ab51022f New translations ja-JP.yml (Chinese Simplified) 2018-10-08 15:31:30 +09:00
d278367cf9 New translations ja-JP.yml (Catalan) 2018-10-08 15:31:25 +09:00
a70ced8e90 Add new theme 2018-10-08 15:23:20 +09:00
567cedc7cc Improve usability 2018-10-08 15:23:10 +09:00
9b3af6efcd fix(package): update jsdom to version 12.2.0 (#2848) 2018-10-08 14:50:32 +09:00
d9edc1eb1d Improve theme 2018-10-08 09:08:02 +09:00
65e46b5cec oops 2018-10-08 09:02:11 +09:00
e00b5f11cb 互換性を追加 2018-10-08 08:58:12 +09:00
6b53d5f269 New translations ja-JP.yml (Norwegian) 2018-10-08 08:10:57 +09:00
59c80ab140 New translations ja-JP.yml (Norwegian) 2018-10-08 08:01:13 +09:00
da323aad36 New translations ja-JP.yml (Norwegian) 2018-10-08 07:51:37 +09:00
7c1611c939 New translations ja-JP.yml (Norwegian) 2018-10-08 07:41:01 +09:00
ab861beabe New translations ja-JP.yml (Norwegian) 2018-10-08 07:31:50 +09:00
d260e93161 New translations ja-JP.yml (Norwegian) 2018-10-08 07:21:50 +09:00
65a1855606 New translations ja-JP.yml (Norwegian) 2018-10-08 07:01:37 +09:00
c0e08e44a4 New translations ja-JP.yml (Norwegian) 2018-10-08 06:51:21 +09:00
5c1cebcef4 New translations ja-JP.yml (Norwegian) 2018-10-08 06:41:23 +09:00
af25d3a85e New translations ja-JP.yml (Norwegian) 2018-10-08 06:31:14 +09:00
8cb7183107 New translations ja-JP.yml (Norwegian) 2018-10-08 06:21:40 +09:00
1bf228d73e New translations ja-JP.yml (Norwegian) 2018-10-08 06:11:47 +09:00
d952b996e6 New translations ja-JP.yml (Norwegian) 2018-10-08 06:02:03 +09:00
1e407c4059 New translations ja-JP.yml (Norwegian) 2018-10-08 05:51:22 +09:00
b56d1fa60e New translations ja-JP.yml (Norwegian) 2018-10-08 05:41:23 +09:00
6340f95bfc New translations ja-JP.yml (Norwegian) 2018-10-08 05:30:57 +09:00
3c08dacf6c New translations ja-JP.yml (Norwegian) 2018-10-08 05:21:23 +09:00
2908124ad8 New translations ja-JP.yml (Norwegian) 2018-10-08 05:11:24 +09:00
3d62faaaf2 New translations ja-JP.yml (Norwegian) 2018-10-08 05:03:18 +09:00
b1efa9700d New translations ja-JP.yml (Norwegian) 2018-10-08 04:52:30 +09:00
1d08af5747 New translations ja-JP.yml (Norwegian) 2018-10-08 04:41:56 +09:00
2f82d0db87 New translations ja-JP.yml (Norwegian) 2018-10-08 04:33:10 +09:00
d88159907d New translations ja-JP.yml (Norwegian) 2018-10-08 04:21:47 +09:00
9ed9fbef65 New translations ja-JP.yml (Norwegian) 2018-10-08 04:11:43 +09:00
86c2e5bb91 New translations ja-JP.yml (Norwegian) 2018-10-08 04:01:04 +09:00
d9b548de1a New translations ja-JP.yml (Norwegian) 2018-10-08 03:51:11 +09:00
2271c6cbd8 New translations ja-JP.yml (Norwegian) 2018-10-08 03:45:38 +09:00
c4d4293c46 fix(package): update file-type to version 10.0.0 (#2846) 2018-10-08 02:31:42 +09:00
39bdfb6e0d Improve usability 2018-10-08 02:10:46 +09:00
1003fd393e Fix bug 2018-10-08 01:56:36 +09:00
2ede3c0864 Clean up 2018-10-08 01:25:34 +09:00
674764a035 Fix 2018-10-08 01:16:32 +09:00
a780e7b936 Clean up 2018-10-08 01:14:46 +09:00
03d0ce1f89 Improve theme 2018-10-08 01:10:30 +09:00
4182a0cf4c Fix 2018-10-08 01:03:07 +09:00
305915611e Fix bug 2018-10-08 00:58:10 +09:00
b0cd59bed9 New translations ja-JP.yml (Norwegian) 2018-10-08 00:41:33 +09:00
599dcbaa48 New translations ja-JP.yml (Norwegian) 2018-10-08 00:01:35 +09:00
2806dc98bd New translations ja-JP.yml (Norwegian) 2018-10-07 23:51:37 +09:00
bdc52dc114 New translations ja-JP.yml (Norwegian) 2018-10-07 23:41:46 +09:00
3f6b9e554c New translations ja-JP.yml (Norwegian) 2018-10-07 23:32:04 +09:00
f47ad7bf31 New translations ja-JP.yml (Norwegian) 2018-10-07 23:02:43 +09:00
f992f72d31 New translations ja-JP.yml (Norwegian) 2018-10-07 22:51:32 +09:00
a26f1db2cb New translations ja-JP.yml (Norwegian) 2018-10-07 22:41:27 +09:00
361ab00c61 fix(package): update @types/debug to version 0.0.31 (#2822) 2018-10-07 20:31:57 +09:00
f5cbcf3452 fix(package): update vue-svg-inline-loader to version 1.2.0 (#2844) 2018-10-07 20:29:43 +09:00
599386190a fix(package): update file-loader to version 2.0.0 (#2827) 2018-10-07 20:27:05 +09:00
ec541d3cd0 fix(package): update systeminformation to version 3.45.7 (#2825) 2018-10-07 20:26:47 +09:00
3199819ded fix(package): update reconnecting-websocket to version 4.1.5 (#2845)
Closes #2785
2018-10-07 20:26:35 +09:00
ccf04d63ec fix(package): update ws to version 6.1.0 (#2823) 2018-10-07 20:23:13 +09:00
b9f5fca333 ActivityPubオブジェクト採番API (#2832)
* Show ActivityPub object API

* Add missing return
2018-10-07 20:20:55 +09:00
b6a330928d 投稿の削除イベントを受け取るように 2018-10-07 20:08:42 +09:00
1c65cb3e36 Resolve #2843 2018-10-07 19:58:00 +09:00
dbb8c99efb New translations ja-JP.yml (French) 2018-10-07 19:41:39 +09:00
0adcb646fe Fix bug 2018-10-07 19:35:25 +09:00
a1ef70c0bf New translations ja-JP.yml (French) 2018-10-07 19:32:31 +09:00
75cd580c3a Improve theming 2018-10-07 19:30:24 +09:00
e05acb8d18 後方互換性を追加 2018-10-07 17:19:52 +09:00
10af684804 Improve readability a little 2018-10-07 17:06:28 +09:00
3e897727ca Fix #2773 (#2841)
* Added an API endpoint to check the existence of the file

* fix #2773: Now we can prevent users from posting the same images

* bug fix
2018-10-07 16:51:46 +09:00
d0570d7fe3 V10 (#2826)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update CHANGELOG.md

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update CHANGELOG.md

* Update CHANGELOG.md

* wip

* Update CHANGELOG.md

* wip

* wip

* wip

* wip
2018-10-07 11:06:17 +09:00
5cf1956135 Added CSS variables for background of reactions-viewer 2018-10-06 22:14:30 +09:00
0b98a2364b Fix お知らせが確認中...のままになる(Announcement Fetching...) (#2831) 2018-10-06 20:36:11 +09:00
fff307d4bb fix #2346 2018-10-06 17:51:59 +09:00
2b7782ba03 replace var by const 2018-10-06 17:38:57 +09:00
96d961ee80 better readable code 2018-10-06 17:23:32 +09:00
9f064d76d9 better readable code 2018-10-06 17:21:27 +09:00
2e39106c4b better config handling 2018-10-06 17:19:41 +09:00
1305006391 New translations ja-JP.yml (English) 2018-10-06 17:01:11 +09:00
04650464f3 debug 2018-10-06 16:34:52 +09:00
3bc7e1e35c remove follow buttons in the friends-maker component/widget 2018-10-06 16:31:21 +09:00
7019ddbfc7 external user recommendation 2018-10-06 16:03:18 +09:00
106d990bd2 New translations ja-JP.yml (Norwegian) 2018-10-05 19:23:15 +09:00
b29eb29556 New translations ja-JP.yml (Dutch) 2018-10-05 19:23:11 +09:00
aeac1854ed New translations ja-JP.yml (Japanese, Kansai) 2018-10-05 19:23:07 +09:00
dbc57dd0d3 New translations ja-JP.yml (Spanish) 2018-10-05 19:23:01 +09:00
328a87609e New translations ja-JP.yml (Russian) 2018-10-05 19:22:57 +09:00
5d848f3900 New translations ja-JP.yml (Portuguese) 2018-10-05 19:22:53 +09:00
cf4ed45fe4 New translations ja-JP.yml (Polish) 2018-10-05 19:22:49 +09:00
07293094d5 New translations ja-JP.yml (Korean) 2018-10-05 19:22:43 +09:00
0917696c86 New translations ja-JP.yml (Italian) 2018-10-05 19:22:39 +09:00
030a027366 New translations ja-JP.yml (German) 2018-10-05 19:22:35 +09:00
372c488585 New translations ja-JP.yml (French) 2018-10-05 19:22:31 +09:00
738b8ff1ee New translations ja-JP.yml (English) 2018-10-05 19:22:25 +09:00
1561fc5994 New translations ja-JP.yml (Chinese Simplified) 2018-10-05 19:22:20 +09:00
c84f18545e New translations ja-JP.yml (Catalan) 2018-10-05 19:22:15 +09:00
48e4dc75f4 Better japanese 2018-10-05 19:13:59 +09:00
63a8d556e5 🎨 2018-10-05 12:10:00 +09:00
e5591618ee 9.7.1 2018-10-05 04:50:50 +09:00
4794748c73 Fix bug 2018-10-05 04:50:23 +09:00
02e7e3b971 Clean up 2018-10-05 03:21:45 +09:00
d2aca3c28b fix(package): update vue-svg-inline-loader to version 1.1.4 (#2821) 2018-10-05 02:43:54 +09:00
11b84a04b3 9.7.0 2018-10-05 01:59:26 +09:00
f243ce66e7 ActivityPubのHTTPリクエストの強化 (#2820)
* Fix error handling in AP deliver

* Set timeout to resolver

* Tune looks
2018-10-05 01:58:41 +09:00
baf9b65801 Improve error handling of packaging functions 2018-10-05 01:43:47 +09:00
55419d2524 fix(package): update sharp to version 0.21.0
Closes #2619
2018-10-04 13:01:32 +00:00
401d0b1298 9.5.0 2018-10-04 13:55:25 +09:00
fce7dc0f4e Improve error handling of pack function of notification 2018-10-04 13:53:48 +09:00
35489ef5b7 Improve default theme definition (dark) 2018-10-04 13:48:26 +09:00
546d494587 Improve default theme definition (light) 2018-10-04 13:40:13 +09:00
e8afa2c940 Improve pack function of favorite 2018-10-04 13:33:59 +09:00
c1ef1bf605 fix(package): update typescript-eslint-parser to version 19.0.2 (#2819)
Closes #2772
2018-10-04 12:53:50 +09:00
4ab0dbe7e3 fix(package): update @types/webpack to version 4.4.14 (#2818)
Closes #2778
2018-10-04 12:53:17 +09:00
44f86a94f4 fix(package): update @types/node to version 10.11.4 (#2817)
Closes #2765
2018-10-04 12:52:57 +09:00
a0278154a3 fix(package): update webpack-cli to version 3.1.2 (#2816)
Closes #2757
2018-10-04 12:52:27 +09:00
8b7e6b200e fix(package): update jsdom to version 12.1.0 (#2788) 2018-10-04 12:51:19 +09:00
d6f6c26725 fix(package): update @types/qrcode to version 1.3.0 (#2813) 2018-10-04 12:50:32 +09:00
cf66343b31 fix(package): update qrcode to version 1.3.0 (#2799) 2018-10-04 12:50:25 +09:00
d53689332f fix(package): update diskusage to version 0.2.5 (#2767) 2018-10-04 12:49:56 +09:00
4105237027 fix(package): update koa-mount to version 4.0.0 (#2776) 2018-10-04 12:49:38 +09:00
436962e4b8 fix(package): update nan to version 2.11.1 (#2784) 2018-10-04 12:49:05 +09:00
a85efa1392 fix(package): update gulp-htmlmin to version 5.0.1 (#2815)
Closes #2669
2018-10-04 12:48:52 +09:00
f0115a5e21 fix(package): update webpack to version 4.20.2 (#2814)
Closes #2768
2018-10-04 12:45:47 +09:00
80105239dc 9.4.0 2018-10-04 00:39:48 +09:00
baad11288a ドキュメントが見つからなくてもエラーにせずnullを返すように 2018-10-04 00:39:11 +09:00
7e50646ede 9.3.1 2018-10-03 23:01:58 +09:00
d4b8e47bcb Fix 2018-10-03 23:01:47 +09:00
0eefd2922c 9.3.0 2018-10-03 22:55:08 +09:00
30c0f98691 Fix bug 2018-10-03 22:54:10 +09:00
06a7c2e138 Revert "Enable JSON5 syntax"
This reverts commit 6e04549a9b.
2018-10-03 22:14:05 +09:00
3537b3de8e Clean up 2018-10-03 22:05:17 +09:00
ed6450244d Feature flags feature (#2803) 2018-10-03 12:39:03 +09:00
e813880392 6個ピン留めできてしまうの修正 (#2804) 2018-10-03 12:37:23 +09:00
9a57efa6d9 ✌️ 2018-10-03 03:13:10 +09:00
03ee5eba3b New translations ja-JP.yml (Norwegian) 2018-10-03 03:12:34 +09:00
295ea79231 New translations ja-JP.yml (Dutch) 2018-10-03 03:12:30 +09:00
a5486176c1 New translations ja-JP.yml (Japanese, Kansai) 2018-10-03 03:12:24 +09:00
de58325fd0 New translations ja-JP.yml (Spanish) 2018-10-03 03:12:19 +09:00
1e7932d9c7 New translations ja-JP.yml (Russian) 2018-10-03 03:12:13 +09:00
8ba76df409 New translations ja-JP.yml (Portuguese) 2018-10-03 03:12:07 +09:00
a8f9d20229 New translations ja-JP.yml (Polish) 2018-10-03 03:12:02 +09:00
5e6d1b9ae8 New translations ja-JP.yml (Korean) 2018-10-03 03:11:55 +09:00
c5afbaef35 New translations ja-JP.yml (Italian) 2018-10-03 03:11:50 +09:00
3b5a36a09f New translations ja-JP.yml (German) 2018-10-03 03:11:46 +09:00
fcb20d05d7 New translations ja-JP.yml (French) 2018-10-03 03:11:41 +09:00
9e6990c44b New translations ja-JP.yml (English) 2018-10-03 03:11:37 +09:00
8f3fd9b0dc New translations ja-JP.yml (Chinese Simplified) 2018-10-03 03:11:33 +09:00
5b1b4a02d8 New translations ja-JP.yml (Catalan) 2018-10-03 03:11:27 +09:00
31de530497 9.2.0 2018-10-03 03:09:04 +09:00
16b6b1f2b3 テーマ関連機能の強化 2018-10-03 03:07:46 +09:00
dba83aa50d New translations ja-JP.yml (Norwegian) 2018-10-03 03:02:59 +09:00
bade054a6a New translations ja-JP.yml (Dutch) 2018-10-03 03:02:55 +09:00
34d3485dc9 New translations ja-JP.yml (Japanese, Kansai) 2018-10-03 03:02:50 +09:00
a84d066daa New translations ja-JP.yml (Spanish) 2018-10-03 03:02:46 +09:00
3360cf27cd New translations ja-JP.yml (Russian) 2018-10-03 03:02:41 +09:00
c1a13af611 New translations ja-JP.yml (Portuguese) 2018-10-03 03:02:36 +09:00
47274a658b New translations ja-JP.yml (Polish) 2018-10-03 03:02:32 +09:00
b194334031 New translations ja-JP.yml (Korean) 2018-10-03 03:02:27 +09:00
4136c4a807 New translations ja-JP.yml (Italian) 2018-10-03 03:02:23 +09:00
f1c212fe75 New translations ja-JP.yml (German) 2018-10-03 03:02:18 +09:00
d08cbff4b7 New translations ja-JP.yml (French) 2018-10-03 03:02:13 +09:00
0b774475fa New translations ja-JP.yml (English) 2018-10-03 03:02:09 +09:00
c4f6195df3 New translations ja-JP.yml (Chinese Simplified) 2018-10-03 03:02:06 +09:00
192cdbe322 New translations ja-JP.yml (Catalan) 2018-10-03 03:02:01 +09:00
a2a25eb5f8 Improve usability 2018-10-03 03:00:55 +09:00
274cf1af1c テーマ関連の機能を強化 2018-10-03 02:57:31 +09:00
7d11c8b767 Improve admin UI (#2802) 2018-10-02 23:42:46 +09:00
abef6bafe3 New translations ja-JP.yml (French) 2018-10-02 23:14:27 +09:00
da237a5e2d New translations ja-JP.yml (French) 2018-10-02 22:56:58 +09:00
7e50e03cfb Update README.md [AUTOGEN] (#2801) 2018-10-02 20:23:27 +09:00
89d5df20a5 9.1.0 2018-10-02 16:29:05 +09:00
c09a2a37fe リモートのピン留め投稿取得対応 (#2798)
* Fetch featured

* Handle featured change

* Fix typo
2018-10-02 16:27:36 +09:00
b5745877ca 🎨 2018-10-02 16:23:55 +09:00
c0ac15cad7 New translations ja-JP.yml (Norwegian) 2018-10-02 16:13:29 +09:00
90ce09be2e New translations ja-JP.yml (Dutch) 2018-10-02 16:13:25 +09:00
fd39afb374 New translations ja-JP.yml (Japanese, Kansai) 2018-10-02 16:13:20 +09:00
6e04549a9b Enable JSON5 syntax 2018-10-02 16:13:14 +09:00
80e56fddd9 New translations ja-JP.yml (Spanish) 2018-10-02 16:13:14 +09:00
4daf9e1180 New translations ja-JP.yml (Russian) 2018-10-02 16:13:09 +09:00
f72abc0e47 New translations ja-JP.yml (Portuguese) 2018-10-02 16:13:04 +09:00
9c177f3df2 New translations ja-JP.yml (Polish) 2018-10-02 16:13:00 +09:00
a279b32c93 New translations ja-JP.yml (Korean) 2018-10-02 16:12:36 +09:00
51465ba026 New translations ja-JP.yml (Italian) 2018-10-02 16:12:31 +09:00
6a7bdcc533 New translations ja-JP.yml (German) 2018-10-02 16:12:25 +09:00
fddb3a5f10 New translations ja-JP.yml (French) 2018-10-02 16:12:19 +09:00
643c7abc12 New translations ja-JP.yml (English) 2018-10-02 16:12:15 +09:00
5715afd44c New translations ja-JP.yml (Chinese Simplified) 2018-10-02 16:12:10 +09:00
d65c1c420e New translations ja-JP.yml (Catalan) 2018-10-02 16:12:05 +09:00
38139ee6c9 テーマに関して強化 2018-10-02 16:10:45 +09:00
6b96bd0185 テーマに関して強化 2018-10-02 16:04:31 +09:00
f2b9863eea Better deployment option descriptions. (#2800) 2018-10-02 11:59:12 +09:00
35598c8064 New translations ja-JP.yml (Norwegian) 2018-10-01 19:32:26 +09:00
a5e716eb5d New translations ja-JP.yml (Dutch) 2018-10-01 19:32:24 +09:00
e8073b7484 New translations ja-JP.yml (Japanese, Kansai) 2018-10-01 19:32:21 +09:00
d6a5fc20bb New translations ja-JP.yml (Spanish) 2018-10-01 19:32:18 +09:00
e763d43085 New translations ja-JP.yml (Russian) 2018-10-01 19:32:15 +09:00
a6904d5249 New translations ja-JP.yml (Portuguese) 2018-10-01 19:32:12 +09:00
7bcb91d3ca New translations ja-JP.yml (Polish) 2018-10-01 19:32:09 +09:00
fb0c1efa41 New translations ja-JP.yml (Korean) 2018-10-01 19:32:06 +09:00
03d243d444 New translations ja-JP.yml (Italian) 2018-10-01 19:32:04 +09:00
b91585d1fe New translations ja-JP.yml (German) 2018-10-01 19:32:00 +09:00
d1fa318cda New translations ja-JP.yml (French) 2018-10-01 19:31:58 +09:00
42decae424 New translations ja-JP.yml (English) 2018-10-01 19:31:55 +09:00
78bc7c20ed New translations ja-JP.yml (Chinese Simplified) 2018-10-01 19:31:52 +09:00
e6616bdf57 New translations ja-JP.yml (Catalan) 2018-10-01 19:31:49 +09:00
cefe1f34be New translations ja-JP.yml (Norwegian) 2018-09-30 23:12:05 +09:00
d469e2152c New translations ja-JP.yml (Dutch) 2018-09-30 23:12:03 +09:00
35c2d47518 New translations ja-JP.yml (Japanese, Kansai) 2018-09-30 23:12:00 +09:00
c00634a2cf New translations ja-JP.yml (Spanish) 2018-09-30 23:11:58 +09:00
d1835e262d New translations ja-JP.yml (Russian) 2018-09-30 23:11:55 +09:00
d0f304f0ce New translations ja-JP.yml (Portuguese) 2018-09-30 23:11:53 +09:00
154abe06a7 New translations ja-JP.yml (Polish) 2018-09-30 23:11:51 +09:00
ac41cd378c New translations ja-JP.yml (Korean) 2018-09-30 23:11:48 +09:00
d59afda2c9 New translations ja-JP.yml (Italian) 2018-09-30 23:11:45 +09:00
4d213833e2 New translations ja-JP.yml (German) 2018-09-30 23:11:42 +09:00
e9214d4330 New translations ja-JP.yml (French) 2018-09-30 23:11:40 +09:00
6b41bb95b2 New translations ja-JP.yml (English) 2018-09-30 23:11:38 +09:00
36de13d543 New translations ja-JP.yml (Chinese Simplified) 2018-09-30 23:11:35 +09:00
3893def9f4 New translations ja-JP.yml (Catalan) 2018-09-30 23:11:32 +09:00
b91b0d17c3 New translations ja-JP.yml (French) 2018-09-30 22:31:59 +09:00
ab7d4fa2a2 New translations ja-JP.yml (French) 2018-09-29 16:11:06 +09:00
f30c8b8a47 New translations ja-JP.yml (French) 2018-09-29 16:01:08 +09:00
fdaebc6315 New translations ja-JP.yml (Norwegian) 2018-09-29 00:52:53 +09:00
f1a05c214e New translations ja-JP.yml (Dutch) 2018-09-29 00:52:50 +09:00
9ad32ffee9 New translations ja-JP.yml (Japanese, Kansai) 2018-09-29 00:52:48 +09:00
70f83ab019 New translations ja-JP.yml (Spanish) 2018-09-29 00:52:45 +09:00
07e64631f2 New translations ja-JP.yml (Russian) 2018-09-29 00:52:42 +09:00
498416e2e3 New translations ja-JP.yml (Portuguese) 2018-09-29 00:52:40 +09:00
87c4f908fe New translations ja-JP.yml (Polish) 2018-09-29 00:52:38 +09:00
27e6eaacde New translations ja-JP.yml (Korean) 2018-09-29 00:52:35 +09:00
ada47920ca New translations ja-JP.yml (Italian) 2018-09-29 00:52:32 +09:00
f2606d62ff New translations ja-JP.yml (German) 2018-09-29 00:52:29 +09:00
35032152b3 New translations ja-JP.yml (French) 2018-09-29 00:52:27 +09:00
90b545fd69 New translations ja-JP.yml (English) 2018-09-29 00:52:24 +09:00
4f7776d1f9 New translations ja-JP.yml (Chinese Simplified) 2018-09-29 00:52:21 +09:00
03bd0c4c9e New translations ja-JP.yml (Catalan) 2018-09-29 00:52:18 +09:00
5734221c8f New translations ja-JP.yml (French) 2018-09-26 23:31:56 +09:00
d17280b341 New translations ja-JP.yml (Japanese, Kansai) 2018-09-25 22:21:23 +09:00
f523d3f3bc New translations ja-JP.yml (Japanese, Kansai) 2018-09-25 21:55:37 +09:00
d23bc1e02a New translations ja-JP.yml (Norwegian) 2018-09-24 16:32:48 +09:00
86fcd9208e New translations ja-JP.yml (Dutch) 2018-09-24 16:32:45 +09:00
f2b97a889c New translations ja-JP.yml (Japanese, Kansai) 2018-09-24 16:32:43 +09:00
97f91102fe New translations ja-JP.yml (Spanish) 2018-09-24 16:32:39 +09:00
07b04578c8 New translations ja-JP.yml (Russian) 2018-09-24 16:32:37 +09:00
31f3c1996b New translations ja-JP.yml (Portuguese) 2018-09-24 16:32:35 +09:00
f4116e7300 New translations ja-JP.yml (Polish) 2018-09-24 16:32:31 +09:00
5e5239c16e New translations ja-JP.yml (Korean) 2018-09-24 16:32:28 +09:00
3adfcd1d13 New translations ja-JP.yml (Italian) 2018-09-24 16:32:25 +09:00
3eb43a5413 New translations ja-JP.yml (German) 2018-09-24 16:32:22 +09:00
80f41e2ac1 New translations ja-JP.yml (French) 2018-09-24 16:32:19 +09:00
9e0b0b4210 New translations ja-JP.yml (English) 2018-09-24 16:32:17 +09:00
f3380d3184 New translations ja-JP.yml (Chinese Simplified) 2018-09-24 16:32:14 +09:00
54bc91ea2b New translations ja-JP.yml (Catalan) 2018-09-24 16:32:11 +09:00
7bb25917f8 New translations ja-JP.yml (French) 2018-09-23 20:11:14 +09:00
c5ff6df7e6 New translations ja-JP.yml (Norwegian) 2018-09-22 20:41:35 +09:00
e2b2982f95 New translations ja-JP.yml (Dutch) 2018-09-22 20:41:33 +09:00
a6e307010f New translations ja-JP.yml (Japanese, Kansai) 2018-09-22 20:41:31 +09:00
c636e35467 New translations ja-JP.yml (Spanish) 2018-09-22 20:41:28 +09:00
3d26bd0532 New translations ja-JP.yml (Russian) 2018-09-22 20:41:26 +09:00
16130e46dd New translations ja-JP.yml (Portuguese) 2018-09-22 20:41:23 +09:00
9f703085ba New translations ja-JP.yml (Polish) 2018-09-22 20:41:20 +09:00
0af09f13cf New translations ja-JP.yml (Korean) 2018-09-22 20:41:18 +09:00
cd8619113a New translations ja-JP.yml (Italian) 2018-09-22 20:41:16 +09:00
4bf6d9f80b New translations ja-JP.yml (German) 2018-09-22 20:41:14 +09:00
a559b2c20c New translations ja-JP.yml (French) 2018-09-22 20:41:11 +09:00
72411abfcd New translations ja-JP.yml (English) 2018-09-22 20:41:08 +09:00
491c3f1dc0 New translations ja-JP.yml (Chinese Simplified) 2018-09-22 20:41:06 +09:00
d2ffc4df6c New translations ja-JP.yml (Catalan) 2018-09-22 20:41:04 +09:00
753 changed files with 30024 additions and 19689 deletions

View File

@ -30,7 +30,7 @@ while :
touch patreon.cache && \
rm patreon.cache && \
cat patreon.raw.cache | \
jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.attributes.hide_pledges==false))|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \
jq -r '(.data|map(select(.relationships.currently_entitled_tiers.data[]))|map(.relationships.user.data.id))as$data|.included|map(select(.id as$id|$data|contains([$id])))|map(.attributes|[.full_name,.thumb_url,.url]|@tsv)|.[]|@text' >> patreon.cache && \
echo '<table><tr>' >> patreon.md.cache && \
cat patreon.cache | \
awk -F'\t' '{print $2,$1}' | \

168
.circleci/config.yml Normal file
View File

@ -0,0 +1,168 @@
version: 2.1
executors:
default:
working_directory: /tmp/workspace
docker:
- image: misskey/ci:latest
- image: circleci/mongo:latest
- image: circleci/redis:latest
docker:
working_directory: /tmp/workspace
docker:
- image: docker:latest
alpine:
working_directory: /tmp/workspace
docker:
- image: alpine:latest
jobs:
ok:
executor: alpine
steps:
- run:
name: OK
command: |
echo -e '\033[0;32mOK\033[0;39m'
build:
executor: default
steps:
- checkout
- run:
name: Ensure package-lock.json
command: |
[ ! -e package-lock.json ] && echo '{}' > package-lock.json
- restore_cache:
name: Restore npm package caches
keys:
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
- npm-v1-arch-{{ arch }}-
- npm-v1-
- run:
name: Install Dependencies
command: |
npm install
npm prune
- run:
name: Configure
command: |
cp .circleci/misskey/default.yml .config
cp .circleci/misskey/test.yml .config
- run:
name: Build
command: |
npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)
ls -1ARl node_modules > ls
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
paths:
- node_modules
# - store_artifacts:
# path: built
- persist_to_workspace:
root: .
paths:
- .
test:
parameters:
without_redis:
type: string
default: ""
executor: default
steps:
- attach_workspace:
at: /tmp/workspace
- when:
condition: <<parameters.without_redis>>
steps:
- run:
name: Configure
command: |
mv .config/test.yml .config/test_redis.yml
touch .config/test.yml
cat .config/test_redis.yml | while IFS= read line; do if [[ "$line" = '# __REDIS__' ]]; then break; else echo "$line" >> .config/test.yml; fi; done
- run:
name: Test
command: |
npm run test || (npm rebuild && npm run test) || ((node-gyp configure && node-gyp build && npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)) && npm run test)
ls -1ARl node_modules > ls
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
paths:
- node_modules
docker:
parameters:
with_deploy:
type: string
default: ""
executor: docker
steps:
- checkout
- setup_remote_docker
- run:
name: Build
command: |
docker build -t misskey/misskey .
- when:
condition: <<parameters.with_deploy>>
steps:
- run:
name: Deploy
command: |
if [ "$DOCKERHUB_USERNAME$DOCKERHUB_PASSWORD" ]
then
apk update && apk add jq
docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version)
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
docker push misskey/misskey
else
echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m'
fi
workflows:
version: 2
build-and-test:
jobs:
- ok:
filters:
branches:
only:
- l10n_develop
- imgbot
- build:
filters:
branches:
ignore:
- l10n_develop
- imgbot
- test:
requires:
- build
filters:
branches:
ignore:
# - master
- l10n_develop
- imgbot
- test:
without_redis: "true"
requires:
- build
filters:
branches:
only: master
# - docker:
# filters:
# branches:
# ignore: master
- docker:
with_deploy: "true"
filters:
branches:
only: master

View File

@ -0,0 +1,12 @@
url: 'http://misskey.local'
port: 80
mongodb:
host: localhost
port: 27017
db: misskey
user: syuilo
pass: ''
redis:
host: localhost
port: 6379
pass: ''

View File

@ -0,0 +1,13 @@
url: 'http://misskey.local'
port: 80
mongodb:
host: localhost
port: 27017
db: test-misskey
user: admin
pass: ''
# __REDIS__
redis:
host: localhost
port: 6379
pass: ''

View File

@ -1,33 +1,47 @@
name: example-instance-name # Name of your instance
description: example-description # Description of your instance
# Final accessible URL seen by a user.
url: https://example.tld/
maintainer:
name: example-maitainer-name # Your name
url: http://example.com/ # Your contact (http or mailto)
repository_url: https://github.com/syuilo/misskey # Repository URL
feedback_url: https://github.com/syuilo/misskey/issues # Feedback URL (e.g. github issue)
# URL and Port settings overview
# e.g., If you want to realize following structure:
### Port and TLS settings ######################################
#
# +--- https://example.com:123 ----------+
# +------+ |+-------------+ +---------------+|
# | User | ---> || Proxy (123) | ---> | Misskey (456) ||
# +------+ |+-------------+ +---------------+|
# +--------------------------------------+
# Misskey supports two deployment options for public.
#
# You need to set 'https://example.com:123' to 'url' prop and
# You need to set 456 to 'port' prop.
# Option 1: With Reverse Proxy
#
# In other words, the 'url' prop should be the final accessible URL seen by a user.
# 'port' prop is a port that the Misskey server should actually listen
# on and it is not necessarily the port that a user accesses.
# +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
# +------+ |+-------------+ +----------------+|
# +---------------------------------------+
#
# You need to setup reverse proxy. (eg. nginx)
# You do not define 'https' section.
url: http://localhost/
# Option 2: Standalone
#
# +- https://example.tld/ -+
# +------+ | +---------------+ |
# | User | ---> | | Misskey (443) | |
# +------+ | +---------------+ |
# +------------------------+
#
# You need to run Misskey as root.
# You need to set Certificate in 'https' section.
# To use option 1, uncomment below line.
# port: 3000 # A port that your Misskey server should listen.
# To use option 2, uncomment below lines.
# port: 443
#
# https:
# # path for certification
# key: /etc/letsencrypt/live/example.tld/privkey.pem
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
################################################################
# A port that your Misskey server should listen.
# This value is not a port to use when accessing with a browser.
port: 80
mongodb:
host: localhost
@ -36,26 +50,6 @@ mongodb:
user: example-misskey-user
pass: example-misskey-pass
redis:
host: localhost
port: 6379
pass: example-pass
# Drive capacity of a local user (MB)
localDriveCapacityMb: 256
# Drive capacity of a remote user (MB)
remoteDriveCapacityMb: 8
# If enabled:
# Server will not cache remote files (Using direct link instead).
# You can save your storage.
#
# NOTE:
# * Users cannot see remote images when they turn off "Show media from a remote server" setting.
# * Since thumbnails are not provided, traffic increases.
preventCacheRemoteFiles: false
drive:
storage: 'db'
@ -94,50 +88,42 @@ drive:
# accessKey: XXX
# secretKey: YYY
# If enabled:
# The first account created is automatically marked as Admin.
autoAdmin: true
#
# Below settings are optional
#
# TLS
# https:
# # path for certification
# key: /etc/letsencrypt/live/example.tld/privkey.pem
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
# Redis
#redis:
# host: localhost
# port: 6379
# pass: example-pass
# Elasticsearch
# elasticsearch:
# host: localhost
# port: 9200
# pass: null
# reCAPTCHA
# recaptcha:
# site_key: example-site-key
# secret_key: example-secret-key
#elasticsearch:
# host: localhost
# port: 9200
# pass: null
# ServiceWorker
# sw:
# # Public key of VAPID
# public_key: example-sw-public-key
# # Private key of VAPID
# private_key: example-sw-private-key
# google_maps_api_key: example-google-maps-api-key
# Twitter integration
# You need to set the oauth callback url as : https://<your-misskey-instance>/api/tw/cb
# twitter:
# consumer_key: example-twitter-consumer-key
# consumer_secret: example-twitter-consumer-secret-key
# Ghost
# Ghost account is an account used for the purpose of delegating
# followers when putting users in the list.
# ghost: user-id-of-your-ghost-account
#sw:
# # Public key of VAPID
# public_key: example-sw-public-key
#
# # Private key of VAPID
# private_key: example-sw-private-key
# Clustering
# clusterLimit: 1
#clusterLimit: 1
# Summaly proxy
# summalyProxy: "http://example.com"
#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

View File

@ -0,0 +1,13 @@
var user = {
user: 'example-misskey-user',
pwd: 'example-misskey-pass',
roles: [
{
role: 'readWrite',
db: 'misskey'
}
]
};
db.createUser(user);

12
.dockerignore Executable file
View File

@ -0,0 +1,12 @@
.autogen
.git
.github
.travis
.vscode
Dockerfile
build/
docker-compose.yml
node_modules/
mongo/
redis/
elasticsearch/

5
.gitignore vendored
View File

@ -1,5 +1,6 @@
/.config/*
!/.config/example.yml
!/.config/mongo_initdb_example.js
/.vscode
/node_modules
/build
@ -12,3 +13,7 @@ npm-debug.log
run.bat
api-docs.json
*.log
/redis
/mongo
/elasticsearch
*.code-workspace

View File

@ -1,41 +0,0 @@
# travis file
# https://docs.travis-ci.com/user/customizing-the-build
notifications:
email: false
branches:
except:
- l10n_master
language: node_js
node_js:
- 10.1.0
env:
- CXX=g++-4.8 NODE_ENV=production
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
cache:
directories:
- node_modules
services:
- mongodb
- redis-server
before_script:
- npm install
# 設定ファイルを配置
- cp ./.travis/default.yml ./.config
- cp ./.travis/test.yml ./.config
- travis_wait npm run build

View File

@ -1,26 +0,0 @@
maintainer: '@syuilo'
url: 'https://misskey.xyz'
secondary_url: 'https://himasaku.net'
port: 80
https:
enable: false
key: null
cert: null
ca: null
mongodb:
host: localhost
port: 27017
db: misskey
user: syuilo
pass: ''
redis:
host: localhost
port: 6379
pass: ''
elasticsearch:
host: localhost
port: 9200
pass: ''
recaptcha:
site_key: hima
secret_key: saku

View File

@ -1,26 +0,0 @@
maintainer: '@syuilo'
url: 'https://misskey.xyz'
secondary_url: 'https://himasaku.net'
port: 80
https:
enable: false
key: null
cert: null
ca: null
mongodb:
host: localhost
port: 27017
db: test-misskey
user: admin
pass: ''
redis:
host: localhost
port: 6379
pass: ''
elasticsearch:
host: localhost
port: 9200
pass: ''
recaptcha:
site_key: hima
secret_key: saku

View File

@ -5,6 +5,88 @@ ChangeLog
This document describes breaking changes only.
10.0.0
------
ストリーミングAPIに破壊的変更があります。運営者がすべきことはありません。
変更は以下の通りです
* ストリーミングでやり取りする際の snake_case が全て camelCase に
* リバーシのストリームエンドポイント名が reversi → gamesReversi、reversiGame → gamesReversiGame に
* ストリーミングの個々のエンドポイントが廃止され、一旦元となるストリームに接続してから、個々のチャンネル(今までのエンドポイント)に接続します。詳細は後述します。
* ストリームから流れてくる、キャプチャした投稿の更新イベントに投稿自体のデータは含まれず、代わりにアクションが設定されるようになります。詳細は後述します。
* ストリームに接続する際に追加で指定していたパラメータ(トークン除く)が、URLにクエリとして含むのではなくチャンネル接続時にパラメータ指定するように
### 個々のエンドポイントが廃止されることによる新しいストリーミングAPIの利用方法
具体的には、まず https://example.misskey/streaming にwebsocket接続します。
次に、例えば「messaging」ストリーム(チャンネルと呼びます)に接続したいときは、ストリームに次のようなデータを送信します:
``` javascript
{
type: 'connect',
body: {
channel: 'messaging',
id: 'foobar',
params: {
otherparty: 'xxxxxxxxxxxx'
}
}
}
```
ここで、`id`にはそのチャンネルとやり取りするための任意のIDを設定します。
IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。
`params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
チャンネルにメッセージを送信するには、次のようなデータを送信します:
``` javascript
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、`id`にはチャンネルに接続するときに指定したIDを設定します。
逆に、チャンネルからメッセージが流れてくると、次のようなデータが受信されます:
``` javascript
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、`id`にはチャンネルに接続するときに指定したIDが設定されています。
### 投稿のキャプチャに関する変更
投稿の更新イベントに投稿情報は含まれなくなりました。代わりに、その投稿が「リアクションされた」「アンケートに投票された」「削除された」といったアクション情報が設定されます。
具体的には次のようなデータが受信されます:
``` javascript
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxx',
type: 'reacted',
body: {
reaction: 'hmm'
}
}
}
```
* reacted ... 投稿にリアクションされた。`reaction`プロパティにリアクションコードが含まれます。
* pollVoted ... アンケートに投票された。`choice`プロパティに選択肢ID、`userId`に投票者IDが含まれます。
9.0.0
-----

View File

@ -6,14 +6,14 @@ Feature suggestions and bug reports are filed in https://github.com/syuilo/missk
Before creating a new issue, please search existing issues to avoid duplication.
If you find the existing issue, please add your reaction or comment to the issue.
## Internationalization (i18n)
Please see [Translation guide](./docs/translate.en.md).
## Localization (l10n)
Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
## Internationalization (i18n)
Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n).
## Documentation
* Documents for contributors are located in `/docs`.
* Documents for instance admins are located in `/docs`.
@ -23,5 +23,5 @@ Please use [Crowdin](https://crowdin.com/project/misskey) for localization.
* Test codes are located in `/test`.
## Continuous integration
Misskey uses Travis for automated test.
Configuration files are located in `/.travis`.
Misskey uses CircleCI for automated test.
Configuration files are located in `/.circleci`.

44
Dockerfile Normal file
View File

@ -0,0 +1,44 @@
FROM alpine:3.8 AS base
ENV NODE_ENV=production
RUN apk add --no-cache nodejs nodejs-npm zlib
RUN npm i -g npm@latest
WORKDIR /misskey
FROM base AS builder
RUN apk add --no-cache \
gcc \
g++ \
libc-dev \
python \
autoconf \
automake \
file \
make \
nasm \
pkgconfig \
libtool \
zlib-dev
RUN npm i -g node-gyp
COPY ./package.json ./
RUN npm i
COPY . ./
RUN node-gyp configure \
&& node-gyp build \
&& npm run build
FROM base AS runner
RUN apk add --no-cache tini
ENTRYPOINT ["/sbin/tini", "--"]
COPY --from=builder /misskey/node_modules ./node_modules
COPY --from=builder /misskey/built ./built
COPY . ./
CMD ["npm", "start"]

View File

@ -3,16 +3,18 @@
[![Misskey](/assets/title.png)](https://misskey.xyz/)
================================================================
[![][travis-badge]][travis-link]
[![CircleCI](https://circleci.com/gh/syuilo/misskey.svg?style=svg)](https://circleci.com/gh/syuilo/misskey)
[![][dependencies-badge]][dependencies-link]
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Greenkeeper badge](https://badges.greenkeeper.io/syuilo/misskey.svg)](https://greenkeeper.io/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
**Sophisticated microblogging platform, evolving forever.**
[Misskey](https://misskey.xyz) is a decentralized microblogging platform born on Earth.
<p align="justify">
<a href="https://misskey.xyz">Misskey</a> is a decentralized microblogging platform born on Earth.
Since it exists within the Fediverse (a universe where various social media platforms are organized),
it is mutually linked with other social media platforms.
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? [Find instance!](https://joinmisskey.github.io/)
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://joinmisskey.github.io/">Find instance!</a>
</p>
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
@ -24,8 +26,8 @@ Why don't you take a short break from the hustle and bustle of the city, and div
<img src="/assets/about/post.png" align="left" height="200px"/>
<h3 align="left">Posting</h3>
<p align="left">
Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!
<p align="justify">
Just post your idea, hot topics and anything you want to share. You may decorate your words, attach your favorite pictures or movies, and create a poll - those are all supported in Misskey!
</p>
---
@ -33,8 +35,8 @@ Just post your idea, hot topics and anything you want to share. You may want to
<img src="/assets/about/reaction.png" align="right" height="200px"/>
<h3 align="right">Reactions</h3>
<p align="right">
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”.
<p align="justify">
The simplest way to tell your emotions to the posts. You can choose the best reaction from various reactions. Reactions on Misskey has much more expressive than other social media which only allows pushing “likes”.
</p>
---
@ -42,8 +44,8 @@ Easiest way to tell your emotions. Misskey allows you to add various type of rea
<img src="/assets/about/ui.png" align="left" height="200px"/>
<h3 align="left">Interface</h3>
<p align="left">
No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. You can edit layouts of your timeline, place selectable widgets you can easily move and create your unique home as this place will be your home.
<p align="justify">
Highly customizable UI for your taste. We understand no UI fits for everyone. Make your graceful home by editing, adjusting layouts of timeline, and placing widgets.
</p>
---
@ -51,13 +53,13 @@ No UI fits for everyone. Therefore, Misskey has a highly customizable UI for you
<img src="/assets/about/drive.png" align="right" width="300px"/>
<h3 align="right">Misskey Drive</h3>
<p align="right">
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.
<p align="justify">
Organized uploaded files. Wanna post a picture you have already uploaded? Wish to create a folder for your files? Misskey Drive is the best solution for you.
</p>
---
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
and more! Now it's time to experience the world with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
:package: Create your own instance
----------------------------------------------------------------
@ -72,38 +74,45 @@ Please see [Contribution guide](./CONTRIBUTING.md).
<!-- PATREON_START -->
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1?token-time=2145916800&token-hash=d6P5MWHHsCMxUuBAEPAoVc5wLUR19mIhqAq7Ma9h9rI%3D" alt="ne_moni"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D" alt="Melilot"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/2?token-time=2145916800&token-hash=rwZ8qvbm_kpA4ib3kc07tVKupXeySpY5ATQFGxfL9v0%3D" alt="Axella"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/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/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://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>
</tr><tr>
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
<td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td>
<td><a href="https://www.patreon.com/negao">negao</a></td>
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
<td><a href="https://www.patreon.com/AxellaMC">Axella</a></td>
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</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>
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D" alt="Naoki Kosaka"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D" alt="Reiju"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/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/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/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/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/user?u=5881381">Naoki Kosaka</a></td>
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td>
<td><a href="https://www.patreon.com/user?u=13039004">nemu</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/hiratake">Hiratake</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/mastodon">Gargron</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>
</tr></table>
<table><tr>
</tr><tr>
</tr></table>
**Last updated:** Sun, 02 Sep 2018 05:30:06 UTC
**Last updated:** Wed, 31 Oct 2018 23:21:06 UTC
<!-- PATREON_END -->
:four_leaf_clover: Copyright
@ -116,8 +125,6 @@ Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
[agpl-3.0]: https://www.gnu.org/licenses/agpl-3.0.en.html
[agpl-3.0-badge]: https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=flat-square
[travis-link]: https://travis-ci.org/syuilo/misskey
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
[dependencies-link]: https://david-dm.org/syuilo/misskey
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square

View File

@ -1,13 +0,0 @@
const deleteUser = require('../built/models/user').deleteUser;
const args = process.argv.slice(2);
const userId = args[0];
console.log(`deleting ${userId}...`);
deleteUser(userId).then(() => {
console.log('done');
}, 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(`Mark as verfied ${user}...`);
User.update(q, {
$set: {
isVerified: true
}
}).then(() => {
console.log(`Done ${user}`);
}, e => {
console.error(e);
});

View File

@ -1,42 +0,0 @@
const { default: Note } = require('../built/models/note');
const { default: Meta } = require('../built/models/meta');
const { default: User } = require('../built/models/user');
async function main() {
const meta = await Meta.findOne({});
const notesCount = await Note.count();
const usersCount = await User.count();
const originalNotesCount = await Note.count({
'_user.host': null
});
const originalUsersCount = await User.count({
host: null
});
const stats = {
notesCount,
usersCount,
originalNotesCount,
originalUsersCount
};
if (meta) {
await Meta.update({}, {
$set: {
stats
}
});
} else {
await Meta.insert({
stats
});
}
}
main().then(() => {
console.log('done');
}).catch(console.error);

View File

@ -1,12 +0,0 @@
const updatePerson = require('../built/remote/activitypub/models/person').updatePerson;
const args = process.argv.slice(2);
const user = args[0];
console.log(`Updating ${user}...`);
updatePerson(user).then(() => {
console.log(`Updated ${user}`);
}, e => {
console.error(e);
});

52
docker-compose.yml Normal file
View File

@ -0,0 +1,52 @@
version: "3"
services:
web:
build: .
restart: always
links:
- mongo
# - redis
# - es
ports:
- "127.0.0.1:3000:3000"
networks:
- internal_network
- external_network
# redis:
# restart: always
# image: redis:4.0-alpine
# networks:
# - internal_network
### Uncomment to enable Redis persistance
## volumes:
## - ./redis:/data
mongo:
restart: always
image: mongo:4.1
networks:
- internal_network
environment:
MONGO_INITDB_DATABASE: "misskey"
volumes:
- ./.config/mongo_initdb.js:/docker-entrypoint-initdb.d/mongo_initdb.js:ro
### Uncomment to enable MongoDB persistance
# - ./mongo:/data
# es:
# restart: always
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
# environment:
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# networks:
# - internal_network
#### Uncomment to enable ES persistence
## volumes:
## - ./elasticsearch:/usr/share/elasticsearch/data
networks:
internal_network:
internal: true
external_network:

53
docs/docker.en.md Normal file
View File

@ -0,0 +1,53 @@
Docker Guide
================================================================
This guide describes how to install and setup Misskey with Docker.
[Japanese version also available - 日本語版もあります](./docker.ja.md)
----------------------------------------------------------------
*1.* Download Misskey
----------------------------------------------------------------
1. `git clone -b master git://github.com/syuilo/misskey.git` Clone Misskey repository's master branch.
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.
*2.* Make configuration files
----------------------------------------------------------------
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. Edit `default.yml` and `mongo_initdb.js`.
*3.* Configure Docker
----------------------------------------------------------------
Edit `docker-compose.yml`.
*4.* Build Misskey
----------------------------------------------------------------
Build misskey with the following:
`docker-compose build`
*5.* That is it.
----------------------------------------------------------------
Well done! Now, you have an environment that run to Misskey.
### Launch normally
Just `docker-compose up -d`. GLHF!
### Way to Update to latest version of your Misskey
1. `git fetch`
2. `git stash`
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
4. `git stash pop`
5. `docker-compose build`
6. Check [ChangeLog](../CHANGELOG.md) for migration information
7. `docker-compose stop && docker-compose up -d`
### Way to execute cli command:
`docker-compose run --rm web node cli/mark-admin @example`
----------------------------------------------------------------
If you have any questions or troubles, feel free to contact us!

54
docs/docker.ja.md Normal file
View File

@ -0,0 +1,54 @@
Dockerを使ったMisskey構築方法
================================================================
このガイドはDockerを使ったMisskeyセットアップ方法について解説します。
[英語版もあります - English version also available](./docker.en.md)
----------------------------------------------------------------
*1.* Misskeyのダウンロード
----------------------------------------------------------------
1. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
2. `cd misskey` misskeyディレクトリに移動
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
*2.* 設定ファイルを作成する
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` `.config/mongo_initdb_example.js`をコピーし名前を`mongo_initdb.js`にする
3. `default.yml``mongo_initdb.js`を編集する
*3.* Dockerの設定
----------------------------------------------------------------
`docker-compose.yml`を編集してください。
*4.* Misskeyのビルド
----------------------------------------------------------------
次のコマンドでMisskeyをビルドしてください:
`docker-compose build`
*5.* 以上です!
----------------------------------------------------------------
お疲れ様でした。これでMisskeyを動かす準備は整いました。
### 通常起動
`docker-compose up -d`するだけです。GLHF!
### Misskeyを最新バージョンにアップデートする方法:
1. `git fetch`
2. `git stash`
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
4. `git stash pop`
5. `docker-compose build`
6. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
7. `docker-compose stop && docker-compose up -d`
### cliコマンドを実行する方法:
`docker-compose run --rm web node cli/mark-admin @example`
----------------------------------------------------------------
なにかお困りのことがありましたらお気軽にご連絡ください。

View File

@ -22,13 +22,13 @@ adduser --disabled-password --disabled-login misskey
Please install and setup these softwares:
#### Dependencies :package:
* **[Node.js](https://nodejs.org/en/)**
* **[Node.js](https://nodejs.org/en/)** >= 10.0.0
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
* **[Redis](https://redis.io/)**
##### Optional
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
* [Redis](https://redis.io/)
* Redis is optional, but we strongly recommended to install it
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
*3.* Setup MongoDB
----------------------------------------------------------------
@ -47,11 +47,6 @@ 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)
5. `npm install` Install misskey dependencies.
*(optional)* reCAPTCHA tokens
----------------------------------------------------------------
If you want to enable reCAPTCHA, you need to generate reCAPTCHA tokens:
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
*(optional)* Generating VAPID keys
----------------------------------------------------------------
If you want to enable ServiceWorker, you need to generate VAPID keys:
@ -62,13 +57,6 @@ npm install web-push -g
web-push generate-vapid-keys
```
*(optional)* Create a twitter application
----------------------------------------------------------------
If you want to enable the twitter integration, you need to create a twitter app at [https://developer.twitter.com/en/apply/user](https://developer.twitter.com/en/apply/user).
In the app you need to set the oauth callback url as : https://misskey-instance/api/tw/cb
*5.* Make configuration file
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
@ -81,7 +69,7 @@ Build misskey with the following:
`npm run build`
If you're on Debian, you will need to install the `build-essential` package.
If you're on Debian, you will need to install the `build-essential`, `python` package.
If you're still encountering errors about some modules, use node-gyp:

126
docs/setup.fr.md Normal file
View File

@ -0,0 +1,126 @@
Guide d'installation et de configuration de Misskey
================================================================
Nous vous remerçions de l'intrêt que vous manifestez pour l'installation de votre propre instance Misskey !
Ce guide décrit les étapes à suivre afin d'installer et de configurer une instance Misskey.
[La version en japonnais est également disponible sur - 日本語版もあります](./setup.ja.md)
----------------------------------------------------------------
*1.* Création de l'utilisateur Misskey
----------------------------------------------------------------
Lancer misskey en tant qu'utilisateur est une mauvaise idée, nous avons besoin de créer un utilisateur dédié.
Sur Debian, à titre d'exemple :
```
adduser --disabled-password --disabled-login misskey
```
*2.* Installation des dépendances
----------------------------------------------------------------
Installez les paquets suivants :
#### Dépendences :package:
* **[Node.js](https://nodejs.org/en/)** >= 10.0.0
* **[MongoDB](https://www.mongodb.com/)** >= 3.6
##### Optionnels
* [Redis](https://redis.io/)
* Redis est optionnel mais nous vous recommandons vivement de l'installer
* [Elasticsearch](https://www.elastic.co/) - requis pour pouvoir activer la fonctionnalité de recherche
*3.* Paramètrage de MongoDB
----------------------------------------------------------------
En mode root :
1. `mongo` Accédez au shell de mango
2. `use misskey` Utilisez la base de données misskey
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
5. `exit` Vous avez terminé !
*4.* Installation de Misskey
----------------------------------------------------------------
1. `su - misskey` Basculez vers l'utilisateur misskey.
2. `git clone -b master git://github.com/syuilo/misskey.git` Clonez la branche master du dépôt misskey.
3. `cd misskey` Accédez au dossier misskey.
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
5. `npm install` Installez les dépendances de misskey.
*(optionnel)* Génération des clés VAPID
----------------------------------------------------------------
Si vous désirez activer ServiceWorker, vous devez générer les clés VAPID :
Unless you have set your global node_modules location elsewhere, vous devez lancer ceci en mode root.
``` shell
npm install web-push -g
web-push generate-vapid-keys
```
*5.* Création du fichier de configuration
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
2. Editez le fichier `default.yml`
*6.* Construction de Misskey
----------------------------------------------------------------
Construisez Misskey comme ceci :
`npm run build`
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential`, `python`.
Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
1. `npm install -g node-gyp`
2. `node-gyp configure`
3. `node-gyp build`
4. `npm run build`
*7.* C'est tout.
----------------------------------------------------------------
Excellent ! Maintenant, vous avez un environnement prêt pour lancer Misskey
### Lancement conventionnel
Lancez tout simplement `npm start`. Bonne chance et amusez-vous bien !
### Démarrage avec systemd
1. Créez une service systemd sur : `/etc/systemd/system/misskey.service`
2. Editez-le puis copiez et coller ceci dans le fichier :
```
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
```
3. `systemctl daemon-reload ; systemctl enable misskey` Redémarre systemd et active le service misskey.
4. `systemctl start misskey` Démarre le service misskey.
Vous pouvez vérifier si le service a démarré en utilisant la commande `systemctl status misskey`.
### Méthode de mise à jour vers la plus récente version de Misskey
1. `git fetch`
2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
3. `npm install`
4. `npm run build`
5. Consultez [ChangeLog](../CHANGELOG.md) pour les information de migration.
----------------------------------------------------------------
Si vous rencontrez des difficultés ou avez d'autres questions, n'hésitez pas à nous contacter !

View File

@ -22,12 +22,19 @@ adduser --disabled-password --disabled-login misskey
これらのソフトウェアをインストール・設定してください:
#### 依存関係 :package:
* **[Node.js](https://nodejs.org/en/)**
* **[Node.js](https://nodejs.org/en/)** (10.0.0以上)
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
* **[Redis](https://redis.io/)**
##### オプション
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
* [Redis](https://redis.io/)
* Redisはオプションですが、インストールすることを強く推奨します。
* インストールしなくていいのは、あなたのインスタンスが自分専用のときだけとお考えください。
* 具体的には、Redisをインストールしないと、次の事が出来なくなります:
* Misskeyプロセスを複数起動しての負荷分散
* レートリミット
* Twitter連携
* [Elasticsearch](https://www.elastic.co/)
* 検索機能を有効にするためにはインストールが必要です。
*3.* MongoDBの設定
----------------------------------------------------------------
@ -46,11 +53,6 @@ adduser --disabled-password --disabled-login misskey
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
5. `npm install` Misskeyの依存パッケージをインストール
*(オプション)* reCAPTCHAトークン
----------------------------------------------------------------
reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。
*(オプション)* VAPIDキーペアの生成
----------------------------------------------------------------
ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります:

View File

@ -1,23 +0,0 @@
Misskey's Translation
=====================
If you find an untranslated part on Misskey:
--------------------------------------------
1. Look for untranslated parts in the misskey's source code.
- For instance, if you find an untranslated part in: `src/client/app/mobile/views/pages/home.vue`.
2. Replace the untranslated portion with a character string of the form `%i18n:@foo%`.
- In fact, `foo` should be a word that is appropriate for the situation and is easy to understand in English.
- For example, if the untranslated portion is the following "タイムライン" you must write: `%i18n:@timeline%`.
3. Open the `locales/ja-JP.yml`, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it.
- Do not put the beginning of the path `src/client/app/` in the locale file.
- For example, in this case we want to modify untranslated parts of `src/client/app/mobile/views/pages/home.vue`, so the key is `mobile/views/pages/home.vue`.
4. Add the text property using the `foo` keyword below the path that you found or created in step 2. Make sure to type your text in quotation marks. Text should always be inside of quotes.
- For example, in this case we add timeline: `timeline: "タイムライン"` to `locales/ja-JP.yml`.
5. And done
For more details, please refer to this [commit](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c).

View File

@ -1,23 +0,0 @@
Traduction de Misskey
=====================
Si vous trouvez un segment non-traduit sur Misskey :
----------------------------------------------------
1. Veuillez chercher des parties non-traduites dans le code source de Misskey.
- Par exemple, supposons que vous trouviez un segment non-traduit dans : `src/client/app/mobile/views/pages/home.vue`.
2. Remplacez la portion non-traduite par une chaîne de caractères de type `%i18n:@foo%`.
- En fait, `foo` doit être un mot approprié à la situation et facile à comprendre en français.
- Par exemple, si le segment non-traduit est「タイムライン」on peut écrire : `%i18n:@timeline%`.
3. Ouvrez chaque fichier linguistique dans /locales, vérifiez si le <strong>nom du fichier (chemin)</strong> trouvé dans l'étape 1 existe, sinon créez-le.
- Ne mettez pas le début du chemin `src/client/app/` dans les fichiers /locales.
- Par exemple, dans ce cas de figure, nous voulons modifier le segment non-traduit de : `src/client/app/mobile/views/pages/home.vue`donc il faut juste écrire : `mobile/views/pages/home.vue` dans les fichiers linguistiques.
4. Ajoutez la propriété du texte traduit grâce à la clef `foo`, en-dessous du chemin correspondant à votre modification que vous avez trouvé ou créé dans l'étape 2. À côté, veuillez indiquer entre "guillemets" la valeur de votre traduction.
- Par exemple, dans ce cas de figure, nous ajoutons la propriété et la traduction `timeline: "Timeline"` à `locales/fr.yml`, mais aussi la propriété et la version originale `timeline: "タイムライン"` à `locales/ja-JP.yml`.
5. Vous avez réussi à traduire une portion de misskey
Pour plus de détails, veuillez vous référer à ce [commit](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c).

View File

@ -1,23 +0,0 @@
Misskeyの翻訳
============
Misskey内の未翻訳箇所を見つけたら
-------------------------------
1. Misskeyのソースコード内から未翻訳箇所を探してください。
- 例えば`src/client/app/mobile/views/pages/home.vue`で未翻訳箇所を見つけたとします。
2. 未翻訳箇所を`%i18n:@foo%`のような形式の文字列に置換してください。
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
3. `locales/ja-JP.yml`を開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
- パスの`src/client/app/`は省略してください。
- 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
- 例えば、今回の例で言うと`locales/ja-JP.yml``timeline: "タイムライン"`を追加します。
5. 完了です!
詳しくは、[このコミット](https://github.com/syuilo/misskey/commit/10f6d5980fa7692ccb45fbc5f843458b69b7607c)などを参考にしてください。

View File

@ -2,10 +2,10 @@
* Gulp tasks
*/
import * as fs from 'fs';
import * as gulp from 'gulp';
import * as gutil from 'gulp-util';
import * as ts from 'gulp-typescript';
const yaml = require('gulp-yaml');
const sourcemaps = require('gulp-sourcemaps');
import tslint from 'gulp-tslint';
const cssnano = require('gulp-cssnano');
@ -22,7 +22,6 @@ import * as htmlmin from 'gulp-htmlmin';
const uglifyes = require('uglify-es');
const locales = require('./locales');
import { fa } from './src/misc/fa';
const uglify = uglifyComposer(uglifyes, console);
@ -41,6 +40,7 @@ gulp.task('build', [
'build:ts',
'build:copy',
'build:client',
'locales',
'doc'
]);
@ -59,16 +59,7 @@ gulp.task('build:copy:views', () =>
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
);
// 互換性のため
gulp.task('build:copy:lang', () =>
gulp.src(['./built/client/assets/*.*-*.js'])
.pipe(rename(path => {
path.basename = path.basename.replace(/\-(.*)$/, '');
}))
.pipe(gulp.dest('./built/client/assets/'))
);
gulp.task('build:copy', ['build:copy:views', 'build:copy:lang'], () =>
gulp.task('build:copy', ['build:copy:views'], () =>
gulp.src([
'./build/Release/crypto_key.node',
'./src/const.json',
@ -165,10 +156,7 @@ gulp.task('build:client:pug', [
gulp.src('./src/client/app/base.pug')
.pipe(pug({
locals: {
themeColor: constants.themeColor,
facss: fa.dom.css(),
//hljscss: fs.readFileSync('./node_modules/highlight.js/styles/default.css', 'utf8')
hljscss: fs.readFileSync('./src/client/assets/code-highlight.css', 'utf8')
themeColor: constants.themeColor
}
}))
.pipe(htmlmin({
@ -206,6 +194,12 @@ gulp.task('build:client:pug', [
.pipe(gulp.dest('./built/client/app/'))
);
gulp.task('locales', () =>
gulp.src('./locales/*.yml')
.pipe(yaml({ schema: 'DEFAULT_SAFE_SCHEMA' }))
.pipe(gulp.dest('./built/client/assets/locales/'))
);
gulp.task('doc', () =>
gulp.src('./src/docs/**/*.styl')
.pipe(stylus())

View File

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

View File

@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -54,6 +52,8 @@ common:
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "日"
monday: "月"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
@ -144,34 +152,15 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "名前を変更"
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
@ -594,14 +626,13 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -612,9 +643,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
theme: "テーマ"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue:
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "知り合いのフォロワー"
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1300,3 +1435,29 @@ docs:
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,11 @@ common:
application-authorization: "Application authorizations"
close: "Close"
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
load-more: "Load more"
got-it: "Got it!"
customization-tips:
title: "Customization tips"
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
paragraph2: "You can change the display by <strong><strong>right</strong> clicking</strong> on some widgets."
paragraph3: "To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header."
paragraph4: "To finish the customization, click \"Finish\" on the upper right."
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>"
gotit: "Got it!"
notification:
file-uploaded: "File uploaded!"
@ -54,6 +52,8 @@ common:
years_ago: "{}year(s) ago"
month-and-day: "{month}/{day}"
trash: "Trash"
drive: "Drive"
messaging: "Talk"
weekday-short:
sunday: "S"
monday: "M"
@ -109,23 +109,31 @@ common:
use-contrast-reversi-stones: "Make the stone color clear in reversi"
verified-user: "Verified account"
disable-animated-mfm: "Disable animated texts in a post"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "Always post with a warning about media attachment"
always-show-nsfw: "Always show NSFW contents"
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
show-full-acct: "Do not omit the hostname from the username"
show-via: "Show via"
reduce-motion: "Reduce motion in UI"
this-setting-is-this-device-only: "Only for this device"
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.'
is-remote-user: "This user information is copied."
is-remote-post: "This post information is a copy."
view-on-remote: "View it on remote"
error:
title: 'Something happened :('
retry: 'Retry'
reversi:
drawn: "Draw"
my-turn: "Your turn"
opponent-turn: "Opponent's turn"
turn-of: "{}'s turn"
past-turn-of: "{}'s turn"
won: "{} won"
turn-of: "{name}'s turn"
past-turn-of: "{name}'s turn"
won: "{name} won"
black: "Black"
white: "White"
total: "Total"
this-turn: "Turn {}"
this-turn: "Turn {count}"
widgets:
analog-clock: "Analog clock"
profile: "Profile"
@ -144,34 +152,15 @@ common:
users: "Recommended users"
polls: "Polls"
post-form: "Post form"
messaging: "Messages"
server: "Server info"
donation: "Request for donations"
nav: "Navigation"
tips: "Tips"
hashtags: "Hashtags"
deck:
widgets: "Widgets"
home: "Home"
local: "Local"
hybrid: "Social"
hashtag: "Hashtag"
global: "Global"
mentions: "Mentions"
direct: "ダイレクト投稿"
notifications: "Notifications"
list: "Lists"
swap-left: "Move to the left"
swap-right: "Move to the right"
swap-up: "Move up"
swap-down: "Move downward"
remove: "Remove"
add-column: "Add a column"
rename: "Rename"
stack-left: "Stack to the left"
pop-right: "Dock on the right"
dev: "Failed to create the application. Please try again."
ai-chan-kawaii: "Ai-chan kawaii!"
auth/views/form.vue:
share-access: "Would you <b>allow</b> <i>{{ app.name }}</i> to access your account?"
share-access: "Would you allow <i>{name}</i> to access your account?"
permission-ask: "This application requires the following permissions:"
account-read: "View account information."
account-write: "Modify account information."
@ -233,7 +222,7 @@ common/views/components/games/reversi/reversi.room.vue:
this-game-is-started-soon: "The game will begin in seconds"
waiting-for-other: "Waiting for the opponent"
waiting-for-me: "Waiting for the your preparation"
waiting-for-both: "Prepareing"
waiting-for-both: "Preparing"
cancel: "Cancel"
ready: "Ready"
cancel-ready: "Cancel \"Ready\""
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "NSFW"
click-to-show: "Click to show"
common/views/components/theme.vue:
light-theme: "Theme"
dark-theme: "Theme during dark mode"
light-themes: "Light theme"
dark-themes: "Dark theme"
install-a-theme: "Install a theme"
theme-code: "Theme code"
install: "Install"
installed: "\"{}\" has been installed"
create-a-theme: "Create a theme"
save-created-theme: "Save a theme"
primary-color: "Primary color"
secondary-color: "Secondary color"
text-color: "Text color"
base-theme: "Base theme"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "Theme name"
preview-created-theme: "Preview"
invalid-theme: "Not valid theme"
already-installed: "This theme is already installed."
saved: "Saved"
manage-themes: "Themes manager"
builtin-themes: "Standard themes"
my-themes: "My themes"
installed-themes: "Installed themes"
select-theme: "Select your theme"
uninstall: "Uninstall"
uninstalled: "\"{}\" has been uninstalled"
author: "Author"
desc: "Description"
export: "Export"
import: "Import"
import-by-code: "or paste code"
theme-name-required: "Theme name is required"
common/views/components/cw-button.vue:
hide: "Hide"
show: "See more"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "Without history"
common/views/components/messaging-room.vue:
empty: "No conversations"
more: "Read more"
no-history: "There is no further history"
resize-form: "Drag to resize"
new-message: "New message"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "Details"
copy-link: "Copy link"
favorite: "Favorite this note"
unfavorite: "Unfavorite"
pin: "Pin to your profile"
unpin: "Unpin"
delete: "Delete"
delete-confirm: "Delete this post?"
remote: "Show original note"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "Discard the poll"
common/views/components/reaction-picker.vue:
choose-reaction: "Send a reaction"
common/views/components/emoji-picker.vue:
custom-emoji: "Custom Emoji"
people: "People"
animals-and-nature: "Animals & Nature"
food-and-drink: "Food & drink"
activity: "Activity"
travel-and-places: "Travel & Places"
objects: "Objects"
symbols: "Symbols"
flags: "Flags"
common/views/components/signin.vue:
username: "Username"
password: "Password"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "Sign in"
or: "Or"
signin-with-twitter: "Log in with Twitter"
signin-with-github: "Log in with GitHub"
login-failed: "Log in failed. Make sure you have entered your correct username and password."
common/views/components/signup.vue:
invitation-code: "Invitation code"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "Reconnect"
connect: "Link your Twitter account"
disconnect: "Disconnect"
common/views/components/github-setting.vue:
description: "Once you connect your GitHub account to your Misskey account, you will be able to see information about your GitHub account on your profile, and you will be able to sign-in via GitHub."
connected-to: "You are connected to this GitHub account"
detail: "More..."
reconnect: "Reconnect"
connect: "Connect to GitHub"
disconnect: "Disconnect"
common/views/components/uploader.vue:
waiting: "Waiting"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{} users mentioned"
empty: "No popular hashtag trends"
common/views/components/profile-editor.vue:
title: "Profile"
name: "Name"
account: "Account"
location: "Location"
description: "About me"
birthday: "Birthday"
avatar: "Avatar"
banner: "Banner"
is-cat: "This account is a Cat"
is-bot: "This account is a Bot"
is-locked: "Follower requests require approval"
careful-bot: "Follower requests from bots require approval"
advanced: "Advanced"
privacy: "Privacy"
save: "Update profile"
saved: "Profile updated successfully"
uploading: "Uploading"
upload-failed: "Failed to upload"
common/views/widgets/broadcast.vue:
fetching: "Fetching"
no-broadcasts: "No announcements"
@ -426,7 +488,7 @@ common/views/widgets/tips.vue:
tips-line10: "Using the Time Machine widget makes it easy to trace back to the past timeline."
tips-line11: "You can pin posts to user page by clicking on \"...\""
tips-line13: "All the files attached to the post are saved to Drive."
tips-line14: "While customizing the home, you can right click on the widget and change the design."
tips-line14: "While customizing your home layout, you can right click on a widget to change its design."
tips-line17: "Surrounding the text with ** ** will highlight it."
tips-line19: "Several windows can be detached outside the browser."
tips-line20: "The percentage of the calendar widget shows the percentage of time elapsed."
@ -462,34 +524,12 @@ desktop/views/components/activity.vue:
title: "Activity"
toggle: "Toggle views"
desktop/views/components/calendar.vue:
title: "{1} / {2}"
title: "{year} / {month}"
prev: "Previous month"
next: "Next month"
go: "Click to navigate"
desktop/views/components/charts.vue:
title: "Charts"
per-day: "per Day"
per-hour: "per Hour"
notes: "Posts"
users: "Users"
drive: "Drive"
network: "Network"
charts:
notes: "The number of posts: increase/decrease (Combined)"
local-notes: "The number of posts: increase/decrease (Local)"
remote-notes: "The number of posts: increase/decrease (Remote)"
notes-total: "The number of posts: cumulative total"
users: "The number of users: increase/decrease"
users-total: "The number of users: cumulative total"
drive: "Capacity used as the storage: increase/decrease"
drive-total: "Capacity used as the storage: cumulative total"
drive-files: "The number of files on the storage: increase/decrease"
drive-files-total: "The number of files on the storage: cumulative total"
network-requests: "Requests"
network-time: "Response time"
network-usage: "Traffic"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Choose files"
chosen-files: "{count} File(s) selected"
upload: "Upload files from your device"
cancel: "Cancel"
ok: "OK"
@ -504,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "OK"
desktop/views/components/drive-window.vue:
used: "used"
drive: "Media storage"
desktop/views/components/drive.file.vue:
avatar: "Avatar"
banner: "Banner"
@ -534,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "Rename"
rename-folder: "Rename folder"
input-new-folder-name: "Enter new name"
desktop/views/components/drive.nav-folder.vue:
drive: "Media storage"
desktop/views/components/drive.vue:
search: "Search"
load-more: "Load more"
empty-draghover: "Drop it here! Yep, cuz you know I'm cute, right?"
empty-drive: "Your media storage is empty"
empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
@ -562,12 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
desktop/views/components/follow-button.vue:
following: "Following"
follow: "Follow"
request-pending: "Pending follow request"
follow-processing: "Processing follow"
follow-request: "Follow request"
desktop/views/components/followers-window.vue:
followers: "{}'s followers"
desktop/views/components/followers.vue:
@ -596,27 +626,24 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "Messaging"
desktop/views/components/note-detail.vue:
more: "Load more conversations"
private: "Post is private"
deleted: "Post has been removed"
reposted-by: "Reposted by {}"
location: "Location"
renote: "Repost"
add-reaction: "Add a reaction"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "Reposted by {}"
reply: "Reply"
renote: "Repost"
renote: "Renote"
add-reaction: "Add a reaction"
detail: "Show details"
private: "Post is private"
deleted: "Post has been deleted"
detail: "Details"
private: "This post is private"
deleted: "This post has been deleted"
desktop/views/components/notes.vue:
error: "Loading failed."
retry: "Retry"
load-more: "Read more"
desktop/views/components/notifications.vue:
more: "More"
empty: "No notifications!"
desktop/views/components/post-form.vue:
add-visible-user: "+Add a user"
@ -663,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Failed to Repost"
desktop/views/components/renote-form-window.vue:
title: "Do you want to Repost it?"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}'s following"
followers: "{user}'s follower"
desktop/views/components/settings-window.vue:
settings: "Settings"
desktop/views/components/settings.vue:
profile: "Profile"
notification: "Notification"
apps: "Apps"
mute: "Mute"
drive: "Drive"
mute-and-block: "Mute / Block"
blocking: "Blocking"
security: "Security"
signin: "Sign in history"
password: "Password"
2fa: "Two-factor authentication"
other: "Other"
license: "License"
theme: "Theme"
behaviour: "Behavior"
fetch-on-scroll: "Endless loading on scroll"
fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
@ -688,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "Advanced settings"
api-via-stream: "API request via stream"
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
deck-nav: "Transitionless deck navigation"
deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck."
deck-default: "Use Deck as default UI"
display: "Design and display"
customize: "Customize home layout"
wallpaper: "Wallpaper"
choose-wallpaper: "Choose a background"
delete-wallpaper: "Remove background"
dark-mode: "Dark Mode"
use-shadow: "Use shadows in the UI"
rounded-corners: "Round corners of UI"
circle-icons: "Use circle icons"
contrasted-acct: "Add contrast to username"
gradient-window-header: "Use gradients on window headers"
post-form-on-timeline: "Display post form at the top of the timeline"
suggest-recent-hashtags: "Show recent popular hashtags on the post form"
show-clock-on-header: "Show clock on upper-right"
show-reply-target: "Display reply target"
timeline: "Timeline"
show-my-renotes: "Show my renotes in the timeline"
show-renoted-my-notes: "Show renoted my posts in timelines"
show-renoted-my-notes: "Show renoted posts of mine in timelines"
show-local-renotes: "Show renoted local posts in timelines"
show-maps: "Display a map to show the location"
show-maps-desc: "If there comes a post contains location information, show a map to display the location."
deck-column-align: "Deck column alignment"
deck-column-align-center: "Center"
deck-column-align-left: "Left"
sound: "Sound"
enable-sounds: "Enable sound"
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
volume: "Volume"
test: "Test"
mobile: "Mobile"
disable-via-mobile: "Don't mark the post as 'from mobile'"
language: "Language"
pick-language: "Select a language"
recommended: "Recommended"
@ -747,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "Tools"
task-manager: "Task Manager"
third-parties: "Third-parties"
navbar-position: "Navigation bar position"
navbar-position-top: "Top"
navbar-position-left: "Left"
navbar-position-right: "Right"
desktop/views/components/settings.2fa.vue:
intro: "If you set up 2-step verification, you will not only need a password at sign-in, but also a pre-registered physical device (such as your smartphone), which will improve security."
detail: "Details…"
@ -765,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "Settings saved!"
failed: "Failed to setup. Please ensure that the token is correct."
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "To access the API, set this token as the key 'i' of request parameters."
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
regeneration-of-token: "If your token gets leaked, you can regenerate it."
regenerate-token: "Regenerate the token"
token: "Token:"
enter-password: "Please enter the password"
enter-password: "Enter the password"
console:
title: 'API console'
endpoint: 'Endpoint'
parameter: 'Parameters'
credential-info: "Parameter \"i\" is not required at this console."
send: 'Send'
sending: 'Sending'
response: 'Result'
desktop/views/components/settings.apps.vue:
no-apps: "No linked applications"
desktop/views/components/settings.drive.vue:
common/views/components/drive-settings.vue:
max: "Max"
in-use: "In use"
desktop/views/components/settings.mute.vue:
no-users: "No muted users"
desktop/views/components/settings.password.vue:
stats: "Statistics"
common/views/components/mute-and-block.vue:
mute-and-block: "Mute / Block"
mute: "Mute"
block: "Blocking"
no-muted-users: "No muted users"
no-blocked-users: "No blocked users"
word-mute: "Word mute"
muted-words: "Muted keywords"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "Save"
common/views/components/password-settings.vue:
reset: "Change password"
enter-current-password: "Enter the current password"
enter-new-password: "Enter the new password"
enter-new-password-again: "Enter new password again"
enter-new-password-again: "Enter the new password again"
not-match: "The new passwords do not match"
changed: "Password updated"
desktop/views/components/settings.profile.vue:
avatar: "Avatar"
choice-avatar: "Select an image"
name: "Name"
location: "Location"
description: "Description"
birthday: "Birthday"
save: "Update profile"
locked-account: "Protect your account"
is-locked: "Follow request needs approval"
other: "Other"
is-bot: "This account is a Bot"
is-cat: "This account is a Cat"
profile-updated: "Your profile has been updated"
changed: "Password changed"
desktop/views/components/sub-note-content.vue:
private: "This post is private"
deleted: "This post has been deleted"
@ -824,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "-san"
desktop/views/components/ui.header.account.vue:
profile: "Your profile"
drive: "Media storage"
favorites: "Favorites"
lists: "Lists"
follow-requests: "Follow requests"
@ -832,11 +875,10 @@ desktop/views/components/ui.header.account.vue:
admin: "Admin"
settings: "Settings"
signout: "Sign out"
dark: "Submerge in dark"
dark: "Toggle dark mode"
desktop/views/components/ui.header.nav.vue:
home: "Home"
deck: "Deck"
messaging: "Messages"
game: "Games"
desktop/views/components/ui.header.notifications.vue:
title: "Notifications"
@ -859,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "All"
iknow: "You know"
load-more: "More"
fetching: "Loading…"
desktop/views/components/users-list-item.vue:
followed: "Follows you"
desktop/views/components/window.vue:
popout: "Pop-out"
close: "Close"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "Dashboard"
drive: "Drive"
instance: "Instance"
emoji: "Emoji"
users: "Users"
update: "Updates"
desktop/views/pages/admin/admin.dashboard.vue:
update: "Update"
announcements: "Announcements"
hashtags: "Hashtags"
back-to-misskey: "Back to Misskey"
admin/views/dashboard.vue:
dashboard: "Dashboard"
all-users: "All Users"
original-users: "Users on this instance"
all-notes: "All the posts"
original-notes: "Posts on this instance"
accounts: "Accounts"
notes: "Notes"
drive: "Drive"
instances: "Instances"
this-instance: "This instance"
federated: "Federated"
admin/views/instance.vue:
instance: "Instance"
instance-name: "Instance name"
instance-description: "Instance description"
host: "Host"
banner-url: "Banner image URL"
languages: "Language of this instance"
languages-desc: "You can add more than one, separated by spaces."
maintainer-config: "Administrator information"
maintainer-name: "Administrator name"
maintainer-email: "Contact Administrator"
drive-config: "Drive settings"
cache-remote-files: "Cache remote files"
cache-remote-files-desc: "Without this parameter, all remote files are linked to their host server directly. This will be an effective solution to save your server storage, however make remote files invisible to users who set direct-link disabled, since no thumbnail will be generated, increase traffic. It is recommended that this parameter set enabled."
local-drive-capacity-mb: "Volume of Drive per user"
remote-drive-capacity-mb: "Volume of Drive per remote user"
mb: "In megabytes"
recaptcha-config: "the reCAPTCHA settings"
recaptcha-info: "reCAPTCHA token is required. Please get it on https://www.google.com/recaptcha/intro/"
enable-recaptcha: "enable reCAPTCHA"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Settings of connecting to Twitter"
twitter-integration-info: "The callback URL is set on /api/tw/cb."
enable-twitter-integration: "Enable connection to Twitter"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer Secret"
github-integration-config: "Setting of connecting to GitHub"
github-integration-info: "The callback URL is set on /api/gh/cb."
enable-github-integration: "Enable connection to GitHub"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
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-username: "Proxy account user name"
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."
max-note-text-length: "Maximum numbers of post characters"
disable-registration: "Stop user registration"
disable-local-timeline: "Make Local Timeline disabled"
invite: "Invite"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "Save"
saved: "Saved"
admin/views/charts.vue:
title: "Chart"
per-day: "per Day"
per-hour: "per Hour"
federation: "Federation"
notes: "Posts"
users: "Users"
drive: "Drive"
network: "Network"
charts:
federation-instances: "The number of instances: increase/decrease"
federation-instances-total: "Total number of instances"
notes: "The number of posts: increase/decrease (Combined)"
local-notes: "The number of posts: increase/decrease (Local)"
remote-notes: "The number of posts: increase/decrease (Remote)"
notes-total: "Total posts"
users: "The number of users: increase/decrease"
users-total: "Total users"
drive: "Capacity used as the storage: increase/decrease"
drive-total: "Total usage of Drive"
drive-files: "The number of files on the storage: increase/decrease"
drive-files-total: "Total number of files on Drive"
network-requests: "Requests"
network-time: "Response time"
network-usage: "Traffic"
admin/views/users.vue:
suspend-user: "Suspend a user"
suspend: "Suspend"
suspended: "Successfully suspended."
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "Unsuspend users"
unsuspend: "Unsuspend"
unsuspended: "The user has successfully unsuspended."
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "User account verification settings"
verify: "Verify account"
verified: "The account is now being verified"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "User account unverification settings"
unverify: "Unverify account"
unverified: "The account is now being unverified"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Only media posts"
is-media-view: "Media view"
edit: "Options"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "Reposted by {}"
private: "This post is private"
deleted: "This post has been deleted"
desktop/views/pages/stats/stats.vue:
all-users: "All Users"
original-users: "Users on this instance"
all-notes: "All the posts"
original-notes: "Posts on this instance"
admin/views/emoji.vue:
add-emoji:
title: "Add emoji"
name: "Emoji name"
name-desc: "You can use the characters a~z 0~9 _"
aliases: "Aliases"
aliases-desc: "You can add more than one, separated by spaces."
url: "Image URL"
add: "Add"
info: "We recommend PNG images under 50KB."
added: "Emoji was added"
emojis:
title: "Emojis"
update: "Update"
remove: "Remove"
updated: "Updated"
remove-emoji:
are-you-sure: "Delete \"%1$s\"?"
removed: "Deleted"
admin/views/announcements.vue:
announcements: "Announcements"
save: "Save"
remove: "Remove"
add: "Add"
title: "Title"
text: "Content"
saved: "Saved"
_remove:
are-you-sure: "Delete \"%1$s\"?"
removed: "Deleted"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "More details..."
gotit: "Got it!"
@ -916,13 +1046,11 @@ desktop/views/pages/welcome.vue:
signup-button: "Sign up"
timeline: "Timeline"
announcements: "Announcements"
photos: "Recent uploaded"
photos: "Recent Images"
powered-by-misskey: "Powered by <b>Misskey</b>."
info: "Information"
desktop/views/pages/drive.vue:
title: "Misskey storage"
desktop/views/pages/favorites.vue:
more: "Load more"
desktop/views/pages/home-customize.vue:
title: "Customize home layout"
desktop/views/pages/note.vue:
@ -935,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "Upload files from your device"
desktop/views/pages/search.vue:
not-available: "Search feature is turned off in the settings for this instance."
not-found: "No posts were found for '{}'"
not-found: "No posts were found for '{q}'"
desktop/views/pages/share.vue:
share-with: "Share with {}."
share-with: "Share on {name}"
desktop/views/pages/tag.vue:
no-posts-found: "No posts contains \"{}\" found."
no-posts-found: "No posts contains \"{q}\" found."
desktop/views/pages/user-list.users.vue:
users: "User"
add-user: "Add a user"
@ -952,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "Frequent mentions"
loading: "Loading"
no-users: "No frequent mentions"
desktop/views/pages/user/user.vue:
is-suspended: "This account has been suspended."
is-remote: "This profile belongs to a remote user. The profile that you see here may not be complete. "
view-remote: "See their complete profile"
desktop/views/pages/user/user.home.vue:
last-used-at: "Last active:"
desktop/views/pages/user/user.photos.vue:
title: "Photos"
loading: "Loading"
@ -970,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mute"
muted: "Muting"
unmute: "Unmute"
block: "Block"
unblock: "Unblock"
block-confirm: "Are you sure block this user?"
push-to-a-list: "Add to list"
list-pushed: "Successfully added {user} to {list}."
desktop/views/pages/user/user.header.vue:
@ -977,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "Following"
followers: "Followers"
is-bot: "This account is a Bot"
years-old: "{age} years old"
year: "/"
month: "/"
day: "-"
desktop/views/pages/user/user.timeline.vue:
default: "Posts"
with-replies: "Posts and replies"
@ -1006,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "refresh"
no-one: "Anyone!"
mobile/views/components/drive.vue:
drive: "Media storage"
used: "used"
folder-count: "Folder(s)"
count-separator: ", "
file-count: "File(s)"
load-more: "Load more"
nothing-in-drive: "There's nothing stored."
folder-is-empty: "This folder is empty"
prompt: "What do you want to do? (Please enter a number): <1 → Upload a file | 2 → Upload a file from a URL | 3 → Create a folder | 4 → Change this folder's name | 5 → Move this folder | 6 → Delete this folder>"
@ -1021,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "You're in the root; it can't be moved because it's not a folder. Navigate to a folder you want to move and try again."
url-prompt: "URL of the file you want to upload"
uploading: "Upload requested. It may take a while for the upload to finish."
mobile/views/components/drive-file-detail.vue:
rename: "Rename"
mobile/views/components/drive-file-chooser.vue:
select-file: "Choose files"
mobile/views/components/drive-folder-chooser.vue:
@ -1036,17 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "Hash (md5)"
exif: "EXIF"
nsfw: "NSFW"
mark-as-sensitive: "Mark as 'sensitive'"
unmark-as-sensitive: "Unmark as 'sensitive'"
mobile/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "Click to show"
mobile/views/components/media-video.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "Following"
follow: "Follow"
request-pending: "Pending follow request"
follow-processing: "Processing follow"
request-pending: "Pending"
follow-processing: "Processing"
follow-request: "Follow request"
mobile/views/components/friends-maker.vue:
title: "Let's follow them"
@ -1074,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "Failed to load"
retry: "Retry"
mobile/views/components/notifications.vue:
more: "See more"
empty: "No notifications"
mobile/views/components/post-form.vue:
add-visible-user: "Add a user"
@ -1098,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "Poll"
mobile/views/components/timeline.vue:
empty: "No notes"
load-more: "More"
mobile/views/components/ui.header.vue:
welcome-back: "Welcome back, "
adjective: "Sir"
mobile/views/components/ui.nav.vue:
timeline: "Timeline"
notifications: "Notifications"
messaging: "Messages"
follow-requests: "Follow requests"
search: "Search"
drive: "Drive"
favorites: "Favorites"
user-lists: "Lists"
widgets: "Widgets"
@ -1119,26 +1239,21 @@ mobile/views/components/ui.nav.vue:
about: "About Misskey"
mobile/views/components/user-timeline.vue:
no-notes: "It seems this user hasn't posted anything yet."
no-notes-with-media: "There are no posts attaching media"
load-more: "More"
no-notes-with-media: "There are no notes with media attachments"
mobile/views/components/users-list.vue:
all: "All"
known: "You know"
load-more: "More"
known: "In common"
mobile/views/pages/favorites.vue:
title: "Favorites"
mobile/views/pages/user-lists.vue:
title: "Lists"
enter-list-name: "Enter a name of the list to make"
mobile/views/pages/drive.vue:
drive: "Drive"
more: "Load more"
mobile/views/pages/signup.vue:
lets-start: "Your account is now ready! 📦"
mobile/views/pages/followers.vue:
followers-of: "Followers of {}"
followers-of: "{name}'s followers"
mobile/views/pages/following.vue:
following-of: "Following of {}"
following-of: "{name}'s following"
mobile/views/pages/home.vue:
home: "Home"
local: "Local"
@ -1147,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "Mentions"
messages: "Messages"
mobile/views/pages/tag.vue:
no-posts-found: "No posts \"{}\" found."
no-posts-found: "No posts contains \"{q}\" found."
mobile/views/pages/welcome.vue:
signup: "Sign up"
mobile/views/pages/widgets.vue:
@ -1158,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "Activity"
mobile/views/pages/share.vue:
share-with: "Share with {}."
mobile/views/pages/messaging.vue:
messaging: "Messaging"
mobile/views/pages/messaging-room.vue:
messaging: "Messaging"
share-with: "Share on {name}"
mobile/views/pages/received-follow-requests.vue:
title: "Follow requests"
accept: "Accept"
@ -1176,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "Do you wish to mark all notifications as read?"
mobile/views/pages/games/reversi.vue:
reversi: "Reversi"
mobile/views/pages/settings/settings.profile.vue:
title: "Profile"
name: "Name"
account: "Account"
location: "Location"
description: "Biography"
birthday: "Birthday"
avatar: "Avatar"
banner: "Banner"
is-cat: "This account is a Cat"
is-locked: "Follow request needs approval"
advanced: "Advanced"
privacy: "Privacy"
save: "Update profile"
saved: "Profile updated"
uploading: "Uploading"
upload-failed: "Failed to upload"
mobile/views/pages/search.vue:
search: "Search"
empty: "No posts were found for '{}'"
not-found: "No posts were found for \"{}\"."
not-found: "No posts were found for '{q}'"
mobile/views/pages/selectdrive.vue:
select-file: "Choose files"
mobile/views/pages/settings.vue:
@ -1214,7 +1307,7 @@ mobile/views/pages/settings.vue:
timeline: "Timeline"
show-reply-target: "Show reply target"
show-my-renotes: "Show my reposts"
show-renoted-my-notes: "Show renoted my posts"
show-renoted-my-notes: "Show renoted posts of mine"
show-local-renotes: "Show renoted local posts"
post-style: "Post design"
post-style-standard: "Standard"
@ -1222,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "Notification style"
notification-position-bottom: "Bottom"
notification-position-top: "Top"
theme: "Theme"
behavior: "Behavior"
fetch-on-scroll: "Endless loading on scroll"
note-visibility: "Post visibility"
@ -1234,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Connect to your Twitter account"
twitter-reconnect: "Reconnect"
twitter-disconnect: "Disconnect"
github: "GitHub Integration"
github-connect: "Connect to your GitHub account"
github-reconnect: "Reconnect"
github-disconnect: "Disconnect"
update: "Misskey Update"
version: "Current version:"
latest-version: "Latest version:"
@ -1247,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "Sign out"
sound: "Sounds"
enable-sounds: "Enable sounds"
mark-as-read-all-unread-notes: "Mark all posts as read"
password: "Password"
mobile/views/pages/user.vue:
follows-you: "Follows you"
following: "Following"
@ -1256,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "Timeline"
media: "Media"
is-suspended: "This account has been suspended."
is-remote: "The user is a remote user. The profile that you see here may not complete."
view-remote: "See his/her complete profile"
mute: "Mute"
unmute: "Unmute"
block: "Block"
unblock: "Unblock"
years-old: "{age} years old"
mobile/views/pages/user/home.vue:
recent-notes: "Recent notes"
images: "Images"
@ -1268,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "Followers you know"
last-used-at: "Last active:"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "Loading"
no-users: "No users you know"
mobile/views/pages/user/home.friends.vue:
loading: "Loading"
no-users: "There are no users that you know"
mobile/views/pages/user/home.notes.vue:
loading: "Loading"
no-notes: "No notes"
mobile/views/pages/user/home.photos.vue:
loading: "Loading"
no-photos: "No photos"
deck:
widgets: "Widgets"
home: "Home"
local: "Local"
hybrid: "Social"
hashtag: "Hashtag"
global: "Global"
mentions: "Mentions"
direct: "Direct posts"
notifications: "Notifications"
list: "List"
swap-left: "Move left"
swap-right: "Move right"
swap-up: "Move up"
swap-down: "Move down"
remove: "Remove"
add-column: "Add a column"
rename: "Rename"
stack-left: "Stack to the left"
pop-right: "Dock on the right"
deck/deck.tl-column.vue:
is-media-only: "Only media posts"
is-media-view: "Media view"
edit: "Option"
deck/deck.user-column.vue:
posts: "Posts"
following: "Following"
followers: "Followers"
images: "Images"
activity: "Activity"
timeline: "Timeline"
pinned-notes: "Pinned posts"
push-to-a-list: "Add to list"
docs:
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
edit-this-page-on-github-link: "Edit this page at GitHub!"
@ -1303,3 +1435,29 @@ docs:
description: "Description"
dev/views/index.vue:
manage-apps: "Manage apps"
dev/views/apps.vue:
manage-apps: "Manage apps"
create-app: "Create app"
app-missing: "No apps"
dev/views/new-app.vue:
create-app: "Creating application"
app-name: "Application name"
app-name-desc: "The name of your app"
app-name-ex: "ex) Misskey for iOS"
app-overview: "Application summary"
app-desc: "A brief description or introduction of your app."
app-desc-ex: "ex) Misskey iOS client."
callback-url: "The callback URL (optional)"
callback-url-desc: "The URL to redirect to after the user is authenticated via the authentication form."
authority: "Permissions"
authority-desc: "Only the functions requested here can be accessed via the API."
authority-warning: "You can change it even after creating the application, but if you give different permissions, all user keys associated at that time will be invalidated."
account-read: "View account information."
account-write: "Modify account information."
note-write: "Post."
reaction-write: "Add or remove reactions."
following-write: "Follow and unfollow."
drive-read: "Read the drive."
drive-write: "Upload/delete files in the drive."
notification-read: "Read your notifications."
notification-write: "Manage your notifications."

View File

@ -25,13 +25,11 @@ common:
application-authorization: "Autorizaciones de la aplicación."
close: "Cerrar"
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
load-more: "もっと読み込む"
got-it: "¡Listo!"
customization-tips:
title: "Consejos de personalización"
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
paragraph2: "Puede cambiar la visualización de algunos accesorios haciendo <strong> click derecho.</strong>"
paragraph3: "Para borrar un widget, <strong> desplace el accesorio hasta el área etiquetada \"Papelera\"</strong> en el encabezado."
paragraph4: "Para finalizar la personalización, cliquee \"Finalizar\" en la parte de arriba a la derecha."
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "¡Comprendido!"
notification:
file-uploaded: "Archivo cargado."
@ -54,6 +52,8 @@ common:
years_ago: "Hace {} año(s)"
month-and-day: "{day} de {month}"
trash: "Papelera"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "domingo"
monday: "lunes"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "Empatado"
my-turn: "Mi turno"
opponent-turn: "Turno del oponente"
turn-of: "Es turno de {}"
past-turn-of: "Turno de {}"
won: "{} ha ganado"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "Negro"
white: "Blanco"
total: "Total"
this-turn: "Turno de {}"
this-turn: "{count}ターン目"
widgets:
analog-clock: "Reloj analógico"
profile: "Perfil"
@ -144,34 +152,15 @@ common:
users: "Usuarios destacados"
polls: "Encuestas"
post-form: "Formulario"
messaging: "Mensajes"
server: "Información del servidor"
donation: "Donaciones"
nav: "Navegación"
tips: "Consejos"
hashtags: "Etiquetas"
deck:
widgets: "Accesorios"
home: "Inicio"
local: "Local"
hybrid: "Social"
hashtag: "ハッシュタグ"
global: "Global"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "Notificaciones"
list: "Listado"
swap-left: "Desplazar a la izq."
swap-right: "Desplazar a la dcha."
swap-up: "Desplazar arriba"
swap-down: "Desplazar abajo"
remove: "Borrar"
add-column: "Añadir columna"
rename: "Renombrar"
stack-left: "A la izqda."
pop-right: "A la dcha."
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "¿Deseas <b>permitir</b> a <i>{{ app.name }}</i> acceder a tu cuenta?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "La aplicación requiere los siguientes permisos:"
account-read: "Viendo información de la cuenta:"
account-write: "Modificar información de la cuenta:"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "Sin historial"
common/views/components/messaging-room.vue:
empty: "Sin conversaciones"
more: "Leer más"
no-history: "El historial se ha acabado"
resize-form: "Arrastra para redimensionar"
new-message: "Nuevo mensaje"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "Detalles"
copy-link: "Copiar enlace"
favorite: "Me gusta esta nota"
unfavorite: "お気に入り解除"
pin: "Fijar en el perfil"
unpin: "ピン留め解除"
delete: "Borrar"
delete-confirm: "¿Seguro que quieres borrar la publicación?"
remote: "Ver el original"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "Cancelar la encuesta"
common/views/components/reaction-picker.vue:
choose-reaction: "Escoge una reacción"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "Usuario"
password: "Contraseña"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "Entra"
or: "O"
signin-with-twitter: "Ingresar con Twitter"
signin-with-github: "GitHubでログイン"
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
common/views/components/signup.vue:
invitation-code: "Código de invitación"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "Conectar de nuevo"
connect: "Conectate usando Twitter"
disconnect: "Desconectado"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "Un momento"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "Recuperando"
no-broadcasts: "Sin emisión"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "Siguiendo"
follow: "Seguir"
request-pending: "Solicitud pendiente"
follow-processing: "フォロー処理中"
follow-request: "Solicitar suscripción"
desktop:
banner-crop-title: "Corta la parte que aparece como un banner"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "Actividad"
toggle: "Alternar vistas"
desktop/views/components/calendar.vue:
title: "{1} / {2}"
title: "{year}年 {month}月"
prev: "Mes anterior"
next: "Próximo mes"
go: "Click para navegar"
desktop/views/components/charts.vue:
title: "Gráficos"
per-day: "por día"
per-hour: "por hora"
notes: "Publicaciones"
users: "Usuarios"
drive: "Unidad"
network: "ネットワーク"
charts:
notes: "Número de publicaciones: aumentar/disminuir (Combinado)"
local-notes: "Número de publicaciones: aumentar/disminuir (Local)"
remote-notes: "Número de publicaciones: aumentar/disminuir (Remoto)"
notes-total: "Número de publicaciones: Acumulativo total"
users: "Número de usuarios: aumentar/disminuir"
users-total: "Número de usuarios: Acumulativo total"
drive: "Capacidad de almacenamiento usada: aumentar/disminuir"
drive-total: "Capacidad de almacenamiento usada: Acumulativa total"
drive-files: "Número de archivos almacenados: aumentar/disminuir"
drive-files-total: "Número de archivos almacenados: Acumulativo total"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Escoger archivos"
chosen-files: "{count}ファイル選択中"
upload: "Cargar archivos de tu dispositivo"
cancel: "Cancelar"
ok: "OK"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "OK"
desktop/views/components/drive-window.vue:
used: "usado"
drive: "Disco"
desktop/views/components/drive.file.vue:
avatar: "Avatar"
banner: "Banner"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "Renombrar"
rename-folder: "Renombrar carpeta"
input-new-folder-name: "Escribe el nombre nuevo"
desktop/views/components/drive.nav-folder.vue:
drive: "Disco"
desktop/views/components/drive.vue:
search: "Buscar"
load-more: "Cargar más"
empty-draghover: "¡Saluda!"
empty-drive: "Tu disco está vacio"
empty-drive-description: "También puedes subir archivos seleccionándolos y con el botón derecho selecciona \"Subir fichero\" o puedes arrastrarlo hasta la ventana."
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "Este contenido no es apropiado para ver en el trabajo"
click-to-show: "Click para mostrar"
desktop/views/components/follow-button.vue:
following: "Siguiendo"
follow: "Sigue"
request-pending: "Pendiente de aprobación"
follow-request: "Solicitud de seguir"
desktop/views/components/followers-window.vue:
followers: "{} seguidores"
desktop/views/components/followers.vue:
@ -594,27 +626,24 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "Mensajes"
desktop/views/components/note-detail.vue:
more: "Cargar más conversaciones"
private: "Esta publicación es privada"
deleted: "Esta publicación ha sido removida"
reposted-by: "Republicado por {}"
location: "Localización"
renote: "Republicar"
add-reaction: "Agregar una reacción"
desktop/views/components/notes.note.vue:
reposted-by: "Republicado por {}"
reply: "Responder"
renote: "Republicar"
add-reaction: "Agregar una reacción"
detail: "Mostrar detalles"
private: "Esta publicación es privada"
deleted: "Esta publicación ha sido borrada"
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
add-reaction: "リアクション"
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.vue:
error: "Error al cargar."
retry: "Reintentar"
load-more: "Leer más"
desktop/views/components/notifications.vue:
more: "Más"
empty: "No hay notificaciones"
desktop/views/components/post-form.vue:
add-visible-user: "+Agregar usuario"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "La publicación ha fallado"
desktop/views/components/renote-form-window.vue:
title: "¿Seguro qué quieres volver a publicarlo?"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "Configuración"
desktop/views/components/settings.vue:
profile: "Perfil"
notification: "Notificación"
apps: "Aplicaciones"
mute: "Silenciar"
drive: "Disco"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "Seguridad"
signin: "Historial de inicios de sesión"
password: "Contraseña"
2fa: "Autenticación de Doble-Factor"
other: "Otros"
license: "Licencia"
theme: "テーマ"
behaviour: "Acciones"
fetch-on-scroll: "Desplazamiento infinito"
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "Configuración avanzada"
api-via-stream: "Solicitar API por medio de un stream"
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Diseño y pantalla"
customize: "Personaliza la página principal"
wallpaper: "壁紙"
choose-wallpaper: "Elije un fondo"
delete-wallpaper: "Suprimir fondo"
dark-mode: "Modo Nocturno"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "Usar iconos circulares"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "Herramientas"
task-manager: "Navegador de tareas"
third-parties: "Servicios externos"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "Ver detalles..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "¡Configuraciones guardadas!"
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
desktop/views/components/settings.api.vue:
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
caution: "Por favor no muestres este token a otros (no lo ingreses en otro lugar que no sea aquí). De otra forma, tu cuenta puede llegar a ser comprometida."
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
regenerate-token: "Regenerar el token"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "Por favor ingresa tu contraseña"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "No hay aplicaciones asociadas"
desktop/views/components/settings.drive.vue:
max: "Max"
in-use: "en uso."
desktop/views/components/settings.mute.vue:
no-users: "No hay usuarios silenciados"
desktop/views/components/settings.password.vue:
reset: "Cambiar contraseña"
enter-current-password: "Ingresar contraseña actual"
enter-new-password: "Ingresar nueva contraseña"
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
changed: "Contraseña actualizada"
desktop/views/components/settings.profile.vue:
avatar: "Avatar"
choice-avatar: "Escoger una imagen"
name: "Nombre"
location: "Localización"
description: "Descripción"
birthday: "Fecha de nacimiento"
save: "Perfil actualizado"
locked-account: "Protege tu cuenta"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "-san"
desktop/views/components/ui.header.account.vue:
profile: "Tu perfil"
drive: "Unidad"
favorites: "Favoritos"
lists: "Listas"
follow-requests: "Solicitudes de seguimiento"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "Inicio"
deck: "Cubierta"
messaging: "Mensajes"
game: "Juegos"
desktop/views/components/ui.header.notifications.vue:
title: "Notificaciones"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "知り合いのフォロワー"
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1300,3 +1435,29 @@ docs:
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -54,6 +52,8 @@ common:
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "日"
monday: "月"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
@ -144,34 +152,15 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "名前を変更"
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
@ -594,14 +626,13 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -612,9 +643,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
theme: "テーマ"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue:
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "知り合いのフォロワー"
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1300,3 +1435,29 @@ docs:
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

View File

@ -25,13 +25,12 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -55,6 +54,8 @@ common:
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "日"
@ -119,22 +120,32 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
@ -154,36 +165,17 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -288,6 +280,8 @@ common/views/components/media-banner.vue:
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
@ -305,10 +299,19 @@ common/views/components/theme.vue:
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
@ -321,7 +324,6 @@ common/views/components/messaging.vue:
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -352,6 +354,7 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -376,6 +379,17 @@ common/views/components/poll-editor.vue:
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -384,6 +398,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
@ -427,6 +442,14 @@ common/views/components/twitter-setting.vue:
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
@ -444,6 +467,26 @@ common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -541,36 +584,13 @@ desktop/views/components/activity.vue:
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -588,7 +608,6 @@ desktop/views/components/crop-window.vue:
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
@ -621,12 +640,8 @@ desktop/views/components/drive.folder.vue:
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -653,13 +668,6 @@ desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
@ -698,7 +706,6 @@ desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
@ -706,7 +713,7 @@ desktop/views/components/note-detail.vue:
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -718,10 +725,8 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
@ -774,6 +779,10 @@ desktop/views/components/renote-form.vue:
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
@ -781,8 +790,8 @@ desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
@ -802,9 +811,13 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
@ -816,10 +829,14 @@ desktop/views/components/settings.vue:
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
@ -827,9 +844,6 @@ desktop/views/components/settings.vue:
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -871,6 +885,11 @@ desktop/views/components/settings.vue:
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -890,25 +909,42 @@ desktop/views/components/settings.2fa.vue:
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
stats: "統計"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
desktop/views/components/settings.password.vue:
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
@ -916,21 +952,6 @@ desktop/views/components/settings.password.vue:
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -959,7 +980,6 @@ desktop/views/components/ui.header.vue:
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -972,7 +992,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
@ -1002,7 +1021,6 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
@ -1012,55 +1030,150 @@ desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー"
update: "更新"
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
desktop/views/pages/admin/admin.dashboard.vue:
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
invite: "招待"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
desktop/views/pages/admin/admin.suspend-user.vue:
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
admin/views/moderators.vue:
add-moderator:
title: "モデレーターの登録"
add: "登録"
added: "モデレーターを登録しました"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
@ -1078,9 +1191,6 @@ desktop/views/pages/welcome.vue:
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
@ -1096,13 +1206,13 @@ desktop/views/pages/selectdrive.vue:
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
@ -1119,14 +1229,6 @@ desktop/views/pages/user/user.friends.vue:
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -1140,6 +1242,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
@ -1148,6 +1253,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
@ -1186,12 +1295,10 @@ desktop/views/widgets/users.vue:
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1202,9 +1309,6 @@ mobile/views/components/drive.vue:
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
@ -1221,6 +1325,8 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
@ -1230,7 +1336,7 @@ mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
@ -1268,12 +1374,7 @@ mobile/views/components/note-sub.vue:
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
@ -1296,7 +1397,6 @@ mobile/views/components/sub-note-content.vue:
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
@ -1305,10 +1405,8 @@ mobile/views/components/ui.header.vue:
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1321,12 +1419,10 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
@ -1335,18 +1431,14 @@ mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
@ -1357,7 +1449,7 @@ mobile/views/pages/home.vue:
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
@ -1372,13 +1464,7 @@ mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
@ -1397,28 +1483,9 @@ mobile/views/pages/notifications.vue:
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
@ -1459,6 +1526,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1472,6 +1543,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
@ -1482,8 +1555,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
@ -1496,21 +1572,53 @@ mobile/views/pages/user/home.vue:
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1537,3 +1645,31 @@ docs:
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -54,6 +52,8 @@ common:
years_ago: "{}jaar geleden"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "Z"
monday: "M"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
@ -144,34 +152,15 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "Geen geschiedenis"
common/views/components/messaging-room.vue:
empty: "Geen gesprekken"
more: "Meer"
no-history: "Er is geen verdere geschiedenis"
resize-form: "Versleep om grootte te wijzigen"
new-message: "Nieuw bericht"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "Deze notitie toevoegen aan favorieten"
unfavorite: "お気に入り解除"
pin: "Vastmaken aan profielpagina"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "Origineel tonen"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "Deze peiling vernietigen"
common/views/components/reaction-picker.vue:
choose-reaction: "Kies een reactie"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "Gebruikersnaam"
password: "Wachtwoord"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "Inloggen"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "Opnieuw verbinden"
connect: "Koppel je Twitter-account"
disconnect: "Verbinding verbreken"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "Bezig met wachten"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "Bezig met ophalen"
no-broadcasts: "Geen uitzendingen"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "Activiteit"
toggle: "Schakelen tussen weergaven"
desktop/views/components/calendar.vue:
title: "{1} / {2}"
title: "{year}年 {month}月"
prev: "Vorige maand"
next: "Volgende maand"
go: "Klik om te navigeren"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Bestanden kiezen"
chosen-files: "{count}ファイル選択中"
upload: "Bestanden uploaden van je computer"
cancel: "Annuleren"
ok: "Oké"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "Oké"
desktop/views/components/drive-window.vue:
used: "gebruikt"
drive: "Drive"
desktop/views/components/drive.file.vue:
avatar: "Gebruikersafbeelding"
banner: "Omslagfoto"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "Naam wijzigen"
rename-folder: "Mapnaam wijzigen"
input-new-folder-name: "Voer een nieuwe naam in"
desktop/views/components/drive.nav-folder.vue:
drive: "Drive"
desktop/views/components/drive.vue:
search: "Zoeken"
load-more: "Meer laden"
empty-draghover: "Welkom!"
empty-drive: "Je schijf is leeg"
empty-drive-description: "Je kunt ook uploaden door te klikken met de rechtermuisknop en te kiezen voor \"Bestand uploaden\" of door een bestand naar dit venster te slepen."
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "Volgen"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "Volgers van {}"
desktop/views/components/followers.vue:
@ -594,27 +626,24 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "Gesprekken"
desktop/views/components/note-detail.vue:
more: "Meer gesprekken laden"
private: "(dit bericht is privé)"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "Locatie"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
reposted-by: "Hergeplaatst door {}"
reply: "Antwoord"
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
add-reaction: "Reactie toevoegen"
detail: "Details tonen"
add-reaction: "リアクション"
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.vue:
error: "Laden mislukt."
retry: "Opnieuw proberen"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "Meer"
empty: "Geen meldingen"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renote mislukt"
desktop/views/components/renote-form-window.vue:
title: "Weet je zeker dat je deze notitie wilt renoten?"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "Profiel"
notification: "Melding"
apps: "Apps"
mute: "Dempen"
drive: "Drive"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "Beveiliging"
signin: "Inloggeschiedenis"
password: "Wachtwoord"
2fa: "Authenticatie in twee stappen"
other: "Overig"
license: "Licentie"
theme: "テーマ"
behaviour: "Gedrag"
fetch-on-scroll: "Ophalen bij scrollen"
fetch-on-scroll-desc: "Als je omlaag scrolt, wordt de rest van de inhoud automatisch opgehaald."
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "Geavanceerde instellingen"
api-via-stream: "API-verzoek via stream"
api-via-stream-desc: "API-verzoek wordt uitgevoerd via de WebSocket-verbinding i.p.v. de ingebouwde ophaal-API (voor verbeterde prestaties). Deze instelling wordt opgeslagen in je browser."
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Ontwerp en weergave"
customize: "Startpagina aanpassen"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "Donkere modus"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "Ronde pictogrammen gebruiken"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "Kleurverloop gebruiken op vensterkoppen"
post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Antwoord-knop tonen"
timeline: "タイムライン"
show-my-renotes: "Mijn renote tonen op de tijdlijn"
show-renoted-my-notes: "Mijn gerenote bericht tonen op de tijdlijn"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Kaart tonen"
show-maps-desc: "Kaart van bijgevoegde locatie tonen."
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "Geluid"
enable-sounds: "Geluid inschakelen"
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
volume: "Volume"
test: "Testen"
mobile: "Mobiel"
disable-via-mobile: "Berichten niet markeren als 'via mobiel'"
language: "Taal"
pick-language: "Selecteer een taal"
recommended: "Aanbevolen"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "Hulpmiddelen"
task-manager: "Taakbeheer"
third-parties: "Derde partij"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "Als je verificatie in twee stappen instelt, dan heb je niet alleen een wachtwoord nodig bij het inloggen, maar ook een geregistreerd fysiek apparaat (zoals je smartphone). Dit verhoogt de veiligheid. "
detail: "Details bekijken..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "Instellen voltooid!"
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
desktop/views/components/settings.api.vue:
intro: "Als je toegang wilt tot de API, stel deze sleutel dan in als 'i' bij de verzoekparameters."
caution: "Laat deze sleutel niet zien aan derde partijen (en voer hem nergens anders in dan hier), anders kan je account gehackt worden."
regeneration-of-token: "Mocht deze sleutel tóch uitlekken, dan kun je hem opnieuw genereren."
regenerate-token: "Sleutel opnieuw genereren"
token: "Sleutel:"
enter-password: "Voer je wachtwoord in"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "Geen gedempte gebruikers"
desktop/views/components/settings.password.vue:
reset: "Wachtwoord wijzigen"
enter-current-password: "Voer je huidige wachtwoord in"
enter-new-password: "Voer je nieuwe wachtwoord in"
enter-new-password-again: "Voer je nieuwe wachtwoord nogmaals in"
not-match: "Het nieuwe wachtwoord komt niet overeen"
changed: "Wachtwoord bijgewerkt"
desktop/views/components/settings.profile.vue:
avatar: "Gebruikersafbeelding"
choice-avatar: "Kies een afbeelding"
name: "Naam"
location: "Locatie"
description: "Omschrijving"
birthday: "Geboortedatum"
save: "Profiel bijwerken"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "Dit account is een Bot"
is-cat: "Dit account is een Kat"
profile-updated: "プロフィールを更新しました"
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "Je profiel"
drive: "Drive"
favorites: "Favorieten"
lists: "Lijsten"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "Startpagina"
deck: "デッキ"
messaging: "Berichten"
game: "Othello spelen"
desktop/views/components/ui.header.notifications.vue:
title: "Meldingen"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "Alle"
iknow: "die ik ken"
load-more: "Meer"
fetching: "Bezig met laden…"
desktop/views/components/users-list-item.vue:
followed: "Volgt jou"
desktop/views/components/window.vue:
popout: "Uitvouwen"
close: "Sluiten"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "Meer laden"
desktop/views/pages/home-customize.vue:
title: "Startpagina aanpassen"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "Bestanden uploaden van je PC"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "Gebruiker"
add-user: "Gebruiker toevoegen"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "Frequent beantwoord"
loading: "Bezig met laden"
no-users: "Geen gebruikers"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "Laatst actief: "
desktop/views/pages/user/user.photos.vue:
title: "Foto's"
loading: "Bezig met laden"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "Dempen"
muted: "Dempend"
unmute: "Ontdempen"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "Berichten"
with-replies: "Berichten en antwoorden"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "Anderen tonen"
no-one: "Niemand"
mobile/views/components/drive.vue:
drive: "Drive"
used: "gebruikt"
folder-count: "Map(pen)"
count-separator: ", "
file-count: "Bestand(en)"
load-more: "Meer laden"
nothing-in-drive: "Niks"
folder-is-empty: "Deze map is leeg"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "Kies een bestand"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "Hash (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "Volgen"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "Meer"
empty: "Geen meldingen"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "Peiling"
mobile/views/components/timeline.vue:
empty: "Geen notities"
load-more: "Meer"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "Meldingen"
messaging: "Gesprekken"
follow-requests: "フォロー申請"
search: "Zoeken"
drive: "Drive"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "Het lijkt erop dat deze gebruiker nog niks heeft geplaatst"
no-notes-with-media: "Er zijn geen notities met bijgevoegde media"
load-more: "Meer"
mobile/views/components/users-list.vue:
all: "Alles"
known: "die je kent"
load-more: "Meer"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "Drive"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "Volgers van {}"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "Volgenden van {}"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "Gesprekken"
mobile/views/pages/messaging-room.vue:
messaging: "Gesprekken"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "Weet je zeker dat je alle meldingen wilt markeren als gelezen?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "Profiel"
name: "Naam"
account: "Account"
location: "Locatie"
description: "Omschrijving"
birthday: "Geboortedatum"
avatar: "Gebruikersafbeelding"
banner: "Omslagfoto"
is-cat: "Dit account is een Kat"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "Profiel bijwerken"
saved: "Profiel bijgewerkt"
uploading: "Bezig met uploaden"
upload-failed: "Upload mislukt"
mobile/views/pages/search.vue:
search: "Zoeken"
empty: "Geen berichten gevonden voor '{}'"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "Kies een bestand"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "Gedrag"
fetch-on-scroll: "Ophalen bij scrollen"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Mijn Twitter-account verbinden"
twitter-reconnect: "Opnieuw verbinden"
twitter-disconnect: "Verbinding verbreken"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey-update"
version: "Huidige versie:"
latest-version: "Nieuwste versie:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "Uitloggen"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "Volgt jou"
following: "Volgend"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "Tijdlijn"
media: "Media"
is-suspended: "Dit account is geschorst."
is-remote: "Deze gebruiker is een externe gebruiker; de informatie is daarom niet volledig. "
view-remote: "Volledige informatie bekijken"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "Recente notities"
images: "Afbeeldingen"
@ -1263,19 +1369,48 @@ mobile/views/pages/user/home.vue:
domains: "Domeinnamen"
frequently-replied-users: "Frequent gesproken gebruikers"
followers-you-know: "Volgers die je kent"
last-used-at: "Laatst actief:"
last-used-at: "Laatst actief"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "Bezig met laden"
no-users: "Geen gebruikers"
mobile/views/pages/user/home.friends.vue:
loading: "Bezig met laden"
no-users: "Geen gebruikers"
mobile/views/pages/user/home.notes.vue:
loading: "Bezig met laden"
no-notes: "Geen notities"
mobile/views/pages/user/home.photos.vue:
loading: "Bezig met laden"
no-photos: "Geen foto's"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "Heb je een fout ontdekt of wil je bijdragen aan de documentatie? "
edit-this-page-on-github-link: "Bewerk deze pagina op GitHub!"
@ -1300,3 +1435,29 @@ docs:
description: "Omschrijving"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

File diff suppressed because it is too large Load Diff

View File

@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "Zamknij"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "Rozumiem!"
customization-tips:
title: "Wskazówki o dostosowywaniu"
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "Aby usunąć widżet, <strong>przeciągnij i upuść widżet do części nazwanej „Kosz”</strong> w nagłówku."
paragraph4: "Aby zakończyć dostosowywanie, naciśnij „Zakończ” w w prawym górnym rogu."
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Rozumiem!"
notification:
file-uploaded: "Wysłano plik!"
@ -54,6 +52,8 @@ common:
years_ago: "{} lat temu"
month-and-day: "{month}-{day}"
trash: "Kosz"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "N"
monday: "Pn"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "Remis"
my-turn: "Twoja kolej"
opponent-turn: "Kolej na przeciwnika"
turn-of: "Kolej na {}"
past-turn-of: "Kolej {}"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "Czarny"
white: "Biały"
total: "Łącznie"
this-turn: "Ruch {}"
this-turn: "{count}ターン目"
widgets:
analog-clock: "Zegar analogowy"
profile: "Profil"
@ -144,34 +152,15 @@ common:
users: "Polecani użytkownicy"
polls: "Ankiety"
post-form: "Formularz tworzenia"
messaging: "Wiadomości"
server: "Informacje o serwerze"
donation: "Dotacje"
nav: "Nawigacja"
tips: "Wskazówki"
hashtags: "Hashtagi"
deck:
widgets: "Widżety"
home: "Strona główna"
local: "Lokalne"
hybrid: "Społeczność"
hashtag: "ハッシュタグ"
global: "Globalne"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "Powiadomienia"
list: "Listy"
swap-left: "Przesuń w lewo"
swap-right: "Przesuń w prawo"
swap-up: "Przenieś w górę"
swap-down: "Przenieś w dół"
remove: "Usuń"
add-column: "Dodaj kolumnę"
rename: "Zmień nazwę"
stack-left: "Przypnij do lewej"
pop-right: "Odepnij w prawo"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
account-read: "Wyświetlanie informacji o koncie:"
account-write: "Modyfikowanie informacji o koncie:"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "Brak historii"
common/views/components/messaging-room.vue:
empty: "Brak konwersacji"
more: "Więcej"
no-history: "Brak dalszej historii"
resize-form: "Przeciągnij aby zmienić rozmiar"
new-message: "Nowa wiadomość"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "Dodaj do ulubionych"
unfavorite: "お気に入り解除"
pin: "Przypnij do profilu"
unpin: "ピン留め解除"
delete: "Usuń"
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
remote: "Pokaż oryginał"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "Usuń tę ankietę"
common/views/components/reaction-picker.vue:
choose-reaction: "Wybierz reakcję"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "Nazwa użytkownika"
password: "Hasło"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "Zaloguj"
or: "または"
signin-with-twitter: "Zaloguj się za pomocą Twittera"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "Połącz ponownie"
connect: "Połącz z kontem Twittera"
disconnect: "Rozłącz"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "Oczekiwanie"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "Sprawdzanie"
no-broadcasts: "Brak transmisji"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "Śledzisz"
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-processing: "フォロー処理中"
follow-request: "Poproś o śledzenie"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "Aktywność"
toggle: "Przełącz widok"
desktop/views/components/calendar.vue:
title: "{1} / {2}"
title: "{year}年 {month}月"
prev: "Poprzedni miesiąc"
next: "Następny miesiąc"
go: "Naciśnij, aby przejść"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Wybierz plik"
chosen-files: "{count}ファイル選択中"
upload: "Wyślij pliki z Twojego komputera"
cancel: "Anuluj"
ok: "OK"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "OK"
desktop/views/components/drive-window.vue:
used: "wykorzystane"
drive: "Dysk"
desktop/views/components/drive.file.vue:
avatar: "Awatar"
banner: "Baner"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "Zmień nazwę"
rename-folder: "Zmień nazwę katalogu"
input-new-folder-name: "Wprowadź nową nazwę"
desktop/views/components/drive.nav-folder.vue:
drive: "Dysk"
desktop/views/components/drive.vue:
search: "Szukaj"
load-more: "Załaduj więcej"
empty-draghover: "Przeciągnij tutaj!"
empty-drive: "Twój dysk jest pusty"
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
desktop/views/components/follow-button.vue:
following: "Śledzisz"
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-request: "Poproś o śledzenie"
desktop/views/components/followers-window.vue:
followers: "Śledzący"
desktop/views/components/followers.vue:
@ -594,27 +626,24 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "Wiadomości"
desktop/views/components/note-detail.vue:
more: "Załaduj więcej konwersacji"
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
reposted-by: "Udostępniono przez {}"
location: "Informacje o lokalizacji"
renote: "Udostępnienie"
add-reaction: "Dodaj reakcję"
desktop/views/components/notes.note.vue:
reposted-by: "Udostępniono przez {}"
reply: "Odpowiedz"
renote: "Udostępnij"
add-reaction: "Dodaj reakcję"
detail: "Pokaż szczegóły"
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
add-reaction: "リアクション"
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.vue:
error: "Ładowanie nie powiodło się."
retry: "Spróbuj ponownie"
load-more: "Załaduj więcej"
desktop/views/components/notifications.vue:
more: "Więcej"
empty: "Brak powiadomień"
desktop/views/components/post-form.vue:
add-visible-user: "+Dodaj użytkownika"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Nie udało się udostępnić"
desktop/views/components/renote-form-window.vue:
title: "Czy na pewno chcesz udostępnić ten wpis?"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "Ustawienia"
desktop/views/components/settings.vue:
profile: "Profil"
notification: "Powiadomienia"
apps: "Aplikacje"
mute: "Wyciszanie"
drive: "Dysk"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "Bezpieczeństwo"
signin: "Historia logowań"
password: "Hasło"
2fa: "Uwierzytelnianie dwuetapowe"
other: "Inne"
license: "Licencja"
theme: "テーマ"
behaviour: "Zachowanie"
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
fetch-on-scroll-desc: "Po przewinięciu na dół strony automatycznie zostaną załadowane nowe treści."
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "Ustawienia zaawansowane"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Wygląd i wyświetlanie"
customize: "Dostosuj stronę główną"
wallpaper: "壁紙"
choose-wallpaper: "Wybierz tło"
delete-wallpaper: "Usuń tło"
dark-mode: "Tryb ciemny"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "Używaj okrągłych ikon"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Pokazuj cel odpowiedzi"
timeline: "タイムライン"
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "Automatycznie pokazuj mapę"
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "Dźwięk"
enable-sounds: "Włącz dźwięk"
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
volume: "Głośność"
test: "Test"
mobile: "Wersja mobilna"
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
language: "Język"
pick-language: "Wybierz język"
recommended: "Zalecane"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "Narzędzia"
task-manager: "Menedżer zadań"
third-parties: "Autorzy trzeci"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "Jeżeli skonfigurujesz uwierzytelnianie dwuetapowe, aby zablokować się będziesz potrzebować (oprócz hasła) kodu ze skonfigurowanego urządzenia (np. smartfonu), co zwiększy bezpieczeństwo."
detail: "Zobacz szczegóły…"
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "Pomyślnie ukończono konfigurację!"
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
desktop/views/components/settings.api.vue:
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
regenerate-token: "Wygeneruj nowy token"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "Wprowadź hasło"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "Brak zautoryzowanych aplikacji"
desktop/views/components/settings.drive.vue:
max: "Maksymalnie"
in-use: " w użyciu."
desktop/views/components/settings.mute.vue:
no-users: "Brak wyciszonych użytkowników"
desktop/views/components/settings.password.vue:
reset: "Zmień hasło"
enter-current-password: "Wprowadź obecne hasło"
enter-new-password: "Wprowadź nowe hasło"
enter-new-password-again: "Wprowadź ponownie nowe hasło"
not-match: "Nowe hasła nie pasują do siebie"
changed: "Pomyślnie zmieniono hasło"
desktop/views/components/settings.profile.vue:
avatar: "Awatar"
choice-avatar: "Wybierz obraz"
name: "Nazwa"
location: "Lokalizacja"
description: "Opis"
birthday: "Data urodzenia"
save: "Aktualizuj profil"
locked-account: "Zabezpiecz swoje konto"
is-locked: "フォローを承認制にする"
other: "Inne"
is-bot: "To konto jest prowadzone przez bota"
is-cat: "To konto jest prowadzone przez kota"
profile-updated: "Zaktualizowano profil"
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/sub-note-content.vue:
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "Twój profil"
drive: "Dysk"
favorites: "Ulubione"
lists: "Listy"
follow-requests: "Prośby o śledzenie"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "Strona główna"
deck: "Talia"
messaging: "Wiadomości"
game: "Gra"
desktop/views/components/ui.header.notifications.vue:
title: "Powiadomienia"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "Wszyscy"
iknow: "Znasz"
load-more: "Więcej"
fetching: "Ładowanie…"
desktop/views/components/users-list-item.vue:
followed: "Obserwuje Cię"
desktop/views/components/window.vue:
popout: "Pop-out"
close: "Zamknij"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Tylko wpisy z zawartością multimedialną"
is-media-view: "Widok multimediów"
edit: "Opcje"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "Udostępniono przez {}"
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "O Misskey"
gotit: "Rozumiem!"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Dysk Misskey"
desktop/views/pages/favorites.vue:
more: "Załaduj więcej"
desktop/views/pages/home-customize.vue:
title: "Dostosuj stronę główną"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "Wyślij pliki z Twojego komputera"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "Nie znaleziono wpisów zawierających „{}”"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "Udostępnij z {}."
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "Użytkownicy"
add-user: "Dodaj użytkownika"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "Najbardziej aktywni"
loading: "Ładowanie"
no-users: "Brak użytkowników"
desktop/views/pages/user/user.vue:
is-suspended: "To konto zostało zawieszone."
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
view-remote: "Wyświetl dokładne informacje"
desktop/views/pages/user/user.home.vue:
last-used-at: "Ostatnio aktywny: "
desktop/views/pages/user/user.photos.vue:
title: "Zdjęcia"
loading: "Ładowanie"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "Wycisz"
muted: "Wyciszyłeś"
unmute: "Cofnij wyciszenie"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "Dodaj do listy"
list-pushed: "Dodałeś(-aś) {user} do {list}."
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "Śledzeni"
followers: "Śledzący"
is-bot: "To konto jest botem"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "Wpisy"
with-replies: "Wpisy i odpowiedzi"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "Pokaż innych"
no-one: "Pusto"
mobile/views/components/drive.vue:
drive: "Dysk"
used: "użyto"
folder-count: "Katalog(i)"
count-separator: ", "
file-count: "Plik(i)"
load-more: "Załaduj więcej"
nothing-in-drive: "Pusto"
folder-is-empty: "Ten katalog jest pusty"
prompt: "Co chcesz zrobić? (wprowadź odpowiednią cyfrę): <1 → Wysłać plik | 2 → Wysłać plik z adresu URL | 3 → Utworzyć katalog | 4 → Zmienić nazwę tego katalogu | 5 → Przenieść ten katalog | 6 → Usunąć ten katalog>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "Nie można przenieść tego katalogu, ponieważ jest on katalogiem głównym. Przejdź do katalogu, który chcesz przenieść."
url-prompt: "Adres URL pliku, który chcesz wysłać"
uploading: "Rozpoczęto wysyłanie. Może to trochę potrwać."
mobile/views/components/drive-file-detail.vue:
rename: "Zmień nazwę"
mobile/views/components/drive-file-chooser.vue:
select-file: "Wybierz plik"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,17 +1161,20 @@ mobile/views/components/drive.file-detail.vue:
hash: "Hash (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
mobile/views/components/media-video.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
mobile/views/components/follow-button.vue:
following: "Śledzisz"
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-request: "Poproś o śledzenie"
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "Zacznij śledzić ludzi takich jak Ty"
empty: "Nie znaleziono podobnych użytkowników."
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "kot"
mobile/views/components/notes.vue:
failed: "Ładowanie nie powiodło się."
retry: "Spróbuj ponownie"
mobile/views/components/notifications.vue:
more: "Więcej"
empty: "Brak powiadomień"
mobile/views/components/post-form.vue:
add-visible-user: "Dodaj użytkownika"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "Ankieta"
mobile/views/components/timeline.vue:
empty: "Brak wpisów"
load-more: "Więcej"
mobile/views/components/ui.header.vue:
welcome-back: "Witaj ponownie, "
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "Oś czasu"
notifications: "Powiadomienia"
messaging: "Wiadomości"
follow-requests: "Prośby o śledzenie"
search: "Szukaj"
drive: "Dysk"
favorites: "Ulubione"
user-lists: "Listy"
widgets: "Widżety"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "Wygląda na to, że ten użytkownik nie opublikował jeszcze niczego"
no-notes-with-media: "Brak wpisów z zawartością multimedialną"
load-more: "Więcej"
mobile/views/components/users-list.vue:
all: "Wszyscy"
known: "Znasz"
load-more: "Więcej"
mobile/views/pages/favorites.vue:
title: "Ulubione"
mobile/views/pages/user-lists.vue:
title: "Listy"
enter-list-name: "Wprowadź nazwę listy"
mobile/views/pages/drive.vue:
drive: "Dysk"
more: "Załaduj więcej"
mobile/views/pages/signup.vue:
lets-start: "Rozpocznijmy! 📦"
mobile/views/pages/followers.vue:
followers-of: "Śledzący {}"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "Śledzeni przez {}"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "Strona główna"
local: "Lokalne"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "Zarejestruj się"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "Aktywność"
mobile/views/pages/share.vue:
share-with: "Udostępnij z {}."
mobile/views/pages/messaging.vue:
messaging: "Wiadomości"
mobile/views/pages/messaging-room.vue:
messaging: "Wiadomości"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "Prośby o śledzenie"
accept: "Zatwierdź"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
mobile/views/pages/games/reversi.vue:
reversi: "Reversi"
mobile/views/pages/settings/settings.profile.vue:
title: "Profil"
name: "Nazwa"
account: "Konto"
location: "Lokalizacja"
description: "Opis"
birthday: "Data urodzenia"
avatar: "Awatar"
banner: "Baner"
is-cat: "To konto jest prowadzone przez kota"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "Aktualizuj profil"
saved: "Pomyślnie zaktualizowano profil"
uploading: "Wysyłanie"
upload-failed: "Wysyłanie nie powiodło się"
mobile/views/pages/search.vue:
search: "Szukaj"
empty: "Nie znaleziono wpisów zawierających '{}'"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "Wybierz plik"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "Zachowanie"
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Połącz z Twitterem"
twitter-reconnect: "Połącz ponownie"
twitter-disconnect: "Rozłącz"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Aktualizacja Misskey"
version: "Wersja:"
latest-version: "Najnowsza wersja:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "Wyloguj"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "Śledzi Cię"
following: "Śledzeni"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "Oś czasu"
media: "Multimedia"
is-suspended: "To konto zostało zablokowane"
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
view-remote: "Wyświetl dokładne informacje"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "Ostatnie wpisy"
images: "Zdjęcia"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "Śledzący których znasz"
last-used-at: "Ostatnio aktywny"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "Ładowanie"
no-users: "Brak użytkowników"
mobile/views/pages/user/home.friends.vue:
loading: "Ładowanie"
no-users: "Brak użytkowników"
mobile/views/pages/user/home.notes.vue:
loading: "Ładowanie"
no-notes: "Brak wpisów"
mobile/views/pages/user/home.photos.vue:
loading: "Ładowanie"
no-photos: "Brak zdjęć"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
@ -1300,3 +1435,29 @@ docs:
description: "Opis"
dev/views/index.vue:
manage-apps: "Zarządzaj aplikacjami"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

View File

@ -25,13 +25,11 @@ common:
application-authorization: "Aplicativos autorizados"
close: "Fechar"
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
load-more: "もっと読み込む"
got-it: "Entendi!"
customization-tips:
title: "Dicas de personalização"
paragraph1: "Personalização da página inicial permite adicionar/remover, arrastar e soltar e reorganizar widgets."
paragraph2: "Você pode mudar a visualização de alguns widgets <strong>clicando com o botão <strong>direito.</strong></strong>"
paragraph3: "Para apagar um widget, o arraste e solte <strong>na área chamada \"Lixo\"</strong> no cabeçalho."
paragraph4: "Para terminar a personalização clique em \"Terminar\" acima e à direita."
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Entendi!"
notification:
file-uploaded: "Arquivo enviado!"
@ -54,6 +52,8 @@ common:
years_ago: "{} ano(s) atrás"
month-and-day: "{day}/{month}"
trash: "Lixo"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "Dom"
monday: "Seg"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "Empatado"
my-turn: "Seu turno"
opponent-turn: "Turno do oponente"
turn-of: "turno de {}"
past-turn-of: "turno de {}"
won: "{} venceu"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "Pretas"
white: "Brancas"
total: "Total"
this-turn: "Turno de {}"
this-turn: "{count}ターン目"
widgets:
analog-clock: "Relógio analógico"
profile: "Perfil"
@ -144,34 +152,15 @@ common:
users: "Usuário sugeridos"
polls: "Enquetes"
post-form: "Formulário de publicação"
messaging: "Mensagens"
server: "Informações do servidor"
donation: "Doações"
nav: "Navegação"
tips: "Dicas"
hashtags: "Hashtags"
deck:
widgets: "Widgets"
home: "Início"
local: "Local"
hybrid: "Social"
hashtag: "ハッシュタグ"
global: "Global"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "Notificações"
list: "Listas"
swap-left: "Mover para a esquerda"
swap-right: "Mover para a direita"
swap-up: "Mover para cima"
swap-down: "Mover para baixo"
remove: "Remover"
add-column: "Adicionar coluna"
rename: "Renomear"
stack-left: "左に重ねる"
pop-right: "Acoplar à direita"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "Este aplicativo precisa das seguintes permissões:"
account-read: "Ver informações da conta."
account-write: "Modificar informações da conta."
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "名前を変更"
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
@ -594,14 +626,13 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -612,9 +643,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
theme: "テーマ"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue:
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
users: "Usuários"
update: "Actualizações"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "Todos os usuários"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Drive Misskey"
desktop/views/pages/favorites.vue:
more: "Carregar mais"
desktop/views/pages/home-customize.vue:
title: "Personalizar a página inicial"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "Envie arquivos do seu dispositivo"
desktop/views/pages/search.vue:
not-available: "A pesquisa está desligada nas configurações desta instância."
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "Nome"
account: "Conta"
location: "Lugar"
description: "Biografia"
birthday: "Data de nascimento"
avatar: "Avatar"
banner: "Capa"
is-cat: "Esta conta é gato"
is-locked: "Pedido para seguir precisa ser aprovado"
advanced: "Avançado"
privacy: "Provacidade"
save: "Atualizar perfil"
saved: "Perfil atualizado"
uploading: "Enviando"
upload-failed: "Falha ao enviar"
mobile/views/pages/search.vue:
search: "Pesquisar"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Conectar à sua conta no Twitter"
twitter-reconnect: "Reconectar"
twitter-disconnect: "Desconectar"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Atualizar Misskey"
version: "Versão atual;"
latest-version: "Última versão:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "Sair"
sound: "Sons"
enable-sounds: "Ativar sons"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "Te segue"
following: "Seguindo"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "Linha do tempo"
media: "Mídia"
is-suspended: "Esta conta foi suspensa"
is-remote: "Este é uma usuário remoto. O perfil que vê aqui pode não estar completo."
view-remote: "Ver o perfil completo."
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "Notas recentes"
images: "Imagens"
@ -1263,19 +1369,48 @@ mobile/views/pages/user/home.vue:
domains: "Domínios"
frequently-replied-users: "Perguntas frequentes"
followers-you-know: "Seguidores que você conhece"
last-used-at: "Ativo pela última vez:"
last-used-at: "Ativo pela última vez"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "Carregando"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "Carregando"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "Carregando"
no-notes: "Nenhuma mensagem"
mobile/views/pages/user/home.photos.vue:
loading: "Carregando"
no-photos: "Sem fotos"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "Edite esta página no GitHub!"
@ -1300,3 +1435,29 @@ docs:
description: "Descrição"
dev/views/index.vue:
manage-apps: "Gerenciar aplicativos"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

View File

@ -3,9 +3,9 @@ meta:
lang: "Русский язык"
divider: ""
common:
misskey: "A ⭐ of fediverse"
about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
misskey: "Мы — ⭐ fediverse"
about-title: "Мы — ⭐ fediverse"
about: "Спасибо, что нашли Misskey. Misskey — это <b>децентрализованная платформа для микроблоггинга</b> родом с планеты Земля. Поскольку она существует внутри Fediverse (вселенной различных социальных платформ), она связана с другими платформами. Отдохните от шума большого города — и познакомьтесь с новым интернетом."
intro:
title: "Misskeyって"
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -54,6 +52,8 @@ common:
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "日"
monday: "月"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
@ -144,34 +152,15 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "名前を変更"
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
@ -594,14 +626,13 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -612,9 +643,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
theme: "テーマ"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue:
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "知り合いのフォロワー"
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1300,3 +1435,29 @@ docs:
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

View File

@ -25,13 +25,11 @@ common:
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "もっと読み込む"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph: "<p>ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。</p><p>一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。</p><p>ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。</p><p>カスタマイズを終了するには、右上の「完了」をクリックします。</p>"
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
@ -54,6 +52,8 @@ common:
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
drive: "ドライブ"
messaging: "トーク"
weekday-short:
sunday: "日"
monday: "月"
@ -112,20 +112,28 @@ common:
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
show-via: "viaを表示する"
reduce-motion: "UIの動きを減らす"
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
is-remote-user: "このユーザー情報はコピーです。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
error:
title: '問題が発生しました'
retry: 'やり直す'
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
turn-of: "{name}のターンです"
past-turn-of: "{name}のターン"
won: "{name}の勝ち"
black: "黒"
white: "白"
total: "合計"
this-turn: "{}ターン目"
this-turn: "{count}ターン目"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
@ -144,34 +152,15 @@ common:
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
@ -264,6 +253,41 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
@ -273,7 +297,6 @@ common/views/components/messaging.vue:
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
@ -300,7 +323,9 @@ common/views/components/note-menu.vue:
detail: "詳細"
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
@ -319,6 +344,16 @@ common/views/components/poll-editor.vue:
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: "人"
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: "物"
symbols: "記号"
flags: "旗"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
@ -327,6 +362,7 @@ common/views/components/signin.vue:
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
common/views/components/signup.vue:
invitation-code: "招待コード"
@ -365,6 +401,13 @@ common/views/components/twitter-setting.vue:
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
connected-to: "次のGitHubアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "GitHubと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
@ -379,6 +422,25 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
@ -439,6 +501,7 @@ common/views/pages/follow.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
@ -461,34 +524,12 @@ desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
title: "{year}年 {month}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の累計"
users: "ユーザーの増減"
users-total: "ユーザーの累計"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
chosen-files: "{count}ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
@ -503,7 +544,6 @@ desktop/views/components/crop-window.vue:
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
@ -533,11 +573,8 @@ desktop/views/components/drive.folder.vue:
rename: "名前を変更"
rename-folder: "フォルダ名の変更"
input-new-folder-name: "新しいフォルダ名を入力してください"
desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ"
desktop/views/components/drive.vue:
search: "検索"
load-more: "もっと読み込む"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
empty-drive: "ドライブには何もありません。"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
@ -561,11 +598,6 @@ desktop/views/components/media-image.vue:
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/followers-window.vue:
followers: "{} のフォロワー"
desktop/views/components/followers.vue:
@ -594,14 +626,13 @@ desktop/views/components/messaging-room-window.vue:
desktop/views/components/messaging-window.vue:
title: "メッセージ"
desktop/views/components/note-detail.vue:
more: "会話をもっと読み込む"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
reposted-by: "{}がRenote"
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/notes.note.vue:
desktop/views/components/note.vue:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
@ -612,9 +643,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
@ -661,20 +690,24 @@ desktop/views/components/renote-form.vue:
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
theme: "テーマ"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
@ -686,30 +719,36 @@ desktop/views/components/settings.vue:
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する"
timeline: "タイムライン"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
deck-column-align: "デッキのカラムの位置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
@ -745,6 +784,10 @@ desktop/views/components/settings.vue:
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: "上"
navbar-position-left: "左"
navbar-position-right: "右"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
@ -763,41 +806,44 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: 'APIコンソール'
endpoint: 'エンドポイント'
parameter: 'パラメータ'
credential-info: "「i」パラメータは自動で付与されます。"
send: '送信'
sending: '応答待ち'
response: '結果'
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.drive.vue:
max: ""
common/views/components/drive-settings.vue:
max: "容量"
in-use: "使用中"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue:
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
muted-words: "ミュートされたキーワード"
muted-words-description: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
save: "保存"
common/views/components/password-settings.vue:
reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください"
enter-new-password: "新しいパスワードを入力してください"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "フォローを承認制にする"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
profile-updated: "プロフィールを更新しました"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
@ -822,7 +868,6 @@ desktop/views/components/ui.header.vue:
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
@ -834,7 +879,6 @@ desktop/views/components/ui.header.account.vue:
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
@ -857,54 +901,142 @@ desktop/views/components/user-preview.vue:
desktop/views/components/users-list.vue:
all: "すべて"
iknow: "知り合い"
load-more: "もっと"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
admin/views/index.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
instance: "インスタンス"
emoji: "カスタム絵文字"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
announcements: "お知らせ"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
accounts: "アカウント"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
federated: "連合"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance-description: "インスタンスの紹介"
host: "ホスト"
banner-url: "バナー画像URL"
languages: "インスタンスの対象言語"
languages-desc: "スペースで区切って複数設定できます。"
maintainer-config: "管理者情報"
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。そのためサーバーのストレージを節約できますが、プライバシー設定で直リンクを無効にしているユーザーにはファイルが見えなくなったり、サムネイルが生成されないので通信量が増加します。通常はこの設定をオンにしておくことをおすすめします。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"
remote-drive-capacity-mb: "リモートユーザーひとりあたりのドライブ容量"
mb: "メガバイト単位"
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは /api/tw/cb に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
twitter-integration-consumer-key: "Consumer key"
twitter-integration-consumer-secret: "Consumer secret"
github-integration-config: "GitHub連携の設定"
github-integration-info: "コールバックURLは /api/gh/cb に設定します。"
enable-github-integration: "GitHub連携を有効にする"
github-integration-client-id: "Client ID"
github-integration-client-secret: "Client secret"
proxy-account-config: "プロキシアカウントの設定"
proxy-account-info: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
proxy-account-username: "プロキシアカウントのユーザー名"
proxy-account-username-desc: "プロキシとして使用するアカウントのユーザー名を指定してください。"
proxy-account-warn: "アカウントは自動で作られないため、そのユーザー名のアカウントを予め作成しておく必要があります。"
max-note-text-length: "投稿の最大文字数"
disable-registration: "ユーザー登録の受付を停止する"
disable-local-timeline: "ローカルタイムラインを無効にする"
invite: "招待"
desktop/views/pages/admin/admin.suspend-user.vue:
save: "保存"
saved: "保存しました"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
remote-notes: "投稿の増減 (リモート)"
notes-total: "投稿の積算"
users: "ユーザーの増減"
users-total: "ユーザーの積算"
drive: "ドライブ使用量の増減"
drive-total: "ドライブ使用量の積算"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の積算"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
admin/views/users.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/admin/admin.verify-user.vue:
verify-user: "ユーザーの公式アカウント設定"
verify: "公式アカウントにする"
verified: "公式アカウントにしました"
desktop/views/pages/admin/admin.unverify-user.vue:
unverify-user: "ユーザーの公式アカウント解除"
unverify: "公式アカウントを解除する"
unverified: "公式アカウントを解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/pages/stats/stats.vue:
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全ての投稿"
original-notes: "このインスタンスの投稿"
admin/views/emoji.vue:
add-emoji:
title: "絵文字の登録"
name: "絵文字名"
name-desc: "a~z 0~9 _ の文字が使えます。"
aliases: "エイリアス"
aliases-desc: "スペースで区切って複数設定できます。"
url: "絵文字画像URL"
add: "追加"
info: "50KB以下のPNG画像をおすすめします。"
added: "絵文字を登録しました"
emojis:
title: "絵文字一覧"
update: "更新"
remove: "削除"
updated: "更新しました"
remove-emoji:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/announcements.vue:
announcements: "お知らせ"
save: "保存"
remove: "削除"
add: "追加"
title: "タイトル"
text: "内容"
saved: "保存しました"
_remove:
are-you-sure: "「$1」を削除しますか"
removed: "削除しました"
admin/views/hashtags.vue:
hided-tags: "Hidden Tags"
desktop/views/pages/welcome.vue:
about: "詳しく..."
gotit: "わかった"
@ -919,8 +1051,6 @@ desktop/views/pages/welcome.vue:
info: "情報"
desktop/views/pages/drive.vue:
title: "Misskey Drive"
desktop/views/pages/favorites.vue:
more: "さらに読み込む"
desktop/views/pages/home-customize.vue:
title: "ホームのカスタマイズ"
desktop/views/pages/note.vue:
@ -933,11 +1063,11 @@ desktop/views/pages/selectdrive.vue:
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/search.vue:
not-available: "検索機能はインスタンスの設定で無効になっています。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "{name}で共有"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
@ -950,12 +1080,6 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー"
loading: "読み込み中"
no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
desktop/views/pages/user/user.home.vue:
last-used-at: "最終アクセス"
desktop/views/pages/user/user.photos.vue:
title: "フォト"
loading: "読み込み中"
@ -968,6 +1092,9 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
block: "ブロックする"
unblock: "ブロック解除"
block-confirm: "このユーザーをブロックしますか?"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
@ -975,6 +1102,10 @@ desktop/views/pages/user/user.header.vue:
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
years-old: "{age}歳"
year: "年"
month: "月"
day: "日"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
@ -1004,12 +1135,10 @@ desktop/views/widgets/users.vue:
refresh: "他を見る"
no-one: "いません!"
mobile/views/components/drive.vue:
drive: "ドライブ"
used: "使用中"
folder-count: "フォルダ"
count-separator: "、"
file-count: "ファイル"
load-more: "もっと読み込む"
nothing-in-drive: "ドライブには何もありません"
folder-is-empty: "このフォルダは空です"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
@ -1019,8 +1148,6 @@ mobile/views/components/drive.vue:
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
rename: "名前を変更"
mobile/views/components/drive-file-chooser.vue:
select-file: "ファイルを選択"
mobile/views/components/drive-folder-chooser.vue:
@ -1034,16 +1161,19 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)"
exif: "EXIF"
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/follow-button.vue:
common/views/components/follow-button.vue:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-processing: "フォロー処理中"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
@ -1071,11 +1201,7 @@ mobile/views/components/note-sub.vue:
admin: "admin"
bot: "bot"
cat: "cat"
mobile/views/components/notes.vue:
failed: "読み込みに失敗しました。"
retry: "リトライ"
mobile/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
mobile/views/components/post-form.vue:
add-visible-user: "ユーザーを追加"
@ -1095,17 +1221,14 @@ mobile/views/components/sub-note-content.vue:
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
@ -1117,25 +1240,20 @@ mobile/views/components/ui.nav.vue:
mobile/views/components/user-timeline.vue:
no-notes: "このユーザーは投稿していないようです。"
no-notes-with-media: "メディア付き投稿はありません。"
load-more: "もっと"
mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/user-lists.vue:
title: "リスト"
enter-list-name: "リスト名を入力してください"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
followers-of: "{name}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
following-of: "{name}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
@ -1144,7 +1262,7 @@ mobile/views/pages/home.vue:
mentions: "あなた宛て"
messages: "メッセージ"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue:
@ -1155,11 +1273,7 @@ mobile/views/pages/widgets.vue:
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
share-with: "{}で共有"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
share-with: "{name}で共有"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
@ -1173,27 +1287,9 @@ mobile/views/pages/notifications.vue:
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-locked: "フォローを承認制にする"
advanced: "その他"
privacy: "プライバシー"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{q}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@ -1219,6 +1315,7 @@ mobile/views/pages/settings.vue:
notification-position: "通知の表示"
notification-position-bottom: "下"
notification-position-top: "上"
theme: "テーマ"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
note-visibility: "投稿の公開範囲"
@ -1231,6 +1328,10 @@ mobile/views/pages/settings.vue:
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
@ -1244,6 +1345,8 @@ mobile/views/pages/settings.vue:
signout: "サインアウト"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
password: "パスワード"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
@ -1253,8 +1356,11 @@ mobile/views/pages/user.vue:
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
years-old: "{age}歳"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
@ -1265,17 +1371,46 @@ mobile/views/pages/user/home.vue:
followers-you-know: "知り合いのフォロワー"
last-used-at: "最終ログイン"
mobile/views/pages/user/home.followers-you-know.vue:
loading: "読み込み中"
no-users: "知り合いのユーザーはいません"
mobile/views/pages/user/home.friends.vue:
loading: "読み込み中"
no-users: "よく会話するユーザーはいません"
mobile/views/pages/user/home.notes.vue:
loading: "読み込み中"
no-notes: "投稿はありません"
mobile/views/pages/user/home.photos.vue:
loading: "読み込み中"
no-photos: "写真はありません"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
hashtag: "ハッシュタグ"
global: "グローバル"
mentions: "あなた宛て"
direct: "ダイレクト投稿"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
edit: "オプション"
deck/deck.user-column.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
images: "画像"
activity: "アクティビティ"
timeline: "タイムライン"
pinned-notes: "ピン留めされた投稿"
push-to-a-list: "リストに追加"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
@ -1300,3 +1435,29 @@ docs:
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"
dev/views/apps.vue:
manage-apps: "アプリを管理"
create-app: "アプリ作成"
app-missing: "アプリなし"
dev/views/new-app.vue:
create-app: "アプリケーションの作成"
app-name: "アプリケーション名"
app-name-desc: "あなたのアプリの名称。"
app-name-ex: "ex) Misskey for iOS"
app-overview: "アプリの概要"
app-desc: "あなたのアプリの簡単な説明や紹介。"
app-desc-ex: "ex) Misskey iOSクライアント。"
callback-url: "コールバックURL (オプション)"
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
authority: "権限"
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
reaction-write: "リアクションしたりリアクションをキャンセルする。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"

View File

@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "9.0.0",
"clientVersion": "1.0.10049",
"version": "10.51.0",
"clientVersion": "2.0.11800",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,
@ -20,26 +20,28 @@
"format": "gulp format"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "1.2.4",
"@fortawesome/free-brands-svg-icons": "5.3.1",
"@fortawesome/free-regular-svg-icons": "5.3.1",
"@fortawesome/free-solid-svg-icons": "5.3.1",
"@fortawesome/fontawesome-svg-core": "1.2.8",
"@fortawesome/free-brands-svg-icons": "5.5.0",
"@fortawesome/free-regular-svg-icons": "5.5.0",
"@fortawesome/free-solid-svg-icons": "5.5.0",
"@fortawesome/vue-fontawesome": "0.1.2",
"@koa/cors": "2.2.2",
"@prezzemolo/rap": "0.1.2",
"@prezzemolo/zip": "0.0.3",
"@types/bcryptjs": "2.4.2",
"@types/chai-http": "3.0.5",
"@types/dateformat": "1.0.1",
"@types/debug": "0.0.30",
"@types/debug": "0.0.31",
"@types/deep-equal": "1.0.1",
"@types/double-ended-queue": "2.1.0",
"@types/elasticsearch": "5.0.26",
"@types/elasticsearch": "5.0.28",
"@types/file-type": "5.2.1",
"@types/gulp": "3.8.36",
"@types/gulp-htmlmin": "1.3.32",
"@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31",
"@types/gulp-uglify": "3.0.5",
"@types/gulp-uglify": "3.0.6",
"@types/gulp-util": "3.0.34",
"@types/is-root": "1.0.0",
"@types/is-url": "1.2.28",
@ -48,72 +50,74 @@
"@types/koa-bodyparser": "5.0.1",
"@types/koa-compress": "2.0.8",
"@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.0",
"@types/koa-logger": "3.1.1",
"@types/koa-mount": "3.0.1",
"@types/koa-multer": "1.0.0",
"@types/koa-router": "7.0.32",
"@types/koa-router": "7.0.33",
"@types/koa-send": "4.1.1",
"@types/koa-views": "2.0.3",
"@types/koa__cors": "2.2.3",
"@types/minio": "7.0.0",
"@types/minio": "7.0.1",
"@types/mkdirp": "0.5.2",
"@types/mocha": "5.2.3",
"@types/mongodb": "3.1.7",
"@types/mocha": "5.2.5",
"@types/mongodb": "3.1.14",
"@types/ms": "0.7.30",
"@types/node": "10.10.3",
"@types/node": "10.12.2",
"@types/oauth": "0.9.1",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/qrcode": "1.2.0",
"@types/qrcode": "1.3.0",
"@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.6",
"@types/request": "2.47.1",
"@types/redis": "2.8.7",
"@types/request": "2.48.1",
"@types/request-promise-native": "1.0.15",
"@types/rimraf": "2.0.2",
"@types/seedrandom": "2.4.27",
"@types/sharp": "0.17.10",
"@types/sharp": "0.21.0",
"@types/showdown": "1.7.5",
"@types/single-line-log": "1.1.0",
"@types/speakeasy": "2.0.2",
"@types/speakeasy": "2.0.3",
"@types/systeminformation": "3.23.0",
"@types/tinycolor2": "1.4.1",
"@types/tmp": "0.0.33",
"@types/uuid": "3.4.4",
"@types/webpack": "4.4.12",
"@types/webpack": "4.4.18",
"@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.40",
"@types/ws": "6.0.1",
"animejs": "2.2.0",
"apexcharts": "2.2.0",
"autobind-decorator": "2.2.1",
"autosize": "4.0.2",
"autwh": "0.1.0",
"bcryptjs": "2.4.3",
"bee-queue": "1.2.2",
"bootstrap-vue": "2.0.0-rc.11",
"cafy": "11.3.0",
"cafy": "12.0.0",
"chai": "4.2.0",
"chai-http": "4.2.0",
"chalk": "2.4.1",
"chart.js": "2.7.2",
"commander": "2.17.1",
"commander": "2.19.0",
"crc-32": "1.2.0",
"css-loader": "1.0.0",
"css-loader": "1.0.1",
"cssnano": "4.1.7",
"dateformat": "3.0.3",
"debug": "4.0.1",
"debug": "4.1.0",
"deep-equal": "1.0.1",
"deepcopy": "0.6.3",
"diskusage": "0.2.4",
"dompurify": "1.0.5",
"diskusage": "0.2.5",
"double-ended-queue": "2.1.0-0",
"elasticsearch": "15.1.1",
"elasticsearch": "15.2.0",
"emojilib": "2.3.0",
"escape-regexp": "0.0.1",
"eslint": "5.0.1",
"eslint": "5.8.0",
"eslint-plugin-vue": "4.7.1",
"eventemitter3": "3.1.0",
"exif-js": "2.3.0",
"file-loader": "1.1.11",
"file-type": "9.0.0",
"file-loader": "2.0.0",
"file-type": "10.4.0",
"fuckadblock": "3.2.1",
"gulp": "3.9.1",
"gulp-cssnano": "2.1.3",
"gulp-htmlmin": "4.0.0",
"gulp-htmlmin": "5.0.1",
"gulp-imagemin": "4.1.0",
"gulp-mocha": "6.0.0",
"gulp-pug": "4.0.1",
@ -125,39 +129,39 @@
"gulp-typescript": "4.0.2",
"gulp-uglify": "3.0.1",
"gulp-util": "3.0.8",
"gulp-yaml": "2.0.2",
"hard-source-webpack-plugin": "0.12.0",
"highlight.js": "9.12.0",
"html-minifier": "3.5.20",
"html-minifier": "3.5.21",
"http-signature": "1.2.0",
"insert-text-at-cursor": "0.1.1",
"is-root": "2.0.0",
"is-url": "1.2.4",
"js-yaml": "3.12.0",
"jsdom": "11.12.0",
"koa": "2.5.1",
"jsdom": "13.0.0",
"json5": "2.1.0",
"json5-loader": "1.0.1",
"koa": "2.6.1",
"koa-bodyparser": "4.2.1",
"koa-compress": "3.0.0",
"koa-favicon": "2.0.1",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.0",
"koa-mount": "3.0.0",
"koa-mount": "4.0.0",
"koa-multer": "1.0.2",
"koa-router": "7.4.0",
"koa-send": "5.0.0",
"koa-slow": "2.1.0",
"koa-views": "6.1.4",
"loader-utils": "1.1.0",
"lodash.assign": "4.2.0",
"mecab-async": "0.1.2",
"merge-options": "1.0.1",
"minio": "7.0.1",
"mkdirp": "0.5.1",
"mocha": "5.2.0",
"moji": "0.5.1",
"mongodb": "3.1.1",
"moment": "2.22.2",
"mongodb": "3.1.8",
"monk": "6.0.6",
"ms": "2.1.1",
"nan": "2.11.0",
"nan": "2.11.1",
"nested-property": "0.0.7",
"nprogress": "0.2.0",
"object-assign-deep": "0.4.0",
@ -165,14 +169,17 @@
"os-utils": "0.0.14",
"parse5": "5.1.0",
"portscanner": "2.2.0",
"postcss-loader": "3.0.0",
"progress-bar-webpack-plugin": "1.11.0",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "2.0.3",
"punycode": "2.1.1",
"qrcode": "1.2.2",
"qrcode": "1.3.2",
"randomcolor": "0.5.3",
"ratelimiter": "3.2.0",
"recaptcha-promise": "0.1.3",
"reconnecting-websocket": "3.2.2",
"reconnecting-websocket": "4.1.10",
"redis": "2.8.0",
"request": "2.88.0",
"request-promise-native": "1.0.5",
@ -180,42 +187,42 @@
"rimraf": "2.6.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass-loader": "7.1.0",
"seedrandom": "2.4.4",
"sharp": "0.20.7",
"showdown": "1.8.6",
"sharp": "0.21.0",
"showdown": "1.8.7",
"showdown-highlightjs-extension": "0.1.2",
"single-line-log": "1.1.2",
"speakeasy": "2.0.0",
"stringz": "1.0.0",
"style-loader": "0.23.0",
"style-loader": "0.23.1",
"stylus": "0.54.5",
"stylus-loader": "3.0.2",
"summaly": "2.2.0",
"systeminformation": "3.45.6",
"systeminformation": "3.47.0",
"syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "1.1.0",
"textarea-caret": "3.1.0",
"tinycolor2": "1.4.1",
"tmp": "0.0.33",
"ts-loader": "4.4.1",
"ts-loader": "5.3.0",
"ts-node": "7.0.1",
"tslint": "5.10.0",
"typescript": "2.9.2",
"typescript-eslint-parser": "18.0.0",
"typescript": "3.1.6",
"typescript-eslint-parser": "20.1.1",
"uglify-es": "3.3.9",
"url-loader": "1.1.1",
"url-loader": "1.1.2",
"uuid": "3.3.2",
"v-animate-css": "0.0.2",
"vue": "2.5.17",
"vue-chartjs": "3.4.0",
"vue-color": "2.6.0",
"vue-color": "2.7.0",
"vue-content-loading": "1.5.3",
"vue-cropperjs": "2.2.2",
"vue-i18n": "8.3.1",
"vue-js-modal": "1.3.26",
"vue-json-tree-view": "2.1.4",
"vue-loader": "15.4.2",
"vue-marquee-text-component": "1.1.0",
"vue-router": "3.0.1",
"vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.1.3",
"vue-svg-inline-loader": "1.2.1",
"vue-template-compiler": "2.5.17",
"vuedraggable": "2.16.0",
"vuewordcloud": "18.7.11",
@ -223,17 +230,10 @@
"vuex-persistedstate": "2.5.4",
"web-push": "3.3.3",
"webfinger.js": "2.6.6",
"webpack": "4.19.1",
"webpack-cli": "3.1.0",
"webpack": "4.25.1",
"webpack-cli": "3.1.2",
"websocket": "1.0.28",
"ws": "6.0.0",
"ws": "6.1.0",
"xev": "2.0.1"
},
"greenkeeper": {
"ignore": [
"deepcopy",
"cafy",
"@types/gulp"
]
}
}

122
src/chart/drive.ts Normal file
View File

@ -0,0 +1,122 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import DriveFile, { IDriveFile } from '../models/drive-file';
import { isLocalUser } from '../models/user';
/**
* ドライブに関するチャート
*/
type DriveLog = {
local: {
/**
* 集計期間時点での、全ドライブファイル数
*/
totalCount: number;
/**
* 集計期間時点での、全ドライブファイルの合計サイズ
*/
totalSize: number;
/**
* 増加したドライブファイル数
*/
incCount: number;
/**
* 増加したドライブ使用量
*/
incSize: number;
/**
* 減少したドライブファイル数
*/
decCount: number;
/**
* 減少したドライブ使用量
*/
decSize: number;
};
remote: DriveLog['local'];
};
class DriveChart extends Chart<DriveLog> {
constructor() {
super('drive');
}
@autobind
protected async getTemplate(init: boolean, latest?: DriveLog): Promise<DriveLog> {
const calcSize = (local: boolean) => DriveFile
.aggregate([{
$match: {
'metadata._user.host': local ? null : { $ne: null },
'metadata.deletedAt': { $exists: false }
}
}, {
$project: {
length: true
}
}, {
$group: {
_id: null,
usage: { $sum: '$length' }
}
}])
.then(res => res.length > 0 ? res[0].usage : 0);
const [localCount, remoteCount, localSize, remoteSize] = init ? await Promise.all([
DriveFile.count({ 'metadata._user.host': null }),
DriveFile.count({ 'metadata._user.host': { $ne: null } }),
calcSize(true),
calcSize(false)
]) : [
latest ? latest.local.totalCount : 0,
latest ? latest.remote.totalCount : 0,
latest ? latest.local.totalSize : 0,
latest ? latest.remote.totalSize : 0
];
return {
local: {
totalCount: localCount,
totalSize: localSize,
incCount: 0,
incSize: 0,
decCount: 0,
decSize: 0
},
remote: {
totalCount: remoteCount,
totalSize: remoteSize,
incCount: 0,
incSize: 0,
decCount: 0,
decSize: 0
}
};
}
@autobind
public async update(file: IDriveFile, isAdditional: boolean) {
const update: Obj = {};
update.totalCount = isAdditional ? 1 : -1;
update.totalSize = isAdditional ? file.length : -file.length;
if (isAdditional) {
update.incCount = 1;
update.incSize = file.length;
} else {
update.decCount = 1;
update.decSize = file.length;
}
await this.inc({
[isLocalUser(file.metadata._user) ? 'local' : 'remote']: update
});
}
}
export default new DriveChart();

66
src/chart/federation.ts Normal file
View File

@ -0,0 +1,66 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from '.';
import Instance from '../models/instance';
/**
* フェデレーションに関するチャート
*/
type FederationLog = {
instance: {
/**
* インスタンス数の合計
*/
total: number;
/**
* 増加インスタンス数
*/
inc: number;
/**
* 減少インスタンス数
*/
dec: number;
};
};
class FederationChart extends Chart<FederationLog> {
constructor() {
super('federation');
}
@autobind
protected async getTemplate(init: boolean, latest?: FederationLog): Promise<FederationLog> {
const [total] = init ? await Promise.all([
Instance.count({})
]) : [
latest ? latest.instance.total : 0
];
return {
instance: {
total: total,
inc: 0,
dec: 0
}
};
}
@autobind
public async update(isAdditional: boolean) {
const update: Obj = {};
update.total = isAdditional ? 1 : -1;
if (isAdditional) {
update.inc = 1;
} else {
update.dec = 1;
}
await this.inc({
instance: update
});
}
}
export default new FederationChart();

56
src/chart/hashtag.ts Normal file
View File

@ -0,0 +1,56 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import { IUser, isLocalUser } from '../models/user';
import db from '../db/mongodb';
/**
* ハッシュタグに関するチャート
*/
type HashtagLog = {
local: {
/**
* 投稿された数
*/
count: number;
};
remote: HashtagLog['local'];
};
class HashtagChart extends Chart<HashtagLog> {
constructor() {
super('hashtag', true);
// 後方互換性のため
db.get('chart.hashtag').findOne().then(doc => {
if (doc != null && doc.data.local == null) {
db.get('chart.hashtag').drop();
}
});
}
@autobind
protected async getTemplate(init: boolean, latest?: HashtagLog): Promise<HashtagLog> {
return {
local: {
count: 0
},
remote: {
count: 0
}
};
}
@autobind
public async update(hashtag: string, user: IUser) {
const update: Obj = {
count: 1
};
await this.incIfUnique({
[isLocalUser(user) ? 'local' : 'remote']: update
}, 'users', user._id.toHexString(), hashtag);
}
}
export default new HashtagChart();

350
src/chart/index.ts Normal file
View File

@ -0,0 +1,350 @@
/**
* チャートエンジン
*/
import * as moment from 'moment';
const nestedProperty = require('nested-property');
import autobind from 'autobind-decorator';
import * as mongo from 'mongodb';
import db from '../db/mongodb';
import { ICollection } from 'monk';
const utc = moment.utc;
export type Obj = { [key: string]: any };
export type Partial<T> = {
[P in keyof T]?: Partial<T[P]>;
};
type ArrayValue<T> = {
[P in keyof T]: T[P] extends number ? Array<T[P]> : ArrayValue<T[P]>;
};
type Span = 'day' | 'hour';
type Log<T extends Obj> = {
_id: mongo.ObjectID;
/**
* 集計のグループ
*/
group?: any;
/**
* 集計日時
*/
date: Date;
/**
* 集計期間
*/
span: Span;
/**
* データ
*/
data: T;
/**
* ユニークインクリメント用
*/
unique?: Obj;
};
/**
* 様々なチャートの管理を司るクラス
*/
export default abstract class Chart<T> {
protected collection: ICollection<Log<T>>;
protected abstract async getTemplate(init: boolean, latest?: T, group?: any): Promise<T>;
constructor(name: string, grouped = false) {
this.collection = db.get<Log<T>>(`chart.${name}`);
if (grouped) {
this.collection.createIndex({ span: -1, date: -1, group: -1 }, { unique: true });
} else {
this.collection.createIndex({ span: -1, date: -1 }, { unique: true });
}
}
@autobind
private convertQuery(x: Obj, path: string): Obj {
const query: Obj = {};
const dive = (x: Obj, path: string) => {
Object.entries(x).forEach(([k, v]) => {
const p = path ? `${path}.${k}` : k;
if (typeof v === 'number') {
query[p] = v;
} else {
dive(v, p);
}
});
};
dive(x, path);
return query;
}
@autobind
private getCurrentDate(): [number, number, number, number] {
const now = moment().utc();
const y = now.year();
const m = now.month();
const d = now.date();
const h = now.hour();
return [y, m, d, h];
}
@autobind
private getLatestLog(span: Span, group?: any): Promise<Log<T>> {
return this.collection.findOne({
group: group,
span: span
}, {
sort: {
date: -1
}
});
}
@autobind
private async getCurrentLog(span: Span, group?: any): Promise<Log<T>> {
const [y, m, d, h] = this.getCurrentDate();
const current =
span == 'day' ? utc([y, m, d]) :
span == 'hour' ? utc([y, m, d, h]) :
null;
// 現在(今日または今のHour)のログ
const currentLog = await this.collection.findOne({
group: group,
span: span,
date: current.toDate()
});
// ログがあればそれを返して終了
if (currentLog != null) {
return currentLog;
}
let log: Log<T>;
let data: T;
// 集計期間が変わってから、初めてのチャート更新なら
// 最も最近のログを持ってくる
// * 例えば集計期間が「日」である場合で考えると、
// * 昨日何もチャートを更新するような出来事がなかった場合は、
// * ログがそもそも作られずドキュメントが存在しないということがあり得るため、
// * 「昨日の」と決め打ちせずに「もっとも最近の」とします
const latest = await this.getLatestLog(span, group);
if (latest != null) {
// 空ログデータを作成
data = await this.getTemplate(false, latest.data);
} else {
// ログが存在しなかったら
// (Misskeyインスタンスを建てて初めてのチャート更新時など
// または何らかの理由でチャートコレクションを抹消した場合)
// 初期ログデータを作成
data = await this.getTemplate(true, null, group);
}
try {
// 新規ログ挿入
log = await this.collection.insert({
group: group,
span: span,
date: current.toDate(),
data: data
});
} catch (e) {
// 11000 is duplicate key error
// 並列動作している他のチャートエンジンプロセスと処理が重なる場合がある
// その場合は再度最も新しいログを持ってくる
if (e.code === 11000) {
log = await this.getLatestLog(span, group);
} else {
console.error(e);
throw e;
}
}
return log;
}
@autobind
protected commit(query: Obj, group?: any, uniqueKey?: string, uniqueValue?: string): void {
const update = (log: Log<T>) => {
// ユニークインクリメントの場合、指定のキーに指定の値が既に存在していたら弾く
if (
uniqueKey &&
log.unique &&
log.unique[uniqueKey] &&
log.unique[uniqueKey].includes(uniqueValue)
) return;
// ユニークインクリメントの指定のキーに値を追加
if (uniqueKey) {
query['$push'] = {
[`unique.${uniqueKey}`]: uniqueValue
};
}
// ログ更新
this.collection.update({
_id: log._id
}, query);
};
this.getCurrentLog('day', group).then(log => update(log));
this.getCurrentLog('hour', group).then(log => update(log));
}
@autobind
protected inc(inc: Partial<T>, group?: any): void {
this.commit({
$inc: this.convertQuery(inc, 'data')
}, group);
}
@autobind
protected incIfUnique(inc: Partial<T>, key: string, value: string, group?: any): void {
this.commit({
$inc: this.convertQuery(inc, 'data')
}, group, key, value);
}
@autobind
public async getChart(span: Span, range: number, group?: any): Promise<ArrayValue<T>> {
const promisedChart: Promise<T>[] = [];
const [y, m, d, h] = this.getCurrentDate();
const gt =
span == 'day' ? utc([y, m, d]).subtract(range, 'days') :
span == 'hour' ? utc([y, m, d, h]).subtract(range, 'hours') :
null;
// ログ取得
let logs = await this.collection.find({
group: group,
span: span,
date: {
$gte: gt.toDate()
}
}, {
sort: {
date: -1
},
fields: {
_id: 0
}
});
// 要求された範囲にログがひとつもなかったら
if (logs.length == 0) {
// もっとも新しいログを持ってくる
// (すくなくともひとつログが無いと隙間埋めできないため)
const recentLog = await this.collection.findOne({
group: group,
span: span
}, {
sort: {
date: -1
},
fields: {
_id: 0
}
});
if (recentLog) {
logs = [recentLog];
}
// 要求された範囲の最も古い箇所に位置するログが存在しなかったら
} else if (!utc(logs[logs.length - 1].date).isSame(gt)) {
// 要求された範囲の最も古い箇所時点での最も新しいログを持ってきて末尾に追加する
// (隙間埋めできないため)
const outdatedLog = await this.collection.findOne({
group: group,
span: span,
date: {
$lt: gt.toDate()
}
}, {
sort: {
date: -1
},
fields: {
_id: 0
}
});
if (outdatedLog) {
logs.push(outdatedLog);
}
}
// 整形
for (let i = (range - 1); i >= 0; i--) {
const current =
span == 'day' ? utc([y, m, d]).subtract(i, 'days') :
span == 'hour' ? utc([y, m, d, h]).subtract(i, 'hours') :
null;
const log = logs.find(l => utc(l.date).isSame(current));
if (log) {
promisedChart.unshift(Promise.resolve(log.data));
} else {
// 隙間埋め
const latest = logs.find(l => utc(l.date).isBefore(current));
promisedChart.unshift(this.getTemplate(false, latest ? latest.data : null));
}
}
const chart = await Promise.all(promisedChart);
const res: ArrayValue<T> = {} as any;
/**
* [{
* xxxxx: 1, yyyyy: 5
* }, {
* xxxxx: 2, yyyyy: 6
* }, {
* xxxxx: 3, yyyyy: 7
* }]
*
* を
*
* {
* xxxxx: [1, 2, 3],
* yyyyy: [5, 6, 7]
* }
*
* にする
*/
const dive = (x: Obj, path?: string) => {
Object.entries(x).forEach(([k, v]) => {
const p = path ? `${path}.${k}` : k;
if (typeof v == 'object') {
dive(v, p);
} else {
nestedProperty.set(res, p, chart.map(s => nestedProperty.get(s, p)));
}
});
};
dive(chart[0]);
return res;
}
}

64
src/chart/network.ts Normal file
View File

@ -0,0 +1,64 @@
import autobind from 'autobind-decorator';
import Chart, { Partial } from './';
/**
* ネットワークに関するチャート
*/
type NetworkLog = {
/**
* 受信したリクエスト数
*/
incomingRequests: number;
/**
* 送信したリクエスト数
*/
outgoingRequests: number;
/**
* 応答時間の合計
* TIP: (totalTime / incomingRequests) でひとつのリクエストに平均でどれくらいの時間がかかったか知れる
*/
totalTime: number;
/**
* 合計受信データ量
*/
incomingBytes: number;
/**
* 合計送信データ量
*/
outgoingBytes: number;
};
class NetworkChart extends Chart<NetworkLog> {
constructor() {
super('network');
}
@autobind
protected async getTemplate(init: boolean, latest?: NetworkLog): Promise<NetworkLog> {
return {
incomingRequests: 0,
outgoingRequests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
};
}
@autobind
public async update(incomingRequests: number, time: number, incomingBytes: number, outgoingBytes: number) {
const inc: Partial<NetworkLog> = {
incomingRequests: incomingRequests,
totalTime: time,
incomingBytes: incomingBytes,
outgoingBytes: outgoingBytes
};
await this.inc(inc);
}
}
export default new NetworkChart();

114
src/chart/notes.ts Normal file
View File

@ -0,0 +1,114 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from '.';
import Note, { INote } from '../models/note';
import { isLocalUser } from '../models/user';
/**
* 投稿に関するチャート
*/
type NotesLog = {
local: {
/**
* 集計期間時点での、全投稿数
*/
total: number;
/**
* 増加した投稿数
*/
inc: number;
/**
* 減少した投稿数
*/
dec: number;
diffs: {
/**
* 通常の投稿数の差分
*/
normal: number;
/**
* リプライの投稿数の差分
*/
reply: number;
/**
* Renoteの投稿数の差分
*/
renote: number;
};
};
remote: NotesLog['local'];
};
class NotesChart extends Chart<NotesLog> {
constructor() {
super('notes');
}
@autobind
protected async getTemplate(init: boolean, latest?: NotesLog): Promise<NotesLog> {
const [localCount, remoteCount] = init ? await Promise.all([
Note.count({ '_user.host': null }),
Note.count({ '_user.host': { $ne: null } })
]) : [
latest ? latest.local.total : 0,
latest ? latest.remote.total : 0
];
return {
local: {
total: localCount,
inc: 0,
dec: 0,
diffs: {
normal: 0,
reply: 0,
renote: 0
}
},
remote: {
total: remoteCount,
inc: 0,
dec: 0,
diffs: {
normal: 0,
reply: 0,
renote: 0
}
}
};
}
@autobind
public async update(note: INote, isAdditional: boolean) {
const update: Obj = {
diffs: {}
};
update.total = isAdditional ? 1 : -1;
if (isAdditional) {
update.inc = 1;
} else {
update.dec = 1;
}
if (note.replyId != null) {
update.diffs.reply = isAdditional ? 1 : -1;
} else if (note.renoteId != null) {
update.diffs.renote = isAdditional ? 1 : -1;
} else {
update.diffs.normal = isAdditional ? 1 : -1;
}
await this.inc({
[isLocalUser(note._user) ? 'local' : 'remote']: update
});
}
}
export default new NotesChart();

101
src/chart/per-user-drive.ts Normal file
View File

@ -0,0 +1,101 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import DriveFile, { IDriveFile } from '../models/drive-file';
/**
* ユーザーごとのドライブに関するチャート
*/
type PerUserDriveLog = {
/**
* 集計期間時点での、全ドライブファイル数
*/
totalCount: number;
/**
* 集計期間時点での、全ドライブファイルの合計サイズ
*/
totalSize: number;
/**
* 増加したドライブファイル数
*/
incCount: number;
/**
* 増加したドライブ使用量
*/
incSize: number;
/**
* 減少したドライブファイル数
*/
decCount: number;
/**
* 減少したドライブ使用量
*/
decSize: number;
};
class PerUserDriveChart extends Chart<PerUserDriveLog> {
constructor() {
super('perUserDrive', true);
}
@autobind
protected async getTemplate(init: boolean, latest?: PerUserDriveLog, group?: any): Promise<PerUserDriveLog> {
const calcSize = () => DriveFile
.aggregate([{
$match: {
'metadata.userId': group,
'metadata.deletedAt': { $exists: false }
}
}, {
$project: {
length: true
}
}, {
$group: {
_id: null,
usage: { $sum: '$length' }
}
}])
.then(res => res.length > 0 ? res[0].usage : 0);
const [count, size] = init ? await Promise.all([
DriveFile.count({ 'metadata.userId': group }),
calcSize()
]) : [
latest ? latest.totalCount : 0,
latest ? latest.totalSize : 0
];
return {
totalCount: count,
totalSize: size,
incCount: 0,
incSize: 0,
decCount: 0,
decSize: 0
};
}
@autobind
public async update(file: IDriveFile, isAdditional: boolean) {
const update: Obj = {};
update.totalCount = isAdditional ? 1 : -1;
update.totalSize = isAdditional ? file.length : -file.length;
if (isAdditional) {
update.incCount = 1;
update.incSize = file.length;
} else {
update.decCount = 1;
update.decSize = file.length;
}
await this.inc(update, file.metadata.userId);
}
}
export default new PerUserDriveChart();

View File

@ -0,0 +1,128 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import Following from '../models/following';
import { IUser, isLocalUser } from '../models/user';
/**
* ユーザーごとのフォローに関するチャート
*/
type PerUserFollowingLog = {
local: {
/**
* フォローしている
*/
followings: {
/**
* 合計
*/
total: number;
/**
* フォローした数
*/
inc: number;
/**
* フォロー解除した数
*/
dec: number;
};
/**
* フォローされている
*/
followers: {
/**
* 合計
*/
total: number;
/**
* フォローされた数
*/
inc: number;
/**
* フォロー解除された数
*/
dec: number;
};
};
remote: PerUserFollowingLog['local'];
};
class PerUserFollowingChart extends Chart<PerUserFollowingLog> {
constructor() {
super('perUserFollowing', true);
}
@autobind
protected async getTemplate(init: boolean, latest?: PerUserFollowingLog, group?: any): Promise<PerUserFollowingLog> {
const [
localFollowingsCount,
localFollowersCount,
remoteFollowingsCount,
remoteFollowersCount
] = init ? await Promise.all([
Following.count({ followerId: group, '_followee.host': null }),
Following.count({ followeeId: group, '_follower.host': null }),
Following.count({ followerId: group, '_followee.host': { $ne: null } }),
Following.count({ followeeId: group, '_follower.host': { $ne: null } })
]) : [
latest ? latest.local.followings.total : 0,
latest ? latest.local.followers.total : 0,
latest ? latest.remote.followings.total : 0,
latest ? latest.remote.followers.total : 0
];
return {
local: {
followings: {
total: localFollowingsCount,
inc: 0,
dec: 0
},
followers: {
total: localFollowersCount,
inc: 0,
dec: 0
}
},
remote: {
followings: {
total: remoteFollowingsCount,
inc: 0,
dec: 0
},
followers: {
total: remoteFollowersCount,
inc: 0,
dec: 0
}
}
};
}
@autobind
public async update(follower: IUser, followee: IUser, isFollow: boolean) {
const update: Obj = {};
update.total = isFollow ? 1 : -1;
if (isFollow) {
update.inc = 1;
} else {
update.dec = 1;
}
this.inc({
[isLocalUser(follower) ? 'local' : 'remote']: { followings: update }
}, follower._id);
this.inc({
[isLocalUser(followee) ? 'local' : 'remote']: { followers: update }
}, followee._id);
}
}
export default new PerUserFollowingChart();

View File

@ -0,0 +1,94 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import Note, { INote } from '../models/note';
import { IUser } from '../models/user';
/**
* ユーザーごとの投稿に関するチャート
*/
type PerUserNotesLog = {
/**
* 集計期間時点での、全投稿数
*/
total: number;
/**
* 増加した投稿数
*/
inc: number;
/**
* 減少した投稿数
*/
dec: number;
diffs: {
/**
* 通常の投稿数の差分
*/
normal: number;
/**
* リプライの投稿数の差分
*/
reply: number;
/**
* Renoteの投稿数の差分
*/
renote: number;
};
};
class PerUserNotesChart extends Chart<PerUserNotesLog> {
constructor() {
super('perUserNotes', true);
}
@autobind
protected async getTemplate(init: boolean, latest?: PerUserNotesLog, group?: any): Promise<PerUserNotesLog> {
const [count] = init ? await Promise.all([
Note.count({ userId: group, deletedAt: null }),
]) : [
latest ? latest.total : 0
];
return {
total: count,
inc: 0,
dec: 0,
diffs: {
normal: 0,
reply: 0,
renote: 0
}
};
}
@autobind
public async update(user: IUser, note: INote, isAdditional: boolean) {
const update: Obj = {
diffs: {}
};
update.total = isAdditional ? 1 : -1;
if (isAdditional) {
update.inc = 1;
} else {
update.dec = 1;
}
if (note.replyId != null) {
update.diffs.reply = isAdditional ? 1 : -1;
} else if (note.renoteId != null) {
update.diffs.renote = isAdditional ? 1 : -1;
} else {
update.diffs.normal = isAdditional ? 1 : -1;
}
await this.inc(update, user._id);
}
}
export default new PerUserNotesChart();

View File

@ -0,0 +1,45 @@
import autobind from 'autobind-decorator';
import Chart from './';
import { IUser, isLocalUser } from '../models/user';
import { INote } from '../models/note';
/**
* ユーザーごとのリアクションに関するチャート
*/
type PerUserReactionsLog = {
local: {
/**
* リアクションされた数
*/
count: number;
};
remote: PerUserReactionsLog['local'];
};
class PerUserReactionsChart extends Chart<PerUserReactionsLog> {
constructor() {
super('perUserReaction', true);
}
@autobind
protected async getTemplate(init: boolean, latest?: PerUserReactionsLog, group?: any): Promise<PerUserReactionsLog> {
return {
local: {
count: 0
},
remote: {
count: 0
}
};
}
@autobind
public async update(user: IUser, note: INote) {
this.inc({
[isLocalUser(user) ? 'local' : 'remote']: { count: 1 }
}, note.userId);
}
}
export default new PerUserReactionsChart();

75
src/chart/users.ts Normal file
View File

@ -0,0 +1,75 @@
import autobind from 'autobind-decorator';
import Chart, { Obj } from './';
import User, { IUser, isLocalUser } from '../models/user';
/**
* ユーザーに関するチャート
*/
type UsersLog = {
local: {
/**
* 集計期間時点での、全ユーザー数
*/
total: number;
/**
* 増加したユーザー数
*/
inc: number;
/**
* 減少したユーザー数
*/
dec: number;
};
remote: UsersLog['local'];
};
class UsersChart extends Chart<UsersLog> {
constructor() {
super('users');
}
@autobind
protected async getTemplate(init: boolean, latest?: UsersLog): Promise<UsersLog> {
const [localCount, remoteCount] = init ? await Promise.all([
User.count({ host: null }),
User.count({ host: { $ne: null } })
]) : [
latest ? latest.local.total : 0,
latest ? latest.remote.total : 0
];
return {
local: {
total: localCount,
inc: 0,
dec: 0
},
remote: {
total: remoteCount,
inc: 0,
dec: 0
}
};
}
@autobind
public async update(user: IUser, isAdditional: boolean) {
const update: Obj = {};
update.total = isAdditional ? 1 : -1;
if (isAdditional) {
update.inc = 1;
} else {
update.dec = 1;
}
await this.inc({
[isLocalUser(user) ? 'local' : 'remote']: update
});
}
}
export default new UsersChart();

View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="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"
inkscape:version="0.92.1 r15371"
sodipodi:docname="header-icon.dark.svg"
inkscape:export-filename="C:\Users\syuilo\projects\misskey\assets\favicon\32.png"
inkscape:export-xdpi="6"
inkscape:export-ydpi="6">
<defs
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="114.309"
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
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="レイヤー 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-30.809093,-111.78601)">
<g
id="g4502"
transform="matrix(1.096096,0,0,1.096096,-2.960633,-44.023579)">
<g
style="fill-opacity:1"
transform="translate(-1.3333333e-6,-1.3439941e-6)"
id="g5125">
<g
transform="matrix(0.91391326,0,0,0.91391326,7.9719907,17.595761)"
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-opacity:1;stroke:none;stroke-width:0.28950602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
aria-label="Mi">
<path
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
inkscape:connector-curvature="0"
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-opacity:1;stroke-width:0.28950602px"
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" />
<path
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-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>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,27 @@
/**
* Admin
*/
import VueRouter from 'vue-router';
// Style
import './style.styl';
import init from '../init';
import Index from './views/index.vue';
init(launch => {
document.title = 'Admin';
// Init router
const router = new VueRouter({
mode: 'history',
base: '/admin/',
routes: [
{ path: '/', component: Index },
]
});
// Launch the app
launch(router);
});

View File

@ -0,0 +1,6 @@
@import "../app"
@import "../reset"
html
height 100%
background var(--bg)

View File

@ -0,0 +1,92 @@
<template>
<div class="cdeuzmsthagexbkpofbmatmugjuvogfb">
<ui-card>
<div slot="title"><fa icon="broadcast-tower"/> {{ $t('announcements') }}</div>
<section v-for="(announcement, i) in announcements" class="fit-top">
<ui-input v-model="announcement.title" @change="save">
<span>{{ $t('title') }}</span>
</ui-input>
<ui-textarea v-model="announcement.text">
<span>{{ $t('text') }}</span>
</ui-textarea>
<ui-horizon-group>
<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-horizon-group>
</section>
<section>
<ui-button @click="add"><fa icon="plus"/> {{ $t('add') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
export default Vue.extend({
i18n: i18n('admin/views/announcements.vue'),
data() {
return {
announcements: [],
};
},
created() {
this.$root.getMeta().then(meta => {
this.announcements = meta.broadcasts;
});
},
methods: {
add() {
this.announcements.unshift({
title: '',
text: ''
});
},
remove(i) {
this.$root.alert({
type: 'warning',
text: this.$t('_remove.are-you-sure').replace('$1', this.announcements.find((_, j) => j == i).title),
showCancelButton: true
}).then(res => {
if (!res) return;
this.announcements = this.announcements.filter((_, j) => j !== i);
this.save(true);
this.$root.alert({
type: 'success',
text: this.$t('_remove.removed')
});
});
},
save(silent) {
this.$root.api('admin/update-meta', {
broadcasts: this.announcements
}).then(() => {
if (!silent) {
this.$root.alert({
type: 'success',
text: this.$t('saved')
});
}
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
}
}
});
</script>
<style lang="stylus" scoped>
.cdeuzmsthagexbkpofbmatmugjuvogfb
@media (min-width 500px)
padding 16px
</style>

View File

@ -0,0 +1,107 @@
<template>
<div class="hyhctythnmwihguaaapnbrbszsjqxpio">
<table>
<thead>
<tr>
<th><fa :icon="faExchangeAlt"/> In/Out</th>
<th><fa :icon="faBolt"/> Activity</th>
<th><fa icon="server"/> Host</th>
<th><fa icon="user"/> Actor</th>
</tr>
</thead>
<tbody>
<tr v-for="log in logs" :key="log.id">
<td :class="log.direction">{{ log.direction == 'in' ? '<' : '>' }} {{ log.direction }}</td>
<td>{{ log.activity }}</td>
<td>{{ log.host }}</td>
<td>@{{ log.actor }}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import { faBolt, faExchangeAlt } from '@fortawesome/free-solid-svg-icons';
export default Vue.extend({
data() {
return {
logs: [],
connection: null,
faBolt, faExchangeAlt
};
},
mounted() {
this.connection = this.$root.stream.useSharedConnection('apLog');
this.connection.on('log', this.onLog);
this.connection.on('logs', this.onLogs);
this.connection.send('requestLog', {
id: Math.random().toString().substr(2, 8),
length: 50
});
},
beforeDestroy() {
this.connection.dispose();
},
methods: {
onLog(log) {
log.id = Math.random();
this.logs.unshift(log);
if (this.logs.length > 50) this.logs.pop();
},
onLogs(logs) {
logs.reverse().forEach(log => this.onLog(log));
}
}
});
</script>
<style lang="stylus" scoped>
.hyhctythnmwihguaaapnbrbszsjqxpio
display block
padding 12px 16px 16px 16px
height 250px
overflow hidden
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--adminDashboardCardBg)
border-radius 8px
> table
width 100%
max-width 100%
overflow auto
border-spacing 0
border-collapse collapse
color var(--adminDashboardCardFg)
font-size 14px
thead
border-bottom solid 1px var(--adminDashboardCardDivider)
tr
th
font-weight normal
text-align left
tbody
tr
&:nth-child(odd)
background rgba(0, 0, 0, 0.025)
th, td
padding 8px 16px
min-width 128px
td.in
color #d26755
td.out
color #55bb83
</style>

View File

@ -0,0 +1,497 @@
<template>
<div class="qvgidhudpqhjttdhxubzuyrhyzgslujw">
<header>
<b><fa :icon="['far', 'chart-bar']"/> {{ $t('title') }}:</b>
<select v-model="src">
<optgroup :label="$t('federation')">
<option value="federation-instances">{{ $t('charts.federation-instances') }}</option>
<option value="federation-instances-total">{{ $t('charts.federation-instances-total') }}</option>
</optgroup>
<optgroup :label="$t('users')">
<option value="users">{{ $t('charts.users') }}</option>
<option value="users-total">{{ $t('charts.users-total') }}</option>
</optgroup>
<optgroup :label="$t('notes')">
<option value="notes">{{ $t('charts.notes') }}</option>
<option value="local-notes">{{ $t('charts.local-notes') }}</option>
<option value="remote-notes">{{ $t('charts.remote-notes') }}</option>
<option value="notes-total">{{ $t('charts.notes-total') }}</option>
</optgroup>
<optgroup :label="$t('drive')">
<option value="drive-files">{{ $t('charts.drive-files') }}</option>
<option value="drive-files-total">{{ $t('charts.drive-files-total') }}</option>
<option value="drive">{{ $t('charts.drive') }}</option>
<option value="drive-total">{{ $t('charts.drive-total') }}</option>
</optgroup>
<optgroup :label="$t('network')">
<option value="network-requests">{{ $t('charts.network-requests') }}</option>
<option value="network-time">{{ $t('charts.network-time') }}</option>
<option value="network-usage">{{ $t('charts.network-usage') }}</option>
</optgroup>
</select>
<div>
<span @click="span = 'day'" :class="{ active: span == 'day' }">{{ $t('per-day') }}</span> | <span @click="span = 'hour'" :class="{ active: span == 'hour' }">{{ $t('per-hour') }}</span>
</div>
</header>
<div ref="chart"></div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import * as tinycolor from 'tinycolor2';
import * as ApexCharts from 'apexcharts';
const limit = 90;
const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b));
const negate = arr => arr.map(x => -x);
export default Vue.extend({
i18n: i18n('admin/views/charts.vue'),
data() {
return {
chart: null,
src: 'notes',
span: 'hour',
chartInstance: null
};
},
computed: {
data(): any {
if (this.chart == null) return null;
switch (this.src) {
case 'federation-instances': return this.federationInstancesChart(false);
case 'federation-instances-total': return this.federationInstancesChart(true);
case 'users': return this.usersChart(false);
case 'users-total': return this.usersChart(true);
case 'notes': return this.notesChart('combined');
case 'local-notes': return this.notesChart('local');
case 'remote-notes': return this.notesChart('remote');
case 'notes-total': return this.notesTotalChart();
case 'drive': return this.driveChart();
case 'drive-total': return this.driveTotalChart();
case 'drive-files': return this.driveFilesChart();
case 'drive-files-total': return this.driveFilesTotalChart();
case 'network-requests': return this.networkRequestsChart();
case 'network-time': return this.networkTimeChart();
case 'network-usage': return this.networkUsageChart();
}
},
stats(): any[] {
const stats =
this.span == 'day' ? this.chart.perDay :
this.span == 'hour' ? this.chart.perHour :
null;
return stats;
}
},
watch: {
src() {
this.render();
},
span() {
this.render();
}
},
async mounted() {
this.now = new Date();
const [perHour, perDay] = await Promise.all([Promise.all([
this.$root.api('charts/federation', { limit: limit, span: 'hour' }),
this.$root.api('charts/users', { limit: limit, span: 'hour' }),
this.$root.api('charts/notes', { limit: limit, span: 'hour' }),
this.$root.api('charts/drive', { limit: limit, span: 'hour' }),
this.$root.api('charts/network', { limit: limit, span: 'hour' })
]), Promise.all([
this.$root.api('charts/federation', { limit: limit, span: 'day' }),
this.$root.api('charts/users', { limit: limit, span: 'day' }),
this.$root.api('charts/notes', { limit: limit, span: 'day' }),
this.$root.api('charts/drive', { limit: limit, span: 'day' }),
this.$root.api('charts/network', { limit: limit, span: 'day' })
])]);
const chart = {
perHour: {
federation: perHour[0],
users: perHour[1],
notes: perHour[2],
drive: perHour[3],
network: perHour[4]
},
perDay: {
federation: perDay[0],
users: perDay[1],
notes: perDay[2],
drive: perDay[3],
network: perDay[4]
}
};
this.chart = chart;
this.render();
},
beforeDestroy() {
this.chartInstance.destroy();
},
methods: {
setSrc(src) {
this.src = src;
},
render() {
if (this.chartInstance) {
this.chartInstance.destroy();
}
this.chartInstance = new ApexCharts(this.$refs.chart, {
chart: {
type: 'area',
height: 300,
animations: {
dynamicAnimation: {
enabled: false
}
},
toolbar: {
show: false
},
zoom: {
enabled: false
}
},
dataLabels: {
enabled: false
},
grid: {
clipMarkers: false,
borderColor: 'rgba(0, 0, 0, 0.1)'
},
stroke: {
curve: 'straight',
width: 2
},
legend: {
labels: {
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
},
},
xaxis: {
type: 'datetime',
labels: {
style: {
colors: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
}
},
axisBorder: {
color: 'rgba(0, 0, 0, 0.1)'
},
axisTicks: {
color: 'rgba(0, 0, 0, 0.1)'
},
},
yaxis: {
labels: {
formatter: this.data.bytes ? v => Vue.filter('bytes')(v, 0) : v => Vue.filter('number')(v),
style: {
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
}
}
},
series: this.data.series
});
this.chartInstance.render();
},
getDate(i: number) {
const y = this.now.getFullYear();
const m = this.now.getMonth();
const d = this.now.getDate();
const h = this.now.getHours();
return (
this.span == 'day' ? new Date(y, m, d - i) :
this.span == 'hour' ? new Date(y, m, d, h - i) :
null
);
},
format(arr) {
return arr.map((v, i) => ({ x: this.getDate(i).getTime(), y: v }));
},
federationInstancesChart(total: boolean): any {
return {
series: [{
data: this.format(total
? this.stats.federation.instance.total
: sum(this.stats.federation.instance.inc, negate(this.stats.federation.instance.dec))
)
}]
};
},
notesChart(type: string): any {
return {
series: [{
name: 'All',
type: 'line',
data: this.format(type == 'combined'
? sum(this.stats.notes.local.inc, negate(this.stats.notes.local.dec), this.stats.notes.remote.inc, negate(this.stats.notes.remote.dec))
: sum(this.stats.notes[type].inc, negate(this.stats.notes[type].dec))
)
}, {
name: 'Renotes',
type: 'area',
data: this.format(type == 'combined'
? sum(this.stats.notes.local.diffs.renote, this.stats.notes.remote.diffs.renote)
: this.stats.notes[type].diffs.renote
)
}, {
name: 'Replies',
type: 'area',
data: this.format(type == 'combined'
? sum(this.stats.notes.local.diffs.reply, this.stats.notes.remote.diffs.reply)
: this.stats.notes[type].diffs.reply
)
}, {
name: 'Normal',
type: 'area',
data: this.format(type == 'combined'
? sum(this.stats.notes.local.diffs.normal, this.stats.notes.remote.diffs.normal)
: this.stats.notes[type].diffs.normal
)
}]
};
},
notesTotalChart(): any {
return {
series: [{
name: 'Combined',
type: 'line',
data: this.format(sum(this.stats.notes.local.total, this.stats.notes.remote.total))
}, {
name: 'Local',
type: 'area',
data: this.format(this.stats.notes.local.total)
}, {
name: 'Remote',
type: 'area',
data: this.format(this.stats.notes.remote.total)
}]
};
},
usersChart(total: boolean): any {
return {
series: [{
name: 'Combined',
type: 'line',
data: this.format(total
? sum(this.stats.users.local.total, this.stats.users.remote.total)
: sum(this.stats.users.local.inc, negate(this.stats.users.local.dec), this.stats.users.remote.inc, negate(this.stats.users.remote.dec))
)
}, {
name: 'Local',
type: 'area',
data: this.format(total
? this.stats.users.local.total
: sum(this.stats.users.local.inc, negate(this.stats.users.local.dec))
)
}, {
name: 'Remote',
type: 'area',
data: this.format(total
? this.stats.users.remote.total
: sum(this.stats.users.remote.inc, negate(this.stats.users.remote.dec))
)
}]
};
},
driveChart(): any {
return {
bytes: true,
series: [{
name: 'All',
type: 'line',
data: this.format(
sum(
this.stats.drive.local.incSize,
negate(this.stats.drive.local.decSize),
this.stats.drive.remote.incSize,
negate(this.stats.drive.remote.decSize)
)
)
}, {
name: 'Local +',
type: 'area',
data: this.format(this.stats.drive.local.incSize)
}, {
name: 'Local -',
type: 'area',
data: this.format(negate(this.stats.drive.local.decSize))
}, {
name: 'Remote +',
type: 'area',
data: this.format(this.stats.drive.remote.incSize)
}, {
name: 'Remote -',
type: 'area',
data: this.format(negate(this.stats.drive.remote.decSize))
}]
};
},
driveTotalChart(): any {
return {
bytes: true,
series: [{
name: 'Combined',
type: 'line',
data: this.format(sum(this.stats.drive.local.totalSize, this.stats.drive.remote.totalSize))
}, {
name: 'Local',
type: 'area',
data: this.format(this.stats.drive.local.totalSize)
}, {
name: 'Remote',
type: 'area',
data: this.format(this.stats.drive.remote.totalSize)
}]
};
},
driveFilesChart(): any {
return {
series: [{
name: 'All',
type: 'line',
data: this.format(
sum(
this.stats.drive.local.incCount,
negate(this.stats.drive.local.decCount),
this.stats.drive.remote.incCount,
negate(this.stats.drive.remote.decCount)
)
)
}, {
name: 'Local +',
type: 'area',
data: this.format(this.stats.drive.local.incCount)
}, {
name: 'Local -',
type: 'area',
data: this.format(negate(this.stats.drive.local.decCount))
}, {
name: 'Remote +',
type: 'area',
data: this.format(this.stats.drive.remote.incCount)
}, {
name: 'Remote -',
type: 'area',
data: this.format(negate(this.stats.drive.remote.decCount))
}]
};
},
driveFilesTotalChart(): any {
return {
series: [{
name: 'Combined',
type: 'line',
data: this.format(sum(this.stats.drive.local.totalCount, this.stats.drive.remote.totalCount))
}, {
name: 'Local',
type: 'area',
data: this.format(this.stats.drive.local.totalCount)
}, {
name: 'Remote',
type: 'area',
data: this.format(this.stats.drive.remote.totalCount)
}]
};
},
networkRequestsChart(): any {
return {
series: [{
name: 'Incoming',
data: this.format(this.stats.network.incomingRequests)
}]
};
},
networkTimeChart(): any {
const data = [];
for (let i = 0; i < limit; i++) {
data.push(this.stats.network.incomingRequests[i] != 0 ? (this.stats.network.totalTime[i] / this.stats.network.incomingRequests[i]) : 0);
}
return {
series: [{
name: 'Avg time',
data: this.format(data)
}]
};
},
networkUsageChart(): any {
return {
bytes: true,
series: [{
name: 'Incoming',
data: this.format(this.stats.network.incomingBytes)
}, {
name: 'Outgoing',
data: this.format(this.stats.network.outgoingBytes)
}]
};
},
}
});
</script>
<style lang="stylus" scoped>
.qvgidhudpqhjttdhxubzuyrhyzgslujw
display block
flex 1
padding 32px 24px
padding-bottom 0
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--face)
border-radius 8px
> header
display flex
margin 0 8px
padding 0 0 8px 0
font-size 1em
color var(--adminDashboardCardFg)
border-bottom solid 1px var(--adminDashboardCardDivider)
> b
margin-right 8px
> *:last-child
margin-left auto
*
&:not(.active)
color var(--primary)
cursor pointer
</style>

View File

@ -0,0 +1,183 @@
<template>
<div class="zyknedwtlthezamcjlolyusmipqmjgxz">
<div>
<header>
<span><fa icon="microchip"/> CPU <span>{{ cpuP }}%</span></span>
<span v-if="meta">{{ meta.cpu.model }}</span>
</header>
<div ref="cpu"></div>
</div>
<div>
<header>
<span><fa icon="memory"/> MEM <span>{{ memP }}%</span></span>
<span v-if="meta"></span>
</header>
<div ref="mem"></div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import * as ApexCharts from 'apexcharts';
export default Vue.extend({
props: ['connection'],
data() {
return {
stats: [],
cpuChart: null,
memChart: null,
cpuP: '',
memP: '',
meta: null
};
},
watch: {
stats(stats) {
this.cpuChart.updateSeries([{
data: stats.map((x, i) => ({ x: i, y: x.cpu_usage }))
}]);
this.memChart.updateSeries([{
data: stats.map((x, i) => ({ x: i, y: (x.mem.used / x.mem.total) }))
}]);
}
},
mounted() {
this.$root.getMeta().then(meta => {
this.meta = meta;
});
this.connection.on('stats', this.onStats);
this.connection.on('statsLog', this.onStatsLog);
this.connection.send('requestLog', {
id: Math.random().toString().substr(2, 8),
length: 200
});
const chartOpts = {
chart: {
type: 'area',
height: 200,
animations: {
dynamicAnimation: {
enabled: false
}
},
toolbar: {
show: false
},
zoom: {
enabled: false
}
},
dataLabels: {
enabled: false
},
grid: {
clipMarkers: false,
borderColor: 'rgba(0, 0, 0, 0.1)'
},
stroke: {
curve: 'straight',
width: 2
},
tooltip: {
enabled: false
},
series: [{
data: []
}],
xaxis: {
type: 'numeric',
labels: {
show: false
},
tooltip: {
enabled: false
}
},
yaxis: {
show: false,
min: 0,
max: 1
}
};
this.cpuChart = new ApexCharts(this.$refs.cpu, chartOpts);
this.memChart = new ApexCharts(this.$refs.mem, chartOpts);
this.cpuChart.render();
this.memChart.render();
},
beforeDestroy() {
this.connection.off('stats', this.onStats);
this.connection.off('statsLog', this.onStatsLog);
this.cpuChart.destroy();
this.memChart.destroy();
},
methods: {
onStats(stats) {
this.stats.push(stats);
if (this.stats.length > 200) this.stats.shift();
this.cpuP = (stats.cpu_usage * 100).toFixed(0);
this.memP = (stats.mem.used / stats.mem.total * 100).toFixed(0);
},
onStatsLog(statsLog) {
statsLog.reverse().forEach(stats => this.onStats(stats));
}
}
});
</script>
<style lang="stylus" scoped>
.zyknedwtlthezamcjlolyusmipqmjgxz
display flex
> div
display block
flex 1
padding 20px 12px 0 12px
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--face)
border-radius 8px
&:first-child
margin-right 16px
> header
display flex
padding 0 8px
margin-bottom -16px
color var(--adminDashboardCardFg)
font-size 14px
> span
&:last-child
margin-left auto
opacity 0.7
> span
opacity 0.7
> div
margin-bottom -10px
@media (max-width 1000px)
display block
margin-bottom 26px
> div
&:first-child
margin-right 0
margin-bottom 26px
</style>

View File

@ -0,0 +1,241 @@
<template>
<div class="obdskegsannmntldydackcpzezagxqfy">
<header v-if="meta">
<p><b>Misskey</b><span>{{ meta.version }}</span></p>
<p><b>Machine</b><span>{{ meta.machine }}</span></p>
<p><b>OS</b><span>{{ meta.os }}</span></p>
<p><b>Node</b><span>{{ meta.node }}</span></p>
<p>{{ $t('@.ai-chan-kawaii') }}</p>
</header>
<div v-if="stats" class="stats">
<div>
<div>
<div><fa icon="user"/></div>
<div>
<span>{{ $t('accounts') }}</span>
<b class="primary">{{ stats.originalUsersCount | number }}</b>
</div>
</div>
<div>
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
<span @click="setChartSrc('users')"><fa :icon="['far', 'chart-bar']"/></span>
</div>
</div>
<div>
<div>
<div><fa icon="pencil-alt"/></div>
<div>
<span>{{ $t('notes') }}</span>
<b class="primary">{{ stats.originalNotesCount | number }}</b>
</div>
</div>
<div>
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
<span @click="setChartSrc('notes')"><fa :icon="['far', 'chart-bar']"/></span>
</div>
</div>
<div>
<div>
<div><fa :icon="faDatabase"/></div>
<div>
<span>{{ $t('drive') }}</span>
<b>{{ stats.driveUsageLocal | bytes }}</b>
</div>
</div>
<div>
<span><fa icon="home"/> {{ $t('this-instance') }}</span>
<span @click="setChartSrc('drive')"><fa :icon="['far', 'chart-bar']"/></span>
</div>
</div>
<div>
<div>
<div><fa :icon="['far', 'hdd']"/></div>
<div>
<span>{{ $t('instances') }}</span>
<b>{{ stats.instances | number }}</b>
</div>
</div>
<div>
<span><fa icon="globe"/> {{ $t('federated') }}</span>
<span @click="setChartSrc('federation-instances-total')"><fa :icon="['far', 'chart-bar']"/></span>
</div>
</div>
</div>
<div class="charts">
<x-charts ref="charts"/>
</div>
<div class="cpu-memory">
<x-cpu-memory :connection="connection"/>
</div>
<div class="ap">
<x-ap-log/>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import XCpuMemory from "./cpu-memory.vue";
import XCharts from "./charts.vue";
import XApLog from "./ap-log.vue";
import { faDatabase } from '@fortawesome/free-solid-svg-icons';
export default Vue.extend({
i18n: i18n('admin/views/dashboard.vue'),
components: {
XCpuMemory,
XCharts,
XApLog
},
data() {
return {
stats: null,
connection: null,
meta: null,
faDatabase
};
},
created() {
this.connection = this.$root.stream.useSharedConnection('serverStats');
this.$root.getMeta().then(meta => {
this.meta = meta;
});
this.$root.api('stats').then(stats => {
this.stats = stats;
});
},
beforeDestroy() {
this.connection.dispose();
},
methods: {
setChartSrc(src) {
this.$refs.charts.setSrc(src);
}
}
});
</script>
<style lang="stylus" scoped>
.obdskegsannmntldydackcpzezagxqfy
padding 16px
@media (min-width 500px)
padding 32px
> header
display flex
margin-bottom 16px
padding-bottom 16px
border-bottom solid 1px var(--adminDashboardHeaderBorder)
color var(--adminDashboardHeaderFg)
font-size 14px
white-space nowrap
@media (max-width 1000px)
display none
> p
display block
margin 0 32px 0 0
overflow hidden
text-overflow ellipsis
> b
&:after
content ':'
margin-right 8px
&:last-child
margin-left auto
margin-right 0
> .stats
display flex
justify-content space-between
margin-bottom 16px
> div
flex 1
margin-right 16px
color var(--adminDashboardCardFg)
box-shadow 0 2px 4px rgba(0, 0, 0, 0.1)
background var(--adminDashboardCardBg)
border-radius 8px
&:last-child
margin-right 0
> div:first-child
display flex
align-items center
text-align center
&:last-child
margin-right 0
> div:first-child
padding 16px 24px
font-size 28px
> div:last-child
flex 1
padding 16px 32px 16px 0
text-align right
> span
font-size 70%
opacity 0.7
> b
display block
&.primary
color var(--primary)
> div:last-child
display flex
padding 6px 16px
border-top solid 1px var(--adminDashboardCardDivider)
> span
font-size 70%
opacity 0.7
&:last-child
margin-left auto
cursor pointer
@media (max-width 900px)
display grid
grid-template-columns 1fr 1fr
grid-template-rows 1fr 1fr
gap 16px
> div
margin-right 0
@media (max-width 500px)
display block
> div:not(:last-child)
margin-bottom 16px
> .charts
margin-bottom 16px
> .cpu-memory
margin-bottom 16px
</style>

View File

@ -0,0 +1,151 @@
<template>
<div class="tumhkfkmgtvzljezfvmgkeurkfncshbe">
<ui-card>
<div slot="title"><fa icon="plus"/> {{ $t('add-emoji.title') }}</div>
<section class="fit-top">
<ui-horizon-group inputs>
<ui-input v-model="name">
<span>{{ $t('add-emoji.name') }}</span>
<span slot="desc">{{ $t('add-emoji.name-desc') }}</span>
</ui-input>
<ui-input v-model="aliases">
<span>{{ $t('add-emoji.aliases') }}</span>
<span slot="desc">{{ $t('add-emoji.aliases-desc') }}</span>
</ui-input>
</ui-horizon-group>
<ui-input v-model="url">
<i slot="icon"><fa icon="link"/></i>
<span>{{ $t('add-emoji.url') }}</span>
</ui-input>
<ui-info>{{ $t('add-emoji.info') }}</ui-info>
<ui-button @click="add">{{ $t('add-emoji.add') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="faGrin"/> {{ $t('emojis.title') }}</div>
<section v-for="emoji in emojis">
<img :src="emoji.url" :alt="emoji.name" style="width: 64px;"/>
<ui-horizon-group inputs>
<ui-input v-model="emoji.name">
<span>{{ $t('add-emoji.name') }}</span>
</ui-input>
<ui-input v-model="emoji.aliases">
<span>{{ $t('add-emoji.aliases') }}</span>
</ui-input>
</ui-horizon-group>
<ui-input v-model="emoji.url">
<i slot="icon"><fa icon="link"/></i>
<span>{{ $t('add-emoji.url') }}</span>
</ui-input>
<ui-horizon-group>
<ui-button @click="updateEmoji(emoji)"><fa :icon="['far', 'save']"/> {{ $t('emojis.update') }}</ui-button>
<ui-button @click="removeEmoji(emoji)"><fa :icon="['far', 'trash-alt']"/> {{ $t('emojis.remove') }}</ui-button>
</ui-horizon-group>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import { faGrin } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('admin/views/emoji.vue'),
data() {
return {
name: '',
url: '',
aliases: '',
emojis: [],
faGrin
};
},
mounted() {
this.fetchEmojis();
},
methods: {
add() {
this.$root.api('admin/emoji/add', {
name: this.name,
url: this.url,
aliases: this.aliases.split(' ').filter(x => x.length > 0)
}).then(() => {
this.$root.alert({
type: 'success',
text: this.$t('add-emoji.added')
});
this.fetchEmojis();
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
},
fetchEmojis() {
this.$root.api('admin/emoji/list').then(emojis => {
emojis.reverse();
emojis.forEach(e => e.aliases = (e.aliases || []).join(' '));
this.emojis = emojis;
});
},
updateEmoji(emoji) {
this.$root.api('admin/emoji/update', {
id: emoji.id,
name: emoji.name,
url: emoji.url,
aliases: emoji.aliases.split(' ').filter(x => x.length > 0)
}).then(() => {
this.$root.alert({
type: 'success',
text: this.$t('updated')
});
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
},
removeEmoji(emoji) {
this.$root.alert({
type: 'warning',
text: this.$t('remove-emoji.are-you-sure').replace('$1', emoji.name),
showCancelButton: true
}).then(res => {
if (!res) return;
this.$root.api('admin/emoji/remove', {
id: emoji.id
}).then(() => {
this.$root.alert({
type: 'success',
text: this.$t('remove-emoji.removed')
});
this.fetchEmojis();
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
});
}
}
});
</script>
<style lang="stylus" scoped>
.tumhkfkmgtvzljezfvmgkeurkfncshbe
@media (min-width 500px)
padding 16px
</style>

View File

@ -0,0 +1,48 @@
<template>
<div>
<ui-card>
<div slot="title">{{ $t('hided-tags') }}</div>
<section>
<textarea class="jdnqwkzlnxcfftthoybjxrebyolvoucw" v-model="hidedTags"></textarea>
<ui-button @click="save">{{ $t('save') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
export default Vue.extend({
i18n: i18n('admin/views/hashtags.vue'),
data() {
return {
hidedTags: '',
};
},
created() {
this.$root.getMeta().then(meta => {
this.hidedTags = meta.hidedTags.join('\n');
});
},
methods: {
save() {
this.$root.api('admin/update-meta', {
hidedTags: this.hidedTags.split('\n')
}).then(() => {
//this.$root.os.apis.dialog({ text: `Saved` });
}).catch(e => {
//this.$root.os.apis.dialog({ text: `Failed ${e}` });
});
}
}
});
</script>
<style lang="stylus" scoped>
.jdnqwkzlnxcfftthoybjxrebyolvoucw
width 100%
min-height 300px
</style>

View File

@ -0,0 +1,307 @@
<template>
<div class="mk-admin" :class="{ isMobile }">
<header v-show="isMobile">
<button class="nav" @click="navOpend = true"><fa icon="bars"/></button>
<span>MisskeyMyAdmin</span>
</header>
<div class="nav-backdrop"
v-if="navOpend && isMobile"
@click="navOpend = false"
@touchstart="navOpend = false"
></div>
<nav v-show="navOpend">
<div class="mi">
<img svg-inline src="../assets/header-icon.svg"/>
</div>
<div class="me">
<img class="avatar" :src="$store.state.i.avatarUrl" alt="avatar"/>
<p class="name">{{ $store.state.i | userName }}</p>
</div>
<ul>
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }"><fa icon="home" fixed-width/>{{ $t('dashboard') }}</li>
<li @click="nav('instance')" :class="{ active: page == 'instance' }"><fa icon="cog" fixed-width/>{{ $t('instance') }}</li>
<li @click="nav('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('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('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('update')" :class="{ active: page == 'update' }">{{ $t('update') }}</li> -->
</ul>
<div class="back-to-misskey">
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
</div>
<div class="version">
<small>Misskey {{ version }}</small>
</div>
</nav>
<main>
<marquee-text v-if="instances.length > 0" class="instances" :repeat="10" :duration="10">
<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 v-if="page == 'dashboard'"><x-dashboard/></div>
<div v-if="page == 'instance'"><x-instance/></div>
<div v-if="page == 'moderators'"><x-moderators/></div>
<div v-if="page == 'users'"><x-users/></div>
<div v-if="page == 'emoji'"><x-emoji/></div>
<div v-if="page == 'announcements'"><x-announcements/></div>
<div v-if="page == 'hashtags'"><x-hashtags/></div>
<div v-if="page == 'drive'"></div>
<div v-if="page == 'update'"></div>
</div>
</main>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import { version } from '../../config';
import XDashboard from "./dashboard.vue";
import XInstance from "./instance.vue";
import XModerators from "./moderators.vue";
import XEmoji from "./emoji.vue";
import XAnnouncements from "./announcements.vue";
import XHashtags from "./hashtags.vue";
import XUsers from "./users.vue";
import { faHeadset, faArrowLeft } from '@fortawesome/free-solid-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
const ua = navigator.userAgent.toLowerCase();
const isMobile = /mobile|iphone|ipad|android/.test(ua);
export default Vue.extend({
i18n: i18n('admin/views/index.vue'),
components: {
XDashboard,
XInstance,
XModerators,
XEmoji,
XAnnouncements,
XHashtags,
XUsers,
MarqueeText
},
provide: {
isMobile
},
data() {
return {
page: 'dashboard',
version,
isMobile,
navOpend: !isMobile,
instances: [],
faGrin,
faArrowLeft,
faHeadset
};
},
created() {
this.$root.api('instances').then(instances => {
instances.forEach(i => {
i.bg = randomColor({
seed: i.host,
luminosity: 'dark'
});
});
this.instances = instances;
});
},
methods: {
nav(page: string) {
this.page = page;
}
}
});
</script>
<style lang="stylus" scoped>
.mk-admin
$headerHeight = 48px
display flex
height 100%
> header
position fixed
top 0
z-index 10000
width 100%
color var(--mobileHeaderFg)
background-color var(--mobileHeaderBg)
box-shadow 0 1px 0 rgba(#000, 0.075)
&, *
user-select none
> span
display block
line-height $headerHeight
text-align center
> .nav
display block
position absolute
top 0
left 0
z-index 10001
padding 0
width $headerHeight
font-size 1.4em
line-height $headerHeight
border-right solid 1px rgba(#000, 0.1)
> [data-icon]
transition all 0.2s ease
> nav
position fixed
z-index 20001
top 0
left 0
width 250px
height 100vh
overflow auto
background #333
color #fff
> .mi
text-align center
> svg
width 24px
height 82px
vertical-align top
fill #fff
opacity 0.7
> .me
display flex
margin 0 16px 16px 16px
padding 16px 0
align-items center
border-top solid 1px #555
border-bottom solid 1px #555
> .avatar
height 48px
border-radius 100%
vertical-align middle
> .name
margin 0 16px
padding 0
color #fff
overflow hidden
text-overflow ellipsis
white-space nowrap
font-size 15px
> .back-to-misskey
margin 16px 16px 0 16px
padding 0
border-top solid 1px #555
> a
display block
padding 16px 4px
color inherit
text-decoration none
color #eee
font-size 15px
&:hover
color #fff
> [data-icon]
margin-right 6px
> .version
margin 0 16px 16px 16px
padding-top 16px
border-top solid 1px #555
text-align center
> small
opacity 0.7
> ul
margin 0
padding 0
list-style none
font-size 15px
> li
display block
padding 10px 16px
margin 0
cursor pointer
user-select none
color #eee
transition margin-left 0.2s ease
&:hover
color #fff
> [data-icon]
margin-right 6px
&.active
margin-left 8px
color var(--primary) !important
&:after
content ""
display block
position absolute
top 0
right 0
bottom 0
margin auto 0
height 0
border-top solid 16px transparent
border-right solid 16px var(--bg)
border-bottom solid 16px transparent
border-left solid 16px transparent
> .nav-backdrop
position fixed
top 0
left 0
z-index 20000
width 100%
height 100%
background var(--mobileNavBackdrop)
> main
width 100%
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
max-width 1300px
&.isMobile
> main
padding $headerHeight 0 0 0
</style>

View File

@ -0,0 +1,204 @@
<template>
<div class="axbwjelsbymowqjyywpirzhdlszoncqs">
<ui-card>
<div slot="title"><fa icon="cog"/> {{ $t('instance') }}</div>
<section class="fit-top fit-bottom">
<ui-input :value="host" readonly>{{ $t('host') }}</ui-input>
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
</section>
<section class="fit-bottom">
<header><fa :icon="faHeadset"/> {{ $t('maintainer-config') }}</header>
<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>
</section>
<section class="fit-top fit-bottom">
<ui-input v-model="maxNoteTextLength">{{ $t('max-note-text-length') }}</ui-input>
</section>
<section class="fit-bottom">
<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-input v-model="localDriveCapacityMb" type="number">{{ $t('local-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
<ui-input v-model="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('remote-drive-capacity-mb') }}<span slot="suffix">MB</span><span slot="desc">{{ $t('mb') }}</span></ui-input>
</section>
<section class="fit-bottom">
<header><fa :icon="faShieldAlt"/> {{ $t('recaptcha-config') }}</header>
<ui-switch v-model="enableRecaptcha">{{ $t('enable-recaptcha') }}</ui-switch>
<ui-info>{{ $t('recaptcha-info') }}</ui-info>
<ui-input v-model="recaptchaSiteKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-site-key') }}</ui-input>
<ui-input v-model="recaptchaSecretKey" :disabled="!enableRecaptcha"><i slot="icon"><fa icon="key"/></i>{{ $t('recaptcha-secret-key') }}</ui-input>
</section>
<section>
<header><fa :icon="faGhost"/> {{ $t('proxy-account-config') }}</header>
<ui-info>{{ $t('proxy-account-info') }}</ui-info>
<ui-input v-model="proxyAccount"><span slot="prefix">@</span>{{ $t('proxy-account-username') }}<span slot="desc">{{ $t('proxy-account-username-desc') }}</span></ui-input>
<ui-info warn>{{ $t('proxy-account-warn') }}</ui-info>
</section>
<section>
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
</section>
<section>
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
</section>
<section>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title">{{ $t('invite') }}</div>
<section>
<ui-button @click="invite">{{ $t('invite') }}</ui-button>
<p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter-integration-config') }}</div>
<section>
<ui-switch v-model="enableTwitterIntegration">{{ $t('enable-twitter-integration') }}</ui-switch>
<ui-info>{{ $t('twitter-integration-info') }}</ui-info>
<ui-input v-model="twitterConsumerKey" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-key') }}</ui-input>
<ui-input v-model="twitterConsumerSecret" :disabled="!enableTwitterIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('twitter-integration-consumer-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github-integration-config') }}</div>
<section>
<ui-switch v-model="enableGithubIntegration">{{ $t('enable-github-integration') }}</ui-switch>
<ui-info>{{ $t('github-integration-info') }}</ui-info>
<ui-input v-model="githubClientId" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-id') }}</ui-input>
<ui-input v-model="githubClientSecret" :disabled="!enableGithubIntegration"><i slot="icon"><fa icon="key"/></i>{{ $t('github-integration-client-secret') }}</ui-input>
<ui-button @click="updateMeta">{{ $t('save') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import { host } from '../../config';
import { toUnicode } from 'punycode';
import { faHeadset, faShieldAlt, faGhost } from '@fortawesome/free-solid-svg-icons';
export default Vue.extend({
i18n: i18n('admin/views/instance.vue'),
data() {
return {
host: toUnicode(host),
maintainerName: null,
maintainerEmail: null,
disableRegistration: false,
disableLocalTimeline: false,
bannerUrl: null,
name: null,
description: null,
languages: null,
cacheRemoteFiles: false,
localDriveCapacityMb: null,
remoteDriveCapacityMb: null,
maxNoteTextLength: null,
enableRecaptcha: false,
recaptchaSiteKey: null,
recaptchaSecretKey: null,
enableTwitterIntegration: false,
twitterConsumerKey: null,
twitterConsumerSecret: null,
enableGithubIntegration: false,
githubClientId: null,
githubClientSecret: null,
proxyAccount: null,
inviteCode: null,
faHeadset, faShieldAlt, faGhost
};
},
created() {
this.$root.getMeta().then(meta => {
this.maintainerName = meta.maintainer.name;
this.maintainerEmail = meta.maintainer.email;
this.bannerUrl = meta.bannerUrl;
this.name = meta.name;
this.description = meta.description;
this.languages = meta.langs.join(' ');
this.cacheRemoteFiles = meta.cacheRemoteFiles;
this.localDriveCapacityMb = meta.driveCapacityPerLocalUserMb;
this.remoteDriveCapacityMb = meta.driveCapacityPerRemoteUserMb;
this.maxNoteTextLength = meta.maxNoteTextLength;
this.enableRecaptcha = meta.enableRecaptcha;
this.recaptchaSiteKey = meta.recaptchaSiteKey;
this.recaptchaSecretKey = meta.recaptchaSecretKey;
this.proxyAccount = meta.proxyAccount;
this.enableTwitterIntegration = meta.enableTwitterIntegration;
this.twitterConsumerKey = meta.twitterConsumerKey;
this.twitterConsumerSecret = meta.twitterConsumerSecret;
this.enableGithubIntegration = meta.enableGithubIntegration;
this.githubClientId = meta.githubClientId;
this.githubClientSecret = meta.githubClientSecret;
});
},
methods: {
invite() {
this.$root.api('admin/invite').then(x => {
this.inviteCode = x.code;
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
},
updateMeta() {
this.$root.api('admin/update-meta', {
maintainerName: this.maintainerName,
maintainerEmail: this.maintainerEmail,
disableRegistration: this.disableRegistration,
disableLocalTimeline: this.disableLocalTimeline,
bannerUrl: this.bannerUrl,
name: this.name,
description: this.description,
langs: this.languages.split(' '),
cacheRemoteFiles: this.cacheRemoteFiles,
localDriveCapacityMb: parseInt(this.localDriveCapacityMb, 10),
remoteDriveCapacityMb: parseInt(this.remoteDriveCapacityMb, 10),
maxNoteTextLength: parseInt(this.maxNoteTextLength, 10),
enableRecaptcha: this.enableRecaptcha,
recaptchaSiteKey: this.recaptchaSiteKey,
recaptchaSecretKey: this.recaptchaSecretKey,
proxyAccount: this.proxyAccount,
enableTwitterIntegration: this.enableTwitterIntegration,
twitterConsumerKey: this.twitterConsumerKey,
twitterConsumerSecret: this.twitterConsumerSecret,
enableGithubIntegration: this.enableGithubIntegration,
githubClientId: this.githubClientId,
githubClientSecret: this.githubClientSecret,
}).then(() => {
this.$root.alert({
type: 'success',
text: this.$t('saved')
});
}).catch(e => {
this.$root.alert({
type: 'error',
text: e
});
});
}
}
});
</script>
<style lang="stylus" scoped>
.axbwjelsbymowqjyywpirzhdlszoncqs
@media (min-width 500px)
padding 16px
</style>

View File

@ -0,0 +1,61 @@
<template>
<div class="jnhmugbb">
<ui-card>
<div slot="title"><fa icon="plus"/> {{ $t('add-moderator.title') }}</div>
<section class="fit-top">
<ui-input v-model="username" type="text">
<span slot="prefix">@</span>
</ui-input>
<ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import parseAcct from "../../../../misc/acct/parse";
export default Vue.extend({
i18n: i18n('admin/views/moderators.vue'),
data() {
return {
username: '',
adding: false
};
},
methods: {
async add() {
this.adding = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.username));
await this.$root.api('admin/moderators/add', { userId: user.id });
this.$root.alert({
type: 'success',
text: this.$t('add-moderator.added')
});
};
await process().catch(e => {
this.$root.alert({
type: 'error',
text: e.toString()
});
});
this.adding = false;
},
}
});
</script>
<style lang="stylus" scoped>
.jnhmugbb
@media (min-width 500px)
padding 16px
</style>

View File

@ -0,0 +1,163 @@
<template>
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
<ui-card>
<div slot="title">{{ $t('verify-user') }}</div>
<section class="fit-top">
<ui-input v-model="verifyUsername" type="text">
<span slot="prefix">@</span>
</ui-input>
<ui-button @click="verifyUser" :disabled="verifying">{{ $t('verify') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title">{{ $t('unverify-user') }}</div>
<section class="fit-top">
<ui-input v-model="unverifyUsername" type="text">
<span slot="prefix">@</span>
</ui-input>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title">{{ $t('suspend-user') }}</div>
<section class="fit-top">
<ui-input v-model="suspendUsername" type="text">
<span slot="prefix">@</span>
</ui-input>
<ui-button @click="suspendUser" :disabled="suspending">{{ $t('suspend') }}</ui-button>
</section>
</ui-card>
<ui-card>
<div slot="title">{{ $t('unsuspend-user') }}</div>
<section class="fit-top">
<ui-input v-model="unsuspendUsername" type="text">
<span slot="prefix">@</span>
</ui-input>
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
</section>
</ui-card>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import parseAcct from "../../../../misc/acct/parse";
export default Vue.extend({
i18n: i18n('admin/views/users.vue'),
data() {
return {
verifyUsername: null,
verifying: false,
unverifyUsername: null,
unverifying: false,
suspendUsername: null,
suspending: false,
unsuspendUsername: null,
unsuspending: false
};
},
methods: {
async verifyUser() {
this.verifying = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.verifyUsername));
await this.$root.api('admin/verify-user', { userId: user.id });
this.$root.alert({
type: 'success',
text: this.$t('verified')
});
};
await process().catch(e => {
this.$root.alert({
type: 'error',
text: e.toString()
});
});
this.verifying = false;
},
async unverifyUser() {
this.unverifying = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.unverifyUsername));
await this.$root.api('admin/unverify-user', { userId: user.id });
this.$root.alert({
type: 'success',
text: this.$t('unverified')
});
};
await process().catch(e => {
this.$root.alert({
type: 'error',
text: e.toString()
});
});
this.unverifying = false;
},
async suspendUser() {
this.suspending = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.suspendUsername));
await this.$root.api('admin/suspend-user', { userId: user.id });
this.$root.alert({
type: 'success',
text: this.$t('suspended')
});
};
await process().catch(e => {
this.$root.alert({
type: 'error',
text: e.toString()
});
});
this.suspending = false;
},
async unsuspendUser() {
this.unsuspending = true;
const process = async () => {
const user = await this.$root.api('users/show', parseAcct(this.unsuspendUsername));
await this.$root.api('admin/unsuspend-user', { userId: user.id });
this.$root.alert({
type: 'success',
text: this.$t('unsuspended')
});
};
await process().catch(e => {
this.$root.alert({
type: 'error',
text: e.toString()
});
});
this.unsuspending = false;
}
}
});
</script>
<style lang="stylus" scoped>
.ucnffhbtogqgscfmqcymwmmupoknpfsw
@media (min-width 500px)
padding 16px
</style>

View File

@ -13,13 +13,6 @@ html
body
overflow-wrap break-word
#error
padding 32px
color #fff
hr
border solid 1px #fff
#nprogress
pointer-events none
@ -128,5 +121,5 @@ pre
overflow auto
tab-size 2
[data-fa]
[data-icon]
display inline-block

View File

@ -5,9 +5,6 @@
<script lang="ts">
import Vue from 'vue';
import { url, lang } from './config';
import applyTheme from './common/scripts/theme';
const darkTheme = require('../theme/dark');
const halloweenTheme = require('../theme/halloween');
export default Vue.extend({
computed: {

View File

@ -9,14 +9,11 @@ import './style.styl';
import init from '../init';
import Index from './views/index.vue';
import * as config from '../config';
/**
* init
*/
init(launch => {
document.title = `${config.name} | %i18n:common.application-authorization%`;
// Init router
const router = new VueRouter({
mode: 'history',

View File

@ -1,7 +1,7 @@
<template>
<div class="form">
<header>
<h1>%i18n:@share-access%</h1>
<h1 v-html="$t('share-access', { name: app.name })"></h1>
<img :src="app.iconUrl"/>
</header>
<div class="app">
@ -11,32 +11,35 @@
<p class="description">{{ app.description }}</p>
</section>
<section>
<h2>%i18n:@permission-ask%</h2>
<h2>{{ $t('permission-ask') }}</h2>
<ul>
<template v-for="p in app.permission">
<li v-if="p == 'account-read'">%i18n:@account-read%</li>
<li v-if="p == 'account-write'">%i18n:@account-write%</li>
<li v-if="p == 'note-write'">%i18n:@note-write%</li>
<li v-if="p == 'like-write'">%i18n:@like-write%</li>
<li v-if="p == 'following-write'">%i18n:@following-write%</li>
<li v-if="p == 'drive-read'">%i18n:@drive-read%</li>
<li v-if="p == 'drive-write'">%i18n:@drive-write%</li>
<li v-if="p == 'notification-read'">%i18n:@notification-read%</li>
<li v-if="p == 'notification-write'">%i18n:@notification-write%</li>
<li v-if="p == 'account-read'">{{ $t('account-read') }}</li>
<li v-if="p == 'account-write'">{{ $t('account-write') }}</li>
<li v-if="p == 'note-write'">{{ $t('note-write') }}</li>
<li v-if="p == 'like-write'">{{ $t('like-write') }}</li>
<li v-if="p == 'following-write'">{{ $t('following-write') }}</li>
<li v-if="p == 'drive-read'">{{ $t('drive-read') }}</li>
<li v-if="p == 'drive-write'">{{ $t('drive-write') }}</li>
<li v-if="p == 'notification-read'">{{ $t('notification-read') }}</li>
<li v-if="p == 'notification-write'">{{ $t('notification-write') }}</li>
</template>
</ul>
</section>
</div>
<div class="action">
<button @click="cancel">%i18n:@cancel%</button>
<button @click="accept">%i18n:@accept%</button>
<button @click="cancel">{{ $t('cancel') }}</button>
<button @click="accept">{{ $t('accept') }}</button>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
export default Vue.extend({
i18n: i18n('auth/views/form.vue'),
props: ['session'],
computed: {
app(): any {
@ -45,7 +48,7 @@ export default Vue.extend({
},
methods: {
cancel() {
(this as any).api('auth/deny', {
this.$root.api('auth/deny', {
token: this.session.token
}).then(() => {
this.$emit('denied');
@ -53,7 +56,7 @@ export default Vue.extend({
},
accept() {
(this as any).api('auth/accept', {
this.$root.api('auth/accept', {
token: this.session.token
}).then(() => {
this.$emit('accepted');

View File

@ -1,7 +1,7 @@
<template>
<div class="index">
<main v-if="$store.getters.isSignedIn">
<p class="fetching" v-if="fetching">%i18n:@loading%<mk-ellipsis/></p>
<p class="fetching" v-if="fetching">{{ $t('loading') }}<mk-ellipsis/></p>
<x-form
class="form"
ref="form"
@ -11,20 +11,20 @@
@accepted="accepted"
/>
<div class="denied" v-if="state == 'denied'">
<h1>%i18n:@denied%</h1>
<p>%i18n:@denied-paragraph%</p>
<h1>{{ $t('denied') }}</h1>
<p>{{ $t('denied-paragraph') }}</p>
</div>
<div class="accepted" v-if="state == 'accepted'">
<h1>{{ session.app.isAuthorized ? '%i18n:@already-authorized%' : '%i18n:@allowed%' }}</h1>
<p v-if="session.app.callbackUrl">%i18n:@callback-url%<mk-ellipsis/></p>
<p v-if="!session.app.callbackUrl">%i18n:@please-go-back%</p>
<h1>{{ session.app.isAuthorized ? this.$t('already-authorized') : this.$t('allowed') }}</h1>
<p v-if="session.app.callbackUrl">{{ $t('callback-url') }}<mk-ellipsis/></p>
<p v-if="!session.app.callbackUrl">{{ $t('please-go-back') }}</p>
</div>
<div class="error" v-if="state == 'fetch-session-error'">
<p>%i18n:@error%</p>
<p>{{ $t('error') }}</p>
</div>
</main>
<main class="signin" v-if="!$store.getters.isSignedIn">
<h1>%i18n:@sign-in%</h1>
<h1>{{ $t('sign-in') }}</h1>
<mk-signin/>
</main>
<footer><img src="/assets/auth/icon.svg" alt="Misskey"/></footer>
@ -33,9 +33,11 @@
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import XForm from './form.vue';
export default Vue.extend({
i18n: i18n('auth/views/index.vue'),
components: {
XForm
},
@ -55,7 +57,7 @@ export default Vue.extend({
if (!this.$store.getters.isSignedIn) return;
// Fetch session
(this as any).api('auth/session/show', {
this.$root.api('auth/session/show', {
token: this.token
}).then(session => {
this.session = session;
@ -63,7 +65,7 @@ export default Vue.extend({
// 既に連携していた場合
if (this.session.app.isAuthorized) {
(this as any).api('auth/accept', {
this.$root.api('auth/accept', {
token: this.session.token
}).then(() => {
this.accepted();

View File

@ -34,9 +34,6 @@ html
//- FontAwesome style
style #{facss}
//- highlight.js style
style #{hljscss}
body
noscript: p
| JavaScriptを有効にしてください

View File

@ -3,15 +3,9 @@
* (ENTRY POINT)
*/
/**
* ドメインに基づいて適切なスクリプトを読み込みます。
* ユーザーの言語およびモバイル端末か否かも考慮します。
* webpackは介さないためrequireやimportは使えません。
*/
'use strict';
(function() {
(async function() {
// キャッシュ削除要求があれば従う
if (localStorage.getItem('shouldFlush') == 'true') {
refresh();
@ -24,7 +18,6 @@
const theme = localStorage.getItem('theme');
if (theme) {
Object.entries(JSON.parse(theme)).forEach(([k, v]) => {
if (k == 'meta') return;
document.documentElement.style.setProperty(`--${k}`, v.toString());
});
}
@ -47,8 +40,12 @@
if (`${url.pathname}/`.startsWith('/docs/')) app = 'docs';
if (`${url.pathname}/`.startsWith('/dev/')) app = 'dev';
if (`${url.pathname}/`.startsWith('/auth/')) app = 'auth';
if (`${url.pathname}/`.startsWith('/admin/')) app = 'admin';
//#endregion
// Script version
const ver = localStorage.getItem('v') || VERSION;
//#region Detect the user language
let lang = null;
@ -67,8 +64,18 @@
langs.includes(settings.device.lang)) {
lang = settings.device.lang;
}
window.lang = lang;
//#endregion
let locale = localStorage.getItem('locale');
if (locale == null) {
const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`)
.then(response => response.json());
localStorage.setItem('locale', JSON.stringify(locale));
}
// Detect the user agent
const ua = navigator.userAgent.toLowerCase();
const isMobile = /mobile|iphone|ipad|android/.test(ua);
@ -94,9 +101,6 @@
app = isMobile ? 'mobile' : 'desktop';
}
// Script version
const ver = localStorage.getItem('v') || VERSION;
// Get salt query
const salt = localStorage.getItem('salt')
? `?salt=${localStorage.getItem('salt')}`
@ -106,7 +110,7 @@
// Note: 'async' make it possible to load the script asyncly.
// 'defer' make it possible to run the script when the dom loaded.
const script = document.createElement('script');
script.setAttribute('src', `/assets/${app}.${ver}.${lang}.js${salt}`);
script.setAttribute('src', `/assets/${app}.${ver}.js${salt}`);
script.setAttribute('async', 'true');
script.setAttribute('defer', 'true');
head.appendChild(script);
@ -142,8 +146,10 @@
function refresh() {
localStorage.setItem('shouldFlush', 'false');
localStorage.removeItem('locale');
// Random
localStorage.setItem('salt', Math.random().toString());
localStorage.setItem('salt', Math.random().toString().substr(2, 8));
// Clear cache (service worker)
try {

View File

@ -66,7 +66,7 @@ export default function<T extends object>(data: {
this.bakeProps();
(this as any).api('i/update_widget', {
this.$root.api('i/update_widget', {
id: this.id,
data: this.props
});

View File

@ -46,6 +46,16 @@ const getKeyMap = keymap => Object.entries(keymap).map(([patterns, callback]): a
const ignoreElemens = ['input', 'textarea'];
function match(e: KeyboardEvent, patterns: action['patterns']): boolean {
const key = e.code.toLowerCase();
return patterns.some(pattern => pattern.which.includes(key) &&
pattern.ctrl == e.ctrlKey &&
pattern.shift == e.shiftKey &&
pattern.alt == e.altKey &&
e.metaKey == false
);
}
export default {
install(Vue) {
Vue.directive('hotkey', {
@ -55,37 +65,27 @@ export default {
const actions = getKeyMap(binding.value);
// flatten
const reservedKeys = concat(concat(actions.map(a => a.patterns.map(p => p.which))));
const reservedKeys = concat(actions.map(a => a.patterns));
el.dataset.reservedKeys = reservedKeys.map(key => `'${key}'`).join(' ');
el._misskey_reservedKeys = reservedKeys;
el._keyHandler = (e: KeyboardEvent) => {
const key = e.code.toLowerCase();
const targetReservedKeys = document.activeElement ? ((document.activeElement as any).dataset || {}).reservedKeys || '' : '';
const targetReservedKeys = document.activeElement ? ((document.activeElement as any)._misskey_reservedKeys || []) : [];
if (document.activeElement && ignoreElemens.some(el => document.activeElement.matches(el))) return;
for (const action of actions) {
if (el._hotkey_global && targetReservedKeys.includes(`'${key}'`)) break;
const matched = action.patterns.some(pattern => {
const matched = pattern.which.includes(key) &&
pattern.ctrl == e.ctrlKey &&
pattern.shift == e.shiftKey &&
pattern.alt == e.altKey &&
e.metaKey == false;
if (matched) {
e.preventDefault();
e.stopPropagation();
action.callback(e);
return true;
} else {
return false;
}
});
const matched = match(e, action.patterns);
if (matched) {
if (el._hotkey_global) {
if (match(e, targetReservedKeys)) {
return;
}
}
e.preventDefault();
e.stopPropagation();
action.callback(e);
break;
}
}

View File

@ -1,8 +1,7 @@
import MiOS from '../../mios';
import { version as current } from '../../config';
import { clientVersion as current } from '../../config';
export default async function(mios: MiOS, force = false, silent = false) {
const meta = await mios.getMeta(force);
export default async function($root: any, force = false, silent = false) {
const meta = await $root.getMeta(force);
const newer = meta.clientVersion;
if (newer != current) {
@ -23,9 +22,9 @@ export default async function(mios: MiOS, force = false, silent = false) {
}
if (!silent) {
mios.apis.dialog({
title: '%i18n:common.update-available-title%',
text: '%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)
$root.alert({
title: $root.$t('@.update-available-title'),
text: $root.$t('@.update-available', { newer, current })
});
}

View File

@ -13,21 +13,21 @@ type Notification = {
export default function(type, data): Notification {
switch (type) {
case 'drive_file_created':
case 'driveFileCreated':
return {
title: '%i18n:common.notification.file-uploaded%',
body: data.name,
icon: data.url
};
case 'unread_messaging_message':
case 'unreadMessagingMessage':
return {
title: '%i18n:common.notification.message-from%'.split("{}")[0] + `${getUserName(data.user)}` + '%i18n:common.notification.message-from%'.split("{}")[1] ,
body: data.text, // TODO: getMessagingMessageSummary(data),
icon: data.user.avatarUrl
};
case 'reversi_invited':
case 'reversiInvited':
return {
title: '%i18n:common.notification.reversi-invited%',
body: '%i18n:common.notification.reversi-invited-by%'.split("{}")[0] + `${getUserName(data.parent)}` + '%i18n:common.notification.reversi-invited-by%'.split("{}")[1],

View File

@ -1,15 +1,12 @@
declare const fuckAdBlock: any;
export default (os) => {
export default ($root: any) => {
require('fuckadblock');
function adBlockDetected() {
os.apis.dialog({
title: '%fa:exclamation-triangle%%i18n:common.adblock.detected%',
text: '%i18n:common.adblock.warning%',
actins: [{
text: 'OK'
}]
$root.alert({
title: $root.$t('@.adblock.detected'),
text: $root.$t('@.adblock.warning')
});
}

View File

@ -0,0 +1,10 @@
// スクリプトサイズがデカい
//const crypto = require('crypto');
export default (data: ArrayBuffer) => {
//const buf = new Buffer(data);
//const hash = crypto.createHash("md5");
//hash.update(buf);
//return hash.digest("hex");
return '';
};

View File

@ -0,0 +1,186 @@
import parse from '../../../../mfm/parse';
import { sum } from '../../../../prelude/array';
import shouldMuteNote from './should-mute-note';
import MkNoteMenu from '../views/components/note-menu.vue';
import MkReactionPicker from '../views/components/reaction-picker.vue';
function focus(el, fn) {
const target = fn(el);
if (target) {
if (target.hasAttribute('tabindex')) {
target.focus();
} else {
focus(target, fn);
}
}
}
type Opts = {
mobile?: boolean;
};
export default (opts: Opts = {}) => ({
data() {
return {
showContent: false,
hideThisNote: false
};
},
computed: {
keymap(): any {
return {
'r': () => this.reply(true),
'e|a|plus': () => this.react(true),
'q': () => this.renote(true),
'f|b': this.favorite,
'delete|ctrl+d': this.del,
'ctrl+q': this.renoteDirectly,
'up|k|shift+tab': this.focusBefore,
'down|j|tab': this.focusAfter,
'esc': this.blur,
'm|o': () => this.menu(true),
's': this.toggleShowContent,
'1': () => this.reactDirectly('like'),
'2': () => this.reactDirectly('love'),
'3': () => this.reactDirectly('laugh'),
'4': () => this.reactDirectly('hmm'),
'5': () => this.reactDirectly('surprise'),
'6': () => this.reactDirectly('congrats'),
'7': () => this.reactDirectly('angry'),
'8': () => this.reactDirectly('confused'),
'9': () => this.reactDirectly('rip'),
'0': () => this.reactDirectly('pudding'),
};
},
isRenote(): boolean {
return (this.note.renote &&
this.note.text == null &&
this.note.fileIds.length == 0 &&
this.note.poll == null);
},
appearNote(): any {
return this.isRenote ? this.note.renote : this.note;
},
reactionsCount(): number {
return this.appearNote.reactionCounts
? sum(Object.values(this.appearNote.reactionCounts))
: 0;
},
title(): string {
return new Date(this.appearNote.createdAt).toLocaleString();
},
urls(): string[] {
if (this.appearNote.text) {
const ast = parse(this.appearNote.text);
return ast
.filter(t => (t.type == 'url' || t.type == 'link') && !t.silent)
.map(t => t.url);
} else {
return null;
}
}
},
created() {
this.hideThisNote = shouldMuteNote(this.$store.state.i, this.$store.state.settings, this.appearNote);
},
methods: {
reply(viaKeyboard = false) {
this.$root.$post({
reply: this.appearNote,
animation: !viaKeyboard,
cb: () => {
this.focus();
}
});
},
renote(viaKeyboard = false) {
this.$root.$post({
renote: this.appearNote,
animation: !viaKeyboard,
cb: () => {
this.focus();
}
});
},
renoteDirectly() {
(this as any).api('notes/create', {
renoteId: this.appearNote.id
});
},
react(viaKeyboard = false) {
this.blur();
this.$root.new(MkReactionPicker, {
source: this.$refs.reactButton,
note: this.appearNote,
showFocus: viaKeyboard,
animation: !viaKeyboard,
compact: opts.mobile,
big: opts.mobile
}).$once('closed', this.focus);
},
reactDirectly(reaction) {
(this.$root.api('notes/reactions/create', {
noteId: this.appearNote.id,
reaction: reaction
});
},
favorite() {
this.$root.api('notes/favorites/create', {
noteId: this.appearNote.id
}).then(() => {
this.$root.alert({
type: 'success',
splash: true
});
});
},
del() {
this.$root.api('notes/delete', {
noteId: this.appearNote.id
});
},
menu(viaKeyboard = false) {
this.$root.new(MkNoteMenu, {
source: this.$refs.menuButton,
note: this.appearNote,
animation: !viaKeyboard,
compact: opts.mobile,
}).$once('closed', this.focus);
},
toggleShowContent() {
this.showContent = !this.showContent;
},
focus() {
this.$el.focus();
},
blur() {
this.$el.blur();
},
focusBefore() {
focus(this.$el, e => e.previousElementSibling);
},
focusAfter() {
focus(this.$el, e => e.nextElementSibling);
}
}
});

View File

@ -0,0 +1,128 @@
import Vue from 'vue';
export default prop => ({
data() {
return {
connection: null
};
},
computed: {
$_ns_note_(): any {
return this[prop];
},
$_ns_isRenote(): boolean {
return (this.$_ns_note_.renote != null &&
this.$_ns_note_.text == null &&
this.$_ns_note_.fileIds.length == 0 &&
this.$_ns_note_.poll == null);
},
$_ns_target(): any {
return this.$_ns_isRenote ? this.$_ns_note_.renote : this.$_ns_note_;
},
},
created() {
if (this.$store.getters.isSignedIn) {
this.connection = this.$root.stream;
}
},
mounted() {
this.capture(true);
if (this.$store.getters.isSignedIn) {
this.connection.on('_connected_', this.onStreamConnected);
}
},
beforeDestroy() {
this.decapture(true);
if (this.$store.getters.isSignedIn) {
this.connection.off('_connected_', this.onStreamConnected);
}
},
methods: {
capture(withHandler = false) {
if (this.$store.getters.isSignedIn) {
const data = {
id: this.$_ns_target.id
} as any;
if (
(this.$_ns_target.visibleUserIds || []).includes(this.$store.state.i.id) ||
(this.$_ns_target.mentions || []).includes(this.$store.state.i.id)
) {
data.read = true;
}
this.connection.send('sn', data);
if (withHandler) this.connection.on('noteUpdated', this.onStreamNoteUpdated);
}
},
decapture(withHandler = false) {
if (this.$store.getters.isSignedIn) {
this.connection.send('un', {
id: this.$_ns_target.id
});
if (withHandler) this.connection.off('noteUpdated', this.onStreamNoteUpdated);
}
},
onStreamConnected() {
this.capture();
},
onStreamNoteUpdated(data) {
const { type, id, body } = data;
if (id !== this.$_ns_target.id) return;
switch (type) {
case 'reacted': {
const reaction = body.reaction;
if (this.$_ns_target.reactionCounts == null) {
Vue.set(this.$_ns_target, 'reactionCounts', {});
}
if (this.$_ns_target.reactionCounts[reaction] == null) {
Vue.set(this.$_ns_target.reactionCounts, reaction, 0);
}
this.$_ns_target.reactionCounts[reaction]++;
if (body.userId == this.$store.state.i.id) {
Vue.set(this.$_ns_target, 'myReaction', reaction);
}
break;
}
case 'pollVoted': {
if (body.userId == this.$store.state.i.id) return;
const choice = body.choice;
this.$_ns_target.poll.choices.find(c => c.id === choice).votes++;
break;
}
case 'deleted': {
Vue.set(this.$_ns_target, 'deletedAt', body.deletedAt);
this.$_ns_target.text = null;
this.$_ns_target.tags = [];
this.$_ns_target.fileIds = [];
this.$_ns_target.poll = null;
this.$_ns_target.geo = null;
this.$_ns_target.cw = null;
break;
}
}
this.$emit(`update:${prop}`, this.$_ns_note_);
},
}
});

View File

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

View File

@ -0,0 +1,303 @@
import autobind from 'autobind-decorator';
import { EventEmitter } from 'eventemitter3';
import ReconnectingWebsocket from 'reconnecting-websocket';
import { wsUrl } from '../../config';
import MiOS from '../../mios';
/**
* Misskey stream connection
*/
export default class Stream extends EventEmitter {
private stream: ReconnectingWebsocket;
public state: string;
private sharedConnectionPools: Pool[] = [];
private sharedConnections: SharedConnection[] = [];
private nonSharedConnections: NonSharedConnection[] = [];
constructor(os: MiOS) {
super();
this.state = 'initializing';
const user = os.store.state.i;
this.stream = new ReconnectingWebsocket(wsUrl + (user ? `?i=${user.token}` : ''));
this.stream.addEventListener('open', this.onOpen);
this.stream.addEventListener('close', this.onClose);
this.stream.addEventListener('message', this.onMessage);
}
@autobind
public useSharedConnection(channel: string): SharedConnection {
let pool = this.sharedConnectionPools.find(p => p.channel === channel);
if (pool == null) {
pool = new Pool(this, channel);
this.sharedConnectionPools.push(pool);
}
const connection = new SharedConnection(this, channel, pool);
this.sharedConnections.push(connection);
return connection;
}
@autobind
public removeSharedConnection(connection: SharedConnection) {
this.sharedConnections = this.sharedConnections.filter(c => c !== connection);
}
@autobind
public removeSharedConnectionPool(pool: Pool) {
this.sharedConnectionPools = this.sharedConnectionPools.filter(p => p !== pool);
}
@autobind
public connectToChannel(channel: string, params?: any): NonSharedConnection {
const connection = new NonSharedConnection(this, channel, params);
this.nonSharedConnections.push(connection);
return connection;
}
@autobind
public disconnectToChannel(connection: NonSharedConnection) {
this.nonSharedConnections = this.nonSharedConnections.filter(c => c !== connection);
}
/**
* Callback of when open connection
*/
@autobind
private onOpen() {
const isReconnect = this.state == 'reconnecting';
this.state = 'connected';
this.emit('_connected_');
// チャンネル再接続
if (isReconnect) {
this.sharedConnectionPools.forEach(p => {
p.connect();
});
this.nonSharedConnections.forEach(c => {
c.connect();
});
}
}
/**
* Callback of when close connection
*/
@autobind
private onClose() {
if (this.state == 'connected') {
this.state = 'reconnecting';
this.emit('_disconnected_');
}
}
/**
* Callback of when received a message from connection
*/
@autobind
private onMessage(message) {
const { type, body } = JSON.parse(message.data);
if (type == 'channel') {
const id = body.id;
let connections: Connection[];
connections = this.sharedConnections.filter(c => c.id === id);
if (connections.length === 0) {
connections = [this.nonSharedConnections.find(c => c.id === id)];
}
connections.filter(c => c != null).forEach(c => {
c.emit(body.type, body.body);
});
} else {
this.emit(type, body);
}
}
/**
* Send a message to connection
*/
@autobind
public send(typeOrPayload, payload?) {
const data = payload === undefined ? typeOrPayload : {
type: typeOrPayload,
body: payload
};
this.stream.send(JSON.stringify(data));
}
/**
* Close this connection
*/
@autobind
public close() {
this.stream.removeEventListener('open', this.onOpen);
this.stream.removeEventListener('message', this.onMessage);
}
}
class Pool {
public channel: string;
public id: string;
protected stream: Stream;
public users = 0;
private disposeTimerId: any;
private isConnected = false;
constructor(stream: Stream, channel: string) {
this.channel = channel;
this.stream = stream;
this.id = Math.random().toString().substr(2, 8);
this.stream.on('_disconnected_', this.onStreamDisconnected);
}
@autobind
private onStreamDisconnected() {
this.isConnected = false;
}
@autobind
public inc() {
if (this.users === 0 && !this.isConnected) {
this.connect();
}
this.users++;
// タイマー解除
if (this.disposeTimerId) {
clearTimeout(this.disposeTimerId);
this.disposeTimerId = null;
}
}
@autobind
public dec() {
this.users--;
// そのコネクションの利用者が誰もいなくなったら
if (this.users === 0) {
// また直ぐに再利用される可能性があるので、一定時間待ち、
// 新たな利用者が現れなければコネクションを切断する
this.disposeTimerId = setTimeout(() => {
this.disconnect();
}, 3000);
}
}
@autobind
public connect() {
if (this.isConnected) return;
this.isConnected = true;
this.stream.send('connect', {
channel: this.channel,
id: this.id
});
}
@autobind
private disconnect() {
this.stream.off('_disconnected_', this.onStreamDisconnected);
this.stream.send('disconnect', { id: this.id });
this.stream.removeSharedConnectionPool(this);
}
}
abstract class Connection extends EventEmitter {
public channel: string;
protected stream: Stream;
public abstract id: string;
constructor(stream: Stream, channel: string) {
super();
this.stream = stream;
this.channel = channel;
}
@autobind
public send(id: string, typeOrPayload, payload?) {
const type = payload === undefined ? typeOrPayload.type : typeOrPayload;
const body = payload === undefined ? typeOrPayload.body : payload;
this.stream.send('ch', {
id: id,
type: type,
body: body
});
}
public abstract dispose(): void;
}
class SharedConnection extends Connection {
private pool: Pool;
public get id(): string {
return this.pool.id;
}
constructor(stream: Stream, channel: string, pool: Pool) {
super(stream, channel);
this.pool = pool;
this.pool.inc();
}
@autobind
public send(typeOrPayload, payload?) {
super.send(this.pool.id, typeOrPayload, payload);
}
@autobind
public dispose() {
this.pool.dec();
this.removeAllListeners();
this.stream.removeSharedConnection(this);
}
}
class NonSharedConnection extends Connection {
public id: string;
protected params: any;
constructor(stream: Stream, channel: string, params?: any) {
super(stream, channel);
this.params = params;
this.id = Math.random().toString().substr(2, 8);
this.connect();
}
@autobind
public connect() {
this.stream.send('connect', {
channel: this.channel,
id: this.id,
params: this.params
});
}
@autobind
public send(typeOrPayload, payload?) {
super.send(this.id, typeOrPayload, payload);
}
@autobind
public dispose() {
this.removeAllListeners();
this.stream.send('disconnect', { id: this.id });
this.stream.disconnectToChannel(this);
}
}

View File

@ -1,34 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Drive stream connection
*/
export class DriveStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'drive', {
i: me.token
});
}
}
export class DriveStreamManager extends StreamManager<DriveStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new DriveStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,13 +0,0 @@
import Stream from '../../stream';
import MiOS from '../../../../../mios';
export class ReversiGameStream extends Stream {
constructor(os: MiOS, me, game) {
super(os, 'games/reversi-game', me ? {
i: me.token,
game: game.id
} : {
game: game.id
});
}
}

View File

@ -1,31 +0,0 @@
import StreamManager from '../../stream-manager';
import Stream from '../../stream';
import MiOS from '../../../../../mios';
export class ReversiStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'games/reversi', {
i: me.token
});
}
}
export class ReversiStreamManager extends StreamManager<ReversiStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new ReversiStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,34 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Global timeline stream connection
*/
export class GlobalTimelineStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'global-timeline', {
i: me.token
});
}
}
export class GlobalTimelineStreamManager extends StreamManager<GlobalTimelineStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new GlobalTimelineStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,13 +0,0 @@
import Stream from './stream';
import MiOS from '../../../mios';
export class HashtagStream extends Stream {
constructor(os: MiOS, me, q) {
super(os, 'hashtag', me ? {
i: me.token,
q: JSON.stringify(q)
} : {
q: JSON.stringify(q)
});
}
}

View File

@ -1,126 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Home stream connection
*/
export class HomeStream extends Stream {
constructor(os: MiOS, me) {
super(os, '', {
i: me.token
});
// 最終利用日時を更新するため定期的にaliveメッセージを送信
setInterval(() => {
this.send({ type: 'alive' });
me.lastUsedAt = new Date();
}, 1000 * 60);
// 自分の情報が更新されたとき
this.on('meUpdated', i => {
if (os.debug) {
console.log('I updated:', i);
}
os.store.dispatch('mergeMe', i);
});
this.on('read_all_notifications', () => {
os.store.dispatch('mergeMe', {
hasUnreadNotification: false
});
});
this.on('unread_notification', () => {
os.store.dispatch('mergeMe', {
hasUnreadNotification: true
});
});
this.on('read_all_messaging_messages', () => {
os.store.dispatch('mergeMe', {
hasUnreadMessagingMessage: false
});
});
this.on('unread_messaging_message', () => {
os.store.dispatch('mergeMe', {
hasUnreadMessagingMessage: true
});
});
this.on('unreadMention', () => {
os.store.dispatch('mergeMe', {
hasUnreadMentions: true
});
});
this.on('readAllUnreadMentions', () => {
os.store.dispatch('mergeMe', {
hasUnreadMentions: false
});
});
this.on('unreadSpecifiedNote', () => {
os.store.dispatch('mergeMe', {
hasUnreadSpecifiedNotes: true
});
});
this.on('readAllUnreadSpecifiedNotes', () => {
os.store.dispatch('mergeMe', {
hasUnreadSpecifiedNotes: false
});
});
this.on('clientSettingUpdated', x => {
os.store.commit('settings/set', {
key: x.key,
value: x.value
});
});
this.on('home_updated', x => {
os.store.commit('settings/setHome', x);
});
this.on('mobile_home_updated', x => {
os.store.commit('settings/setMobileHome', x);
});
this.on('widgetUpdated', x => {
os.store.commit('settings/setWidget', {
id: x.id,
data: x.data
});
});
// トークンが再生成されたとき
// このままではMisskeyが利用できないので強制的にサインアウトさせる
this.on('my_token_regenerated', () => {
alert('%i18n:common.my-token-regenerated%');
os.signout();
});
}
}
export class HomeStreamManager extends StreamManager<HomeStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new HomeStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,34 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Hybrid timeline stream connection
*/
export class HybridTimelineStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'hybrid-timeline', {
i: me.token
});
}
}
export class HybridTimelineStreamManager extends StreamManager<HybridTimelineStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new HybridTimelineStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,34 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Local timeline stream connection
*/
export class LocalTimelineStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'local-timeline', me ? {
i: me.token
} : {});
}
}
export class LocalTimelineStreamManager extends StreamManager<LocalTimelineStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new LocalTimelineStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,34 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Messaging index stream connection
*/
export class MessagingIndexStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'messaging-index', {
i: me.token
});
}
}
export class MessagingIndexStreamManager extends StreamManager<MessagingIndexStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new MessagingIndexStream(this.os, this.me);
}
return this.connection;
}
}

View File

@ -1,20 +0,0 @@
import Stream from './stream';
import MiOS from '../../../mios';
/**
* Messaging stream connection
*/
export class MessagingStream extends Stream {
constructor(os: MiOS, me, otherparty) {
super(os, 'messaging', {
i: me.token,
otherparty
});
(this as any).on('_connected_', () => {
this.send({
i: me.token
});
});
}
}

View File

@ -1,30 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Notes stats stream connection
*/
export class NotesStatsStream extends Stream {
constructor(os: MiOS) {
super(os, 'notes-stats');
}
}
export class NotesStatsStreamManager extends StreamManager<NotesStatsStream> {
private os: MiOS;
constructor(os: MiOS) {
super();
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new NotesStatsStream(this.os);
}
return this.connection;
}
}

View File

@ -1,30 +0,0 @@
import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios';
/**
* Server stats stream connection
*/
export class ServerStatsStream extends Stream {
constructor(os: MiOS) {
super(os, 'server-stats');
}
}
export class ServerStatsStreamManager extends StreamManager<ServerStatsStream> {
private os: MiOS;
constructor(os: MiOS) {
super();
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new ServerStatsStream(this.os);
}
return this.connection;
}
}

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