Compare commits

..

818 Commits

Author SHA1 Message Date
syuilo 3cd3e19199 Update version 2018-07-26 03:46:55 +09:00
syuilo ed36ceadbc ✌️ 2018-07-26 03:46:18 +09:00
syuilo 8736c9dfe6 Merge pull request #1977 from yarnaimo/embedded-tweet
ツイートの埋め込み
2018-07-26 02:31:00 +09:00
ysr227 e44f33bf14 Embed tweet when tweet url attached 2018-07-26 00:03:32 +09:00
Aya Morisawa 6e39b73f07 Fix #1961 2018-07-25 13:37:40 +09:00
Aya Morisawa 01703e5584 Fix #1975 2018-07-25 13:30:59 +09:00
syuilo fee7cb41cb Merge pull request #1965 from syuilo/l10n_master
New Crowdin translations
2018-07-25 13:07:06 +09:00
greenkeeper[bot] bb14af8b40 fix(package): update gulp-uglify to version 3.0.1 2018-07-25 12:15:40 +09:00
greenkeeper[bot] 54b849e548 fix(package): update @types/node to version 10.5.3 2018-07-25 12:15:29 +09:00
syuilo 8f50482896 Add note 2018-07-25 09:54:03 +09:00
syuilo b3b82e7595 Fix bug nado 2018-07-25 08:01:12 +09:00
syuilo 9c4e0a4ae6 ✌️ 2018-07-25 07:46:56 +09:00
syuilo 0b656999d8 Clean up 2018-07-25 07:45:38 +09:00
syuilo 7605a512ba Update appveyor.yml 2018-07-25 07:33:49 +09:00
syuilo 2018a29968 Update docs 2018-07-25 07:29:55 +09:00
syuilo dbf335a05d Refactor: withFile --> requireFile 2018-07-25 07:18:50 +09:00
syuilo ad5a7e9d70 Update CHANGELOG 2018-07-25 07:08:53 +09:00
syuilo f8477fa88d 🎨 2018-07-25 04:36:02 +09:00
syuilo a22ddb05ba Update docs 2018-07-25 04:15:22 +09:00
syuilo 9455edf2da Update docs 2018-07-25 04:10:56 +09:00
syuilo 4a2244327f New translations ja.yml (English) 2018-07-25 01:41:43 +09:00
syuilo 708a800a25 New translations ja.yml (Catalan) 2018-07-25 01:21:58 +09:00
syuilo a34193ca16 New translations ja.yml (Portuguese) 2018-07-25 01:21:56 +09:00
syuilo a4886975e4 New translations ja.yml (Korean) 2018-07-25 01:21:54 +09:00
syuilo 8b6a015602 New translations ja.yml (Polish) 2018-07-25 01:21:52 +09:00
syuilo f915560752 New translations ja.yml (Chinese Simplified) 2018-07-25 01:21:50 +09:00
syuilo f2f0910771 New translations ja.yml (Italian) 2018-07-25 01:21:48 +09:00
syuilo 9316e2ce15 New translations ja.yml (Russian) 2018-07-25 01:21:46 +09:00
syuilo 128573e73e New translations ja.yml (English) 2018-07-25 01:21:44 +09:00
syuilo 3d132ad803 New translations ja.yml (Spanish) 2018-07-25 01:21:42 +09:00
syuilo 6f671325fa New translations ja.yml (German) 2018-07-25 01:21:40 +09:00
syuilo 7e6ac77341 New translations ja.yml (French) 2018-07-25 01:21:38 +09:00
syuilo 51bafe8259 #1893 2018-07-25 01:14:38 +09:00
syuilo f1bbbcfedf Fix #1960 2018-07-25 00:51:30 +09:00
syuilo 7d99b154c0 Update config template: Add missing property definition 2018-07-25 00:40:27 +09:00
syuilo 575da76235 Clean up: Remove unmaintained codes 2018-07-25 00:33:48 +09:00
syuilo c3b3b9b9a6 #1955 2018-07-25 00:29:18 +09:00
syuilo 7432de3d33 Merge pull request #1968 from syuilo/object-storage
Object storage support
2018-07-24 23:45:19 +09:00
syuilo 03ce87d710 wip 2018-07-24 23:43:14 +09:00
syuilo 5e9fb8bd84 wip 2018-07-24 23:35:19 +09:00
greenkeeper[bot] 68a205486e fix(package): update eslint-plugin-vue to version 4.7.1 2018-07-24 21:41:03 +09:00
greenkeeper[bot] 94c106a87a fix(package): update @types/webpack to version 4.4.8 2018-07-24 12:06:05 +09:00
greenkeeper[bot] 1b2a04bd2a fix(package): update gulp-rename to version 1.4.0 2018-07-24 06:24:11 +09:00
syuilo a048939cf1 wip 2018-07-24 06:21:21 +09:00
syuilo 6296846078 New translations ja.yml (French) 2018-07-24 05:41:37 +09:00
syuilo e530d12f7f New translations ja.yml (French) 2018-07-24 05:31:39 +09:00
syuilo adc3c16ef3 wip 2018-07-24 05:04:43 +09:00
syuilo 5458b10774 wip 2018-07-24 01:58:11 +09:00
Aya Morisawa 9ad403af00 Enhance #1958 2018-07-23 20:58:59 +09:00
Aya Morisawa 8d7f16caed Update setup.*.md 2018-07-23 20:48:55 +09:00
Aya Morisawa e5c20ca9a7 Update dependencyInfo.ts 2018-07-23 20:45:21 +09:00
greenkeeper[bot] bd4a7d8cbb fix(package): update webpack to version 4.16.2 2018-07-23 20:19:24 +09:00
Aya Morisawa 5b116737b6 Fix typo 2018-07-23 20:11:20 +09:00
syuilo 8adc799041 Merge pull request #1959 from acid-chicken/top
Go to top
2018-07-23 14:37:18 +09:00
Acid Chicken (硫酸鶏) 41e657b64e Go to top 2018-07-23 14:35:00 +09:00
Aya Morisawa f16cda51fb #1957 2018-07-23 14:07:09 +09:00
Aya Morisawa 886510d721 Clean up 2018-07-23 14:04:53 +09:00
Aya Morisawa 427b3dcd73 Fix semantic errors 2018-07-23 13:56:25 +09:00
Aya Morisawa 138fa1454f Fix #1957 2018-07-23 13:37:29 +09:00
greenkeeper[bot] 7ec9b03990 fix(package): update swagger-jsdoc to version 1.10.3 2018-07-23 12:54:02 +09:00
syuilo 65a91c5709 Merge pull request #1951 from syuilo/greenkeeper/hard-source-webpack-plugin-0.11.2
Update hard-source-webpack-plugin to the latest version 🚀
2018-07-22 21:56:55 +09:00
greenkeeper[bot] e679f47c1a fix(package): update hard-source-webpack-plugin to version 0.11.2 2018-07-22 04:47:40 +00:00
syuilo 337ecafa56 Merge pull request #1949 from syuilo/greenkeeper/ratelimiter-3.2.0
Update ratelimiter to the latest version 🚀
2018-07-22 00:58:36 +09:00
syuilo 2c46098fb5 Merge pull request #1950 from syuilo/greenkeeper/ws-6.0.0
Update ws to the latest version 🚀
2018-07-22 00:58:06 +09:00
greenkeeper[bot] 35247af220 fix(package): update ws to version 6.0.0 2018-07-21 13:49:12 +00:00
greenkeeper[bot] e71da1f659 fix(package): update ratelimiter to version 3.2.0 2018-07-21 12:57:47 +00:00
syuilo 91daa1958b 4.27.0 2018-07-21 19:46:29 +09:00
syuilo 900a9cb34f sharedInbox対応 2018-07-21 19:33:56 +09:00
syuilo 297a7f541e #1947 2018-07-21 19:17:15 +09:00
syuilo 049085fb7a Merge pull request #1945 from syuilo/greenkeeper/@types/mongodb-3.1.2
Update @types/mongodb to the latest version 🚀
2018-07-21 11:26:25 +09:00
greenkeeper[bot] f594a2d0f4 fix(package): update @types/mongodb to version 3.1.2 2018-07-21 02:19:33 +00:00
syuilo ffd13accca Refactor 2018-07-21 11:08:27 +09:00
syuilo edf2503ee5 💯 2018-07-21 11:06:01 +09:00
syuilo 4d0c303660 Fix #1901 2018-07-21 11:03:32 +09:00
syuilo 49bc00102b Fix bug 2018-07-21 08:54:41 +09:00
syuilo 29f074267c Merge pull request #1943 from syuilo/refactor-notes-create
Refactor notes create
2018-07-21 08:51:56 +09:00
syuilo 7671c37f2a wip 2018-07-21 08:47:48 +09:00
syuilo 91ad9e4c41 wip 2018-07-21 07:05:51 +09:00
syuilo ed48349e39 wip 2018-07-21 06:59:53 +09:00
syuilo 2df02a9d70 wip 2018-07-21 05:35:43 +09:00
syuilo 1d027613e4 🎨 2018-07-21 04:33:04 +09:00
syuilo e9de73d2f6 Fix 2018-07-21 03:24:39 +09:00
syuilo 7b9b01688c Merge pull request #1942 from syuilo/l10n_master
New Crowdin translations
2018-07-21 03:21:16 +09:00
syuilo afcf2fddb1 Improve hashtag suggestion 2018-07-21 03:15:31 +09:00
syuilo 78de3ba691 New translations ja.yml (English) 2018-07-21 03:11:10 +09:00
syuilo 2cfefee94d New translations ja.yml (Catalan) 2018-07-21 03:02:52 +09:00
syuilo d50940cdf8 New translations ja.yml (Portuguese) 2018-07-21 03:02:51 +09:00
syuilo e38ee663dc New translations ja.yml (Korean) 2018-07-21 03:02:49 +09:00
syuilo 5a160a76f7 New translations ja.yml (Polish) 2018-07-21 03:02:47 +09:00
syuilo c504f27a51 New translations ja.yml (Chinese Simplified) 2018-07-21 03:02:45 +09:00
syuilo 3f5155e9b5 New translations ja.yml (Italian) 2018-07-21 03:02:43 +09:00
syuilo dcb85073da New translations ja.yml (Russian) 2018-07-21 03:02:41 +09:00
syuilo 2a5f3491a6 New translations ja.yml (English) 2018-07-21 03:02:39 +09:00
syuilo 6f6b01344d New translations ja.yml (Spanish) 2018-07-21 03:02:37 +09:00
syuilo 73810758d9 New translations ja.yml (German) 2018-07-21 03:02:35 +09:00
syuilo 6cb527fd58 New translations ja.yml (French) 2018-07-21 03:02:33 +09:00
syuilo 7316352ff5 ✌️ 2018-07-21 02:58:44 +09:00
syuilo ad76d5d8e2 Merge pull request #1939 from acid-chicken/sushi
🍣回転寿司🍣
2018-07-21 02:23:13 +09:00
syuilo 539f307500 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-21 02:18:40 +09:00
syuilo 5f68d08cbc Improve log 2018-07-21 02:18:35 +09:00
syuilo bc8bea11c0 Merge pull request #1940 from acid-chicken/acid-chicken-patch-1
投稿できない際にショートカットキーをトリガーしないようにする
2018-07-21 02:16:11 +09:00
Acid Chicken (硫酸鶏) 9bb02e5bf6 Update post-form.vue 2018-07-21 02:14:24 +09:00
Acid Chicken (硫酸鶏) ae68e6372c Update messaging-room.form.vue 2018-07-21 02:07:50 +09:00
Acid Chicken (硫酸鶏) 69593994ef Update post-form.vue 2018-07-21 02:06:49 +09:00
Acid Chicken (硫酸鶏) cb52ebe65b インデクサーを忘れていた 2018-07-21 01:25:55 +09:00
Acid Chicken (硫酸鶏) 9b989ebac6 保存し忘れ 2018-07-21 01:24:12 +09:00
Acid Chicken (硫酸鶏) f13bef4ac8 回転寿司 2018-07-21 01:21:27 +09:00
syuilo 29b1aa0d9b Merge pull request #1938 from acid-chicken/vscode
Add extension suggestion for VSCode
2018-07-21 00:49:07 +09:00
Acid Chicken (硫酸鶏) 5aa2e47c49 Add extension suggestion for VSCode 2018-07-21 00:38:08 +09:00
Aya Morisawa 773d104306 Fix #1868 2018-07-20 21:59:09 +09:00
syuilo b8e948b009 Merge pull request #1936 from syuilo/patch-1803
Fix #1803
2018-07-20 21:47:35 +09:00
Aya Morisawa 49298d2f3f Update ISSUE_TEMPLATE 2018-07-20 21:41:06 +09:00
Aya Morisawa ac19567f2b Fix #1803 2018-07-20 21:39:21 +09:00
Acid Chicken (硫酸鶏) bc627fc55c タグサジェストが重複しないようにする 2018-07-20 21:12:28 +09:00
Aya Morisawa eb6c2d0f73 Update bug_report.md 2018-07-20 21:08:12 +09:00
Aya Morisawa 436757c71d Enrich ISSUE_TEMPLATE
Close #1932
2018-07-20 21:05:58 +09:00
Aya Morisawa 5d09b7e38b mark as read all -> mark all as read
Close #855
2018-07-20 14:16:02 +09:00
syuilo a8cf67198f Update README.md 2018-07-20 06:39:30 +09:00
syuilo 06539db1a0 4.26.0 2018-07-20 05:30:59 +09:00
syuilo de10890bd8 Merge pull request #1930 from syuilo/l10n_master
New Crowdin translations
2018-07-20 05:30:41 +09:00
syuilo 8dc5375d55 最近使ったハッシュタグを表示するようにするなど 2018-07-20 05:29:56 +09:00
syuilo 1d23076191 New translations ja.yml (English) 2018-07-20 05:02:48 +09:00
syuilo cbdc061891 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-20 04:59:12 +09:00
syuilo 9536d76b61 Improve 賢さ 2018-07-20 04:59:04 +09:00
syuilo 7a030901c8 Update README.md 2018-07-20 03:51:50 +09:00
syuilo bcc02047ca New translations ja.yml (Catalan) 2018-07-20 03:01:45 +09:00
syuilo c61616388e New translations ja.yml (Portuguese) 2018-07-20 03:01:43 +09:00
syuilo 499486f559 New translations ja.yml (Korean) 2018-07-20 03:01:40 +09:00
syuilo 179d231fd8 New translations ja.yml (Polish) 2018-07-20 03:01:38 +09:00
syuilo 2e4a391eda New translations ja.yml (Chinese Simplified) 2018-07-20 03:01:36 +09:00
syuilo 3d214fee4b New translations ja.yml (Italian) 2018-07-20 03:01:34 +09:00
syuilo 509a4c7955 New translations ja.yml (Russian) 2018-07-20 03:01:32 +09:00
syuilo c754046eaf New translations ja.yml (English) 2018-07-20 03:01:30 +09:00
syuilo 92571d9133 New translations ja.yml (Spanish) 2018-07-20 03:01:28 +09:00
syuilo add425abdb New translations ja.yml (German) 2018-07-20 03:01:26 +09:00
syuilo 1890d9e2ee New translations ja.yml (French) 2018-07-20 03:01:23 +09:00
syuilo 83f2926f0c 4.25.0 2018-07-20 02:55:27 +09:00
syuilo 738ced81ec 動画もNSFW 2018-07-20 02:53:32 +09:00
syuilo b22c1ae520 New translations ja.yml (English) 2018-07-20 02:53:19 +09:00
syuilo e2e7489b1f New translations ja.yml (Catalan) 2018-07-20 02:42:02 +09:00
syuilo 6ae7b8303d New translations ja.yml (Portuguese) 2018-07-20 02:42:00 +09:00
syuilo 55f40af51c New translations ja.yml (Korean) 2018-07-20 02:41:58 +09:00
syuilo 7a784cea3b New translations ja.yml (Polish) 2018-07-20 02:41:56 +09:00
syuilo f86cccec0c New translations ja.yml (Chinese Simplified) 2018-07-20 02:41:54 +09:00
syuilo 9d90a28d76 New translations ja.yml (Italian) 2018-07-20 02:41:52 +09:00
syuilo 1724cf7c17 New translations ja.yml (Russian) 2018-07-20 02:41:50 +09:00
syuilo d64d92ccf5 New translations ja.yml (English) 2018-07-20 02:41:48 +09:00
syuilo f64ced8677 New translations ja.yml (Spanish) 2018-07-20 02:41:46 +09:00
syuilo db1c0468aa New translations ja.yml (German) 2018-07-20 02:41:44 +09:00
syuilo 77c5d3276a New translations ja.yml (French) 2018-07-20 02:41:41 +09:00
syuilo ec2b1ec3f0 #1334 2018-07-20 02:40:37 +09:00
syuilo 85bf76dd98 4.24.1 2018-07-19 22:49:12 +09:00
syuilo bfa326af2c WIP: Support sharedInbox 2018-07-19 22:40:44 +09:00
syuilo 534c47935a chore: Update backers 2018-07-19 22:15:54 +09:00
syuilo 31a6f2b421 Clean up 2018-07-19 22:02:30 +09:00
Aya Morisawa 66c106722c Hide settings button
It is unimplemented
2018-07-19 16:40:40 +09:00
Aya Morisawa 9d0204f2fa Hide detail button
It is unimplemented
2018-07-19 16:21:22 +09:00
syuilo fceb0e2158 4.24.0 2018-07-19 11:55:11 +09:00
syuilo 14e7caaa5d Merge pull request #1926 from syuilo/greenkeeper/emojilib-2.3.0
Update emojilib to the latest version 🚀
2018-07-19 11:49:29 +09:00
syuilo 744e009690 #1927 2018-07-19 11:47:18 +09:00
syuilo 713dcd9083 #1921 2018-07-19 11:45:55 +09:00
Aya Morisawa e03ec67b5c Show error message if searching is not available 2018-07-19 08:24:03 +09:00
Aya Morisawa 7e27e2757f Hide delete button
It is unimplemented
2018-07-19 07:48:42 +09:00
Aya Morisawa f05c5ff617 Update gulpfile.ts 2018-07-19 06:53:46 +09:00
greenkeeper[bot] 1afb26f04a fix(package): update emojilib to version 2.3.0 2018-07-18 21:07:40 +00:00
syuilo 7873905cde 🎨 2018-07-19 04:50:46 +09:00
syuilo 41a9100477 Merge pull request #1925 from syuilo/greenkeeper/swagger-jsdoc-1.10.2
fix(package): update swagger-jsdoc to version 1.10.2
2018-07-19 04:19:34 +09:00
syuilo b8cc1eb993 Merge pull request #1922 from syuilo/greenkeeper/webpack-cli-3.1.0
Update webpack-cli to the latest version 🚀
2018-07-19 04:19:14 +09:00
greenkeeper[bot] adbbfd9dc2 fix(package): update swagger-jsdoc to version 1.10.2
Closes #1924
2018-07-18 18:38:00 +00:00
syuilo 84da99d56c 🎨 2018-07-19 03:25:37 +09:00
syuilo aaf8f09cfd Merge pull request #1923 from acid-chicken/master
Animate calender meters
2018-07-19 00:16:33 +09:00
Acid Chicken (硫酸鶏) 6da464fd1b Update calendar.vue 2018-07-19 00:13:58 +09:00
syuilo efaa41ba49 reCAPTCHAをオプションに 2018-07-19 00:04:09 +09:00
greenkeeper[bot] 67e8e1d819 fix(package): update webpack-cli to version 3.1.0 2018-07-18 15:01:30 +00:00
Aya Morisawa 532f8f8e4c Fix indent 2018-07-18 19:36:36 +09:00
Aya Morisawa 0109e8e57c Add white spaces 2018-07-18 19:24:31 +09:00
Aya Morisawa 6e720b2798 Hide drive search form
It is unimplemented
2018-07-18 19:13:41 +09:00
Aya Morisawa d3f2a97dd4 English for ISSUE_TEMPLATE
Close #1796
2018-07-18 17:41:28 +09:00
syuilo 9f7b04b0ec Merge pull request #1920 from syuilo/greenkeeper/vue-loader-15.2.6
Update vue-loader to the latest version 🚀
2018-07-18 14:28:54 +09:00
greenkeeper[bot] c4118c78b7 fix(package): update vue-loader to version 15.2.6 2018-07-18 03:41:17 +00:00
syuilo 84147c558f 4.23.1 2018-07-18 07:34:33 +09:00
syuilo 4cb51a2d32 Fix bugs 2018-07-18 07:34:17 +09:00
syuilo 4727780a3d 4.23.0 2018-07-18 07:20:25 +09:00
syuilo df20f5063d #1720 #59 2018-07-18 07:19:24 +09:00
syuilo d2a5f4c5c1 ✌️ 2018-07-18 06:53:31 +09:00
syuilo 64ba85aa9b 🎨 2018-07-18 06:13:54 +09:00
syuilo 51c33989fe Merge pull request #1919 from acid-chicken/master
Improve analog clock
2018-07-18 02:15:12 +09:00
Acid Chicken (硫酸鶏) 4713822122 Update analog-clock.vue 2018-07-18 02:06:01 +09:00
Acid Chicken (硫酸鶏) e10de62a7a Update analog-clock.vue 2018-07-18 02:04:07 +09:00
Acid Chicken (硫酸鶏) 14b235e3a4 Update analog-clock.vue 2018-07-18 02:02:52 +09:00
syuilo eb4aac3902 Merge pull request #1918 from acid-chicken/master
Minify
2018-07-18 01:47:38 +09:00
Acid Chicken (硫酸鶏) 180bf33a28 Update calendar.vue 2018-07-18 01:46:21 +09:00
syuilo 935a254c97 4.22.1 2018-07-18 01:22:25 +09:00
syuilo 3c678f0e92 Fix bug 2018-07-18 01:22:11 +09:00
syuilo a053e1c1de 4.22.0 2018-07-18 01:03:24 +09:00
syuilo b8fa1751ba Merge pull request #1911 from syuilo/l10n_master
New Crowdin translations
2018-07-18 01:02:15 +09:00
syuilo c4243d54a9 New translations ja.yml (English) 2018-07-18 01:01:49 +09:00
syuilo 1767f54fed 🎨 2018-07-18 00:55:33 +09:00
syuilo 7e465cdbbe New translations ja.yml (Catalan) 2018-07-18 00:52:04 +09:00
syuilo 47f67fcba9 New translations ja.yml (Portuguese) 2018-07-18 00:52:02 +09:00
syuilo 3fff20fb13 New translations ja.yml (Korean) 2018-07-18 00:52:00 +09:00
syuilo 06a2d87129 New translations ja.yml (Polish) 2018-07-18 00:51:58 +09:00
syuilo a8076e306a New translations ja.yml (Chinese Simplified) 2018-07-18 00:51:56 +09:00
syuilo 05e5829260 New translations ja.yml (Italian) 2018-07-18 00:51:54 +09:00
syuilo 5a91416f34 New translations ja.yml (Russian) 2018-07-18 00:51:52 +09:00
syuilo 70db1d0066 New translations ja.yml (English) 2018-07-18 00:51:50 +09:00
syuilo 26c936d19e New translations ja.yml (Spanish) 2018-07-18 00:51:48 +09:00
syuilo 3b0ae3f80d New translations ja.yml (German) 2018-07-18 00:51:46 +09:00
syuilo 2570d85543 New translations ja.yml (French) 2018-07-18 00:51:44 +09:00
syuilo b274c4160e Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-18 00:47:11 +09:00
syuilo f9d5d9e30b Improve doc 2018-07-18 00:47:09 +09:00
syuilo 8cdf5ff6df New translations ja.yml (Polish) 2018-07-18 00:42:22 +09:00
syuilo 409ebf6e14 Merge pull request #1917 from syuilo/greenkeeper/vue-loader-15.2.5
Update vue-loader to the latest version 🚀
2018-07-18 00:22:41 +09:00
greenkeeper[bot] a3d34ba919 fix(package): update vue-loader to version 15.2.5 2018-07-17 15:08:22 +00:00
syuilo 242bb1a428 New translations ja.yml (English) 2018-07-17 19:01:46 +09:00
syuilo 4a25ed0627 ✌️ 2018-07-17 18:50:13 +09:00
syuilo f65fbf9d55 Merge pull request #1916 from acid-chicken/acid-chicken-patch-1
Proposal: Smooth Clock
2018-07-17 18:45:21 +09:00
Acid Chicken (硫酸鶏) 6169acd478 Update analog-clock.vue 2018-07-17 18:43:04 +09:00
syuilo 481f1a7c36 4.21.0 2018-07-17 04:37:23 +09:00
syuilo 16726789da Update api definitions 2018-07-17 04:36:44 +09:00
syuilo e71f650ade New translations ja.yml (Catalan) 2018-07-17 04:01:52 +09:00
syuilo e8a7f571e1 New translations ja.yml (Portuguese) 2018-07-17 04:01:49 +09:00
syuilo 3117c8a98f New translations ja.yml (Korean) 2018-07-17 04:01:47 +09:00
syuilo 90b845f3db New translations ja.yml (Polish) 2018-07-17 04:01:45 +09:00
syuilo f5dd972e38 New translations ja.yml (Chinese Simplified) 2018-07-17 04:01:43 +09:00
syuilo 4b210e1a6a New translations ja.yml (Italian) 2018-07-17 04:01:41 +09:00
syuilo 1a7eb3c1df New translations ja.yml (Russian) 2018-07-17 04:01:38 +09:00
syuilo 52f84d8603 New translations ja.yml (English) 2018-07-17 04:01:37 +09:00
syuilo f92d218c0c New translations ja.yml (Spanish) 2018-07-17 04:01:35 +09:00
syuilo 81c5ece8a9 New translations ja.yml (German) 2018-07-17 04:01:32 +09:00
syuilo a97bc38f3e New translations ja.yml (French) 2018-07-17 04:01:30 +09:00
syuilo aacfb5e221 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-17 03:57:42 +09:00
syuilo f88ac3c04e Improve doc 2018-07-17 03:57:34 +09:00
syuilo 1fb53acc46 Merge pull request #1914 from syuilo/greenkeeper/@types/webpack-4.4.7
Update @types/webpack to the latest version 🚀
2018-07-17 03:32:07 +09:00
greenkeeper[bot] ae3b0d5437 fix(package): update @types/webpack to version 4.4.7 2018-07-16 18:29:21 +00:00
syuilo f9b2da1bb0 🎨 2018-07-17 03:21:25 +09:00
syuilo d0bea052ad 🎨 2018-07-17 03:16:21 +09:00
syuilo c012faa958 New translations ja.yml (English) 2018-07-17 01:37:35 +09:00
syuilo c8cfd1ee65 New translations ja.yml (English) 2018-07-17 01:21:15 +09:00
syuilo e8da0bcd80 Improve doc 2018-07-17 01:11:36 +09:00
syuilo 591ff9095a New translations ja.yml (Catalan) 2018-07-17 00:51:59 +09:00
syuilo 6df91d3078 New translations ja.yml (Portuguese) 2018-07-17 00:51:57 +09:00
syuilo 288c14efce New translations ja.yml (Korean) 2018-07-17 00:51:56 +09:00
syuilo ee8d636ca8 New translations ja.yml (Polish) 2018-07-17 00:51:54 +09:00
syuilo a3ceecae91 New translations ja.yml (Chinese Simplified) 2018-07-17 00:51:52 +09:00
syuilo 5ad89a3b3d New translations ja.yml (Italian) 2018-07-17 00:51:50 +09:00
syuilo e1089cc18d New translations ja.yml (Russian) 2018-07-17 00:51:48 +09:00
syuilo f9e780187c New translations ja.yml (English) 2018-07-17 00:51:46 +09:00
syuilo 42cbe96a14 New translations ja.yml (Spanish) 2018-07-17 00:51:44 +09:00
syuilo 1f23b11dcc New translations ja.yml (German) 2018-07-17 00:51:42 +09:00
syuilo ad3b4bbd58 New translations ja.yml (French) 2018-07-17 00:51:40 +09:00
syuilo 455f4ffa27 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-17 00:46:32 +09:00
syuilo 1d867b8aca Improve doc 2018-07-17 00:46:06 +09:00
syuilo 1f9c18e615 Merge pull request #1912 from syuilo/greenkeeper/webpack-4.16.1
Update webpack to the latest version 🚀
2018-07-16 23:50:43 +09:00
syuilo 5bf439851d New translations ja.yml (English) 2018-07-16 19:02:16 +09:00
syuilo 9df3f99a1c New translations ja.yml (English) 2018-07-16 18:42:49 +09:00
syuilo f41232703b New translations ja.yml (Polish) 2018-07-16 18:32:12 +09:00
greenkeeper[bot] abc4e53943 fix(package): update webpack to version 4.16.1 2018-07-16 08:30:40 +00:00
syuilo f846508fc1 New translations ja.yml (Catalan) 2018-07-16 08:01:15 +09:00
syuilo 7343003287 New translations ja.yml (Portuguese) 2018-07-16 08:01:13 +09:00
syuilo 25ca3d610b New translations ja.yml (Korean) 2018-07-16 08:01:11 +09:00
syuilo 9d286786d4 New translations ja.yml (Polish) 2018-07-16 08:01:09 +09:00
syuilo 91037ebdd6 New translations ja.yml (Chinese Simplified) 2018-07-16 08:01:06 +09:00
syuilo 26b2eafea0 New translations ja.yml (Italian) 2018-07-16 08:01:04 +09:00
syuilo 432beedd94 New translations ja.yml (Russian) 2018-07-16 08:01:02 +09:00
syuilo 3a919bab45 New translations ja.yml (English) 2018-07-16 08:01:00 +09:00
syuilo 11af9b808d New translations ja.yml (Spanish) 2018-07-16 08:00:58 +09:00
syuilo af35335772 New translations ja.yml (German) 2018-07-16 08:00:57 +09:00
syuilo 7b9047cc82 New translations ja.yml (French) 2018-07-16 08:00:55 +09:00
こぴなたみぽ 4cad36572c Improve doc 2018-07-16 07:54:08 +09:00
こぴなたみぽ b5625a4550 Fix 2018-07-16 06:58:45 +09:00
syuilo ec41d8053c New translations ja.yml (Catalan) 2018-07-16 06:21:12 +09:00
syuilo 284cfe6989 New translations ja.yml (Portuguese) 2018-07-16 06:21:11 +09:00
syuilo ad8f363c5d New translations ja.yml (Korean) 2018-07-16 06:21:09 +09:00
syuilo 3d3cf73c30 New translations ja.yml (Polish) 2018-07-16 06:21:06 +09:00
syuilo fd9bd28361 New translations ja.yml (Chinese Simplified) 2018-07-16 06:21:04 +09:00
syuilo d2919dece0 New translations ja.yml (Italian) 2018-07-16 06:21:02 +09:00
syuilo a86442bff7 New translations ja.yml (Russian) 2018-07-16 06:21:00 +09:00
syuilo 4b915d43cf New translations ja.yml (English) 2018-07-16 06:20:58 +09:00
syuilo b20c3d84a6 New translations ja.yml (Spanish) 2018-07-16 06:20:56 +09:00
syuilo d2bbf5ffc4 New translations ja.yml (German) 2018-07-16 06:20:55 +09:00
syuilo 4ef9411f35 New translations ja.yml (French) 2018-07-16 06:20:52 +09:00
syuilo 168d13d6e6 Improve docs 2018-07-16 06:19:19 +09:00
syuilo 1e921a9fd5 Update docs 2018-07-16 05:47:41 +09:00
syuilo 9e438ed674 🎨 2018-07-16 03:55:42 +09:00
syuilo 3a02a7dad8 良い感じに 2018-07-16 03:53:03 +09:00
syuilo 1744316656 良い感じに 2018-07-16 03:43:36 +09:00
syuilo 1e4a86da8e 良い感じに 2018-07-16 03:25:35 +09:00
syuilo 2b31b6a6b0 Add doc 2018-07-16 02:26:54 +09:00
syuilo c7a3f40eba Add README 2018-07-15 22:30:27 +09:00
syuilo 8b9710df9f Add doc 2018-07-15 22:18:47 +09:00
syuilo ce6f750fa5 Improve docs 2018-07-15 22:00:05 +09:00
syuilo 468eb02ff3 Set title of a doc 2018-07-15 21:48:57 +09:00
syuilo dfca7f1340 Fix bug 2018-07-15 19:38:06 +09:00
syuilo 7bfa56d199 Fix bug 2018-07-15 19:35:20 +09:00
syuilo c579cbdf10 Fix bug 2018-07-15 19:29:15 +09:00
syuilo 0b3609c775 4.20.0 2018-07-15 19:06:27 +09:00
syuilo be52eb9b3f API doc 2018-07-15 19:05:19 +09:00
syuilo 5f5156561f ドキュメントをMarkdownで書くように 2018-07-15 18:28:08 +09:00
syuilo d47f92f396 グローバルタイムラインに返信を含めないように 2018-07-15 17:50:24 +09:00
syuilo 2a30bc9a56 Merge pull request #1908 from syuilo/greenkeeper/eslint-plugin-vue-4.7.0
Update eslint-plugin-vue to the latest version 🚀
2018-07-15 14:41:17 +09:00
syuilo a427b7a1af Doc: Add "Clean up unused drive files" section 2018-07-15 14:35:22 +09:00
syuilo 05d5e70c58 Doc: Add "Clean up cached remote files" section 2018-07-15 14:29:30 +09:00
syuilo 62858caaa4 Update manage odc 2018-07-15 14:27:25 +09:00
syuilo b9b48a55ef Update doc 2018-07-15 14:20:30 +09:00
Aya Morisawa 7276ec185b Update setup docs 2018-07-15 09:43:16 +09:00
Skid e063ac10c5 Create manage.en.md 2018-07-15 09:25:01 +09:00
Skid eca9a7ea13 Update setup.en.md 2018-07-15 09:25:01 +09:00
greenkeeper[bot] 86d9a72bbf fix(package): update eslint-plugin-vue to version 4.7.0 2018-07-14 20:30:01 +00:00
syuilo 073707b2d0 Better default value 2018-07-15 02:29:50 +09:00
syuilo b971fbaac6 Fix 2018-07-15 02:23:22 +09:00
syuilo 86795f1091 Add optional Elasticsearch setting 2018-07-15 02:22:02 +09:00
syuilo 5b9dd4fb80 Update example.yml 2018-07-15 02:17:45 +09:00
syuilo 5ff31e197b Update example.yml 2018-07-15 02:16:35 +09:00
syuilo 0bd5e64b86 Update example.yml 2018-07-15 02:15:45 +09:00
syuilo 3089b56f70 Update example.yml 2018-07-15 02:11:56 +09:00
syuilo 46bf0eae40 Update example.yml 2018-07-15 02:11:17 +09:00
syuilo 97f411130f Update example.yml 2018-07-15 02:09:55 +09:00
Aya Morisawa b9ce7bc99d Update package.json 2018-07-15 02:08:22 +09:00
syuilo 9d3ecda43d Merge pull request #1907 from syuilo/patch-1
Revert "Update example.yml"
2018-07-15 02:02:51 +09:00
Aya Morisawa 8356f6d128 Revert "Update example.yml"
This reverts commit 7ab9d01bac.
2018-07-15 02:01:33 +09:00
Aya Morisawa 05a084dadf Merge branch 'master' of aya.github:syuilo/misskey 2018-07-15 01:59:38 +09:00
Aya Morisawa f338fa552e Not cast to any 2018-07-15 01:59:24 +09:00
syuilo 7ab9d01bac Update example.yml 2018-07-15 01:58:08 +09:00
Aya Morisawa 5b0aaf66eb Update log message 2018-07-15 01:57:22 +09:00
syuilo 6a4e92a999 #1903 2018-07-15 01:56:31 +09:00
syuilo 0a4b652493 Darken
Co-Authored-By: tamaina <tamaina@hotmail.co.jp>
2018-07-15 01:49:36 +09:00
syuilo eebc1af672 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-15 01:48:09 +09:00
syuilo 41fa045999 Darken
Co-Authored-By: tamaina <tamaina@hotmail.co.jp>
2018-07-15 01:48:06 +09:00
Aya Morisawa 4b52c89a75 Update package.json 2018-07-15 01:42:14 +09:00
syuilo 28dcf8bc1e Revert "Update messaging-room.vue"
This reverts commit 313afbd6db.
2018-07-15 01:07:17 +09:00
syuilo 5af469282a Merge pull request #1906 from syuilo/imgbot
[ImgBot] optimizes images
2018-07-14 23:22:45 +09:00
ImgBotApp 4c58dc61bc [ImgBot] optimizes images
*Total -- 887.85kb -> 803.26kb (9.53%)

/src/client/app/desktop/assets/remove.png -- 3.04kb -> 0.41kb (86.39%)
/src/server/file/assets/bad-egg.png -- 4.67kb -> 1.64kb (64.96%)
/src/server/file/assets/cache-expired.png -- 14.67kb -> 5.91kb (59.75%)
/test/resources/Lenna.jpg -- 52.22kb -> 24.77kb (52.57%)
/assets/apple-touch-icon.png -- 4.71kb -> 2.46kb (47.82%)
/assets/icons/256.png -- 4.71kb -> 2.46kb (47.82%)
/assets/favicon/favicon.png -- 6.81kb -> 3.91kb (42.57%)
/assets/title.png -- 6.62kb -> 3.80kb (42.56%)
/src/server/file/assets/not-an-image.png -- 4.60kb -> 2.71kb (40.99%)
/src/server/file/assets/thumbnail-not-available.png -- 8.62kb -> 5.57kb (35.33%)
/src/client/assets/reactions/angry.png -- 5.74kb -> 4.50kb (21.6%)
/src/server/file/assets/tombstone.png -- 6.24kb -> 4.91kb (21.28%)
/src/client/assets/reactions/surprise.png -- 4.59kb -> 3.72kb (18.99%)
/assets/icons/128.png -- 3.07kb -> 2.49kb (18.74%)
/assets/icons/192.png -- 4.56kb -> 3.80kb (16.65%)
/src/client/assets/reactions/confused.png -- 7.08kb -> 5.92kb (16.5%)
/src/client/assets/reactions/love.png -- 3.26kb -> 2.74kb (16.07%)
/src/client/assets/reactions/laugh.png -- 7.74kb -> 6.77kb (12.47%)
/src/client/assets/reactions/hmm.png -- 6.47kb -> 5.74kb (11.38%)
/src/client/assets/reactions/congrats.png -- 10.39kb -> 9.77kb (6.04%)
/src/client/assets/pointer.png -- 246.93kb -> 232.06kb (6.02%)
/src/client/assets/error.jpg -- 55.53kb -> 52.84kb (4.84%)
/assets/icons/64.png -- 1.30kb -> 1.24kb (4.66%)
/src/server/file/assets/avatar.jpg -- 1.29kb -> 1.23kb (4.61%)
/src/client/assets/reactions/pudding.png -- 7.47kb -> 7.42kb (0.74%)
/src/client/assets/reactions/like.png -- 4.72kb -> 4.71kb (0.27%)
/src/client/app/desktop/assets/index.jpg -- 400.79kb -> 399.78kb (0.25%)
2018-07-14 14:20:36 +00:00
syuilo c4bf80c262 Update example.yml 2018-07-14 23:20:30 +09:00
Aya Morisawa e485e8936f Update example config 2018-07-14 23:14:24 +09:00
Aya Morisawa e495e0d2e6 Update config example 2018-07-14 23:07:59 +09:00
Aya Morisawa 3695e6db15 Update config example 2018-07-14 23:06:46 +09:00
syuilo ac7df96f68 Update example.yml
Update some default values
2018-07-14 23:03:20 +09:00
Aya Morisawa cf17a39446 Update setup.*.md 2018-07-14 22:56:54 +09:00
Aya Morisawa 87cc5f790c Update log messages 2018-07-14 22:53:30 +09:00
Aya Morisawa b03987290c Update config example 2018-07-14 22:42:44 +09:00
Aya Morisawa 1f4969547b Update log message 2018-07-14 22:23:43 +09:00
Aya Morisawa d12d201ef4 Update logger 2018-07-14 22:14:56 +09:00
Aya Morisawa c91a4c9da1 Update log messages 2018-07-14 22:10:27 +09:00
Aya Morisawa 1213e95ddd Merge branch 'master' of aya.github:syuilo/misskey 2018-07-14 22:10:14 +09:00
syuilo 90a836d587 Merge pull request #1905 from syuilo/l10n_master
New Crowdin translations
2018-07-14 22:07:41 +09:00
syuilo 973c2ebafd Merge pull request #1904 from syuilo/greenkeeper/eslint-plugin-vue-4.6.0
Update eslint-plugin-vue to the latest version 🚀
2018-07-14 22:07:24 +09:00
Aya Morisawa 24f52aee46 Update log messages 2018-07-14 22:05:19 +09:00
Aya Morisawa 4d2c0e4161 Update dependency checking for ImageMagick 2018-07-14 21:59:15 +09:00
syuilo b687546fcd New translations ja.yml (English) 2018-07-14 21:41:01 +09:00
Aya Morisawa 3c701aaf86 Update log messages 2018-07-14 21:03:09 +09:00
Aya Morisawa d50e99c17b Update log messages 2018-07-14 20:58:21 +09:00
greenkeeper[bot] 41d5e0ab24 fix(package): update eslint-plugin-vue to version 4.6.0 2018-07-14 11:39:54 +00:00
Aya Morisawa c99e864dbc 2018-07-14 19:49:21 +09:00
syuilo f39adfdf87 Update create.ts 2018-07-14 19:40:23 +09:00
syuilo 0d1ffb581f 4.19.1 2018-07-14 13:49:31 +09:00
syuilo 4add44f3bd Update create.ts 2018-07-14 13:47:36 +09:00
syuilo baae9f6f39 Merge pull request #1900 from syuilo/l10n_master
New Crowdin translations
2018-07-14 12:02:44 +09:00
syuilo 0a9958f45f New translations ja.yml (English) 2018-07-14 12:00:50 +09:00
syuilo 7e5d25cf2c 4.19.0 2018-07-14 11:58:54 +09:00
syuilo 9666e6b4d3 #1894 2018-07-14 11:58:21 +09:00
syuilo c937cb94f9 Clean up 2018-07-14 11:55:36 +09:00
syuilo 5e54d093f5 New translations ja.yml (Catalan) 2018-07-14 11:51:12 +09:00
syuilo c7f099276e New translations ja.yml (Portuguese) 2018-07-14 11:51:10 +09:00
syuilo ee4235ba71 New translations ja.yml (Korean) 2018-07-14 11:51:08 +09:00
syuilo 71066d69fb New translations ja.yml (Polish) 2018-07-14 11:51:06 +09:00
syuilo 4581376198 New translations ja.yml (Chinese Simplified) 2018-07-14 11:51:04 +09:00
syuilo 04ebde62bc New translations ja.yml (Italian) 2018-07-14 11:51:02 +09:00
syuilo fec47f05cf New translations ja.yml (Russian) 2018-07-14 11:51:00 +09:00
syuilo b9e2fb74ed New translations ja.yml (English) 2018-07-14 11:50:58 +09:00
syuilo a1d6637dd1 New translations ja.yml (Spanish) 2018-07-14 11:50:57 +09:00
syuilo e6fa5a07ce New translations ja.yml (German) 2018-07-14 11:50:55 +09:00
syuilo eec6226c8d New translations ja.yml (French) 2018-07-14 11:50:53 +09:00
syuilo 356fe8180e 4.18.0 2018-07-14 11:44:12 +09:00
syuilo 30c120596a social 2018-07-14 11:43:39 +09:00
syuilo c6e330ea8d Merge pull request #1898 from syuilo/greenkeeper/@types/webpack-4.4.6
Update @types/webpack to the latest version 🚀
2018-07-14 11:02:16 +09:00
syuilo dca55d12ac Merge pull request #1897 from syuilo/greenkeeper/@types/elasticsearch-5.0.25
Update @types/elasticsearch to the latest version 🚀
2018-07-14 11:02:07 +09:00
greenkeeper[bot] 4426da6233 fix(package): update @types/webpack to version 4.4.6 2018-07-14 01:55:05 +00:00
greenkeeper[bot] 381fe2f436 fix(package): update @types/elasticsearch to version 5.0.25 2018-07-14 01:05:31 +00:00
Aya Morisawa 28cd7a67de Update log message 2018-07-14 00:41:33 +09:00
Aya Morisawa 97f75cea52 Merge branch 'master' of aya.github:syuilo/misskey 2018-07-14 00:39:50 +09:00
Aya Morisawa 5e788f0da4 Kill child process on exit 2018-07-14 00:39:39 +09:00
Aya Morisawa 1fc9d034d0 Update log message 2018-07-14 00:39:11 +09:00
syuilo dc8f14c23a Fix #1887 2018-07-14 00:36:39 +09:00
syuilo e9717da916 Merge pull request #1880 from syuilo/l10n_master
New Crowdin translations
2018-07-14 00:34:41 +09:00
syuilo 73c328f90b Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-14 00:34:08 +09:00
syuilo 25a6f7041a Fix bug 2018-07-14 00:34:05 +09:00
syuilo ff278c8bea New translations ja.yml (English) 2018-07-14 00:22:08 +09:00
Aya Morisawa 35dd6a5ac3 Merge branch 'master' of aya.github:syuilo/misskey 2018-07-14 00:05:56 +09:00
Aya Morisawa 98ea238087 Add missing semicolon 2018-07-14 00:05:49 +09:00
syuilo 3830b0d831 New translations ja.yml (Catalan) 2018-07-14 00:01:40 +09:00
syuilo b6de5a2268 New translations ja.yml (Portuguese) 2018-07-14 00:01:37 +09:00
syuilo 77327c7a40 New translations ja.yml (Korean) 2018-07-14 00:01:36 +09:00
syuilo 26664a8351 New translations ja.yml (Polish) 2018-07-14 00:01:34 +09:00
syuilo 912964104b New translations ja.yml (Chinese Simplified) 2018-07-14 00:01:32 +09:00
syuilo 63653ccb01 New translations ja.yml (Italian) 2018-07-14 00:01:29 +09:00
syuilo 5df54700b8 New translations ja.yml (Russian) 2018-07-14 00:01:27 +09:00
syuilo f952dde1d4 New translations ja.yml (English) 2018-07-14 00:01:25 +09:00
syuilo 2c0aac5eed New translations ja.yml (Spanish) 2018-07-14 00:01:24 +09:00
syuilo 4e3a2c4bb8 New translations ja.yml (German) 2018-07-14 00:01:22 +09:00
syuilo 17ccfcfb53 New translations ja.yml (French) 2018-07-14 00:01:19 +09:00
syuilo f2959ada85 Revert "Update messaging-room.message.vue"
This reverts commit 7b3f52505e.
2018-07-14 00:00:30 +09:00
syuilo e427c12ac2 Hybrid --> Community 2018-07-13 23:56:24 +09:00
Aya Morisawa 874837666c Update error message 2018-07-13 23:52:28 +09:00
Aya Morisawa c66532d18f Update logger 2018-07-13 23:51:16 +09:00
syuilo 2bc572b4cc アカウントを凍結されていたらAPIにアクセスできないようにした 2018-07-13 23:44:45 +09:00
syuilo 2db01f3d5c Clean up 2018-07-13 23:39:20 +09:00
Aya Morisawa a0a116b7bf Merge branch 'master' of aya.github:syuilo/misskey 2018-07-13 23:25:49 +09:00
Aya Morisawa aec7d53414 Fix port cehcking 2018-07-13 23:25:32 +09:00
syuilo 09416c9893 Merge pull request #1892 from PRB0t/pr-201807131656
Fix a bug
2018-07-13 23:20:40 +09:00
PRB0t 0e7fe670aa 🤖 Fix a bug 2018-07-13 16:17:02 +02:00
Aya Morisawa bd805f1d88 Update log message 2018-07-13 23:05:37 +09:00
syuilo b984aecaf2 Merge pull request #1891 from syuilo/greenkeeper/html-minifier-3.5.19
Update html-minifier to the latest version 🚀
2018-07-13 21:32:55 +09:00
syuilo 56efffffa3 Merge pull request #1890 from syuilo/greenkeeper/element-ui-2.4.4
Update element-ui to the latest version 🚀
2018-07-13 21:32:39 +09:00
greenkeeper[bot] 2f92be1da0 fix(package): update html-minifier to version 3.5.19 2018-07-13 09:03:40 +00:00
greenkeeper[bot] baa52921a0 fix(package): update element-ui to version 2.4.4 2018-07-13 08:44:59 +00:00
syuilo 20e0c44f9a Merge pull request #1888 from syuilo/greenkeeper/hard-source-webpack-plugin-0.11.1
Update hard-source-webpack-plugin to the latest version 🚀
2018-07-13 13:53:13 +09:00
greenkeeper[bot] ebc83c8f60 fix(package): update hard-source-webpack-plugin to version 0.11.1 2018-07-12 18:52:13 +00:00
syuilo 2d48d9fd87 Merge pull request #1885 from syuilo/greenkeeper/ws-5.2.2
Update ws to the latest version 🚀
2018-07-12 05:14:38 +09:00
greenkeeper[bot] 5eb06a3a52 fix(package): update ws to version 5.2.2 2018-07-11 20:01:29 +00:00
syuilo 9917a1c7e1 New translations ja.yml (English) 2018-07-12 01:21:24 +09:00
syuilo e9c886e871 Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-12 00:00:06 +09:00
syuilo 0074f8da1b Improve log 2018-07-11 23:59:57 +09:00
syuilo 1c98b51e6a Merge pull request #1882 from syuilo/greenkeeper/@koa/cors-2.2.2
Update @koa/cors to the latest version 🚀
2018-07-11 23:42:40 +09:00
syuilo 837bdb1b43 Merge pull request #1881 from syuilo/greenkeeper/webpack-4.16.0
Update webpack to the latest version 🚀
2018-07-11 23:16:31 +09:00
greenkeeper[bot] 48e034be0e fix(package): update @koa/cors to version 2.2.2 2018-07-11 12:50:56 +00:00
greenkeeper[bot] b067162ce6 fix(package): update webpack to version 4.16.0 2018-07-11 08:52:17 +00:00
syuilo db42d5b065 4.17.1 2018-07-11 14:33:16 +09:00
syuilo c41ccf7821 Fix bug 2018-07-11 14:33:03 +09:00
syuilo f5fd523ca7 Fix bug 2018-07-11 14:19:55 +09:00
syuilo 5f9482e7d5 New translations ja.yml (Catalan) 2018-07-11 14:11:26 +09:00
syuilo bb98ee27a1 New translations ja.yml (Portuguese) 2018-07-11 14:11:24 +09:00
syuilo 3506dd3656 New translations ja.yml (Korean) 2018-07-11 14:11:22 +09:00
syuilo 88d0b09c88 New translations ja.yml (Polish) 2018-07-11 14:11:20 +09:00
syuilo 25b88f89a6 New translations ja.yml (Chinese Simplified) 2018-07-11 14:11:18 +09:00
syuilo 85343b80b7 New translations ja.yml (Italian) 2018-07-11 14:11:16 +09:00
syuilo 6766fbdfb3 New translations ja.yml (Russian) 2018-07-11 14:11:14 +09:00
syuilo c488fca2f2 New translations ja.yml (English) 2018-07-11 14:11:12 +09:00
syuilo ea51460169 New translations ja.yml (Spanish) 2018-07-11 14:11:10 +09:00
syuilo 80e7af30d0 New translations ja.yml (German) 2018-07-11 14:11:08 +09:00
syuilo 8f20edaed0 New translations ja.yml (French) 2018-07-11 14:11:06 +09:00
syuilo 4d7b2d7215 4.17.0 2018-07-11 14:10:01 +09:00
syuilo d0993a8988 Merge pull request #1856 from syuilo/l10n_master
New Crowdin translations
2018-07-11 14:09:25 +09:00
syuilo b68af344cb oops 2018-07-11 14:08:18 +09:00
syuilo 58fdeb50f3 Merge pull request #1879 from syuilo/hybrid-tl
Hybrid tl
2018-07-11 14:06:07 +09:00
syuilo 1af3c42001 wip 2018-07-11 14:03:21 +09:00
syuilo 8ef066adda Merge branch 'master' into hybrid-tl 2018-07-11 13:50:52 +09:00
syuilo 5cc7fa8e8b oops 2018-07-11 13:50:37 +09:00
syuilo fc998ac57c Merge branch 'master' into hybrid-tl 2018-07-11 13:49:18 +09:00
syuilo 9e4fe16f56 oops 2018-07-11 13:49:06 +09:00
syuilo 0cc00101dc Merge branch 'master' into hybrid-tl 2018-07-11 13:47:26 +09:00
syuilo 227cfd6e2f Refactor 2018-07-11 13:47:01 +09:00
syuilo 876f659847 Fix 2018-07-11 13:43:40 +09:00
syuilo 555501d534 wip 2018-07-11 13:43:09 +09:00
syuilo eb392b1251 wip 2018-07-11 09:36:30 +09:00
syuilo e32bf34830 Update call.ts 2018-07-10 22:07:24 +09:00
syuilo 94ff21649d Merge pull request #1877 from syuilo/greenkeeper/@types/koa-bodyparser-5.0.1
Update @types/koa-bodyparser to the latest version 🚀
2018-07-10 14:39:24 +09:00
greenkeeper[bot] 35ff0ab2b6 fix(package): update @types/koa-bodyparser to version 5.0.1 2018-07-10 01:34:50 +00:00
syuilo c3e3007cd5 New translations ja.yml (Polish) 2018-07-10 07:01:35 +09:00
syuilo fadc80166b Merge pull request #1875 from tamaina/master
Improve Messaging
2018-07-09 21:24:59 +09:00
syuilo 9201b5318b Refactoring 2018-07-09 21:15:49 +09:00
syuilo c94a9671a2 New translations ja.yml (English) 2018-07-09 04:00:56 +09:00
tamaina 7b3f52505e Update messaging-room.message.vue 2018-07-08 23:45:16 +09:00
tamaina 313afbd6db Update messaging-room.vue 2018-07-08 23:41:09 +09:00
syuilo 0c4f02f288 New translations ja.yml (Catalan) 2018-07-08 20:21:31 +09:00
syuilo b2d33fba66 New translations ja.yml (Portuguese) 2018-07-08 20:21:30 +09:00
syuilo a673393db5 New translations ja.yml (Korean) 2018-07-08 20:21:28 +09:00
syuilo 9f55d4057d New translations ja.yml (Polish) 2018-07-08 20:21:26 +09:00
syuilo c00a58fc06 New translations ja.yml (Chinese Simplified) 2018-07-08 20:21:25 +09:00
syuilo f49db22311 New translations ja.yml (Italian) 2018-07-08 20:21:23 +09:00
syuilo 204f43e717 New translations ja.yml (Russian) 2018-07-08 20:21:21 +09:00
syuilo 77a8894ced New translations ja.yml (English) 2018-07-08 20:21:19 +09:00
syuilo f85122b141 New translations ja.yml (Spanish) 2018-07-08 20:21:17 +09:00
syuilo 0cd07cd605 New translations ja.yml (German) 2018-07-08 20:21:15 +09:00
syuilo eb8604f926 New translations ja.yml (French) 2018-07-08 20:21:13 +09:00
Aya Morisawa 8b3cb850a5 Add locales 2018-07-08 20:20:28 +09:00
Aya Morisawa 48d1b9444c Fix typo 2018-07-08 20:15:10 +09:00
syuilo fda0a991a2 New translations ja.yml (Catalan) 2018-07-08 20:11:39 +09:00
syuilo bb61bd0c96 New translations ja.yml (Portuguese) 2018-07-08 20:11:37 +09:00
syuilo 10e89e656a New translations ja.yml (Korean) 2018-07-08 20:11:35 +09:00
syuilo 741756d114 New translations ja.yml (Polish) 2018-07-08 20:11:34 +09:00
syuilo 4f36ff0233 New translations ja.yml (Chinese Simplified) 2018-07-08 20:11:32 +09:00
syuilo 5be69edf2e New translations ja.yml (Italian) 2018-07-08 20:11:30 +09:00
syuilo 730cdceab1 New translations ja.yml (Russian) 2018-07-08 20:11:28 +09:00
syuilo fa0600afe0 New translations ja.yml (English) 2018-07-08 20:11:26 +09:00
syuilo fc7db7f23c New translations ja.yml (Spanish) 2018-07-08 20:11:25 +09:00
syuilo e09429f932 New translations ja.yml (German) 2018-07-08 20:11:23 +09:00
syuilo 947cd32e85 New translations ja.yml (French) 2018-07-08 20:11:21 +09:00
Aya Morisawa 65a3c7dae4 Merge branch 'master' of aya.github:syuilo/misskey 2018-07-08 20:04:35 +09:00
Aya Morisawa 0374f58a11 Add locales 2018-07-08 20:01:59 +09:00
syuilo a7ff8678b5 Merge pull request #1871 from mei23/mei-apreq3
フォロー申請結果とフォロー申請解除の処理の修正
2018-07-08 19:30:56 +09:00
syuilo b85ae2f77f Merge pull request #1863 from syuilo/greenkeeper/file-type-8.1.0
Update file-type to the latest version 🚀
2018-07-08 17:54:12 +09:00
syuilo 9f93353519 Merge pull request #1862 from syuilo/greenkeeper/node-sass-4.9.2
Update node-sass to the latest version 🚀
2018-07-08 17:53:58 +09:00
syuilo 37935ed467 Merge pull request #1865 from syuilo/greenkeeper/hard-source-webpack-plugin-0.11.0
fix(package): update hard-source-webpack-plugin to version 0.11.0
2018-07-08 17:53:34 +09:00
mei23 8ed9e44a78 Fix can't process cancel of follow request from remote 2018-07-08 17:22:18 +09:00
mei23 a796a68e8a Fix can't process follow accept/reject from remote 2018-07-08 17:22:11 +09:00
greenkeeper[bot] f2b467c5e7 fix(package): update file-type to version 8.1.0 2018-07-08 07:49:21 +00:00
greenkeeper[bot] 21d22b60b4 fix(package): update node-sass to version 4.9.2 2018-07-08 06:42:43 +00:00
greenkeeper[bot] f76d204e09 fix(package): update hard-source-webpack-plugin to version 0.11.0
Closes #1861
2018-07-07 23:45:26 +00:00
syuilo 6775d4da9b New translations ja.yml (English) 2018-07-08 08:01:14 +09:00
syuilo 0264430831 New translations ja.yml (English) 2018-07-08 07:51:11 +09:00
Aya Morisawa 76c1077b8e Fix typo 2018-07-08 05:28:14 +09:00
syuilo 6efb4eeb6e New translations ja.yml (Catalan) 2018-07-08 05:01:29 +09:00
syuilo f7eb7322fb New translations ja.yml (Portuguese) 2018-07-08 05:01:27 +09:00
syuilo cf8b8bad01 New translations ja.yml (Korean) 2018-07-08 05:01:25 +09:00
syuilo 07fc3360b6 New translations ja.yml (Polish) 2018-07-08 05:01:23 +09:00
syuilo 61f57e3f53 New translations ja.yml (Chinese Simplified) 2018-07-08 05:01:21 +09:00
syuilo cd8696076e New translations ja.yml (Italian) 2018-07-08 05:01:19 +09:00
syuilo fb45e7148a New translations ja.yml (Russian) 2018-07-08 05:01:16 +09:00
syuilo 404823eadb New translations ja.yml (English) 2018-07-08 05:01:15 +09:00
syuilo 324822599a New translations ja.yml (Spanish) 2018-07-08 05:01:13 +09:00
syuilo 053530ed34 New translations ja.yml (German) 2018-07-08 05:01:11 +09:00
syuilo 4f1cb005d7 New translations ja.yml (French) 2018-07-08 05:01:10 +09:00
Aya Morisawa f3d2183a23 Fix typo 2018-07-08 04:57:10 +09:00
Aya Morisawa cdac86d104 Update config example 2018-07-08 04:56:23 +09:00
Aya Morisawa 291627ac15 Update README.md 2018-07-08 04:43:07 +09:00
syuilo 0025f3b526 Merge pull request #1860 from syuilo/i18n-msg-patch
Update warning message for missing locale
2018-07-08 04:37:09 +09:00
Aya Morisawa 678e80bb8b Update warning message for missing locale 2018-07-08 04:34:47 +09:00
syuilo 88c37cdcac New translations ja.yml (Catalan) 2018-07-08 04:31:20 +09:00
syuilo 8ed2ca9018 New translations ja.yml (Portuguese) 2018-07-08 04:31:18 +09:00
syuilo 27c99ef894 New translations ja.yml (Korean) 2018-07-08 04:31:16 +09:00
syuilo 41bed99b4c New translations ja.yml (Polish) 2018-07-08 04:31:14 +09:00
syuilo b127b772fe New translations ja.yml (Chinese Simplified) 2018-07-08 04:31:12 +09:00
syuilo 2698c2d3b5 New translations ja.yml (Italian) 2018-07-08 04:31:10 +09:00
syuilo 7c984d20d7 New translations ja.yml (Russian) 2018-07-08 04:31:08 +09:00
syuilo 844085d7a7 New translations ja.yml (English) 2018-07-08 04:31:06 +09:00
syuilo 404cc016e2 New translations ja.yml (Spanish) 2018-07-08 04:31:05 +09:00
syuilo 98f643f98e New translations ja.yml (German) 2018-07-08 04:31:03 +09:00
syuilo 9985f85aad New translations ja.yml (French) 2018-07-08 04:31:01 +09:00
Aya Morisawa 959f2cd61d Update locales 2018-07-08 04:24:28 +09:00
syuilo 2a2ef53e4f New translations ja.yml (Catalan) 2018-07-08 04:21:30 +09:00
syuilo 3648b56fc1 New translations ja.yml (Portuguese) 2018-07-08 04:21:28 +09:00
syuilo d422fa58cd New translations ja.yml (Korean) 2018-07-08 04:21:26 +09:00
syuilo ee7e9b328d New translations ja.yml (Polish) 2018-07-08 04:21:24 +09:00
syuilo 450c1224fd New translations ja.yml (Chinese Simplified) 2018-07-08 04:21:22 +09:00
syuilo 7885d73f80 New translations ja.yml (Italian) 2018-07-08 04:21:20 +09:00
syuilo 7bdcdcc1ce New translations ja.yml (Russian) 2018-07-08 04:21:19 +09:00
syuilo d375588f7c New translations ja.yml (English) 2018-07-08 04:21:17 +09:00
syuilo 2484894d43 New translations ja.yml (Spanish) 2018-07-08 04:21:15 +09:00
syuilo d82fe69469 New translations ja.yml (German) 2018-07-08 04:21:13 +09:00
syuilo cb5657e15c New translations ja.yml (French) 2018-07-08 04:21:11 +09:00
Aya Morisawa 16e2ee2759 Merge branch 'master' of aya.github:syuilo/misskey 2018-07-08 04:19:46 +09:00
Aya Morisawa 5621b280ff Update locales 2018-07-08 04:19:31 +09:00
syuilo 8cd6efbc38 Update docs 2018-07-08 04:11:15 +09:00
syuilo 0f4f862840 Fix bug 2018-07-08 03:51:09 +09:00
syuilo 14f74a561c package-lock.json 2018-07-08 03:23:02 +09:00
syuilo bd970cf215 Clean up 2018-07-08 03:22:40 +09:00
syuilo 57052013bb ✌️ 2018-07-08 03:21:16 +09:00
syuilo 8e11e2e3fc oops 2018-07-08 03:19:04 +09:00
syuilo ef58503537 oops 2018-07-08 03:15:54 +09:00
syuilo a46d230308 oops 2018-07-08 03:13:20 +09:00
syuilo e85ac32c2d Merge pull request #1859 from xps2/repurl
リポジトリとフィードバックのURLをconfigから指定できるように変更
2018-07-07 21:17:29 +09:00
xps2 a7e27c2419 リポジトリとフィードバックのURLをconfigから指定できるように変更 2018-07-07 21:08:22 +09:00
syuilo a4c9a93b6d ✌️ 2018-07-07 19:23:44 +09:00
syuilo 1f3837a8c6 oops 2018-07-07 19:22:31 +09:00
syuilo d92044cf6a Refactor 2018-07-07 19:21:54 +09:00
syuilo aa4ef6745a Refactorng 2018-07-07 19:19:00 +09:00
syuilo 865fd25af1 Refactorijg 2018-07-07 19:01:33 +09:00
syuilo 2cdcbcc80e ✌️ 2018-07-07 13:34:42 +09:00
syuilo 5ea0f23389 Fix #1857 2018-07-07 12:50:09 +09:00
syuilo 196a93dc4d New translations ja.yml (Catalan) 2018-07-07 03:01:36 +09:00
syuilo eb6d9d66cf New translations ja.yml (Portuguese) 2018-07-07 03:01:34 +09:00
syuilo 142de603bd New translations ja.yml (Korean) 2018-07-07 03:01:32 +09:00
syuilo 8ed710965f New translations ja.yml (Polish) 2018-07-07 03:01:30 +09:00
syuilo dc2a7ca2d5 New translations ja.yml (Chinese Simplified) 2018-07-07 03:01:29 +09:00
syuilo 32cdbb70d6 New translations ja.yml (Italian) 2018-07-07 03:01:27 +09:00
syuilo f2e168bd0a New translations ja.yml (Russian) 2018-07-07 03:01:25 +09:00
syuilo 311a5cc9e3 New translations ja.yml (English) 2018-07-07 03:01:23 +09:00
syuilo 878f2f9015 New translations ja.yml (Spanish) 2018-07-07 03:01:21 +09:00
syuilo 2923950d40 New translations ja.yml (German) 2018-07-07 03:01:19 +09:00
syuilo 0cd1cd787a New translations ja.yml (French) 2018-07-07 03:01:17 +09:00
syuilo ae8a87c40b Merge pull request #1855 from syuilo/greenkeeper/css-loader-1.0.0
Update css-loader to the latest version 🚀
2018-07-07 02:57:21 +09:00
syuilo c3597941db Merge pull request #1851 from syuilo/greenkeeper/@types/node-10.5.2
Update @types/node to the latest version 🚀
2018-07-07 02:56:40 +09:00
syuilo d26524767d Merge pull request #1850 from syuilo/greenkeeper/mongodb-3.1.1
Update mongodb to the latest version 🚀
2018-07-07 02:56:29 +09:00
syuilo 8d61a52eaa Merge pull request #1848 from syuilo/greenkeeper/webpack-4.15.1
Update webpack to the latest version 🚀
2018-07-07 02:56:16 +09:00
syuilo d5bad25c63 Merge pull request #1854 from syuilo/apis
✌️
2018-07-07 02:55:52 +09:00
greenkeeper[bot] 165e0a3d54 fix(package): update css-loader to version 1.0.0 2018-07-06 16:47:09 +00:00
syuilo e74c1f2ac6 w 2018-07-06 23:52:47 +09:00
syuilo 42d4e6610f 移行 2018-07-06 23:19:47 +09:00
syuilo 4179685bb6 ✌️ 2018-07-06 23:19:41 +09:00
syuilo a81a34cd76 新形式に移行 2018-07-06 20:40:44 +09:00
syuilo 118db9b267 wip 2018-07-06 20:27:48 +09:00
syuilo fd67d5cb4c wip 2018-07-06 12:38:07 +09:00
syuilo cb0f95ee7d wip 2018-07-06 12:31:57 +09:00
syuilo 029b92935c wip 2018-07-06 12:17:38 +09:00
greenkeeper[bot] bc13538167 fix(package): update @types/node to version 10.5.2 2018-07-06 00:25:02 +00:00
syuilo 9b41023c43 wip 2018-07-06 02:58:29 +09:00
greenkeeper[bot] 9f1ede0e3e fix(package): update mongodb to version 3.1.1 2018-07-05 17:23:09 +00:00
syuilo fcfd9239c1 wip 2018-07-06 00:04:40 +09:00
syuilo 10e9d3f32f wip 2018-07-05 23:47:36 +09:00
syuilo 11439afde7 wip 2018-07-05 23:36:07 +09:00
greenkeeper[bot] 359d3b4392 fix(package): update webpack to version 4.15.1 2018-07-05 13:38:13 +00:00
syuilo d53d45f797 wip 2018-07-05 22:35:35 +09:00
syuilo c6ea5419ff Merge pull request #1846 from syuilo/l10n_master
New Crowdin translations
2018-07-05 21:03:34 +09:00
syuilo 7dcb979983 Merge pull request #1845 from syuilo/greenkeeper/node-sass-4.9.1
Update node-sass to the latest version 🚀
2018-07-05 21:03:18 +09:00
syuilo 034d529afa New translations ja.yml (English) 2018-07-05 19:42:01 +09:00
greenkeeper[bot] fb764abeae fix(package): update node-sass to version 4.9.1 2018-07-05 10:19:04 +00:00
Aya Morisawa d0bce21993 Update README.md 2018-07-05 18:18:12 +09:00
syuilo 5ba4d0a8c4 Merge pull request #1844 from syuilo/greenkeeper/webpack-4.15.0
Update webpack to the latest version 🚀
2018-07-05 05:06:23 +09:00
greenkeeper[bot] 8864158d85 fix(package): update webpack to version 4.15.0 2018-07-04 19:47:46 +00:00
syuilo 85b8749f02 Clean up 2018-07-05 03:36:41 +09:00
syuilo b412b4a9ff 4.16.1 2018-07-04 21:24:22 +09:00
syuilo 081ad9adcf Fix bug 2018-07-04 21:23:50 +09:00
syuilo 80f2cc6728 4.16.0 2018-07-04 21:11:08 +09:00
syuilo bc627da923 Fix bug 2018-07-04 20:58:03 +09:00
syuilo c1b77365a0 wip 2018-07-04 20:44:13 +09:00
syuilo 7994aa96e2 wip 2018-07-04 20:36:06 +09:00
syuilo ccc79eac91 wip 2018-07-04 20:23:55 +09:00
syuilo f0fbff824b Merge branch 'master' of https://github.com/syuilo/misskey 2018-07-04 20:13:07 +09:00
syuilo 7293baa1f9 wip 2018-07-04 20:13:05 +09:00
syuilo 20abea6744 Merge pull request #1841 from syuilo/greenkeeper/@types/js-yaml-3.11.2
Update @types/js-yaml to the latest version 🚀
2018-07-04 20:09:11 +09:00
syuilo b666fdcc1a Merge pull request #1842 from syuilo/greenkeeper/@types/mongodb-3.1.1
Update @types/mongodb to the latest version 🚀
2018-07-04 20:09:04 +09:00
syuilo 70c3357f39 Merge pull request #1843 from syuilo/greenkeeper/@types/webpack-4.4.5
Update @types/webpack to the latest version 🚀
2018-07-04 20:08:56 +09:00
syuilo 9d49636cd1 wip 2018-07-04 20:02:45 +09:00
syuilo 67afe968b4 wip 2018-07-04 13:21:30 +09:00
greenkeeper[bot] 09cc5afad6 fix(package): update @types/webpack to version 4.4.5 2018-07-04 01:21:10 +00:00
greenkeeper[bot] ab53d80fcf fix(package): update @types/mongodb to version 3.1.1 2018-07-04 01:19:04 +00:00
greenkeeper[bot] 1d520473ed fix(package): update @types/js-yaml to version 3.11.2 2018-07-04 01:14:00 +00:00
syuilo 4636768810 Merge pull request #1839 from syuilo/greenkeeper/elasticsearch-15.1.1
Update elasticsearch to the latest version 🚀
2018-07-04 04:44:18 +09:00
greenkeeper[bot] 01e9402b2c fix(package): update elasticsearch to version 15.1.1 2018-07-03 19:20:07 +00:00
syuilo 947690870b Merge pull request #1837 from syuilo/greenkeeper/html-minifier-3.5.18
Update html-minifier to the latest version 🚀
2018-07-04 04:14:59 +09:00
syuilo dd93551ebf Merge pull request #1838 from syuilo/greenkeeper/elasticsearch-15.1.0
Update elasticsearch to the latest version 🚀
2018-07-04 04:14:48 +09:00
syuilo bf237c3dca Merge branch 'master' into greenkeeper/elasticsearch-15.1.0 2018-07-04 04:14:41 +09:00
syuilo 7e108e9f5c Merge pull request #1836 from syuilo/greenkeeper/element-ui-2.4.3
Update element-ui to the latest version 🚀
2018-07-04 04:13:45 +09:00
greenkeeper[bot] 75dbbd115b fix(package): update elasticsearch to version 15.1.0 2018-07-03 16:50:10 +00:00
greenkeeper[bot] 09ca24b032 fix(package): update html-minifier to version 3.5.18 2018-07-03 07:14:58 +00:00
greenkeeper[bot] f3d125a3f9 fix(package): update element-ui to version 2.4.3 2018-07-03 04:36:06 +00:00
syuilo 51a9666b91 Merge pull request #1812 from syuilo/l10n_master
New Crowdin translations
2018-07-03 05:29:13 +09:00
syuilo 2118fc1f0a Merge branch 'master' into l10n_master 2018-07-03 05:29:06 +09:00
syuilo 4182e2bd6d Merge pull request #1835 from syuilo/greenkeeper/hard-source-webpack-plugin-0.10.1
Update hard-source-webpack-plugin to the latest version 🚀
2018-07-03 05:27:30 +09:00
syuilo c349711e0d Merge pull request #1834 from syuilo/greenkeeper/vue-js-modal-1.3.16
Update vue-js-modal to the latest version 🚀
2018-07-03 05:27:18 +09:00
greenkeeper[bot] 810b4c7191 fix(package): update hard-source-webpack-plugin to version 0.10.1 2018-07-02 16:13:03 +00:00
greenkeeper[bot] 9f730f23e9 fix(package): update vue-js-modal to version 1.3.16 2018-07-02 14:59:29 +00:00
syuilo 8a6c9a9e35 Merge pull request #1833 from syuilo/greenkeeper/hard-source-webpack-plugin-0.10.0
Update hard-source-webpack-plugin to the latest version 🚀
2018-07-02 18:45:36 +09:00
syuilo 3a98f5a419 Merge pull request #1827 from syuilo/greenkeeper/@types/mongodb-3.1.0
Update @types/mongodb to the latest version 🚀
2018-07-02 18:45:26 +09:00
greenkeeper[bot] 597784a3e8 fix(package): update hard-source-webpack-plugin to version 0.10.0 2018-07-02 02:03:58 +00:00
syuilo 48354ece42 New translations ja.yml (English) 2018-07-02 03:51:04 +09:00
syuilo be8624250d New translations ja.yml (French) 2018-07-02 03:31:05 +09:00
syuilo 168f73e988 New translations ja.yml (French) 2018-07-02 03:20:51 +09:00
syuilo a4d62c7c7a New translations ja.yml (English) 2018-07-02 00:31:30 +09:00
syuilo 83eab954f1 New translations ja.yml (English) 2018-07-01 20:30:53 +09:00
syuilo f934fb171a New translations ja.yml (English) 2018-07-01 20:11:54 +09:00
syuilo fe3d95f394 New translations ja.yml (English) 2018-07-01 20:10:48 +09:00
syuilo 10e5caa766 Fix bug 2018-07-01 13:46:34 +09:00
syuilo 5fb8f5a8c7 Improve error message 2018-07-01 13:44:24 +09:00
syuilo 1673957aa6 Update rate limit 2018-07-01 13:40:31 +09:00
syuilo 91db717485 New translations ja.yml (English) 2018-07-01 07:51:22 +09:00
syuilo be90e179c6 New translations ja.yml (English) 2018-07-01 03:10:54 +09:00
syuilo 3b1b8e9493 New translations ja.yml (English) 2018-07-01 02:51:01 +09:00
syuilo 4a1ed5a3ca New translations ja.yml (English) 2018-07-01 02:00:47 +09:00
syuilo 212db199e8 New translations ja.yml (English) 2018-07-01 01:50:43 +09:00
syuilo b57a43b26c New translations ja.yml (English) 2018-06-30 22:10:49 +09:00
greenkeeper[bot] a1ba5b1316 fix(package): update @types/mongodb to version 3.1.0 2018-06-30 02:53:27 +00:00
syuilo 92457f91ae Merge pull request #1823 from syuilo/greenkeeper/@types/node-10.5.1
Update @types/node to the latest version 🚀
2018-06-29 21:40:27 +09:00
syuilo e84bae9e84 Merge pull request #1822 from syuilo/greenkeeper/@types/mongodb-3.0.23
Update @types/mongodb to the latest version 🚀
2018-06-29 21:40:16 +09:00
syuilo 1b2682c228 Merge pull request #1820 from syuilo/greenkeeper/uuid-3.3.2
Update uuid to the latest version 🚀
2018-06-29 21:39:58 +09:00
syuilo 6fa825f15d Merge pull request #1824 from syuilo/greenkeeper/webpack-4.14.0
fix(package): update webpack to version 4.14.0
2018-06-29 21:39:39 +09:00
greenkeeper[bot] beae1c2860 fix(package): update webpack to version 4.14.0
Closes #1818
2018-06-29 12:19:14 +00:00
greenkeeper[bot] 6f975acbb6 fix(package): update @types/node to version 10.5.1 2018-06-29 03:30:21 +00:00
greenkeeper[bot] 5e7bed8db3 fix(package): update @types/mongodb to version 3.0.23 2018-06-29 03:20:52 +00:00
greenkeeper[bot] 177510afdf fix(package): update uuid to version 3.3.2 2018-06-28 21:34:10 +00:00
syuilo d912cd3b75 New translations ja.yml (English) 2018-06-29 04:41:15 +09:00
syuilo c426748fe2 New translations ja.yml (English) 2018-06-29 04:31:25 +09:00
syuilo 64d80f8f48 New translations ja.yml (English) 2018-06-28 23:11:57 +09:00
syuilo c1d767b0ae New translations ja.yml (English) 2018-06-28 23:01:42 +09:00
syuilo edeb09eee2 New translations ja.yml (English) 2018-06-28 22:53:32 +09:00
syuilo bdb5081c05 New translations ja.yml (English) 2018-06-28 22:43:31 +09:00
syuilo 7dc410691d Merge pull request #1813 from mareklach/patch-1
Update en.yml
2018-06-28 22:22:54 +09:00
syuilo 772b9d0ae7 New translations ja.yml (English) 2018-06-28 22:11:41 +09:00
syuilo b0ff4533e2 New translations ja.yml (English) 2018-06-28 22:04:55 +09:00
Marek Lach 72a09434e3 Update en.yml 2018-06-28 13:35:25 +01:00
syuilo 87df50b7e7 New translations ja.yml (English) 2018-06-28 20:51:54 +09:00
syuilo d3d21be588 New translations ja.yml (Catalan) 2018-06-28 20:42:22 +09:00
syuilo 5b92ebfabd New translations ja.yml (English) 2018-06-28 20:36:23 +09:00
syuilo a9d1d8f034 New translations ja.yml (English) 2018-06-28 20:23:12 +09:00
syuilo 436ded4f4f Update README.md 2018-06-28 18:49:23 +09:00
syuilo de55794761 4.15.0 2018-06-28 16:24:55 +09:00
syuilo a23ef386ea Fix bug 2018-06-28 16:21:35 +09:00
syuilo 572aa662f6 Merge pull request #1793 from syuilo/l10n_master
New Crowdin translations
2018-06-28 13:54:58 +09:00
syuilo 8b10bee881 Merge pull request #1807 from syuilo/greenkeeper/@types/webpack-4.4.4
Update @types/webpack to the latest version 🚀
2018-06-28 13:51:39 +09:00
syuilo f492458d85 Merge pull request #1802 from syuilo/greenkeeper/@types/node-10.5.0
Update @types/node to the latest version 🚀
2018-06-28 13:51:32 +09:00
syuilo d2289039d6 Merge pull request #1801 from syuilo/greenkeeper/@types/mongodb-3.0.22
Update @types/mongodb to the latest version 🚀
2018-06-28 13:51:20 +09:00
greenkeeper[bot] 019fbf5268 fix(package): update @types/webpack to version 4.4.4 2018-06-28 00:39:26 +00:00
syuilo 8d7b04b0e2 New translations ja.yml (English) 2018-06-28 08:20:54 +09:00
syuilo 6e1f8d0533 New translations ja.yml (English) 2018-06-28 06:40:49 +09:00
syuilo b412d2a30a New translations ja.yml (French) 2018-06-28 06:31:00 +09:00
syuilo cbd9f57468 New translations ja.yml (English) 2018-06-28 05:23:19 +09:00
syuilo 2e0ee21964 New translations ja.yml (English) 2018-06-28 05:11:06 +09:00
greenkeeper[bot] 24b20b8d32 fix(package): update @types/node to version 10.5.0 2018-06-27 18:36:19 +00:00
greenkeeper[bot] d1843e2e27 fix(package): update @types/mongodb to version 3.0.22 2018-06-27 18:24:42 +00:00
syuilo 30e7aa23d8 New translations ja.yml (Polish) 2018-06-28 03:10:50 +09:00
syuilo 9f5c22e7c2 New translations ja.yml (English) 2018-06-28 02:50:57 +09:00
syuilo 4f88739b01 New translations ja.yml (English) 2018-06-28 02:41:14 +09:00
syuilo 18c50c82bc New translations ja.yml (English) 2018-06-28 02:31:00 +09:00
syuilo 0b87b16cba New translations ja.yml (English) 2018-06-28 02:20:49 +09:00
syuilo d454cf7493 New translations ja.yml (English) 2018-06-28 02:11:01 +09:00
syuilo 66e5b36d16 New translations ja.yml (English) 2018-06-28 02:01:15 +09:00
syuilo f582cd5c71 New translations ja.yml (English) 2018-06-28 01:51:01 +09:00
syuilo bf731897a3 New translations ja.yml (English) 2018-06-28 01:41:33 +09:00
syuilo a823792d8d New translations ja.yml (English) 2018-06-28 01:31:12 +09:00
syuilo 9e894dfd55 New translations ja.yml (English) 2018-06-28 01:29:28 +09:00
syuilo bd90ebeafd Merge pull request #1800 from syuilo/greenkeeper/typescript-eslint-parser-16.0.1
Update typescript-eslint-parser to the latest version 🚀
2018-06-27 23:20:00 +09:00
greenkeeper[bot] ee12027739 fix(package): update typescript-eslint-parser to version 16.0.1 2018-06-27 13:50:04 +00:00
syuilo e02f3558eb Merge pull request #1797 from syuilo/greenkeeper/webpack-4.12.2
Update webpack to the latest version 🚀
2018-06-27 22:30:03 +09:00
syuilo f410e1c4fa Merge pull request #1799 from syuilo/greenkeeper/mongodb-3.1.0
Update mongodb to the latest version 🚀
2018-06-27 22:29:35 +09:00
greenkeeper[bot] e41bc54d43 fix(package): update mongodb to version 3.1.0 2018-06-27 13:14:20 +00:00
greenkeeper[bot] 1599e06ffb fix(package): update webpack to version 4.12.2 2018-06-27 05:44:28 +00:00
syuilo 84c49a23c9 New translations ja.yml (French) 2018-06-27 09:20:47 +09:00
syuilo 95c94758cb New translations ja.yml (French) 2018-06-27 09:10:46 +09:00
syuilo 3bc5c5914b New translations ja.yml (English) 2018-06-27 04:20:49 +09:00
syuilo 69d2cd3b6d New translations ja.yml (English) 2018-06-27 04:11:12 +09:00
syuilo 4bca467bd3 New translations ja.yml (English) 2018-06-27 04:01:19 +09:00
syuilo 20061ae5a1 New translations ja.yml (English) 2018-06-27 03:51:28 +09:00
syuilo 78867c3cc9 New translations ja.yml (English) 2018-06-27 03:41:33 +09:00
syuilo f8911cad32 New translations ja.yml (English) 2018-06-27 03:11:33 +09:00
syuilo dd9a461cf5 New translations ja.yml (English) 2018-06-27 03:00:17 +09:00
syuilo 1516ce86f4 New translations ja.yml (English) 2018-06-27 02:39:35 +09:00
syuilo 58ab04f2f4 New translations ja.yml (English) 2018-06-27 02:21:32 +09:00
syuilo 3e651e3ea2 New translations ja.yml (English) 2018-06-27 02:01:28 +09:00
syuilo b02c00eb41 New translations ja.yml (English) 2018-06-27 01:37:47 +09:00
syuilo a9ee45d977 Merge pull request #1786 from syuilo/greenkeeper/element-ui-2.4.2
Update element-ui to the latest version 🚀
2018-06-27 01:23:18 +09:00
syuilo 156e66438a Merge pull request #1788 from syuilo/l10n_master
New Crowdin translations
2018-06-27 00:55:52 +09:00
syuilo 9ac34badad Merge branch 'master' into l10n_master 2018-06-27 00:55:44 +09:00
syuilo fdf145657d Merge pull request #1789 from syuilo/greenkeeper/uuid-3.3.0
Update uuid to the latest version 🚀
2018-06-26 22:42:03 +09:00
syuilo f93e0a624e New translations ja.yml (Portuguese) 2018-06-26 22:33:03 +09:00
syuilo c8e3af32be New translations ja.yml (Korean) 2018-06-26 22:33:00 +09:00
syuilo 62b3a49b5f New translations ja.yml (Polish) 2018-06-26 22:32:58 +09:00
syuilo be88eee8f6 New translations ja.yml (Chinese Simplified) 2018-06-26 22:32:56 +09:00
syuilo e7fb192f5d New translations ja.yml (Italian) 2018-06-26 22:32:54 +09:00
syuilo 18e2ca89b7 New translations ja.yml (Russian) 2018-06-26 22:32:51 +09:00
syuilo ec8c388f99 New translations ja.yml (English) 2018-06-26 22:32:49 +09:00
syuilo a1518df41a New translations ja.yml (Spanish) 2018-06-26 22:32:47 +09:00
syuilo 312ef38d62 New translations ja.yml (German) 2018-06-26 22:32:45 +09:00
syuilo ed3e0a9d9c New translations ja.yml (French) 2018-06-26 22:32:43 +09:00
syuilo d7ca93b9fa Merge pull request #1787 from l2dy/i18n
i18n
2018-06-26 22:30:56 +09:00
greenkeeper[bot] 910dfd6ad2 fix(package): update uuid to version 3.3.0 2018-06-26 13:28:53 +00:00
Zero King 041415519b i18n 2018-06-26 13:27:52 +00:00
greenkeeper[bot] 0ba877fef1 fix(package): update element-ui to version 2.4.2 2018-06-26 11:33:41 +00:00
syuilo 839c93961c 4.14.0 2018-06-26 18:53:35 +09:00
syuilo 30b1be97dd 🎨 2018-06-26 18:53:06 +09:00
syuilo 55be57ad21 Clean up 2018-06-26 18:47:09 +09:00
syuilo 58064ec633 MFM: Improve title syntax 2018-06-26 18:42:00 +09:00
syuilo d63044a15e Fix #1781 2018-06-26 18:34:17 +09:00
syuilo 5422697397 Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-26 18:25:50 +09:00
syuilo 36c2f8fe5d Improve usability 2018-06-26 18:25:27 +09:00
syuilo 2defddc153 Merge pull request #1784 from syuilo/greenkeeper/@types/webpack-4.4.3
Update @types/webpack to the latest version 🚀
2018-06-26 13:00:54 +09:00
syuilo fb9a219349 Merge pull request #1783 from syuilo/greenkeeper/@types/node-10.3.6
Update @types/node to the latest version 🚀
2018-06-26 13:00:46 +09:00
syuilo 3b5e4276c8 Merge pull request #1782 from syuilo/greenkeeper/html-minifier-3.5.17
Update html-minifier to the latest version 🚀
2018-06-26 13:00:37 +09:00
syuilo fab2e08a0d Merge pull request #1785 from syuilo/greenkeeper/eslint-5.0.1
Update eslint to the latest version 🚀
2018-06-26 13:00:18 +09:00
greenkeeper[bot] 19e9099a78 fix(package): update eslint to version 5.0.1 2018-06-26 03:50:37 +00:00
greenkeeper[bot] 91c2b07cd8 fix(package): update @types/webpack to version 4.4.3 2018-06-26 03:06:03 +00:00
greenkeeper[bot] fd00c7bd81 fix(package): update @types/node to version 10.3.6 2018-06-26 01:40:05 +00:00
greenkeeper[bot] 8919082179 fix(package): update html-minifier to version 3.5.17 2018-06-25 20:53:04 +00:00
syuilo 2f7c191547 Merge pull request #1780 from syuilo/l10n_master
New Crowdin translations
2018-06-26 02:10:31 +09:00
syuilo 80519dc366 New translations ja.yml (Portuguese) 2018-06-25 21:52:24 +09:00
syuilo 4d53c813e4 New translations ja.yml (Korean) 2018-06-25 21:52:22 +09:00
syuilo 750f479d58 New translations ja.yml (Polish) 2018-06-25 21:52:20 +09:00
syuilo e9a7e99108 New translations ja.yml (Chinese Simplified) 2018-06-25 21:52:17 +09:00
syuilo ebf10b3452 New translations ja.yml (Italian) 2018-06-25 21:52:15 +09:00
syuilo 5d621f5318 New translations ja.yml (Russian) 2018-06-25 21:52:12 +09:00
syuilo 35dedfc7e4 New translations ja.yml (English) 2018-06-25 21:52:10 +09:00
syuilo 39094adfcf New translations ja.yml (Spanish) 2018-06-25 21:52:07 +09:00
syuilo 74a25bfaa0 New translations ja.yml (German) 2018-06-25 21:52:05 +09:00
syuilo 04ef2f0c8d New translations ja.yml (French) 2018-06-25 21:52:02 +09:00
syuilo fb99906a8c Merge pull request #1779 from otya128/master
Fix v('ω')v
2018-06-25 21:49:35 +09:00
otya da0d3e4129 正しいv('ω')v 2018-06-25 21:05:12 +09:00
syuilo 3ffe90146c Update README.md 2018-06-25 13:47:22 +09:00
syuilo 81cea41154 Merge pull request #1774 from syuilo/greenkeeper/webpack-4.12.1
Update webpack to the latest version 🚀
2018-06-24 18:12:37 +09:00
greenkeeper[bot] 3ff4f53bbd fix(package): update webpack to version 4.12.1 2018-06-24 08:49:27 +00:00
syuilo a77f67fc32 4.13.1 2018-06-24 16:09:41 +09:00
syuilo 47c45d48b1 4.13.0 2018-06-24 15:56:18 +09:00
syuilo cdd9585cb8 🎨 2018-06-24 15:55:41 +09:00
syuilo db60188847 Fix bug 2018-06-24 15:51:03 +09:00
syuilo 21a2e5f415 4.12.0 2018-06-24 13:23:57 +09:00
syuilo 2377c9b4cb Merge pull request #1773 from syuilo/l10n_master
New Crowdin translations
2018-06-24 13:22:57 +09:00
syuilo 296f6b1553 New translations ja.yml (English) 2018-06-24 13:20:48 +09:00
syuilo e15643ca46 Better reversi labels 2018-06-24 13:18:22 +09:00
syuilo 9632ba40cc New translations ja.yml (Portuguese) 2018-06-24 13:11:11 +09:00
syuilo a2cdeeb6c7 New translations ja.yml (Korean) 2018-06-24 13:11:10 +09:00
syuilo a23857ce3c New translations ja.yml (Polish) 2018-06-24 13:11:08 +09:00
syuilo 78677b3aa7 New translations ja.yml (Chinese Simplified) 2018-06-24 13:11:06 +09:00
syuilo 7dd264953f New translations ja.yml (Italian) 2018-06-24 13:11:04 +09:00
syuilo 17af9c3ab6 New translations ja.yml (Russian) 2018-06-24 13:11:02 +09:00
syuilo 4b49f8fbb8 New translations ja.yml (English) 2018-06-24 13:11:00 +09:00
syuilo e253225c66 New translations ja.yml (Spanish) 2018-06-24 13:10:58 +09:00
syuilo 6abb6f90f6 New translations ja.yml (German) 2018-06-24 13:10:56 +09:00
syuilo 9fb2743a38 New translations ja.yml (French) 2018-06-24 13:10:55 +09:00
syuilo 17792716a7 4.11.0 2018-06-24 13:09:22 +09:00
syuilo ae7282358e Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-24 13:08:50 +09:00
syuilo abc082f7c0 リモートフォローフォームを実装するなど 2018-06-24 13:08:48 +09:00
syuilo bf1163ae84 Merge pull request #1772 from syuilo/greenkeeper/ws-5.2.1
Update ws to the latest version 🚀
2018-06-24 03:19:48 +09:00
greenkeeper[bot] be74ca472a fix(package): update ws to version 5.2.1 2018-06-23 17:55:11 +00:00
syuilo 31b472fa47 4.10.0 2018-06-23 23:19:15 +09:00
syuilo b502627494 Fix nado 2018-06-23 23:18:39 +09:00
syuilo a8017369d0 4.9.0 2018-06-23 23:04:49 +09:00
syuilo 3f0b5e4318 ✌️ 2018-06-23 23:03:25 +09:00
syuilo aea8f93e02 Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-23 22:55:57 +09:00
syuilo 874411990b ✌️ 2018-06-23 22:55:32 +09:00
syuilo 780268f70e Merge pull request #1771 from syuilo/patch-1
Use capital letters for othello label
2018-06-23 22:50:53 +09:00
Aya Morisawa 3a8a374e87 Use capital letters for othello label 2018-06-23 22:25:22 +09:00
syuilo 488f36d491 i18n 2018-06-23 21:56:47 +09:00
syuilo 4d48b0be99 Fix type 2018-06-23 21:48:36 +09:00
syuilo 44f3888c24 スペイン語を追加 2018-06-23 19:57:23 +09:00
syuilo a76fb4c173 i18n 2018-06-23 19:35:19 +09:00
syuilo e4aa003157 MFM: Improve search syntax 2018-06-23 19:31:28 +09:00
syuilo 247f334334 Fix 2018-06-23 19:18:14 +09:00
syuilo 509cdae832 Fix bug 2018-06-23 19:16:50 +09:00
syuilo 5ff59b3339 4.8.0 2018-06-23 17:00:28 +09:00
syuilo 2b1a785f24 きゃー 2018-06-23 16:58:54 +09:00
syuilo 2c0b137848 リバーシのラベルを表示できるように 2018-06-23 16:55:52 +09:00
syuilo ef68e633cf Merge pull request #1768 from syuilo/greenkeeper/eslint-5.0.0
Update eslint to the latest version 🚀
2018-06-23 12:11:49 +09:00
syuilo e9e63ba950 Merge pull request #1767 from syuilo/greenkeeper/hard-source-webpack-plugin-0.9.0
Update hard-source-webpack-plugin to the latest version 🚀
2018-06-23 12:11:31 +09:00
syuilo 3fd6167e71 Merge pull request #1766 from syuilo/greenkeeper/@types/node-10.3.5
Update @types/node to the latest version 🚀
2018-06-23 12:11:15 +09:00
syuilo 6b0573ded1 Merge pull request #1769 from syuilo/greenkeeper/ts-node-7.0.0
fix(package): update ts-node to version 7.0.0
2018-06-23 12:11:08 +09:00
greenkeeper[bot] e2c3d4f2fb fix(package): update eslint to version 5.0.0 2018-06-23 02:46:37 +00:00
greenkeeper[bot] 60229d73c9 fix(package): update hard-source-webpack-plugin to version 0.9.0 2018-06-23 02:35:38 +00:00
greenkeeper[bot] c6cbadc514 fix(package): update @types/node to version 10.3.5 2018-06-23 00:27:09 +00:00
greenkeeper[bot] 3c3c67a34c fix(package): update ts-node to version 7.0.0
Closes #1765
2018-06-22 19:17:54 +00:00
420 changed files with 7431 additions and 17308 deletions
+92 -49
View File
@@ -1,67 +1,110 @@
# インスタンス名 name: example-instance-name # Name of your instance
name: description: example-description # Description of your instance
# インスタンスの紹介
description:
# サーバーのメンテナ情報
maintainer: maintainer:
# メンテナの名前 name: example-maitainer-name # Your name
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かmailto形式のURL) # URL and Port settings overview
url: # e.g., If you want to realize following structure:
#
# +--- https://example.com:123 ----------+
# +------+ |+-------------+ +---------------+|
# | User | ---> || Proxy (123) | ---> | Misskey (456) ||
# +------+ |+-------------+ +---------------+|
# +--------------------------------------+
#
# You need to set 'https://example.com:123' to 'url' prop and
# You need to set 456 to 'port' prop.
#
# 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.
# (Misskeyを動かす)URL url: http://localhost/
url:
# 待受ポート # A port that your Misskey server should listen.
port: # This value is not a port to use when accessing with a browser.
port: 80
# TLSの設定(利用しない場合は省略してください)
https:
# 証明書のパス...
key:
cert:
# MongoDBの設定
mongodb: mongodb:
host: localhost host: localhost
port: 27017 port: 27017
db: misskey db: misskey
user: user: example-misskey-user
pass: pass: example-misskey-pass
# Redisの設定
redis: redis:
host: localhost host: localhost
port: 6379 port: 6379
pass: pass: example-pass
# reCAPTCHAの設定 # Drive capacity of a local user (MB)
recaptcha: localDriveCapacityMb: 256
site_key:
secret_key:
# ServiceWrokerの設定 # Drive capacity of a remote user (MB)
sw: remoteDriveCapacityMb: 8
# VAPIDの公開鍵
public_key:
# VAPIDの秘密鍵 # If enabled:
private_key: # Server will not cache remote files (Using direct link instead).
# You can save your storage.
# Google Maps API # Users cannot see remote images when they turn off "Show media from a remote server" setting.
google_maps_api_key:
# Twitterインテグレーションの設定(利用しない場合は省略可能)
twitter:
# インテグレーション用アプリのコンシューマーキー
consumer_key:
# インテグレーション用アプリのコンシューマーシークレット
consumer_secret:
# true にすると、リモートのファイルをキャッシュしなくなります(直リンクします)。
# ストレージ容量を節約することができますが、「リモートメディアを表示しない」設定をオンにしているユーザーは、リモートの画像などは見えなくなります。
preventCache: false preventCache: false
drive:
storage: 'db'
# OR
# storage: 'minio'
# bucket:
# prefix:
# config:
# endPoint:
# port:
# secure:
# accessKey:
# secretKey:
#
# Below settings are optional
#
# TLS
# https:
# # path for certification
# key: example-tls-key
# cert: example-tls-cert
# Elasticsearch
# elasticsearch:
# host: localhost
# port: 9200
# pass: null
# reCAPTCHA
# recaptcha:
# site_key: example-site-key
# secret_key: example-secret-key
# 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
# 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
+1
View File
@@ -2,3 +2,4 @@
*.psd -diff -text *.psd -diff -text
*.ai -diff -text *.ai -diff -text
yarn.lock -diff -text yarn.lock -diff -text
package-lock.json -diff -text
-7
View File
@@ -1,7 +0,0 @@
<!--
Misskeyへの貢献ありがとうございます。
バグの報告や提案などで、可能であれば以下の情報を含めてください。
* お使いのブラウザ
* デスクトップ版Misskeyかモバイル版Misskeyか
-->
+22
View File
@@ -0,0 +1,22 @@
---
name: Bug Report
about: Create a report to help us improve
---
# Summary
<!-- Tell us what the bug is -->
# Expected Behavior
<!--- Tell us what should happen -->
# Actual Behavior
<!--- Tell us what happens instead of the expected behavior -->
# Steps to Reproduce
1.
2.
3.
# Environment
<!-- Tell us where on the platform it happens -->
<!-- e.g. desktop or mobile version, your browser, your OS -->
+11
View File
@@ -0,0 +1,11 @@
---
name: Feature Request
about: Suggest an idea for this project
---
# Summary
<!-- Tell us what the suggestion is -->
# Environment
<!-- Tell us where on the platform it related -->
<!-- e.g. desktop or mobile version, your browser, your OS -->
-1
View File
@@ -10,5 +10,4 @@ npm-debug.log
*.pem *.pem
run.bat run.bat
api-docs.json api-docs.json
package-lock.json
*.log *.log
+1 -1
View File
@@ -1,2 +1,2 @@
package-lock = false
save-exact=true save-exact=true
package-lock = false
+12
View File
@@ -0,0 +1,12 @@
{
"recommendations": [
"ducksoupdev.vue2",
"editorconfig.editorconfig",
"eg2.tslint",
"eg2.vscode-npm-script",
"hollowtree.vue-snippets",
"ms-vscode.typescript-javascript-grammar",
"octref.vetur",
"sysoev.language-stylus"
]
}
+9
View File
@@ -5,6 +5,15 @@ ChangeLog
This document describes breaking changes only. This document describes breaking changes only.
5.0.0
-----
### Migration
起動する前に、`node cli/migration/5.0.0`してください。
Please run `node cli/migration/5.0.0` before launch.
4.0.0 4.0.0
----- -----
+9 -19
View File
@@ -7,25 +7,24 @@
[![][dependencies-badge]][dependencies-link] [![][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) [![Greenkeeper badge](https://badges.greenkeeper.io/syuilo/misskey.svg)](https://greenkeeper.io/)
> Lead Maintainer: [syuilo][syuilo-link] **Microblogging. Redefined.**
**[Misskey](https://misskey.xyz)** is a completely open source, **[Misskey](https://misskey.xyz)** is a completely open source,
ultimately sophisticated professional microblogging software. ultimately sophisticated professional microblogging software.
<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> <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>
![](https://c10.patreonusercontent.com/3/e30%3D/patreon-posts/RsKWEDEKf8D_wYDQWAbex9CSb-1DnXW1nfqfLvuys5ROj2k0VF6_luuzHMTyf95n.png?token-time=1529539200&token-hash=RmcSP0947mw5o2-B6g1L6aU_OoDXANe198kLU6HMO30%3D) ![](https://ja.mstdn.wiki/images/e/ed/Deck.jpg)
:sparkles: Features :sparkles: Features
---------------------------------------------------------------- ----------------------------------------------------------------
* Rich text contents
* Reactions * Reactions
* User lists * User lists
* Customizable column view (known as MisskeyDeck) * Customizable column view (called MisskeyDeck)
* and widgets! * and widgets!
* Private messages * Private messages
* Mute * ActivityPub support
* Real-time timelines
* ActivityPub compatible
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz). and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
@@ -44,18 +43,15 @@ If you want to...
:heart: Backers & Sponsors :heart: Backers & Sponsors
---------------------------------------------------------------- ----------------------------------------------------------------
[![Backers][backers-image]][support-url] | <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"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D"> |
[![Sponsors][sponsors-image]][support-url] |:-:|:-:|:-:|
| [Gargron](https://www.patreon.com/mastodon) | [39ff](https://www.patreon.com/user/creators?u=12378075) | [dansup](https://www.patreon.com/dansup) |
| ![][nagarus-icon] | ![][dansup-icon] |
|:-:|:-:|
| [nagarus][nagarus-link] | [dansup][dansup-link] |
:four_leaf_clover: Copyright :four_leaf_clover: Copyright
---------------------------------------------------------------- ----------------------------------------------------------------
> Copyright (c) 2014-2018 syuilo > Copyright (c) 2014-2018 syuilo
Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE). Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
[![][agpl-3.0-badge]][AGPL-3.0] [![][agpl-3.0-badge]][AGPL-3.0]
@@ -76,9 +72,3 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
[syuilo-link]: https://syuilo.com [syuilo-link]: https://syuilo.com
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70 [syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70
[nagarus-link]: https://www.patreon.com/user/creators?u=11601413
[nagarus-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/11601413/20cb15f209924302b399b99d3c98b850?token-time=2145916800&token-hash=IO31nK6VZCMWBWU2VAk2c824BX2QZ4DNPKyHHZXS0iw%3D
[dansup-link]: https://www.patreon.com/dansup
[dansup-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb?token-time=2145916800&token-hash=opXAM_pnhUTuN1jCA6p_Nn_YsaqohY465YFjWFqMEEE%3D
-41
View File
@@ -1,41 +0,0 @@
# appveyor file
# http://www.appveyor.com/docs/appveyor-yml
environment:
matrix:
- nodejs_version: 10.1.0
cache:
- node_modules
build: off
install:
# Update Node.js
# 標準で入っている Node.js を更新します (2014/11/13 時点では、v0.10.32 が標準)
- ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
- node --version
# Update NPM
- npm install -g npm
- npm --version
# Update node-gyp
# 必須! node-gyp のバージョンを上げないと、ネイティブモジュールのコンパイルに失敗します
- npm install -g node-gyp
- npm install
init:
# git clone の際の改行を変換しないようにします
- git config --global core.autocrlf false
before_test:
# 設定ファイルを配置
- cp ./.travis/default.yml ./.config
- cp ./.travis/test.yml ./.config
- npm run build
test_script:
- npm test
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

+2 -2
View File
@@ -9,7 +9,7 @@ const q = {
'metadata._user.host': { 'metadata._user.host': {
$ne: null $ne: null
}, },
'metadata.isMetaOnly': false 'metadata.withoutChunks': false
}; };
async function main() { async function main() {
@@ -57,7 +57,7 @@ async function main() {
DriveFile.update({ _id: file._id }, { DriveFile.update({ _id: file._id }, {
$set: { $set: {
'metadata.isMetaOnly': true 'metadata.withoutChunks': true
} }
}) })
]).then(async () => { ]).then(async () => {
-168
View File
@@ -1,168 +0,0 @@
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');
const inquirer = require('inquirer');
const chalk = require('chalk');
const configDirPath = `${__dirname}/../.config`;
const configPath = `${configDirPath}/default.yml`;
const form = [{
type: 'input',
name: 'maintainerName',
message: 'Your name:'
}, {
type: 'input',
name: 'maintainerUrl',
message: 'Your home page URL or your mailto URL:'
}, {
type: 'input',
name: 'url',
message: 'URL you want to run Misskey:',
validate: function(wannabeurl) {
return wannabeurl.match('^http\(s?\)://') ? true :
'URL needs to start with http:// or https://';
}
}, {
type: 'input',
name: 'port',
message: 'Listen port (e.g. 443):'
}, {
type: 'confirm',
name: 'https',
message: 'Use TLS?',
default: false
}, {
type: 'input',
name: 'https_key',
message: 'Path of tls key:',
when: ctx => ctx.https
}, {
type: 'input',
name: 'https_cert',
message: 'Path of tls cert:',
when: ctx => ctx.https
}, {
type: 'input',
name: 'https_ca',
message: 'Path of tls ca:',
when: ctx => ctx.https
}, {
type: 'input',
name: 'mongo_host',
message: 'MongoDB\'s host:',
default: 'localhost'
}, {
type: 'input',
name: 'mongo_port',
message: 'MongoDB\'s port:',
default: '27017'
}, {
type: 'input',
name: 'mongo_db',
message: 'MongoDB\'s db:',
default: 'misskey'
}, {
type: 'input',
name: 'mongo_user',
message: 'MongoDB\'s user:'
}, {
type: 'password',
name: 'mongo_pass',
message: 'MongoDB\'s password:'
}, {
type: 'input',
name: 'redis_host',
message: 'Redis\'s host:',
default: 'localhost'
}, {
type: 'input',
name: 'redis_port',
message: 'Redis\'s port:',
default: '6379'
}, {
type: 'password',
name: 'redis_pass',
message: 'Redis\'s password:'
}, {
type: 'confirm',
name: 'elasticsearch',
message: 'Use Elasticsearch?',
default: false
}, {
type: 'input',
name: 'es_host',
message: 'Elasticsearch\'s host:',
default: 'localhost',
when: ctx => ctx.elasticsearch
}, {
type: 'input',
name: 'es_port',
message: 'Elasticsearch\'s port:',
default: '9200',
when: ctx => ctx.elasticsearch
}, {
type: 'password',
name: 'es_pass',
message: 'Elasticsearch\'s password:',
when: ctx => ctx.elasticsearch
}, {
type: 'input',
name: 'recaptcha_site',
message: 'reCAPTCHA\'s site key:'
}, {
type: 'input',
name: 'recaptcha_secret',
message: 'reCAPTCHA\'s secret key:'
}];
inquirer.prompt(form).then(as => {
// Mapping answers
const conf = {
maintainer: {
name: as['maintainerName'],
url: as['maintainerUrl']
},
url: as['url'],
port: parseInt(as['port'], 10),
mongodb: {
host: as['mongo_host'],
port: parseInt(as['mongo_port'], 10),
db: as['mongo_db'],
user: as['mongo_user'],
pass: as['mongo_pass']
},
redis: {
host: as['redis_host'],
port: parseInt(as['redis_port'], 10),
pass: as['redis_pass']
},
elasticsearch: {
enable: as['elasticsearch'],
host: as['es_host'] || null,
port: parseInt(as['es_port'], 10) || null,
pass: as['es_pass'] || null
},
recaptcha: {
site_key: as['recaptcha_site'],
secret_key: as['recaptcha_secret']
}
};
if (as['https']) {
conf.https = {
key: as['https_key'] || null,
cert: as['https_cert'] || null,
ca: as['https_ca'] || null
};
}
console.log(`Thanks. Writing the configuration to ${chalk.bold(path.resolve(configPath))}`);
try {
fs.writeFileSync(configPath, yaml.dump(conf));
console.log(chalk.green('Well done.'));
} catch (e) {
console.error(e);
}
});
+23
View File
@@ -0,0 +1,23 @@
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 admin ${user}...`);
User.update(q, {
$set: {
isAdmin: true
}
}).then(() => {
console.log(`Done ${user}`);
}, e => {
console.error(e);
});
+23
View File
@@ -0,0 +1,23 @@
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);
});
@@ -3,8 +3,8 @@
const chalk = require('chalk'); const chalk = require('chalk');
const sequential = require('promise-sequential'); const sequential = require('promise-sequential');
const { default: User } = require('../built/models/user'); const { default: User } = require('../../built/models/user');
const { default: DriveFile } = require('../built/models/drive-file'); const { default: DriveFile } = require('../../built/models/drive-file');
async function main() { async function main() {
const promiseGens = []; const promiseGens = [];
@@ -3,8 +3,8 @@
const chalk = require('chalk'); const chalk = require('chalk');
const sequential = require('promise-sequential'); const sequential = require('promise-sequential');
const { default: User } = require('../built/models/user'); const { default: User } = require('../../built/models/user');
const { default: DriveFile } = require('../built/models/drive-file'); const { default: DriveFile } = require('../../built/models/drive-file');
async function main() { async function main() {
const promiseGens = []; const promiseGens = [];
+9
View File
@@ -0,0 +1,9 @@
const { default: DriveFile } = require('../../built/models/drive-file');
DriveFile.update({}, {
$rename: {
'metadata.isMetaOnly': 'metadata.withoutChunks'
}
}, {
multi: true
});
+1 -1
View File
@@ -14,7 +14,7 @@ RUN pacman -S --noconfirm pacman
RUN pacman-db-upgrade RUN pacman-db-upgrade
RUN pacman -S --noconfirm archlinux-keyring RUN pacman -S --noconfirm archlinux-keyring
RUN pacman -Syyu --noconfirm RUN pacman -Syyu --noconfirm
RUN pacman -S --noconfirm git nodejs npm mongodb redis imagemagick RUN pacman -S --noconfirm git nodejs npm mongodb redis
COPY misskey.sh /root/misskey.sh COPY misskey.sh /root/misskey.sh
RUN chmod u+x /root/misskey.sh RUN chmod u+x /root/misskey.sh
+6
View File
@@ -0,0 +1,6 @@
# Docs
These docs are for contributors of Misskey or admins of instance of Misskey.
Docs for users are located in `src/docs`.
これらのドキュメントはMisskeyの開発者またはMisskeyインスタンス運営者向けです。
利用者向けのドキュメントは`src/docs`にあります。
+45
View File
@@ -0,0 +1,45 @@
# Management guide
## Check the status of the job queue
In the directory of Misskey:
``` shell
node_modules/kue/bin/kue-dashboard -p 3050
```
When you access port 3050, you will see the UI.
## Mark as 'admin' user
``` shell
node cli/mark-admin (User-ID or Username)
```
## Mark as 'verified' user
``` shell
node cli/mark-verified (User-ID or Username)
```
## Suspend users
``` shell
node cli/suspend (User-ID or Username)
```
e.g.
``` shell
# Use id
node cli/suspend 57d01a501fdf2d07be417afe
# Use username
node cli/suspend @syuilo
# Use username (remote)
node cli/suspend @syuilo@misskey.xyz
```
## Clean up cached remote files
``` shell
node cli/clean-cached-remote-files
```
## Clean up unused drive files
``` shell
node cli/clean-unused-drive-files
```
> We recommend that you announce a user that unused drive files will be deleted before performing this operation, as it may delete the user's important files.
+33 -1
View File
@@ -7,7 +7,39 @@ node_modules/kue/bin/kue-dashboard -p 3050
``` ```
ポート3050にアクセスするとUIが表示されます ポート3050にアクセスするとUIが表示されます
## 管理者ユーザーを設定する
``` shell
node cli/mark-admin (ユーザーID または ユーザー名)
```
## 'verified'ユーザーを設定する
``` shell
node cli/mark-verified (ユーザーID または ユーザー名)
```
## ユーザーを凍結する ## ユーザーを凍結する
``` shell ``` shell
node cli/suspend (ユーザーID) node cli/suspend (ユーザーID または ユーザー名)
``` ```
例:
``` shell
# ユーザーID
node cli/suspend 57d01a501fdf2d07be417afe
# ユーザー名
node cli/suspend @syuilo
# ユーザー名 (リモート)
node cli/suspend @syuilo@misskey.xyz
```
## キャッシュされたリモートファイルをクリーンアップする
``` shell
node cli/clean-cached-remote-files
```
## 使われていないドライブのファイルをクリーンアップする
``` shell
node cli/clean-unused-drive-files
```
> ユーザーの大事なファイルを削除する可能性があるので、この操作を実行する前にユーザーに告知することをお勧めします。
+83 -27
View File
@@ -8,18 +8,13 @@ This guide describes how to install and setup Misskey.
---------------------------------------------------------------- ----------------------------------------------------------------
*1.* reCAPTCHA tokens *1.* Create Misskey user
---------------------------------------------------------------- ----------------------------------------------------------------
Misskey requires reCAPTCHA tokens. Running misskey on root is not a good idea so we create a user for that.
Please visit https://www.google.com/recaptcha/intro/ and generate keys. In debian for exemple :
*(optional)* Generating VAPID keys ```
---------------------------------------------------------------- adduser --disabled-password --disabled-login misskey
If you want to enable ServiceWroker, you need to generate VAPID keys:
``` shell
npm install web-push -g
web-push generate-vapid-keys
``` ```
*2.* Install dependencies *2.* Install dependencies
@@ -27,25 +22,52 @@ web-push generate-vapid-keys
Please install and setup these softwares: Please install and setup these softwares:
#### Dependencies :package: #### Dependencies :package:
* *Node.js* and *npm* * **[Node.js](https://nodejs.org/en/)**
* **[MongoDB](https://www.mongodb.com/)** * **[MongoDB](https://www.mongodb.com/)** >= 3.6
* **[Redis](https://redis.io/)** * **[Redis](https://redis.io/)**
* **[ImageMagick](http://www.imagemagick.org/script/index.php)** >= 7.0
##### Optional ##### Optional
* [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB * [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
*3.* Install Misskey
----------------------------------------------------------------
1. `git clone -b master git://github.com/syuilo/misskey.git`
2. `cd misskey`
3. `npm install`
*4.* Prepare configuration *3.* Setup MongoDB
---------------------------------------------------------------- ----------------------------------------------------------------
You need to generate config file via `npm run config` command. In root :
1. `mongo` Go to the mongo shell
2. `use misskey` Use the misskey database
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" } ] } )` Create the misskey user.
5. `exit` You're done !
*5.* Build Misskey *4.* Install Misskey
----------------------------------------------------------------
1. `su - misskey` Connect to misskey user.
2. `git clone -b master git://github.com/syuilo/misskey.git` Clone the misskey repo from master branch.
3. `cd misskey` Navigate to misskey directory
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 ServiceWroker, you need to generate VAPID keys:
Unless you have set your global node_modules location elsewhere, you need to run this in root.
``` shell
npm install web-push -g
web-push generate-vapid-keys
```
*5.* Make configuration file
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
2. Edit `default.yml`
*6.* Build Misskey
---------------------------------------------------------------- ----------------------------------------------------------------
Build misskey with the following: Build misskey with the following:
@@ -61,14 +83,48 @@ If you're still encountering errors about some modules, use node-gyp:
3. `node-gyp build` 3. `node-gyp build`
4. `npm run build` 4. `npm run build`
*6.* That is it. *7.* That is it.
---------------------------------------------------------------- ----------------------------------------------------------------
Well done! Now, you have an environment that run to Misskey. Well done! Now, you have an environment that run to Misskey.
### Launch ### Launch normally
Just `sudo npm start`. GLHF! Just `npm start`. GLHF!
### Launch with systemd
1. Create a systemd service here: `/etc/systemd/system/misskey.service`
2. Edit it, and paste this and save:
```
[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` Reload systemd and enable the misskey service.
4. `systemctl start misskey` Start the misskey service.
You can check if the service is running with `systemctl status misskey`.
### Way to Update to latest version of your Misskey ### Way to Update to latest version of your Misskey
1. `git reset --hard && git pull origin master` 1. `git fetch`
2. `npm install` 2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
3. `npm run build` 3. `npm install`
4. `npm run build`
----------------------------------------------------------------
If you have any questions or troubles, feel free to contact us!
+88 -39
View File
@@ -8,10 +8,48 @@ Misskeyサーバーの構築にご関心をお寄せいただきありがとう
---------------------------------------------------------------- ----------------------------------------------------------------
*1.* reCAPTCHAトークンの用意 *1.* Misskeyユーザーの作成
---------------------------------------------------------------- ----------------------------------------------------------------
MisskeyはreCAPTCHAトークンを必要とします。 Misskeyのrootで実行しない方がよいため、代わりにユーザーを作成します。
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを生成してください。 Debianの例:
```
adduser --disabled-password --disabled-login misskey
```
*2.* 依存関係をインストールする
----------------------------------------------------------------
これらのソフトウェアをインストール・設定してください:
#### 依存関係 :package:
* **[Node.js](https://nodejs.org/en/)**
* **[MongoDB](https://www.mongodb.com/)** (3.6以上)
* **[Redis](https://redis.io/)**
##### オプション
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
*3.* MongoDBの設定
----------------------------------------------------------------
ルートで:
1. `mongo` mongoシェルを起動
2. `use misskey` misskeyデータベースを使用
3. `db.users.save( {dummy:"dummy"} )` ダミーデータを書き込みDBを初期化
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
5. `exit` mongoシェルを終了
*4.* Misskeyのインストール
----------------------------------------------------------------
1. `su - misskey` misskeyユーザーを使用
2. `git clone -b master git://github.com/syuilo/misskey.git` masterブランチからMisskeyレポジトリをクローン
3. `cd misskey` 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キーペアの生成 *(オプション)* VAPIDキーペアの生成
---------------------------------------------------------------- ----------------------------------------------------------------
@@ -22,56 +60,67 @@ npm install web-push -g
web-push generate-vapid-keys web-push generate-vapid-keys
``` ```
*2.* 依存関係をインストールする *5.* 設定ファイルを作成する
---------------------------------------------------------------- ----------------------------------------------------------------
これらのソフトウェアをインストール・設定してください: 1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
2. `default.yml` を編集する。
#### 依存関係 :package: *6.* Misskeyのビルド
* *Node.js* と *npm*
* **[MongoDB](https://www.mongodb.com/)**
* **[Redis](https://redis.io/)**
* **[ImageMagick](http://www.imagemagick.org/script/index.php)**
##### オプション
* [Elasticsearch](https://www.elastic.co/) - 検索機能を向上させるために用います。
*3.* Misskeyのインストール
---------------------------------------------------------------- ----------------------------------------------------------------
1. `git clone -b master git://github.com/syuilo/misskey.git`
2. `cd misskey`
3. `npm install`
*4.* 設定ファイルを用意する 次のコマンドでMisskeyをビルドしてください:
----------------------------------------------------------------
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
*5.* Misskeyのビルド `npm run build`
----------------------------------------------------------------
Debianをお使いであれば、`build-essential`パッケージをインストールする必要があります。
何らかのモジュールでエラーが発生する場合はnode-gypを使ってください:
1. `npm install -g node-gyp` 1. `npm install -g node-gyp`
2. `node-gyp configure` 2. `node-gyp configure`
3. `node-gyp build` 3. `node-gyp build`
4. `npm run build` 4. `npm run build`
*6.* 以上です! *7.* 以上です!
---------------------------------------------------------------- ----------------------------------------------------------------
お疲れ様でした。これでMisskeyを動かす準備は整いました。 お疲れ様でした。これでMisskeyを動かす準備は整いました。
### 起動 ### 通常起動
`sudo npm start`するだけです。GLHF! `npm start`するだけです。GLHF!
### systemdを用いた起動
1. systemdサービスのファイルを作成: `/etc/systemd/system/misskey.service`
2. エディタで開き、以下のコードを貼り付けて保存:
```
[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` systemdを再読み込みしmisskeyサービスを有効化
4. `systemctl start misskey` misskeyサービスの起動
`systemctl status misskey`と入力すると、サービスの状態を調べることができます。
### Misskeyを最新バージョンにアップデートする方法: ### Misskeyを最新バージョンにアップデートする方法:
1. `git reset --hard && git pull origin master` 1. `git fetch`
2. `npm install` 2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
3. `npm run build` 3. `npm install`
4. `npm run build`
## メモリが足りなくてビルドできない場合 ----------------------------------------------------------------
Misskeyの(クライアントの)ビルドには、目安として8GBくらいのメモリを必要とします。
VPSなどでビルドする時は、もしかしたらメモリが足りなくなる可能性があります。
そうなった場合、もしVPSではなくあなたのPCが十分なメモリを搭載しているなら、あなたのPC上でビルドし、生成されたファイルをVPSにFTPでアップロードする方法を採ることができます。
1. あなたのPC上にMisskeyをインストールする なにかお困りのことがありましたらお気軽にご連絡ください。
2. 設定ファイルを用意する。設定ファイルは、サーバーに合わせた設定にします。
3. npm run webpack
4. built/client をサーバーにアップロードする
5. サーバー上で、npm run gulp
6. 完了
+4 -4
View File
@@ -4,19 +4,19 @@ Misskey's Translation
If you find an untranslated part on Misskey: If you find an untranslated part on Misskey:
-------------------------------------------- --------------------------------------------
1. Look for untranslated parts in the miskey's source code. 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`. - 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%`. 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. - 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%`. - For example, if the untranslated portion is the following "タイムライン" you must write: `%i18n:@timeline%`.
3. Open each language file in /locales, check whether the <strong>file name (path)</strong> found in step 1 exists, if not, create it. 3. Open the `locales/ja.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. - 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`. - 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 translated 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. 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: "Timeline"` to `locales/en.yml`, and `timeline: "タイムライン"` to `locales/ja.yml`. - For example, in this case we add timeline: `timeline: "タイムライン"` to `locales/ja.yml`.
5. And done 5. And done
+3 -3
View File
@@ -11,12 +11,12 @@ Misskey内の未翻訳箇所を見つけたら
- `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。 - `foo`は実際にはその場に適したわかりやすい(英語の)名前にしてください。
- 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。 - 例えば未翻訳箇所が「タイムライン」というテキストだった場合、`%i18n:@timeline%`のようにします。
3. /locales 内にあるそれぞれの言語ファイルを開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。 3. `locales/ja.yml`を開き、1.で見つけた<strong>ファイル名(パス)</strong>のキーが存在するか確認し、無ければ作成してください。
- パスの`src/client/app/`は省略してください。 - パスの`src/client/app/`は省略してください。
- 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。 - 例えば、今回の例では`src/client/app/mobile/views/pages/home.vue`の未翻訳箇所を修正したいので、キーは`mobile/views/pages/home.vue`になります。
4. そのキーの直下に2.で置換した`foo`の部分をキーとし、翻訳後のテキストを値とするプロパティを追加します。 4. そのキーの直下に2.で置換した`foo`の部分をキーとし、テキストを値とするプロパティを追加します。
- 例えば、今回の例で言うと`locales/ja.yml``timeline: "タイムライン"``locales/en.yml``timeline: "Timeline"`を追加します。 - 例えば、今回の例で言うと`locales/ja.yml``timeline: "タイムライン"`を追加します。
5. 完了です! 5. 完了です!
-6
View File
@@ -1,6 +0,0 @@
How to create indexes
=====================
``` shell
curl -XPOST localhost:9200/misskey -d @path/to/mappings.json
```
-65
View File
@@ -1,65 +0,0 @@
{
"settings": {
"analysis": {
"analyzer": {
"bigram": {
"tokenizer": "bigram_tokenizer"
}
},
"tokenizer": {
"bigram_tokenizer": {
"type": "nGram",
"min_gram": 2,
"max_gram": 2,
"token_chars": [
"letter",
"digit"
]
}
}
}
},
"mappings": {
"user": {
"properties": {
"username": {
"type": "string",
"index": "analyzed",
"analyzer": "bigram"
},
"name": {
"type": "string",
"index": "analyzed",
"analyzer": "bigram"
},
"bio": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
}
}
},
"post": {
"properties": {
"text": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
}
}
},
"drive_file": {
"properties": {
"name": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
},
"user": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
+23 -19
View File
@@ -9,6 +9,7 @@ import * as ts from 'gulp-typescript';
const sourcemaps = require('gulp-sourcemaps'); const sourcemaps = require('gulp-sourcemaps');
import tslint from 'gulp-tslint'; import tslint from 'gulp-tslint';
const cssnano = require('gulp-cssnano'); const cssnano = require('gulp-cssnano');
const stylus = require('gulp-stylus');
import * as uglifyComposer from 'gulp-uglify/composer'; import * as uglifyComposer from 'gulp-uglify/composer';
import pug = require('gulp-pug'); import pug = require('gulp-pug');
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
@@ -20,9 +21,8 @@ import * as replace from 'gulp-replace';
import * as htmlmin from 'gulp-htmlmin'; import * as htmlmin from 'gulp-htmlmin';
const uglifyes = require('uglify-es'); const uglifyes = require('uglify-es');
import locales from './locales'; const locales = require('./locales');
import { fa } from './src/build/fa'; import { fa } from './src/misc/fa';
const client = require('./built/client/meta.json');
import config from './src/config'; import config from './src/config';
const uglify = uglifyComposer(uglifyes, console); const uglify = uglifyComposer(uglifyes, console);
@@ -38,8 +38,6 @@ if (isDebug) {
const constants = require('./src/const.json'); const constants = require('./src/const.json');
require('./src/client/docs/gulpfile.ts');
gulp.task('build', [ gulp.task('build', [
'build:ts', 'build:ts',
'build:copy', 'build:copy',
@@ -47,8 +45,6 @@ gulp.task('build', [
'doc' 'doc'
]); ]);
gulp.task('rebuild', ['clean', 'build']);
gulp.task('build:ts', () => { gulp.task('build:ts', () => {
const tsProject = ts.createProject('./tsconfig.json'); const tsProject = ts.createProject('./tsconfig.json');
@@ -85,19 +81,19 @@ gulp.task('lint', () =>
); );
gulp.task('format', () => gulp.task('format', () =>
gulp.src('./src/**/*.ts') gulp.src('./src/**/*.ts')
.pipe(tslint({ .pipe(tslint({
formatter: 'verbose', formatter: 'verbose',
fix: true fix: true
})) }))
.pipe(tslint.report()) .pipe(tslint.report())
); );
gulp.task('mocha', () => gulp.task('mocha', () =>
gulp.src([]) gulp.src('./test/**/*.ts')
.pipe(mocha({ .pipe(mocha({
exit: true, exit: true,
compilers: 'ts:ts-node/register' require: 'ts-node/register'
} as any)) } as any))
); );
@@ -118,8 +114,9 @@ gulp.task('build:client', [
'copy:client' 'copy:client'
]); ]);
gulp.task('build:client:script', () => gulp.task('build:client:script', () => {
gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js']) const client = require('./built/client/meta.json');
return gulp.src(['./src/client/app/boot.js', './src/client/app/safe.js'])
.pipe(replace('VERSION', JSON.stringify(client.version))) .pipe(replace('VERSION', JSON.stringify(client.version)))
.pipe(replace('API', JSON.stringify(config.api_url))) .pipe(replace('API', JSON.stringify(config.api_url)))
.pipe(replace('ENV', JSON.stringify(env))) .pipe(replace('ENV', JSON.stringify(env)))
@@ -127,8 +124,8 @@ gulp.task('build:client:script', () =>
.pipe(isProduction ? uglify({ .pipe(isProduction ? uglify({
toplevel: true toplevel: true
} as any) : gutil.noop()) } as any) : gutil.noop())
.pipe(gulp.dest('./built/client/assets/')) as any .pipe(gulp.dest('./built/client/assets/'));
); });
gulp.task('build:client:styles', () => gulp.task('build:client:styles', () =>
gulp.src('./src/client/app/init.css') gulp.src('./src/client/app/init.css')
@@ -201,3 +198,10 @@ gulp.task('build:client:pug', [
})) }))
.pipe(gulp.dest('./built/client/app/')) .pipe(gulp.dest('./built/client/app/'))
); );
gulp.task('doc', () =>
gulp.src('./src/docs/**/*.styl')
.pipe(stylus())
.pipe((cssnano as any)())
.pipe(gulp.dest('./built/docs/assets/'))
);
+967
View File
@@ -0,0 +1,967 @@
---
meta:
lang: "日本語"
divider: ""
common:
misskey: "A ⭐ of fediverse"
about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time:
unknown: "なぞのじかん"
future: "未来"
just_now: "たった今"
seconds_ago: "{}秒前"
minutes_ago: "{}分前"
hours_ago: "{}時間前"
days_ago: "{}日前"
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
weekday-short:
sunday: "日"
monday: "月"
tuesday: "火"
wednesday: "水"
thursday: "木"
friday: "金"
saturday: "土"
reactions:
like: "いいね"
love: "しゅき"
laugh: "笑"
hmm: "ふぅ~む"
surprise: "わお"
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
b: "何かありましたか?"
c: "何をお考えですか?"
d: "言いたいことは?"
e: "ここに書いてください"
f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除"
loading: "読み込み中"
ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
calendar: "カレンダー"
timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ"
rss: "RSSリーダー"
memo: "付箋"
trends: "トレンド"
photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート"
slideshow: "スライドショー"
version: "バージョン"
broadcast: "ブロードキャスト"
notifications: "通知"
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
deck:
widgets: "ウィジェット"
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル"
notifications: "通知"
list: "リスト"
swap-left: "左に移動"
swap-right: "右に移動"
swap-up: "上に移動"
swap-down: "下に移動"
remove: "カラムを削除"
add-column: "カラムを追加"
rename: "名前を変更"
stack-left: "左に重ねる"
pop-right: "右に出す"
common/views/components/connect-failed.vue:
title: "サーバーに接続できません"
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
thanks: "いつもMisskeyをご利用いただきありがとうございます。"
troubleshoot: "トラブルシュート"
common/views/components/connect-failed.troubleshooter.vue:
title: "トラブルシューティング"
network: "ネットワーク接続"
checking-network: "ネットワーク接続を確認中"
internet: "インターネット接続"
checking-internet: "インターネット接続を確認中"
server: "サーバー接続"
checking-server: "サーバー接続を確認中"
finding: "問題を調べています"
no-network: "ネットワークに接続されていません"
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
no-internet: "インターネットに接続されていません"
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
no-server: "Misskeyのサーバーに接続できません"
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
success: "Misskeyのサーバーに接続できました"
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
flush: "キャッシュの削除"
set-version: "バージョン指定"
common/views/components/messaging.vue:
search-user: "ユーザーを探す"
you: "あなた"
no-history: "履歴はありません"
common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません"
more: "もっと読む"
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
common/views/components/nav.vue:
about: "Misskeyについて"
stats: "統計"
status: "ステータス"
wiki: "Wiki"
donors: "ドナー"
repository: "リポジトリ"
develop: "開発者"
feedback: "フィードバック"
common/views/components/note-menu.vue:
favorite: "お気に入り"
pin: "ピン留め"
delete: "削除"
delete-confirm: "この投稿を削除しますか?"
remote: "投稿元で見る"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{}票"
total-users: "{}人が投票"
vote: "投票する"
show-result: "結果を見る"
voted: "投票済み"
common/views/components/poll-editor.vue:
no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}"
remove: "この選択肢を削除"
add: "+選択肢を追加"
destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択"
common/views/components/signin.vue:
username: "ユーザー名"
password: "パスワード"
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
available: "利用できます"
unavailable: "既に利用されています"
error: "通信エラー"
invalid-format: "a~z、A~Z、0~9、_が使えます"
too-short: "1文字以上でお願いします!"
too-long: "20文字以内でお願いします"
password: "パスワード"
password-placeholder: "8文字以上を推奨します"
weak-password: "弱いパスワード"
normal-password: "まあまあのパスワード"
strong-password: "強いパスワード"
retype: "再入力"
retype-placeholder: "確認のため再入力してください"
password-matched: "確認されました"
password-not-matched: "一致していません"
recaptcha: "認証"
create: "アカウント作成"
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
common/views/components/special-message.vue:
new-year: "Happy New Year!"
christmas: "Merry Christmas!"
common/views/components/stream-indicator.vue:
connecting: "接続中"
reconnecting: "再接続中"
connected: "接続完了"
common/views/components/twitter-setting.vue:
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
connected-to: "次のTwitterアカウントに接続されています"
detail: "詳細..."
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する"
common/views/components/uploader.vue:
waiting: "待機中"
common/views/components/visibility-chooser.vue:
public: "公開"
home: "ホーム"
home-desc: "ホームタイムラインにのみ公開"
followers: "フォロワー"
followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開"
private: "非公開"
common/views/widgets/broadcast.vue:
fetching: "確認中"
no-broadcasts: "お知らせはありません"
have-a-nice-day: "良い一日を!"
next: "次"
common/views/widgets/donation.vue:
title: "寄付のお願い"
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
common/views/widgets/photo-stream.vue:
title: "フォトストリーム"
no-photos: "写真はありません"
common/views/widgets/posts-monitor.vue:
title: "投稿チャート"
toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue:
title: "サーバー情報"
toggle: "表示を切り替え"
common/views/widgets/memo.vue:
title: "付箋"
memo: "ここに書いて!"
save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
replies: "Red ... Replies"
renotes: "Green ... Renotes"
desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
desktop/views/components/calendar.vue:
title: "{1}年 {2}月"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
choose-prompt: "ファイルを選択"
desktop/views/components/choose-folder-from-drive-window.vue:
cancel: "キャンセル"
ok: "決定"
choose-prompt: "フォルダを選択"
desktop/views/components/crop-window.vue:
skip: "クロップをスキップ"
cancel: "キャンセル"
ok: "決定"
desktop/views/components/drive-window.vue:
used: "使用中"
drive: "ドライブ"
desktop/views/components/drive.file.vue:
avatar: "アイコン"
banner: "バナー"
contextmenu:
rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー"
download: "ダウンロード"
else-files: "その他..."
set-as-avatar: "アイコンに設定"
set-as-banner: "バナーに設定"
open-in-app: "アプリで開く"
add-app: "アプリを追加"
rename-file: "ファイル名の変更"
input-new-file-name: "新しいファイル名を入力してください"
copied: "コピー完了"
copied-url-to-clipboard: "URLをクリップボードにコピーしました"
desktop/views/components/drive.folder.vue:
unable-to-process: "操作を完了できません"
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
unhandled-error: "不明なエラー"
contextmenu:
move-to-this-folder: "このフォルダへ移動"
show-in-new-window: "新しいウィンドウで表示"
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: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
empty-folder: "このフォルダーは空です"
unable-to-process: "操作を完了できません"
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
unhandled-error: "不明なエラー"
url-upload: "URLアップロード"
url-of-file: "アップロードしたいファイルのURL"
url-upload-requested: "アップロードをリクエストしました"
may-take-time: "アップロードが完了するまで時間がかかる場合があります。"
create-folder: "フォルダー作成"
folder-name: "フォルダー名"
contextmenu:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
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:
empty: "フォロワーはいないようです。"
desktop/views/components/following-window.vue:
following: "{} のフォロー"
desktop/views/components/following.vue:
empty: "フォロー中のユーザーはいないようです。"
desktop/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー:"
empty: "おすすめのユーザーは見つかりませんでした。"
fetching: "読み込んでいます"
refresh: "もっと見る"
close: "閉じる"
desktop/views/components/game-window.vue:
game: "リバーシ"
desktop/views/components/home.vue:
done: "完了"
add-widget: "ウィジェットを追加:"
add: "追加"
desktop/views/input-dialog.vue:
cancel: "キャンセル"
ok: "決定"
desktop/views/components/messaging-room-window.vue:
title: "メッセージ:"
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:
reposted-by: "{}がRenote"
reply: "返信"
renote: "Renote"
add-reaction: "リアクション"
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue:
more: "もっと見る"
empty: "ありません!"
desktop/views/components/post-form.vue:
reply-placeholder: "この投稿への返信..."
quote-placeholder: "この投稿を引用..."
submit: "投稿"
reply: "返信"
renote: "Renote"
posted: "投稿しました!"
replied: "返信しました!"
reposted: "Renoteしました!"
note-failed: "投稿に失敗しました"
reply-failed: "返信に失敗しました"
renote-failed: "Renoteに失敗しました"
posting: "投稿中"
attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し"
insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成"
text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
attaches: "添付: {}メディア"
uploading-media: "{}個のメディアをアップロード中"
desktop/views/components/progress-dialog.vue:
waiting: "待機中"
desktop/views/components/renote-form.vue:
quote: "引用する..."
cancel: "キャンセル"
renote: "Renote"
reposting: "しています..."
success: "Renoteしました!"
failure: "Renoteに失敗しました"
desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか?"
desktop/views/components/settings-window.vue:
settings: "設定"
desktop/views/components/settings.vue:
profile: "プロフィール"
notification: "通知"
apps: "アプリ"
mute: "ミュート"
drive: "ドライブ"
security: "セキュリティ"
signin: "サインイン履歴"
password: "パスワード"
2fa: "二段階認証"
other: "その他"
license: "ライセンス"
behaviour: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
auto-popout: "ウィンドウの自動ポップアウト"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "詳細設定"
api-via-stream: "ストリームを経由したAPIリクエスト"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
show-maps: "マップの自動展開"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
sound: "サウンド"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
mobile: "モバイル"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ"
clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "Misskeyについて"
operator: "このサーバーの運営者"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
update-checking: "アップデートを確認中"
do-update: "アップデートを確認"
update-settings: "詳細設定"
prevent-update: "アップデートを延期する(非推奨)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
no-updates: "利用可能な更新はありません"
no-updates-desc: "お使いのMisskeyは最新です。"
update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
advanced-settings: "高度な設定"
debug-mode: "デバッグモードを有効にする"
debug-mode-desc: "この設定はブラウザに記憶されます。"
experimental: "実験的機能を有効にする"
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
url: "https://www.google.co.jp/intl/ja/landing/2step/"
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
register: "デバイスを登録する"
already-registered: "既に設定は完了しています。"
unregister: "設定を解除"
unregistered: "二段階認証が無効になりました。"
enter-password: "パスワードを入力してください"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら"
scan: "次に、表示されているQRコードをスキャンします:"
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
submit: "完了"
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
desktop/views/components/settings.api.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成"
token: "Token:"
enter-password: "パスワードを入力してください"
desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.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です"
desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
media-count: "{}つのメディア"
poll: "アンケート"
desktop/views/components/taskmanager.vue:
title: "タスクマネージャ"
desktop/views/components/timeline.vue:
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル"
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
favorites: "お気に入り"
lists: "リスト"
follow-requests: "フォロー申請"
customize: "ホームのカスタマイズ"
settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue:
home: "ホーム"
deck: "デッキ"
messaging: "メッセージ"
game: "ゲーム"
desktop/views/components/ui.header.notifications.vue:
title: "通知"
desktop/views/components/ui.header.post.vue:
post: "新規投稿"
desktop/views/components/ui.header.search.vue:
placeholder: "検索"
desktop/views/components/received-follow-requests-window.vue:
title: "フォロー申請"
accept: "承認"
reject: "拒否"
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
followers: "フォロワー"
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/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/welcome.vue:
about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン"
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:
prev: "前の投稿"
next: "次の投稿"
desktop/views/pages/selectdrive.vue:
title: "ファイルを選択してください"
ok: "決定"
cancel: "キャンセル"
upload: "PCからドライブにファイルをアップロード"
desktop/views/pages/user-list.users.vue:
users: "ユーザー"
add-user: "ユーザーを追加"
username: "ユーザー名"
desktop/views/pages/user/user.followers-you-know.vue:
title: "知り合いのフォロワー"
loading: "読み込み中"
no-users: "知り合いのフォロワーはいません"
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: "読み込み中"
no-photos: "写真はありません"
desktop/views/pages/user/user.profile.vue:
follows-you: "フォローされています"
stalk: "ストークする"
stalking: "ストーキングしています"
unstalk: "ストーク解除"
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue:
default: "投稿"
with-replies: "投稿と返信"
with-media: "メディア"
empty: "このユーザーはまだ何も投稿していないようです。"
desktop/views/widgets/messaging.vue:
title: "メッセージ"
desktop/views/widgets/notifications.vue:
title: "通知"
settings: "通知の設定"
desktop/views/widgets/polls.vue:
title: "アンケート"
refresh: "他を見る"
nothing: "ありません!"
desktop/views/widgets/post-form.vue:
title: "投稿"
note: "投稿"
desktop/views/widgets/profile.vue:
update-banner: "クリックでバナー編集"
update-avatar: "クリックでアバター編集"
desktop/views/widgets/trends.vue:
title: "トレンド"
refresh: "他を見る"
nothing: "ありません!"
desktop/views/widgets/users.vue:
title: "おすすめユーザー"
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 → このフォルダを削除>"
deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。"
folder-name: "フォルダー名"
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
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:
select-folder: "フォルダーを選択"
mobile/views/components/drive.file-detail.vue:
download: "ダウンロード"
rename: "名前を変更"
move: "移動"
hash: "ハッシュ (md5)"
exif: "EXIF"
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:
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
mobile/views/components/friends-maker.vue:
title: "気になるユーザーをフォロー"
empty: "おすすめのユーザーは見つかりませんでした。"
fetching: "読み込んでいます"
refresh: "もっと見る"
close: "閉じる"
mobile/views/components/note.vue:
reposted-by: "{}がRenote"
more: "もっと見る"
less: "隠す"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
location: "位置情報"
mobile/views/components/note-detail.vue:
reply: "返信"
reaction: "リアクション"
reposted-by: "{}がRenote"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
location: "位置情報"
mobile/views/components/note-preview.vue:
admin: "admin"
bot: "bot"
cat: "cat"
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: "ユーザーを追加"
submit: "投稿"
reply: "返信"
renote: "Renote"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
username-prompt: "ユーザー名を入力してください"
mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
media-count: "{}つのメディア"
poll: "アンケート"
mobile/views/components/timeline.vue:
empty: "投稿がありません"
load-more: "もっと"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
messaging: "メッセージ"
follow-requests: "フォロー申請"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
user-lists: "リスト"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
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/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:
following-of: "{}のフォロー"
mobile/views/pages/home.vue:
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル"
mobile/views/pages/messaging.vue:
messaging: "メッセージ"
mobile/views/pages/messaging-room.vue:
messaging: "メッセージ"
mobile/views/pages/received-follow-requests.vue:
title: "フォロー申請"
accept: "承認"
reject: "拒否"
mobile/views/pages/note.vue:
title: "投稿"
prev: "前の投稿"
next: "次の投稿"
mobile/views/pages/notifications.vue:
notifications: "通知"
read-all: "すべての通知を既読にしますか?"
mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
save: "保存"
saved: "プロフィールを保存しました"
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
timeline: "タイムライン"
show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する"
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
post-style: "投稿の表示スタイル"
post-style-standard: "標準"
post-style-smart: "スマート"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する"
twitter: "Twitter連携"
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
update-checking: "アップデートを確認中"
check-for-updates: "アップデートを確認"
no-updates: "利用可能な更新はありません"
no-updates-desc: "お使いのMisskeyは最新です。"
update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定"
signout: "サインアウト"
mobile/views/pages/user.vue:
follows-you: "フォローされています"
following: "フォロー"
followers: "フォロワー"
notes: "投稿"
overview: "概要"
timeline: "タイムライン"
media: "メディア"
is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る"
mobile/views/pages/user/home.vue:
recent-notes: "最近の投稿"
images: "画像"
activity: "アクティビティ"
keywords: "キーワード"
domains: "頻出ドメイン"
frequently-replied-users: "よく会話するユーザー"
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: "写真はありません"
docs:
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
edit-this-page-on-github-link: "このページをGitHubで編集"
api:
entities:
properties: "プロパティ"
endpoints:
params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props:
name: "名前"
type: "型"
description: "説明"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "Willst du etwas sagen?" d: "Willst du etwas sagen?"
e: "Schreib hier etwas!" e: "Schreib hier etwas!"
f: "Warte darauf, das du schreibst." f: "Warte darauf, das du schreibst."
search: "検索"
delete: "Löschen" delete: "Löschen"
loading: "Laden" loading: "Laden"
ok: "OK" ok: "OK"
@@ -49,6 +50,14 @@ common:
update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden" update-available: "Eine neue Version von Misskey ist verfügbar ({newer}, aktuell ist {current}). Lade die Seite neu um die aktuelle Version zu laden"
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet." my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "Analoge Uhr" analog-clock: "Analoge Uhr"
profile: "Profil" profile: "Profil"
@@ -77,6 +86,7 @@ common:
widgets: "Widget hinzufügen:" widgets: "Widget hinzufügen:"
home: "Startseite" home: "Startseite"
local: "Lokal" local: "Lokal"
hybrid: "ソーシャル"
global: "Global" global: "Global"
notifications: "Mitteilungen" notifications: "Mitteilungen"
list: "Listen" list: "Listen"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "Notizen" title: "Notizen"
memo: "Schreib hier!" memo: "Schreib hier!"
save: "Speichern" save: "Speichern"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Schwarz ... komplett" total: "Schwarz ... komplett"
notes: "Blau ... Hinweise" notes: "Blau ... Hinweise"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "Banner" banner: "Banner"
contextmenu: contextmenu:
rename: "Umbenennen" rename: "Umbenennen"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URL kopieren" copy-url: "URL kopieren"
download: "Download" download: "Download"
else-files: "Anderes…" else-files: "Anderes…"
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "Ein Verzeichnis erstellen" create-folder: "Ein Verzeichnis erstellen"
upload: "Eine Datei hochladen" upload: "Eine Datei hochladen"
url-upload: "Von einer URL hochladen" url-upload: "Von einer URL hochladen"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Folge ich" following: "Folge ich"
follow: "Folgen" follow: "Folgen"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "Laden fehlgeschlagen." error: "Laden fehlgeschlagen."
retry: "Erneut versuchen" retry: "Erneut versuchen"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "Mehr" more: "Mehr"
empty: "Keine Benachrichtigungen" empty: "Keine Benachrichtigungen"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "Medien von deinem PC hinzufügen" attach-media-from-local: "Medien von deinem PC hinzufügen"
attach-media-from-drive: "Medien von deinem Speicher hinzufügen" attach-media-from-drive: "Medien von deinem Speicher hinzufügen"
attach-cancel: "Hinzufügen abbrechen" attach-cancel: "Hinzufügen abbrechen"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Eine Abstimmung erstellen" create-poll: "Eine Abstimmung erstellen"
text-remain: "{} Zeichen verbleibend" text-remain: "{} Zeichen verbleibend"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "Neue Notiz" note: "Neue Notiz"
reply: "Antworten" reply: "Antworten"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert." api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
display: "Erscheinungsbild und Anzeige" display: "Erscheinungsbild und Anzeige"
customize: "Startseite anpassen" customize: "Startseite anpassen"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "Nacht Modus" dark-mode: "Nacht Modus"
circle-icons: "Kreisförmige Icons" circle-icons: "Kreisförmige Icons"
gradient-window-header: "Übergang in Fensterköpfen" gradient-window-header: "Übergang in Fensterköpfen"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "Profil aktualisieren" save: "Profil aktualisieren"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "Home" home: "Home"
local: "Lokal" local: "Lokal"
hybrid: "ソーシャル"
global: "Global" global: "Global"
list: "Listen" list: "Listen"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "Dein Profil" profile: "Dein Profil"
drive: "Speicher" drive: "Speicher"
favorites: "Favoriten" favorites: "Favoriten"
lists: "Listen" lists: "Listen"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "Anpassen" customize: "ホームのカスタマイズ"
settings: "Einstellungen" settings: "Einstellungen"
signout: "Ausloggen" signout: "Ausloggen"
dark: "Verdunkeln" dark: "Verdunkeln"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+197 -143
View File
@@ -3,13 +3,13 @@ meta:
lang: "English" lang: "English"
divider: "" divider: ""
common: common:
misskey: "A ⭐ of fediverse" misskey: "A ⭐ of the fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of the fediverse."
about: "Thanks for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within Fediverse (a universe where various social media platforms are organized) it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?" about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
time: time:
unknown: "unknown" unknown: "unknown"
future: "future" future: "future"
just_now: "just now" just_now: "now"
seconds_ago: "{}s ago" seconds_ago: "{}s ago"
minutes_ago: "{}m ago" minutes_ago: "{}m ago"
hours_ago: "{}h ago" hours_ago: "{}h ago"
@@ -39,16 +39,25 @@ common:
a: "What are you doing?" a: "What are you doing?"
b: "What's happening?" b: "What's happening?"
c: "Whats on your mind?" c: "Whats on your mind?"
d: "Do you want to say something?" d: "What do you wish to say?"
e: "Write here!" e: "Write here"
f: "Waiting for your writing." f: "Waiting for your writing..."
search: "Search"
delete: "Delete" delete: "Delete"
loading: "Loading" loading: "Loading"
ok: "OK" ok: "OK"
update-available-title: "Update available" update-available-title: "Update available"
update-available: "A new version of Misskey is now available({newer}, the current version is {current}). Reload the page to apply updates." update-available: "A new version of Misskey is now available({newer}, the current version is {current}). Reload the page to apply updates."
my-token-regenerated: "Your token has been renewed so you will be signed out." my-token-regenerated: "Your token has been regenerated, so you will be signed out."
i-like-sushi: "I like sushi rather than pudding" i-like-sushi: "I prefer sushi rather than pudding"
show-reversi-board-labels: "Show row and column labels in Reversi"
verified-user: "Verified user"
reversi:
drawn: "Draw"
my-turn: "Your turn"
opponent-turn: "Opponent's turn"
turn-of: "{}'s turn"
past-turn-of: "{}'s turn"
widgets: widgets:
analog-clock: "Analog clock" analog-clock: "Analog clock"
profile: "Profile" profile: "Profile"
@@ -58,7 +67,7 @@ common:
rss: "RSS reader" rss: "RSS reader"
memo: "Sticky note" memo: "Sticky note"
trends: "Trends" trends: "Trends"
photo-stream: "Photo stream" photo-stream: "Photostream"
posts-monitor: "Chart of posts" posts-monitor: "Chart of posts"
slideshow: "Slideshow" slideshow: "Slideshow"
version: "Version" version: "Version"
@@ -69,7 +78,7 @@ common:
post-form: "Post form" post-form: "Post form"
messaging: "Messages" messaging: "Messages"
server: "Server info" server: "Server info"
donation: "Donation" donation: "Request for donations"
nav: "Navigation" nav: "Navigation"
tips: "Tips" tips: "Tips"
hashtags: "Hashtags" hashtags: "Hashtags"
@@ -77,21 +86,22 @@ common:
widgets: "Widgets" widgets: "Widgets"
home: "Home" home: "Home"
local: "Local" local: "Local"
hybrid: "Social"
global: "Global" global: "Global"
notifications: "Notifications" notifications: "Notifications"
list: "List" list: "Lists"
swap-left: "Move left" swap-left: "Move to the left"
swap-right: "Move right" swap-right: "Move to the right"
swap-up: "Move upward" swap-up: "Move up"
swap-down: "Move downward" swap-down: "Move downward"
remove: "Remove" remove: "Remove"
add-column: "Add a column" add-column: "Add a column"
rename: "Rename" rename: "Rename"
stack-left: "Stack to left" stack-left: "Stack to the left"
pop-right: "Pop to right" pop-right: "Dock on the right"
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "Unable to connect to the server" title: "Unable to connect to the server"
description: "There is a problem either with your Internet connection, or the server may be down or under maintenance. Please {try again} later." description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please try again later."
thanks: "Thank you for using Misskey." thanks: "Thank you for using Misskey."
troubleshoot: "Troubleshoot" troubleshoot: "Troubleshoot"
common/views/components/connect-failed.troubleshooter.vue: common/views/components/connect-failed.troubleshooter.vue:
@@ -104,11 +114,11 @@ common/views/components/connect-failed.troubleshooter.vue:
checking-server: "Checking server connection" checking-server: "Checking server connection"
finding: "Searching for issues" finding: "Searching for issues"
no-network: "No connection" no-network: "No connection"
no-network-desc: "Please make sure you are connected to the network." no-network-desc: "Please make sure that you have a network connection."
no-internet: "There is no Internet connection" no-internet: "There is no Internet connection"
no-internet-desc: "Please make sure you are connected to the Internet." no-internet-desc: "Please make sure you are connected to the Internet."
no-server: "Unable to connect to the Misskey server" no-server: "Unable to connect to the Misskey server"
no-server-desc: "The network connection of your PC is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down or under maintenance, please try again later." no-server-desc: "The network connection of your device is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down, or under maintenance, please try again later."
success: "Successfully connected to the Misskey server" success: "Successfully connected to the Misskey server"
success-desc: "It seems to be able to connect. Please reload the page." success-desc: "It seems to be able to connect. Please reload the page."
flush: "Clean cache" flush: "Clean cache"
@@ -116,17 +126,17 @@ common/views/components/connect-failed.troubleshooter.vue:
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "Find a user" search-user: "Find a user"
you: "You" you: "You"
no-history: "No history" no-history: "Without history"
common/views/components/messaging-room.vue: common/views/components/messaging-room.vue:
empty: "You haven't messaged this user" empty: "No conversations"
more: "Read more" more: "Read more"
no-history: "There is no more history" no-history: "There is no further history"
resize-form: "Drag to resize" resize-form: "Drag to resize"
new-message: "New message" new-message: "New message"
common/views/components/messaging-room.form.vue: common/views/components/messaging-room.form.vue:
input-message-here: "Enter message here" input-message-here: "Enter message here"
send: "Send" send: "Send"
attach-from-local: "Attach files from your PC" attach-from-local: "Attach files from your device"
attach-from-drive: "Attach files from your Drive" attach-from-drive: "Attach files from your Drive"
common/views/components/messaging-room.message.vue: common/views/components/messaging-room.message.vue:
is-read: "Read" is-read: "Read"
@@ -142,10 +152,10 @@ common/views/components/nav.vue:
feedback: "Feedback" feedback: "Feedback"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
favorite: "Favorite this note" favorite: "Favorite this note"
pin: "Pin to profile page" pin: "Pin to your profile page"
delete: "Delete" delete: "Delete"
delete-confirm: "Are you sure you want to delete this post?" delete-confirm: "Delete this post for sure?"
remote: "Show on origin" remote: "Show the originating note"
common/views/components/poll.vue: common/views/components/poll.vue:
vote-to: "Vote for '{}'" vote-to: "Vote for '{}'"
vote-count: "{} votes" vote-count: "{} votes"
@@ -154,13 +164,13 @@ common/views/components/poll.vue:
show-result: "Show results" show-result: "Show results"
voted: "Voted" voted: "Voted"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "You need to enter two or more choices." no-only-one-choice: "At least two choices are required for this survey."
choice-n: "Choice {}" choice-n: "Choice {}"
remove: "Remove this choice" remove: "Delete this choice"
add: "+ Add a choice" add: "+ Add a choice"
destroy: "Cancel this poll" destroy: "Discard the poll"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "Choose a reaction" choose-reaction: "Express a reaction"
common/views/components/signin.vue: common/views/components/signin.vue:
username: "Username" username: "Username"
password: "Password" password: "Password"
@@ -185,9 +195,9 @@ common/views/components/signup.vue:
retype-placeholder: "Confirm your password" retype-placeholder: "Confirm your password"
password-matched: "OK" password-matched: "OK"
password-not-matched: "Doesn't match" password-not-matched: "Doesn't match"
recaptcha: "Verify" recaptcha: "Verification"
create: "Create an Account" create: "Create an Account"
some-error: "Account creation failed for some reason. Please try again." some-error: "An attempt at account creation has failed for some reason. Please try again."
common/views/components/special-message.vue: common/views/components/special-message.vue:
new-year: "Happy New Year!" new-year: "Happy New Year!"
christmas: "Merry Christmas!" christmas: "Merry Christmas!"
@@ -196,7 +206,7 @@ common/views/components/stream-indicator.vue:
reconnecting: "Reconnecting" reconnecting: "Reconnecting"
connected: "Connected" connected: "Connected"
common/views/components/twitter-setting.vue: common/views/components/twitter-setting.vue:
description: "If you connect your Twitter account to your Misskey account, you will be able to see your Twitter account information on your profile and you can sign-in using Twitter." description: "Once you connect your Twitter account to your Misskey account, you will be able to see information about your Twitter account on your profile, and you will be able to sign-in using Twitter."
connected-to: "You are connected to this Twitter account" connected-to: "You are connected to this Twitter account"
detail: "Details..." detail: "Details..."
reconnect: "Reconnect" reconnect: "Reconnect"
@@ -215,14 +225,14 @@ common/views/components/visibility-chooser.vue:
private: "Private" private: "Private"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "Fetching" fetching: "Fetching"
no-broadcasts: "No broadcasts" no-broadcasts: "No announcements"
have-a-nice-day: "Have a nice day!" have-a-nice-day: "Have a nice day!"
next: "Next" next: "Next"
common/views/widgets/donation.vue: common/views/widgets/donation.vue:
title: "Donation" title: "Request for donations"
text: "To keep Misskey up and running we spend money for our domain name, servers and so on. Since we don't get money from advertisements, we count on donations from all of you. If you're interested contact {}. Thank you for your contribution!" text: "To keep Misskey up and running, we have to spend money on our domain name, the server costs and so on. Since we don't receive money from advertisements, we count on donations from all of you. If you're interested in helping, contact {}. Thank you for your contribution!"
common/views/widgets/photo-stream.vue: common/views/widgets/photo-stream.vue:
title: "Photostream" title: "Photo stream"
no-photos: "No photos" no-photos: "No photos"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "Chart of posts" title: "Chart of posts"
@@ -230,7 +240,7 @@ common/views/widgets/posts-monitor.vue:
common/views/widgets/hashtags.vue: common/views/widgets/hashtags.vue:
title: "Hashtags" title: "Hashtags"
count: "{} users mentioned" count: "{} users mentioned"
empty: "No trend" empty: "No popular hashtag trends"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "Server info" title: "Server info"
toggle: "Toggle views" toggle: "Toggle views"
@@ -238,11 +248,17 @@ common/views/widgets/memo.vue:
title: "Sticky note" title: "Sticky note"
memo: "Write here!" memo: "Write here!"
save: "Save" save: "Save"
common/views/pages/follow.vue:
signed-in-as: "Signed in as {}"
following: "Following"
follow: "Follow"
request-pending: "Pending follow request"
follow-request: "Follow request"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
replies: "Red ... Replies" replies: "Red ... Replies"
renotes: "Green ... Renotes" renotes: "Green ... Repost"
desktop/views/components/activity.vue: desktop/views/components/activity.vue:
title: "Activity" title: "Activity"
toggle: "Toggle views" toggle: "Toggle views"
@@ -252,27 +268,29 @@ desktop/views/components/calendar.vue:
next: "Next month" next: "Next month"
go: "Click to navigate" go: "Click to navigate"
desktop/views/components/choose-file-from-drive-window.vue: desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Choosing files" choose-file: "Choose files"
upload: "Upload files from your PC" upload: "Upload files from your device"
cancel: "Cancel" cancel: "Cancel"
ok: "OK" ok: "OK"
choose-prompt: "Choose a file" choose-prompt: "Choose files"
desktop/views/components/choose-folder-from-drive-window.vue: desktop/views/components/choose-folder-from-drive-window.vue:
cancel: "Cancel" cancel: "Cancel"
ok: "OK" ok: "OK"
choose-prompt: "Choose a Folder" choose-prompt: "Choose a folder"
desktop/views/components/crop-window.vue: desktop/views/components/crop-window.vue:
skip: "Skip cropping" skip: "Skip cropping"
cancel: "Cancel" cancel: "Cancel"
ok: "OK" ok: "OK"
desktop/views/components/drive-window.vue: desktop/views/components/drive-window.vue:
used: "used" used: "used"
drive: "Drive" drive: "Media storage"
desktop/views/components/drive.file.vue: desktop/views/components/drive.file.vue:
avatar: "Avatar" avatar: "Avatar"
banner: "Banner" banner: "Banner"
contextmenu: contextmenu:
rename: "Rename" rename: "Rename"
mark-as-sensitive: "Mark as 'sensitive'"
unmark-as-sensitive: "Unmark as 'sensitive'"
copy-url: "Copy URL" copy-url: "Copy URL"
download: "Download" download: "Download"
else-files: "Others" else-files: "Others"
@@ -295,13 +313,13 @@ desktop/views/components/drive.folder.vue:
rename-folder: "Rename folder" rename-folder: "Rename folder"
input-new-folder-name: "Enter new name" input-new-folder-name: "Enter new name"
desktop/views/components/drive.nav-folder.vue: desktop/views/components/drive.nav-folder.vue:
drive: "Drive" drive: "Media storage"
desktop/views/components/drive.vue: desktop/views/components/drive.vue:
search: "Search" search: "Search"
load-more: "Load more" load-more: "Load more"
empty-draghover: "Drop Welcome!" empty-draghover: "Drop it here, don't I look cute?"
empty-drive: "Your drive is empty" empty-drive: "Your media storage is empty"
empty-drive-description: "You can also upload by right clicking and selecting \"Upload file\" or you can drag and drop a file onto the window." empty-drive-description: "Right-click to open the menu, or drag and drop a file onto here for uploading."
empty-folder: "This folder is empty" empty-folder: "This folder is empty"
unable-to-process: "The operation could not be completed." unable-to-process: "The operation could not be completed."
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move." circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "Create a folder" create-folder: "Create a folder"
upload: "Upload a file" upload: "Upload a file"
url-upload: "Upload from a URL" url-upload: "Upload from a URL"
desktop/views/components/media-image.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
desktop/views/components/media-video.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Following" following: "Following"
follow: "Follow" follow: "Follow"
@@ -332,13 +356,13 @@ desktop/views/components/following.vue:
desktop/views/components/friends-maker.vue: desktop/views/components/friends-maker.vue:
title: "Recommended users:" title: "Recommended users:"
empty: "Couldn't find any recommended users." empty: "Couldn't find any recommended users."
fetching: "Loading" fetching: "Loading"
refresh: "More" refresh: "More"
close: "Close" close: "Close"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "Reversi" game: "Reversi"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "Submit" done: "Done"
add-widget: "Add widget:" add-widget: "Add widget:"
add: "Add" add: "Add"
desktop/views/input-dialog.vue: desktop/views/input-dialog.vue:
@@ -350,8 +374,8 @@ desktop/views/components/messaging-window.vue:
title: "Messaging" title: "Messaging"
desktop/views/components/note-detail.vue: desktop/views/components/note-detail.vue:
more: "Load more conversations" more: "Load more conversations"
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been removed"
reposted-by: "Reposted by {}" reposted-by: "Reposted by {}"
location: "Location" location: "Location"
renote: "Repost" renote: "Repost"
@@ -362,14 +386,15 @@ desktop/views/components/notes.note.vue:
renote: "Repost" renote: "Repost"
add-reaction: "Add a reaction" add-reaction: "Add a reaction"
detail: "Show details" detail: "Show details"
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "The post has been deleted"
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "Loading failed." error: "Loading failed."
retry: "Retry" retry: "Retry"
load-more: "Read more"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "More" more: "More"
empty: "No notifications" empty: "No notifications!"
desktop/views/components/post-form.vue: desktop/views/components/post-form.vue:
reply-placeholder: "Reply to this note..." reply-placeholder: "Reply to this note..."
quote-placeholder: "Quote this note..." quote-placeholder: "Quote this note..."
@@ -379,16 +404,18 @@ desktop/views/components/post-form.vue:
posted: "Posted!" posted: "Posted!"
replied: "Replied!" replied: "Replied!"
reposted: "Reposted!" reposted: "Reposted!"
note-failed: "Failed to note" note-failed: "Failed to post the note"
reply-failed: "Failed to reply" reply-failed: "Failed to reply"
renote-failed: "Failed to repost" renote-failed: "Failed to repost"
posting: "Posting" posting: "Posting"
attach-media-from-local: "Attach media from your PC" attach-media-from-local: "Attach media from your device"
attach-media-from-drive: "Attach media from your Drive" attach-media-from-drive: "Attach media from your Drive"
attach-cancel: "Cancel attachment" attach-cancel: "Cancel attachment"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Create a poll" create-poll: "Create a poll"
text-remain: "{} characters remaining" text-remain: "{} characters remaining"
recent-tags: "Recent"
click-to-tagging: "Click to tagging"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "New note" note: "New note"
reply: "Reply" reply: "Reply"
@@ -420,15 +447,17 @@ desktop/views/components/settings.vue:
other: "Other" other: "Other"
license: "License" license: "License"
behaviour: "Behavior" behaviour: "Behavior"
fetch-on-scroll: "Fetch on scroll" fetch-on-scroll: "Endless loading on scroll"
fetch-on-scroll-desc: "When you scroll down the page automatically fetches additional content." fetch-on-scroll-desc: "When you scroll down the page, it automatically fetches additional content."
auto-popout: "Auto pop-out window" auto-popout: "Auto pop-out window"
auto-popout-desc: "Pop-out an opened window if possible. This setting is stored in the browser." auto-popout-desc: "Pops-out a newly opened window (onto a new tab), if possible. This setting is stored in the browser."
advanced: "Advanced settings" advanced: "Advanced settings"
api-via-stream: "API request via stream" 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." 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."
display: "Design and display" display: "Design and display"
customize: "Customize Home" customize: "Customize home layout"
choose-wallpaper: "Choose a background"
delete-wallpaper: "Remove background"
dark-mode: "Dark Mode" dark-mode: "Dark Mode"
circle-icons: "Use circle icons" circle-icons: "Use circle icons"
gradient-window-header: "Use gradients on window headers" gradient-window-header: "Use gradients on window headers"
@@ -448,15 +477,15 @@ desktop/views/components/settings.vue:
language: "Language" language: "Language"
pick-language: "Select a language" pick-language: "Select a language"
recommended: "Recommended" recommended: "Recommended"
auto: "Auto" auto: "Automatic"
specify-language: "Specify language" specify-language: "Specify language"
language-desc: "You need to reload the page for the changes to take effect." language-desc: "You need to reload the page for the changes to take effect."
cache: "Cache" cache: "Cache"
clean-cache: "Cleanup" clean-cache: "Clear cache"
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up." cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
cache-cleared: "Cache cleared" cache-cleared: "Cache cleared"
cache-cleared-desc: "Please reload the page." cache-cleared-desc: "Please reload the page."
auto-watch: "Auto watch" auto-watch: "Automatic watch"
auto-watch-desc: "Receive notifications about the post/reply/reaction automatically." auto-watch-desc: "Receive notifications about the post/reply/reaction automatically."
about: "About Misskey" about: "About Misskey"
operator: "The admin of this instance" operator: "The admin of this instance"
@@ -464,44 +493,44 @@ desktop/views/components/settings.vue:
version: "Version:" version: "Version:"
latest-version: "Latest version:" latest-version: "Latest version:"
update-checking: "Checking for updates" update-checking: "Checking for updates"
do-update: "Check for update" do-update: "Check for updates"
update-settings: "Advanced settings" update-settings: "Advanced settings"
prevent-update: "Postpone updates (not recommended)" prevent-update: "Postpone updates (not recommended)"
prevent-update-desc: "Even if you turn this setting on updates may apply. This setting is valid only for this device." prevent-update-desc: "Even if you turn this setting on, updates may apply. This setting is enabled only for this device."
no-updates: "No updates available" no-updates: "No updates available"
no-updates-desc: "Your Misskey is up to date." no-updates-desc: "Your Misskey is up to date."
update-available: "New version is available!" update-available: "A new version is available"
update-available-desc: "The updates will apply if you reload the page again." update-available-desc: "The updates will apply if you reload the page again."
advanced-settings: "Advanced" advanced-settings: "Advanced"
debug-mode: "Enable the debug mode" debug-mode: "Enable the debug mode"
debug-mode-desc: "This setting is stored in the browser." debug-mode-desc: "This setting is stored in the browser."
experimental: "Enable experimental features" experimental: "Enable experimental features"
experimental-desc: "It would make Misskey client unstable. This setting is stored in the browser." experimental-desc: "Activating this might make the Misskey client unstable. This setting is stored in the browser."
tools: "Tools" tools: "Tools"
task-manager: "Task Manager" task-manager: "Task Manager"
third-parties: "Third-party" third-parties: "Third-parties"
desktop/views/components/settings.2fa.vue: desktop/views/components/settings.2fa.vue:
intro: "If you set up 2-step verification, you will need not only a password at sign-in but also a pre-registered physical device (such as your smartphone), which will improve security. " 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: "See details..." detail: "See details..."
url: "https://www.google.com/landing/2step/" url: "https://www.google.com/landing/2step/"
caution: "If you lose access to your device, you won't be able to connect to Misskey anymore!" caution: "If you lose access to your device, you won't be able to connect to Misskey anymore!"
register: "Register a device" register: "Register a device"
already-registered: "A device is already registered" already-registered: "A device is already registered"
unregister: "Disable" unregister: "Disable"
unregistered: "Two-step authentication has been disabled." unregistered: "Two-factor authentication has been disabled."
enter-password: "Enter the password" enter-password: "Enter the password"
authenticator: "First, you need install Google Authenticator on your device:" authenticator: "First, you need to install Google Authenticator on your device:"
howtoinstall: "How to install" howtoinstall: "How to install"
scan: "And then, scan the QR code:" scan: "And then, scan the QR code:"
done: "Please enter the token displaying on your device:" done: "Please enter the token displaying on your device:"
submit: "Submit" submit: "Submit"
success: "Setup completed successfully!" success: "Settings saved!"
failed: "Failed to setup. please ensure that the token is correct." failed: "Failed to setup. Please ensure that the token is correct."
info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey." info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
desktop/views/components/settings.api.vue: desktop/views/components/settings.api.vue:
intro: "To access the API, set this token as the key 'i' of request parameters." intro: "To access the API, set this token as the key 'i' of request parameters."
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised." caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
regeneration-of-token: "In the unlikely event that this token leaks out you can regenerate it." regeneration-of-token: "In the unlikely event that this token leaks out, you can regenerate it."
regenerate-token: "Regenerate the token" regenerate-token: "Regenerate the token"
token: "Token:" token: "Token:"
enter-password: "Please enter the password" enter-password: "Please enter the password"
@@ -510,12 +539,12 @@ desktop/views/components/settings.apps.vue:
desktop/views/components/settings.mute.vue: desktop/views/components/settings.mute.vue:
no-users: "No muted users" no-users: "No muted users"
desktop/views/components/settings.password.vue: desktop/views/components/settings.password.vue:
reset: "Change your password" reset: "Change password"
enter-current-password: "Enter the current password" enter-current-password: "Enter the current password"
enter-new-password: "Enter the new password" enter-new-password: "Enter the new password"
enter-new-password-again: "Enter the new password again" enter-new-password-again: "Enter new password again"
not-match: "New password doesn't match" not-match: "The new passwords do not match"
changed: "Password updated successfully" changed: "Password updated"
desktop/views/components/settings.profile.vue: desktop/views/components/settings.profile.vue:
avatar: "Avatar" avatar: "Avatar"
choice-avatar: "Choose an image" choice-avatar: "Choose an image"
@@ -524,11 +553,14 @@ desktop/views/components/settings.profile.vue:
description: "Description" description: "Description"
birthday: "Birthday" birthday: "Birthday"
save: "Update profile" save: "Update profile"
locked-account: "Protect your account"
is-locked: "Make a note private"
other: "Other"
is-bot: "This account is a Bot" is-bot: "This account is a Bot"
is-cat: "This account is a Cat" is-cat: "This account is a Cat"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been deleted"
media-count: "{} media attached" media-count: "{} media attached"
poll: "Poll" poll: "Poll"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
@@ -536,18 +568,21 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "Home" home: "Home"
local: "Local" local: "Local"
hybrid: "Social"
global: "Global" global: "Global"
list: "Lists" list: "Lists"
desktop/views/components/ui.header.vue:
welcome-back: "Welcome back,"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "Your profile" profile: "Your profile"
drive: "Drive" drive: "Media storage"
favorites: "Favorites" favorites: "Favorites"
lists: "Lists" lists: "Lists"
follow-requests: "Follow requests" follow-requests: "Follow requests"
customize: "Customize" customize: "Customize home layout"
settings: "Settings" settings: "Settings"
signout: "Sign out" signout: "Sign out"
dark: "Fall in dark" dark: "Submerge in dark"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
home: "Home" home: "Home"
deck: "Deck" deck: "Deck"
@@ -565,7 +600,7 @@ desktop/views/components/received-follow-requests-window.vue:
reject: "Reject" reject: "Reject"
desktop/views/components/user-lists-window.vue: desktop/views/components/user-lists-window.vue:
title: "User lists" title: "User lists"
create-list: "Create list" create-list: "Create new list"
desktop/views/components/user-preview.vue: desktop/views/components/user-preview.vue:
notes: "Posts" notes: "Posts"
following: "Following" following: "Following"
@@ -578,17 +613,18 @@ desktop/views/components/users-list.vue:
desktop/views/components/users-list-item.vue: desktop/views/components/users-list-item.vue:
followed: "Follows you" followed: "Follows you"
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "Popout" popout: "Pop-out"
close: "Close" close: "Close"
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Only media posts" is-media-only: "Only media posts"
is-media-view: "Media view" is-media-view: "Media view"
edit: "Options"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "Reposted by {}" reposted-by: "Reposted by {}"
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been deleted"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "about" about: "More details..."
gotit: "Got it!" gotit: "Got it!"
signin: "Log In" signin: "Log In"
signup: "Sign up" signup: "Sign up"
@@ -596,11 +632,11 @@ desktop/views/pages/welcome.vue:
signup-button: "Sign up" signup-button: "Sign up"
timeline: "Timeline" timeline: "Timeline"
desktop/views/pages/drive.vue: desktop/views/pages/drive.vue:
title: "Misskey Drive" title: "Misskey storage"
desktop/views/pages/favorites.vue: desktop/views/pages/favorites.vue:
more: "Load More" more: "Load more"
desktop/views/pages/home-customize.vue: desktop/views/pages/home-customize.vue:
title: "Customize home" title: "Customize home layout"
desktop/views/pages/note.vue: desktop/views/pages/note.vue:
prev: "Previous note" prev: "Previous note"
next: "Next note" next: "Next note"
@@ -608,7 +644,7 @@ desktop/views/pages/selectdrive.vue:
title: "Choose file(s)" title: "Choose file(s)"
ok: "OK" ok: "OK"
cancel: "Cancel" cancel: "Cancel"
upload: "Upload files from you PC" upload: "Upload files from your device"
desktop/views/pages/user-list.users.vue: desktop/views/pages/user-list.users.vue:
users: "User" users: "User"
add-user: "Add a user" add-user: "Add a user"
@@ -616,17 +652,17 @@ desktop/views/pages/user-list.users.vue:
desktop/views/pages/user/user.followers-you-know.vue: desktop/views/pages/user/user.followers-you-know.vue:
title: "Followers you know" title: "Followers you know"
loading: "Loading" loading: "Loading"
no-users: "No users" no-users: "No followers you know"
desktop/views/pages/user/user.friends.vue: desktop/views/pages/user/user.friends.vue:
title: "Frequently replied" title: "Frequent mentions"
loading: "Loading" loading: "Loading"
no-users: "No users" no-users: "No users"
desktop/views/pages/user/user.vue: desktop/views/pages/user/user.vue:
is-suspended: "This account has been suspended." is-suspended: "This account has been suspended."
is-remote: "This user is a remote user, so the information is not accurate. " is-remote: "This user is a remote user, so the information about them that you see here is not complete. "
view-remote: "See accurate information" view-remote: "See their complete profile"
desktop/views/pages/user/user.home.vue: desktop/views/pages/user/user.home.vue:
last-used-at: "Last active: " last-used-at: "Last active:"
desktop/views/pages/user/user.photos.vue: desktop/views/pages/user/user.photos.vue:
title: "Photos" title: "Photos"
loading: "Loading" loading: "Loading"
@@ -639,11 +675,16 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mute" mute: "Mute"
muted: "Muting" muted: "Muting"
unmute: "Unmute" unmute: "Unmute"
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Following"
followers: "Followers"
is-bot: "This account is a Bot"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "Posts" default: "Posts"
with-replies: "Posts and replies" with-replies: "Notes and replies"
with-media: "Media" with-media: "Media"
empty: "This user has never posted yet." empty: "This user doesn't seem to have posted anything yet."
desktop/views/widgets/messaging.vue: desktop/views/widgets/messaging.vue:
title: "Messaging" title: "Messaging"
desktop/views/widgets/notifications.vue: desktop/views/widgets/notifications.vue:
@@ -651,7 +692,7 @@ desktop/views/widgets/notifications.vue:
settings: "Settings" settings: "Settings"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "Polls" title: "Polls"
refresh: "Show others" refresh: "refresh"
nothing: "Nothing" nothing: "Nothing"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
title: "Post" title: "Post"
@@ -661,32 +702,32 @@ desktop/views/widgets/profile.vue:
update-avatar: "Click to edit your avatar" update-avatar: "Click to edit your avatar"
desktop/views/widgets/trends.vue: desktop/views/widgets/trends.vue:
title: "Trend" title: "Trend"
refresh: "Show others" refresh: "refresh"
nothing: "Nothing" nothing: "Nothing"
desktop/views/widgets/users.vue: desktop/views/widgets/users.vue:
title: "Recommended users" title: "Recommended users"
refresh: "Show others" refresh: "refresh"
no-one: "No one" no-one: "No one"
mobile/views/components/drive.vue: mobile/views/components/drive.vue:
drive: "Drive" drive: "Media storage"
used: "used" used: "used"
folder-count: "Folder(s)" folder-count: "Folder(s)"
count-separator: ", " count-separator: ", "
file-count: "File(s)" file-count: "File(s)"
load-more: "Load more" load-more: "Load more"
nothing-in-drive: "Nothing" nothing-in-drive: "There's nothing stored."
folder-is-empty: "This folder is empty" 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>" 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>"
deletion-alert: "Sorry! Deleting a folder is not yet implemented." deletion-alert: "Sorry! Deleting a folder is not yet implemented."
folder-name: "Folder name" folder-name: "Folder name"
root-rename-alert: "You're in the root; it can't be renamed because it's not a folder. Navigate to a folder you want to rename and try again." root-rename-alert: "You're in the root; it can't be renamed because it's not a folder. Navigate to a folder you want to rename and try again."
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." 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 file you want to upload" url-prompt: "URL of the file you want to upload"
uploading: "Upload requested. It may take some time for the upload to complete." uploading: "Upload requested. It may take a while for the upload to finish."
mobile/views/components/drive-file-detail.vue: mobile/views/components/drive-file-detail.vue:
rename: "Rename" rename: "Rename"
mobile/views/components/drive-file-chooser.vue: mobile/views/components/drive-file-chooser.vue:
select-file: "Choose a file" select-file: "Choose files"
mobile/views/components/drive-folder-chooser.vue: mobile/views/components/drive-folder-chooser.vue:
select-folder: "Choose a folder" select-folder: "Choose a folder"
mobile/views/components/drive.file-detail.vue: mobile/views/components/drive.file-detail.vue:
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "Move" move: "Move"
hash: "Hash (md5)" hash: "Hash (md5)"
exif: "EXIF" exif: "EXIF"
mobile/views/components/media-image.vue:
sensitive: "The content is 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: mobile/views/components/follow-button.vue:
following: "Following" following: "Following"
follow: "Follow" follow: "Follow"
@@ -710,15 +757,15 @@ mobile/views/components/note.vue:
reposted-by: "Reposted by {}" reposted-by: "Reposted by {}"
more: "See more" more: "See more"
less: "Hide" less: "Hide"
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been deleted"
location: "Location" location: "Location"
mobile/views/components/note-detail.vue: mobile/views/components/note-detail.vue:
reply: "Reply" reply: "Reply"
reaction: "Reaction" reaction: "Reaction"
reposted-by: "Reposted by {}" reposted-by: "Reposted by {}"
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been deleted"
location: "Location" location: "Location"
mobile/views/components/note-preview.vue: mobile/views/components/note-preview.vue:
admin: "admin" admin: "admin"
@@ -729,7 +776,7 @@ mobile/views/components/note-sub.vue:
bot: "bot" bot: "bot"
cat: "cat" cat: "cat"
mobile/views/components/notes.vue: mobile/views/components/notes.vue:
failed: "Failed to load." failed: "Failed to load"
retry: "Retry" retry: "Retry"
mobile/views/components/notifications.vue: mobile/views/components/notifications.vue:
more: "More" more: "More"
@@ -738,16 +785,16 @@ mobile/views/components/post-form.vue:
add-visible-user: "Add a user" add-visible-user: "Add a user"
submit: "Post" submit: "Post"
reply: "Reply" reply: "Reply"
renote: "Repost" renote: "Renote"
quote-placeholder: "Quote this post... (optional)" quote-placeholder: "Quote this post... (optional)"
reply-placeholder: "Reply to this note..." reply-placeholder: "Reply to this note..."
cw-placeholder: "Comments about content (optional)" cw-placeholder: "Comments about content (optional)"
location-alert: "Your device does not support location services" location-alert: "Your device does not provide location services"
error: "Error" error: "Error"
username-prompt: "Enter user name" username-prompt: "Enter user name"
mobile/views/components/sub-note-content.vue: mobile/views/components/sub-note-content.vue:
private: "this post is private" private: "This post is private"
deleted: "this post has been deleted" deleted: "This post has been deleted"
media-count: "{} media attached" media-count: "{} media attached"
poll: "Poll" poll: "Poll"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
@@ -768,8 +815,8 @@ mobile/views/components/ui.nav.vue:
settings: "Settings" settings: "Settings"
about: "About Misskey" about: "About Misskey"
mobile/views/components/user-timeline.vue: mobile/views/components/user-timeline.vue:
no-notes: "It seems this user hasn't posted yet" no-notes: "It seems this user hasn't posted anything yet."
no-notes-with-media: "There is no notes with attached media" no-notes-with-media: "There are no notes with media attachments"
load-more: "More" load-more: "More"
mobile/views/components/users-list.vue: mobile/views/components/users-list.vue:
all: "All" all: "All"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "Home" home: "Home"
local: "Local" local: "Local"
hybrid: "Social"
global: "Global" global: "Global"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "Messaging" messaging: "Messaging"
@@ -805,33 +853,33 @@ mobile/views/pages/note.vue:
next: "Next note" next: "Next note"
mobile/views/pages/notifications.vue: mobile/views/pages/notifications.vue:
notifications: "Notifications" notifications: "Notifications"
read-all: "Are you sure you want to mark all unread notifications as read?" read-all: "Do you wish to mark all notifications as read?"
mobile/views/pages/settings/settings.profile.vue: mobile/views/pages/settings/settings.profile.vue:
title: "Profile" title: "Profile"
name: "Name" name: "Name"
account: "Account" account: "Account"
location: "Location" location: "Location"
description: "Description" description: "Biography"
birthday: "Birthday" birthday: "Birthday"
avatar: "Avatar" avatar: "Avatar"
banner: "Banner" banner: "Banner"
is-cat: "This account is a Cat" is-cat: "This account is a Cat"
save: "Update profile" save: "Update profile"
saved: "Profile updated successfully" saved: "Profile updated"
uploading: "Uploading" uploading: "Uploading"
upload-failed: "Upload failed" upload-failed: "Failed to upload"
mobile/views/pages/search.vue: mobile/views/pages/search.vue:
search: "Search" search: "Search"
empty: "No posts were found for '{}'" empty: "No posts were found for '{}'"
mobile/views/pages/selectdrive.vue: mobile/views/pages/selectdrive.vue:
select-file: "Choose a file" select-file: "Choose files"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Signed in as {}" signed-in-as: "Signed in as {}"
lang: "Language" lang: "Language"
lang-tip: "You will need to reload the page for the changes to take effect." lang-tip: "You will need to reload the page for the changes to take effect."
recommended: "Recommended" recommended: "Recommended"
auto: "Auto" auto: "Auto"
specify-language: "Specify the language" specify-language: "Select your language"
design: "Design and display" design: "Design and display"
dark-mode: "Dark Mode" dark-mode: "Dark Mode"
i-am-under-limited-internet: "I'm under limited internet" i-am-under-limited-internet: "I'm under limited internet"
@@ -844,10 +892,10 @@ mobile/views/pages/settings.vue:
post-style-standard: "Standard" post-style-standard: "Standard"
post-style-smart: "Smart" post-style-smart: "Smart"
behavior: "Behavior" behavior: "Behavior"
fetch-on-scroll: "Fetch on scroll" fetch-on-scroll: "Endless loading on scroll"
disable-via-mobile: "Without the \"mobile posts\" flag" disable-via-mobile: "Don't mark the post as 'from mobile'"
load-raw-images: "Show attached pictures in high-quality" load-raw-images: "Show attached images in high-quality"
load-remote-media: "Show media on a remote server" load-remote-media: "Show media from a remote server"
twitter: "Twitter integration" twitter: "Twitter integration"
twitter-connect: "Connect to your Twitter account" twitter-connect: "Connect to your Twitter account"
twitter-reconnect: "Reconnect" twitter-reconnect: "Reconnect"
@@ -856,39 +904,39 @@ mobile/views/pages/settings.vue:
version: "Current version:" version: "Current version:"
latest-version: "Latest version:" latest-version: "Latest version:"
update-checking: "Checking for updates" update-checking: "Checking for updates"
check-for-updates: "Check for update" check-for-updates: "Check for updates"
no-updates: "No updates available" no-updates: "No updates available"
no-updates-desc: "Your Misskey is up to date." no-updates-desc: "Your Misskey is up to date."
update-available: "New version is available!" update-available: "A new version is available"
update-available-desc: "To reload the page and updates are applied." update-available-desc: "Updates will be applied after reloading the page"
settings: "Settings" settings: "Settings"
signout: "Sign out" signout: "Sign out"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
follows-you: "Follows you" follows-you: "Follows you"
following: "Following" following: "Following"
followers: "Followers" followers: "Followers"
notes: "Posts" notes: "Notes"
overview: "Overview" overview: "Overview"
timeline: "Timeline" timeline: "Timeline"
media: "Media" media: "Media"
is-suspended: "This account has been suspended." is-suspended: "This account has been suspended."
is-remote: "This user is a remote user, so the information is not accurate. " is-remote: "This user is a remote user, so the information you see here is not complete."
view-remote: "See accurate information" view-remote: "See their complete profile"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
recent-notes: "Recent notes" recent-notes: "Recent notes"
images: "Images" images: "Images"
activity: "Activity" activity: "Activity"
keywords: "Keywords" keywords: "Keywords"
domains: "Domains" domains: "Domains"
frequently-replied-users: "Frequently talking users" frequently-replied-users: "Frequently mentioned users"
followers-you-know: "Followers you know" followers-you-know: "Followers you know"
last-used-at: "Last active:" last-used-at: "Last active:"
mobile/views/pages/user/home.followers-you-know.vue: mobile/views/pages/user/home.followers-you-know.vue:
loading: "Loading" loading: "Loading"
no-users: "No users" no-users: "No users you know"
mobile/views/pages/user/home.friends.vue: mobile/views/pages/user/home.friends.vue:
loading: "Loading" loading: "Loading"
no-users: "No users" no-users: "There are no users that you know"
mobile/views/pages/user/home.notes.vue: mobile/views/pages/user/home.notes.vue:
loading: "Loading" loading: "Loading"
no-notes: "No notes" no-notes: "No notes"
@@ -903,11 +951,17 @@ docs:
properties: "Properties" properties: "Properties"
endpoints: endpoints:
params: "Parameters" params: "Parameters"
no-params: "No parameter."
res: "Response" res: "Response"
require-credential: "This endpoint requires the authentication information."
require-permission: "This endpoint requires {permission} permission."
has-limit: "There is a rate limit."
duration-limit: "You can't request when a frequency of a request in during {duration} milliseconds exceeds {max} times."
min-interval-limit: "You can't request before {interval} milliseconds has passed since previous request."
show-src: "You can view source code for this endpoint."
show-src-link: "See the code on GitHub"
generated: "This doc is generated by an API definition."
props: props:
name: "Name" name: "Name"
type: "Type" type: "Type"
optional: "Optional"
description: "Description" description: "Description"
yes: "Yes"
no: "No"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "¿Quieres decir algo?" d: "¿Quieres decir algo?"
e: "¡Escribe aquí!" e: "¡Escribe aquí!"
f: "Esperando a que escribas algo..." f: "Esperando a que escribas algo..."
search: "検索"
delete: "eliminar" delete: "eliminar"
loading: "cargando" loading: "cargando"
ok: "OK" ok: "OK"
@@ -49,6 +50,14 @@ common:
update-available: "Hay disponible una nueva versión de Misskey ({newer}, la versión actual es {current}). Refresca la página para aplicar las actualizaciones." update-available: "Hay disponible una nueva versión de Misskey ({newer}, la versión actual es {current}). Refresca la página para aplicar las actualizaciones."
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado." my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "Reloj analógico" analog-clock: "Reloj analógico"
profile: "Perfil" profile: "Perfil"
@@ -77,6 +86,7 @@ common:
widgets: "Accesorios" widgets: "Accesorios"
home: "Inicio" home: "Inicio"
local: "Local" local: "Local"
hybrid: "ソーシャル"
global: "Global" global: "Global"
notifications: "Notificaciones" notifications: "Notificaciones"
list: "Listado" list: "Listado"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "Banner" banner: "Banner"
contextmenu: contextmenu:
rename: "Renombrar" rename: "Renombrar"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "Copia la URL" copy-url: "Copia la URL"
download: "Descargar" download: "Descargar"
else-files: "Otros" else-files: "Otros"
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "Crear una carpeta" create-folder: "Crear una carpeta"
upload: "Subir fichero" upload: "Subir fichero"
url-upload: "Subir desde una URL" url-upload: "Subir desde una URL"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Siguiendo" following: "Siguiendo"
follow: "Sigue" follow: "Sigue"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "Adjunta multimedia desde tu Disco" attach-media-from-drive: "Adjunta multimedia desde tu Disco"
attach-cancel: "Quitar el archivo adjunto" attach-cancel: "Quitar el archivo adjunto"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Crea una encuesta" create-poll: "Crea una encuesta"
text-remain: "quedan {} caracteres" text-remain: "quedan {} caracteres"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "Nota nueva" note: "Nota nueva"
reply: "Responder" reply: "Responder"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
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." 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."
display: "Diseño y pantalla" display: "Diseño y pantalla"
customize: "Personaliza la página principal" customize: "Personaliza la página principal"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "Modo Nocturno" dark-mode: "Modo Nocturno"
circle-icons: "Usar iconos circulares" circle-icons: "Usar iconos circulares"
gradient-window-header: "Usar degradados en las cabeceras de las páginas" gradient-window-header: "Usar degradados en las cabeceras de las páginas"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+79 -25
View File
@@ -3,7 +3,7 @@ meta:
lang: "Français" lang: "Français"
divider: "" divider: ""
common: common:
misskey: "Aof fediverse" misskey: "Unedu fédiverse"
about-title: "Une ⭐ du fédiverse." about-title: "Une ⭐ du fédiverse."
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre. Parce qu'il fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?" about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre. Parce qu'il fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
time: time:
@@ -42,13 +42,22 @@ common:
d: "Voulez-vous exprimer quelque chose ?" d: "Voulez-vous exprimer quelque chose ?"
e: "Écrivez ici" e: "Écrivez ici"
f: "En attente de vos écrits" f: "En attente de vos écrits"
search: "Recherche"
delete: "Supprimer" delete: "Supprimer"
loading: "Chargement" loading: "Chargement"
ok: "OK" ok: "OK"
update-available-title: "更新があります" update-available-title: "Mise à jour disponible"
update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour." update-available: "Une nouvelle version de Misskey est disponible ({newer}, version actuelle: {current}). Veuillez recharger la page pour appliquer la mise à jour."
my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté." my-token-regenerated: "Votre token vient d'être généré, vous allez maintenant être déconnecté."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "Je préfère les sushis (au pudding)"
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
verified-user: "認証済みのユーザー"
reversi:
drawn: "Partie nulle"
my-turn: "Cest votre tour"
opponent-turn: "Tour de ladversaire"
turn-of: "Cest le tour de {}"
past-turn-of: "C'est au tour de {}"
widgets: widgets:
analog-clock: "Horloge analogique" analog-clock: "Horloge analogique"
profile: "Profil" profile: "Profil"
@@ -77,6 +86,7 @@ common:
widgets: "Widgets" widgets: "Widgets"
home: "Accueil" home: "Accueil"
local: "Local" local: "Local"
hybrid: "ソーシャル"
global: "Global" global: "Global"
notifications: "Notifications" notifications: "Notifications"
list: "Liste" list: "Liste"
@@ -145,7 +155,7 @@ common/views/components/note-menu.vue:
pin: "Épingler sur votre profile" pin: "Épingler sur votre profile"
delete: "Supprimer" delete: "Supprimer"
delete-confirm: "Supprimer cette publication ?" delete-confirm: "Supprimer cette publication ?"
remote: "投稿元で見る" remote: "Afficher les note originale"
common/views/components/poll.vue: common/views/components/poll.vue:
vote-to: "Voter pour '{}'" vote-to: "Voter pour '{}'"
vote-count: "{} votes" vote-count: "{} votes"
@@ -226,11 +236,11 @@ common/views/widgets/photo-stream.vue:
no-photos: "Pas de photos" no-photos: "Pas de photos"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "Graph des publications" title: "Graph des publications"
toggle: "表示を切り替え" toggle: "Basculer les vues"
common/views/widgets/hashtags.vue: common/views/widgets/hashtags.vue:
title: "Étiquettes" title: "Étiquettes"
count: "{}人が投稿" count: "{} utilisateurs mentionnés"
empty: "トレンドなし" empty: "Aucune tendance"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "Info sur le serveur" title: "Info sur le serveur"
toggle: "Afficher les vues" toggle: "Afficher les vues"
@@ -238,8 +248,14 @@ common/views/widgets/memo.vue:
title: "Pense-bête" title: "Pense-bête"
memo: "Écrivez ici !" memo: "Écrivez ici !"
save: "Enregistrer" save: "Enregistrer"
common/views/pages/follow.vue:
signed-in-as: "Connecté en tant que {}"
following: "Suit"
follow: "Suivre"
request-pending: "Demande d'abonnement en attente"
follow-request: "Demande d'abonnement"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Noir ... Total"
notes: "Bleu ... Notes" notes: "Bleu ... Notes"
replies: "Rouge ... Réponses" replies: "Rouge ... Réponses"
renotes: "Vert ... Partages" renotes: "Vert ... Partages"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "Bannière" banner: "Bannière"
contextmenu: contextmenu:
rename: "Renommer" rename: "Renommer"
mark-as-sensitive: "Marquer comme sensible"
unmark-as-sensitive: "Ne pas marquer comme sensible"
copy-url: "Copier l'URL" copy-url: "Copier l'URL"
download: "Télécharger" download: "Télécharger"
else-files: "Autres..." else-files: "Autres..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "Créer un dossier" create-folder: "Créer un dossier"
upload: "Uploader un fichier" upload: "Uploader un fichier"
url-upload: "Uploader d'un URL" url-upload: "Uploader d'un URL"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "Cliquer pour afficher"
desktop/views/components/media-video.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Abonnements" following: "Abonnements"
follow: "Suivre" follow: "Suivre"
@@ -336,7 +360,7 @@ desktop/views/components/friends-maker.vue:
refresh: "Plus" refresh: "Plus"
close: "Fermer" close: "Fermer"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "リバーシ" game: "Reversi"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "Envoyer" done: "Envoyer"
add-widget: "Ajouter un widget" add-widget: "Ajouter un widget"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "Échec du chargement." error: "Échec du chargement."
retry: "Réessayer" retry: "Réessayer"
load-more: "Afficher plus"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "Plus" more: "Plus"
empty: "Pas de notifications" empty: "Pas de notifications"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "Joindre un media depuis votre PC" attach-media-from-local: "Joindre un media depuis votre PC"
attach-media-from-drive: "Joindre un media depuis votre Drive" attach-media-from-drive: "Joindre un media depuis votre Drive"
attach-cancel: "Annuler la jointure de fichier" attach-cancel: "Annuler la jointure de fichier"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Créer un sondage" create-poll: "Créer un sondage"
text-remain: "{} charactères restants" text-remain: "{} charactères restants"
recent-tags: "Récent"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "Nouvelle note" note: "Nouvelle note"
reply: "Répondre" reply: "Répondre"
@@ -414,7 +441,7 @@ desktop/views/components/settings.vue:
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
drive: "Drive" drive: "Drive"
security: "Sécurité" security: "Sécurité"
signin: "サインイン履歴" signin: "Historique de connexion"
password: "Mot de Passe" password: "Mot de Passe"
2fa: "Vérification en deux étapes" 2fa: "Vérification en deux étapes"
other: "Autres" other: "Autres"
@@ -429,9 +456,11 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "Affichage et design" display: "Affichage et design"
customize: "Personnaliser l'Accueil" customize: "Personnaliser l'Accueil"
choose-wallpaper: "Sélectionner un fond d'écran"
delete-wallpaper: "Supprimer le fond d'écran"
dark-mode: "Mode nuit" dark-mode: "Mode nuit"
circle-icons: "Utiliser des icônes circulaires" circle-icons: "Utiliser des icônes circulaires"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "Afficher mes republications dans le fil" show-my-renotes: "Afficher mes republications dans le fil"
@@ -444,19 +473,19 @@ desktop/views/components/settings.vue:
volume: "Volume" volume: "Volume"
test: "Test" test: "Test"
mobile: "Mobile" mobile: "Mobile"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "Enlever la mention publié via 'un périphérique mobile'"
language: "Langue" language: "Langue"
pick-language: "Sélectionner une langue" pick-language: "Sélectionner une langue"
recommended: "Recommandé" recommended: "Recommandé"
auto: "Automatique" auto: "Automatique"
specify-language: "Spécifier la langue" specify-language: "Spécifier la langue"
language-desc: "変更はページの再度読み込み後に反映されます。" language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications."
cache: "Cache" cache: "Cache"
clean-cache: "Nettoyage" clean-cache: "Nettoyage"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "Cache nettoyé" cache-cleared: "Cache nettoyé"
cache-cleared-desc: "Veuillez recharger la page." cache-cleared-desc: "Veuillez recharger la page."
auto-watch: "投稿の自動ウォッチ" auto-watch: "Montre automatique"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。" auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
about: "À propose de Misskey" about: "À propose de Misskey"
operator: "L'admin de cette instance" operator: "L'admin de cette instance"
@@ -471,7 +500,7 @@ desktop/views/components/settings.vue:
no-updates: "Aucune mise à jour disponible" no-updates: "Aucune mise à jour disponible"
no-updates-desc: "Votre Misskey est à jour." no-updates-desc: "Votre Misskey est à jour."
update-available: "Nouvelle version disponible !" update-available: "Nouvelle version disponible !"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
advanced-settings: "Réglages avancés" advanced-settings: "Réglages avancés"
debug-mode: "Activer le mode debug" debug-mode: "Activer le mode debug"
debug-mode-desc: "Ce paramètre est stocké dans le navigateur." debug-mode-desc: "Ce paramètre est stocké dans le navigateur."
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "Description" description: "Description"
birthday: "Date de naissance" birthday: "Date de naissance"
save: "Mettre à jour le profil" save: "Mettre à jour le profil"
locked-account: "Protéger votre compte"
is-locked: "投稿を非公開にする"
other: "Autre"
is-bot: "Ce compte est un Bot" is-bot: "Ce compte est un Bot"
is-cat: "Ce compte est un Chat" is-cat: "Ce compte est un Chat"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "Accueil" home: "Accueil"
local: "Local" local: "Local"
hybrid: "Social"
global: "Global" global: "Global"
list: "Listes" list: "Listes"
desktop/views/components/ui.header.vue:
welcome-back: "Vous êtes de retour !"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "Votre profil" profile: "Votre profil"
drive: "Drive" drive: "Drive"
favorites: "Favorites" favorites: "Favorites"
lists: "Listes" lists: "Listes"
follow-requests: "Demandes de suivi" follow-requests: "Demandes de suivi"
customize: "Modifications" customize: "ホームのカスタマイズ"
settings: "Réglages" settings: "Réglages"
signout: "Déconnexion" signout: "Déconnexion"
dark: "Fall in dark" dark: "Fall in dark"
@@ -582,7 +617,8 @@ desktop/views/components/window.vue:
close: "Fermer" close: "Fermer"
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Les publications médias uniquement" is-media-only: "Les publications médias uniquement"
is-media-view: "メディアビュー" is-media-view: "Vue média"
edit: "Options"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "Reposté par {}" reposted-by: "Reposté par {}"
private: "cette publication est privée" private: "cette publication est privée"
@@ -622,7 +658,7 @@ desktop/views/pages/user/user.friends.vue:
loading: "Chargement en cours" loading: "Chargement en cours"
no-users: "Pas d'utilisateurs" no-users: "Pas d'utilisateurs"
desktop/views/pages/user/user.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "Ce compte a été suspendu."
is-remote: "Cet utilisateur n'est pas un utilisateur de Misskey. Certaines informations peuvent être erronées" is-remote: "Cet utilisateur n'est pas un utilisateur de Misskey. Certaines informations peuvent être erronées"
view-remote: "Voir les informations détaillées" view-remote: "Voir les informations détaillées"
desktop/views/pages/user/user.home.vue: desktop/views/pages/user/user.home.vue:
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
muted: "Muting" muted: "Muting"
unmute: "Enlever la sourdine" unmute: "Enlever la sourdine"
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Suit"
followers: "Abonnés"
is-bot: "Ce compte est un Bot"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "Publications" default: "Publications"
with-replies: "Publications et réponses" with-replies: "Publications et réponses"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "Déplacer" move: "Déplacer"
hash: "Hash (md5)" hash: "Hash (md5)"
exif: "EXIF" exif: "EXIF"
mobile/views/components/media-image.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
mobile/views/components/media-video.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
mobile/views/components/follow-button.vue: mobile/views/components/follow-button.vue:
following: "Abonnements" following: "Abonnements"
follow: "Suivre" follow: "Suivre"
@@ -702,7 +749,7 @@ mobile/views/components/follow-button.vue:
follow-request: "Demande d'abonnement" follow-request: "Demande d'abonnement"
mobile/views/components/friends-maker.vue: mobile/views/components/friends-maker.vue:
title: "Abonnez-vous aux utilisateurs" title: "Abonnez-vous aux utilisateurs"
empty: "おすすめのユーザーは見つかりませんでした。" empty: "Impossible de trouver des utilisateurs à recommander."
fetching: "Chargement" fetching: "Chargement"
refresh: "Voir plus" refresh: "Voir plus"
close: "Fermer" close: "Fermer"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "Accueil" home: "Accueil"
local: "Local" local: "Local"
hybrid: "Social"
global: "Global" global: "Global"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "Messagerie" messaging: "Messagerie"
@@ -845,7 +893,7 @@ mobile/views/pages/settings.vue:
post-style-smart: "Intelligent" post-style-smart: "Intelligent"
behavior: "Comportement" behavior: "Comportement"
fetch-on-scroll: "Chargement lors du défilement" fetch-on-scroll: "Chargement lors du défilement"
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "Ne pas mentionner que ma publication provient d'un 'périphérique mobile'"
load-raw-images: "Afficher les photos jointes en haute qualité" load-raw-images: "Afficher les photos jointes en haute qualité"
load-remote-media: "Afficher les médias sur le serveur distant" load-remote-media: "Afficher les médias sur le serveur distant"
twitter: "Intégration à Twitter" twitter: "Intégration à Twitter"
@@ -860,7 +908,7 @@ mobile/views/pages/settings.vue:
no-updates: "Aucune mise à jour disponible" no-updates: "Aucune mise à jour disponible"
no-updates-desc: "Votre Misskey est à jour." no-updates-desc: "Votre Misskey est à jour."
update-available: "Nouvelle version disponible !" update-available: "Nouvelle version disponible !"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
settings: "Réglages" settings: "Réglages"
signout: "Déconnexion" signout: "Déconnexion"
mobile/views/pages/user.vue: mobile/views/pages/user.vue:
@@ -903,11 +951,17 @@ docs:
properties: "Propriétés" properties: "Propriétés"
endpoints: endpoints:
params: "Paramètres" params: "Paramètres"
no-params: "Aucun paramètre"
res: "Réponse" res: "Réponse"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "Consulter le code sur GitHub"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "Nom" name: "Nom"
type: "Type" type: "Type"
optional: "Optionel"
description: "Description" description: "Description"
yes: "Oui"
no: "Non"
+27
View File
@@ -0,0 +1,27 @@
/**
* Languages Loader
*/
const fs = require('fs');
const yaml = require('js-yaml');
const loadLang = lang => yaml.safeLoad(
fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
const native = loadLang('ja');
const langs = {
'de': loadLang('de'),
'en': loadLang('en'),
'fr': loadLang('fr'),
'ja': native,
'pl': loadLang('pl'),
'es': loadLang('es')
};
Object.values(langs).forEach(locale => {
// Extend native language (Japanese)
Object.assign(locale, native);
});
module.exports = langs;
-33
View File
@@ -1,33 +0,0 @@
/**
* Languages Loader
*/
import * as fs from 'fs';
import * as yaml from 'js-yaml';
export type LangKey = 'de' | 'en' | 'fr' | 'ja' | 'pl';
export type LocaleObject = { [key: string]: any };
const loadLang = (lang: LangKey) => yaml.safeLoad(
fs.readFileSync(`./locales/${lang}.yml`, 'utf-8')) as LocaleObject;
const native = loadLang('ja');
const langs: { [key: string]: LocaleObject } = {
'de': loadLang('de'),
'en': loadLang('en'),
'fr': loadLang('fr'),
'ja': native,
'pl': loadLang('pl')
};
Object.entries(langs).map(([, locale]) => {
// Extend native language (Japanese)
locale = Object.assign({}, native, locale);
});
export function isAvailableLanguage(lang: string): lang is LangKey {
return lang in langs;
}
export default langs;
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -49,6 +50,14 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -77,6 +86,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成" create-folder: "フォルダーを作成"
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
reply: "返信" reply: "返信"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+67 -5
View File
@@ -47,6 +47,7 @@ common:
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -54,6 +55,15 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
@@ -84,6 +94,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -271,6 +282,13 @@ common/views/widgets/memo.vue:
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -313,6 +331,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -360,6 +380,14 @@ desktop/views/components/drive.vue:
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -424,6 +452,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
@@ -445,9 +474,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -496,6 +527,8 @@ desktop/views/components/settings.vue:
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -605,6 +638,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
@@ -620,16 +656,20 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -679,6 +719,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
@@ -750,6 +791,12 @@ desktop/views/pages/user/user.profile.vue:
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -819,6 +866,14 @@ mobile/views/components/drive.file-detail.vue:
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -933,6 +988,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
@@ -1063,11 +1119,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -49,6 +50,14 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -77,6 +86,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成" create-folder: "フォルダーを作成"
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
reply: "返信" reply: "返信"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "Czy masz coś do powiedzenia?" d: "Czy masz coś do powiedzenia?"
e: "Napisz coś tutaj!" e: "Napisz coś tutaj!"
f: "Czekamy, aż coś napiszesz." f: "Czekamy, aż coś napiszesz."
search: "Szukaj"
delete: "Usuń" delete: "Usuń"
loading: "Ładowanie" loading: "Ładowanie"
ok: "OK" ok: "OK"
@@ -49,6 +50,14 @@ common:
update-available: "Nowa wersja Misskey jest dostępna ({newer}, obecna to {current}). Odśwież stronę, aby zastosować aktualizację." update-available: "Nowa wersja Misskey jest dostępna ({newer}, obecna to {current}). Odśwież stronę, aby zastosować aktualizację."
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany." my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
i-like-sushi: "Wolę sushi od puddingu" i-like-sushi: "Wolę sushi od puddingu"
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
verified-user: "認証済みのユーザー"
reversi:
drawn: "Remis"
my-turn: "Twoja kolej"
opponent-turn: "Kolej na przeciwnika"
turn-of: "Kolej na {}"
past-turn-of: "Kolej {}"
widgets: widgets:
analog-clock: "Zegar analogowy" analog-clock: "Zegar analogowy"
profile: "Profil" profile: "Profil"
@@ -77,6 +86,7 @@ common:
widgets: "Widżety" widgets: "Widżety"
home: "Strona główna" home: "Strona główna"
local: "Lokalne" local: "Lokalne"
hybrid: "Społeczność"
global: "Globalne" global: "Globalne"
notifications: "Powiadomienia" notifications: "Powiadomienia"
list: "Listy" list: "Listy"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "Notatka" title: "Notatka"
memo: "Napisz tutaj!" memo: "Napisz tutaj!"
save: "Zapisz" save: "Zapisz"
common/views/pages/follow.vue:
signed-in-as: "Zalogowany jako {}"
following: "Śledzisz"
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-request: "Poproś o śledzenie"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Czarny … Łącznie" total: "Czarny … Łącznie"
notes: "Niebieski … Wpisy" notes: "Niebieski … Wpisy"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "Baner" banner: "Baner"
contextmenu: contextmenu:
rename: "Zmień nazwę" rename: "Zmień nazwę"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "Skopiuj adres" copy-url: "Skopiuj adres"
download: "Pobierz" download: "Pobierz"
else-files: "Inne" else-files: "Inne"
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "Utwórz katalog" create-folder: "Utwórz katalog"
upload: "Wyślij plik" upload: "Wyślij plik"
url-upload: "Wyślij z adresu URL" url-upload: "Wyślij z adresu URL"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Śledzisz" following: "Śledzisz"
follow: "Śledź" follow: "Śledź"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "Ładowanie nie powiodło się." error: "Ładowanie nie powiodło się."
retry: "Spróbuj ponownie" retry: "Spróbuj ponownie"
load-more: "Załaduj więcej"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "Więcej" more: "Więcej"
empty: "Brak powiadomień" empty: "Brak powiadomień"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "Załącz zawartość multimedialną z komputera" attach-media-from-local: "Załącz zawartość multimedialną z komputera"
attach-media-from-drive: "Załącz zawartość multimedialną z dysku" attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
attach-cancel: "Usuń załącznik" attach-cancel: "Usuń załącznik"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "Utwórz ankietę" create-poll: "Utwórz ankietę"
text-remain: "pozostałe znaki: {}" text-remain: "pozostałe znaki: {}"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "Nowy wpis" note: "Nowy wpis"
reply: "Odpowiedz" reply: "Odpowiedz"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "Wygląd i wyświetlanie" display: "Wygląd i wyświetlanie"
customize: "Dostosuj stronę główną" customize: "Dostosuj stronę główną"
choose-wallpaper: "Wybierz tło"
delete-wallpaper: "Usuń tło"
dark-mode: "Tryb ciemny" dark-mode: "Tryb ciemny"
circle-icons: "Używaj okrągłych ikon" circle-icons: "Używaj okrągłych ikon"
gradient-window-header: "Używaj gradientów na pasku tytułu okna" gradient-window-header: "Używaj gradientów na pasku tytułu okna"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "Opis" description: "Opis"
birthday: "Data urodzenia" birthday: "Data urodzenia"
save: "Aktualizuj profil" save: "Aktualizuj profil"
locked-account: "Zabezpiecz swoje konto"
is-locked: "Uczyń wpis prywatnym"
other: "Inne"
is-bot: "To konto jest prowadzone przez bota" is-bot: "To konto jest prowadzone przez bota"
is-cat: "To konto jest prowadzone przez kota" is-cat: "To konto jest prowadzone przez kota"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "Strona główna" home: "Strona główna"
local: "Lokalne" local: "Lokalne"
hybrid: "Społeczność"
global: "Globalne" global: "Globalne"
list: "Listy" list: "Listy"
desktop/views/components/ui.header.vue:
welcome-back: "Witaj ponownie,"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "Twój profil" profile: "Twój profil"
drive: "Dysk" drive: "Dysk"
favorites: "Ulubione" favorites: "Ulubione"
lists: "Listy" lists: "Listy"
follow-requests: "Prośby o śledzenie" follow-requests: "Prośby o śledzenie"
customize: "Dostosuj" customize: "Dostosuj stronę główną"
settings: "Ustawienia" settings: "Ustawienia"
signout: "Wyloguj się" signout: "Wyloguj się"
dark: "Sprowadź ciemność" dark: "Sprowadź ciemność"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Tylko wpisy z zawartością multimedialną" is-media-only: "Tylko wpisy z zawartością multimedialną"
is-media-view: "Widok multimediów" is-media-view: "Widok multimediów"
edit: "Opcje"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "Udostępniono przez {}" reposted-by: "Udostępniono przez {}"
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "Wycisz" mute: "Wycisz"
muted: "Wyciszyłeś" muted: "Wyciszyłeś"
unmute: "Cofnij wyciszenie" unmute: "Cofnij wyciszenie"
desktop/views/pages/user/user.header.vue:
posts: "Wpisy"
following: "Śledzeni"
followers: "Śledzący"
is-bot: "To konto jest botem"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "Wpisy" default: "Wpisy"
with-replies: "Wpisy i odpowiedzi" with-replies: "Wpisy i odpowiedzi"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "Przenieś" move: "Przenieś"
hash: "Hash (md5)" hash: "Hash (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "Śledzisz" following: "Śledzisz"
follow: "Śledź" follow: "Śledź"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "Strona główna" home: "Strona główna"
local: "Lokalne" local: "Lokalne"
hybrid: "Społeczność"
global: "Globalne" global: "Globalne"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "Wiadomości" messaging: "Wiadomości"
@@ -903,11 +951,17 @@ docs:
properties: "Właściwości" properties: "Właściwości"
endpoints: endpoints:
params: "Parametry" params: "Parametry"
no-params: "パラメータはありません"
res: "Odpowiedź" res: "Odpowiedź"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "Zobacz kod na GitHubie"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "Nazwa" name: "Nazwa"
type: "Rodzaj" type: "Rodzaj"
optional: "Nieobowiązkowy"
description: "Opis" description: "Opis"
yes: "Tak"
no: "Nie"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -49,6 +50,14 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -77,6 +86,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成" create-folder: "フォルダーを作成"
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
reply: "返信" reply: "返信"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -49,6 +50,14 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -77,6 +86,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成" create-folder: "フォルダーを作成"
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
reply: "返信" reply: "返信"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+59 -5
View File
@@ -42,6 +42,7 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
@@ -49,6 +50,14 @@ common:
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き" i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -77,6 +86,7 @@ common:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -238,6 +248,12 @@ common/views/widgets/memo.vue:
title: "付箋" title: "付箋"
memo: "ここに書いて!" memo: "ここに書いて!"
save: "保存" save: "保存"
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop/views/components/activity.chart.vue: desktop/views/components/activity.chart.vue:
total: "Black ... Total" total: "Black ... Total"
notes: "Blue ... Notes" notes: "Blue ... Notes"
@@ -273,6 +289,8 @@ desktop/views/components/drive.file.vue:
banner: "バナー" banner: "バナー"
contextmenu: contextmenu:
rename: "名前を変更" rename: "名前を変更"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
copy-url: "URLをコピー" copy-url: "URLをコピー"
download: "ダウンロード" download: "ダウンロード"
else-files: "その他..." else-files: "その他..."
@@ -316,6 +334,12 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成" create-folder: "フォルダーを作成"
upload: "ファイルをアップロード" upload: "ファイルをアップロード"
url-upload: "URLからアップロード" url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -367,6 +391,7 @@ desktop/views/components/notes.note.vue:
desktop/views/components/notes.vue: desktop/views/components/notes.vue:
error: "読み込みに失敗しました。" error: "読み込みに失敗しました。"
retry: "リトライ" retry: "リトライ"
load-more: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "もっと見る" more: "もっと見る"
empty: "ありません!" empty: "ありません!"
@@ -386,9 +411,11 @@ desktop/views/components/post-form.vue:
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "ドライブからメディアを添付"
attach-cancel: "添付取り消し" attach-cancel: "添付取り消し"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "アンケートを作成" create-poll: "アンケートを作成"
text-remain: "残り{}文字" text-remain: "残り{}文字"
recent-tags: "最近"
click-to-tagging: "クリックでタグ付け"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
reply: "返信" reply: "返信"
@@ -429,6 +456,8 @@ desktop/views/components/settings.vue:
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
display: "デザインと表示" display: "デザインと表示"
customize: "ホームをカスタマイズ" customize: "ホームをカスタマイズ"
choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード" dark-mode: "ダークモード"
circle-icons: "円形のアイコンを使用" circle-icons: "円形のアイコンを使用"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -524,6 +553,9 @@ desktop/views/components/settings.profile.vue:
description: "自己紹介" description: "自己紹介"
birthday: "誕生日" birthday: "誕生日"
save: "保存" save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
is-bot: "このアカウントはBotです" is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
desktop/views/components/sub-note-content.vue: desktop/views/components/sub-note-content.vue:
@@ -536,15 +568,18 @@ desktop/views/components/taskmanager.vue:
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
list: "リスト" list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
desktop/views/components/ui.header.account.vue: desktop/views/components/ui.header.account.vue:
profile: "プロフィール" profile: "プロフィール"
drive: "ドライブ" drive: "ドライブ"
favorites: "お気に入り" favorites: "お気に入り"
lists: "リスト" lists: "リスト"
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
customize: "カスタマイズ" customize: "ホームのカスタマイズ"
settings: "設定" settings: "設定"
signout: "サインアウト" signout: "サインアウト"
dark: "闇に飲まれる" dark: "闇に飲まれる"
@@ -583,6 +618,7 @@ desktop/views/components/window.vue:
desktop/views/pages/deck/deck.tl-column.vue: desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ" is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー" is-media-view: "メディアビュー"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue: desktop/views/pages/deck/deck.note.vue:
reposted-by: "{}がRenote" reposted-by: "{}がRenote"
private: "この投稿は非公開です" private: "この投稿は非公開です"
@@ -639,6 +675,11 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする" mute: "ミュートする"
muted: "ミュートしています" muted: "ミュートしています"
unmute: "ミュート解除" unmute: "ミュート解除"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
followers: "フォロワー"
is-bot: "このアカウントはBotです"
desktop/views/pages/user/user.timeline.vue: desktop/views/pages/user/user.timeline.vue:
default: "投稿" default: "投稿"
with-replies: "投稿と返信" with-replies: "投稿と返信"
@@ -695,6 +736,12 @@ mobile/views/components/drive.file-detail.vue:
move: "移動" move: "移動"
hash: "ハッシュ (md5)" hash: "ハッシュ (md5)"
exif: "EXIF" exif: "EXIF"
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: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "フォロー中"
follow: "フォロー" follow: "フォロー"
@@ -790,6 +837,7 @@ mobile/views/pages/following.vue:
mobile/views/pages/home.vue: mobile/views/pages/home.vue:
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル" global: "グローバル"
mobile/views/pages/messaging.vue: mobile/views/pages/messaging.vue:
messaging: "メッセージ" messaging: "メッセージ"
@@ -903,11 +951,17 @@ docs:
properties: "プロパティ" properties: "プロパティ"
endpoints: endpoints:
params: "パラメータ" params: "パラメータ"
no-params: "パラメータはありません"
res: "レスポンス" res: "レスポンス"
require-credential: "このエンドポイントは認証情報が必須です。"
require-permission: "このエンドポイントは{permission}の権限を必要とします。"
has-limit: "レートリミットがあります。"
duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
show-src: "このエンドポイントのソースコードも閲覧できます。"
show-src-link: "コードをGitHubで見る"
generated: "このドキュメントはAPI定義に基づき自動生成されています。"
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
-11
View File
@@ -1,11 +0,0 @@
Misskeyの破壊的変更に対応するいくつかのスニペットがあります。
MongoDBシェルで実行する必要のあるものとnodeで直接実行する必要のあるものがあります。
ファイル名が `shell.` から始まるものは前者、 `node.` から始まるものは後者です。
MongoDBシェルで実行する場合、`use`でデータベースを選択しておく必要があります。
nodeで実行するいくつかのスニペットは、並列処理させる数を引数で設定できるものがあります。
処理中にエラーで落ちる場合は、メモリが足りていない可能性があるので、少ない数に設定してみてください。
※デフォルトは`5`です。
ファイルを作成する際は `../init-migration-file.sh -t _type_ -n _name_` を実行すると _type_._unixtime_._name_.js が生成されます
-37
View File
@@ -1,37 +0,0 @@
#!/bin/bash
usage() {
echo "$0 [-t type] [-n name]"
echo " type: [node | shell]"
echo " name: if no present, set untitled"
exit 0
}
while getopts :t:n:h OPT
do
case $OPT in
t) type=$OPTARG
;;
n) name=$OPTARG
;;
h) usage
;;
\?) usage
;;
:) usage
;;
esac
done
if [ "$type" = "" ]
then
echo "no type present!!!"
usage
fi
if [ "$name" = "" ]
then
name="untitled"
fi
touch "$(realpath $(dirname $BASH_SOURCE))/migration/$type.$(date +%s).$name.js"
+47 -47
View File
@@ -1,21 +1,18 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "4.7.1", "version": "5.0.0",
"clientVersion": "1.0.6735", "clientVersion": "1.0.7553",
"codename": "nighthike", "codename": "nighthike",
"main": "./built/index.js", "main": "./built/index.js",
"private": true, "private": true,
"scripts": { "scripts": {
"config": "node ./cli/init.js",
"start": "node ./built", "start": "node ./built",
"debug": "DEBUG=misskey:* node ./built", "debug": "DEBUG=misskey:* node ./built",
"swagger": "node ./swagger.js",
"build": "webpack && gulp build", "build": "webpack && gulp build",
"webpack": "webpack", "webpack": "webpack",
"watch": "webpack --watch", "watch": "webpack --watch",
"gulp": "gulp build", "gulp": "gulp build",
"rebuild": "gulp rebuild",
"clean": "gulp clean", "clean": "gulp clean",
"cleanall": "gulp cleanall", "cleanall": "gulp cleanall",
"lint": "gulp lint", "lint": "gulp lint",
@@ -27,15 +24,15 @@
"@fortawesome/fontawesome-free-brands": "5.0.13", "@fortawesome/fontawesome-free-brands": "5.0.13",
"@fortawesome/fontawesome-free-regular": "5.0.13", "@fortawesome/fontawesome-free-regular": "5.0.13",
"@fortawesome/fontawesome-free-solid": "5.0.13", "@fortawesome/fontawesome-free-solid": "5.0.13",
"@koa/cors": "2.2.1", "@koa/cors": "2.2.2",
"@prezzemolo/rap": "0.1.2", "@prezzemolo/rap": "0.1.2",
"@prezzemolo/zip": "0.0.3", "@prezzemolo/zip": "0.0.3",
"@types/bcryptjs": "2.4.1", "@types/bcryptjs": "2.4.1",
"@types/dateformat": "1.0.1",
"@types/debug": "0.0.30", "@types/debug": "0.0.30",
"@types/deep-equal": "1.0.1", "@types/deep-equal": "1.0.1",
"@types/elasticsearch": "5.0.24", "@types/elasticsearch": "5.0.25",
"@types/file-type": "5.2.1", "@types/file-type": "5.2.1",
"@types/gm": "1.18.0",
"@types/gulp": "3.8.36", "@types/gulp": "3.8.36",
"@types/gulp-htmlmin": "1.3.32", "@types/gulp-htmlmin": "1.3.32",
"@types/gulp-mocha": "0.0.32", "@types/gulp-mocha": "0.0.32",
@@ -43,13 +40,12 @@
"@types/gulp-replace": "0.0.31", "@types/gulp-replace": "0.0.31",
"@types/gulp-uglify": "3.0.5", "@types/gulp-uglify": "3.0.5",
"@types/gulp-util": "3.0.34", "@types/gulp-util": "3.0.34",
"@types/inquirer": "0.0.42",
"@types/is-root": "1.0.0", "@types/is-root": "1.0.0",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "3.11.1", "@types/js-yaml": "3.11.2",
"@types/jsdom": "11.0.6", "@types/jsdom": "11.0.6",
"@types/koa": "2.0.46", "@types/koa": "2.0.46",
"@types/koa-bodyparser": "5.0.0", "@types/koa-bodyparser": "5.0.1",
"@types/koa-compress": "2.0.8", "@types/koa-compress": "2.0.8",
"@types/koa-favicon": "2.0.19", "@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.0", "@types/koa-logger": "3.1.0",
@@ -60,14 +56,14 @@
"@types/koa-views": "2.0.3", "@types/koa-views": "2.0.3",
"@types/koa__cors": "2.2.2", "@types/koa__cors": "2.2.2",
"@types/kue": "0.11.9", "@types/kue": "0.11.9",
"@types/license-checker": "15.0.0", "@types/minio": "6.0.2",
"@types/mkdirp": "0.5.2", "@types/mkdirp": "0.5.2",
"@types/mocha": "5.2.3", "@types/mocha": "5.2.3",
"@types/mongodb": "3.0.21", "@types/mongodb": "3.1.2",
"@types/ms": "0.7.30", "@types/ms": "0.7.30",
"@types/node": "10.3.4", "@types/node": "10.5.3",
"@types/nopt": "3.0.29",
"@types/parse5": "5.0.0", "@types/parse5": "5.0.0",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4", "@types/pug": "2.0.4",
"@types/qrcode": "1.2.0", "@types/qrcode": "1.2.0",
"@types/ratelimiter": "2.1.28", "@types/ratelimiter": "2.1.28",
@@ -76,11 +72,13 @@
"@types/request-promise-native": "1.0.15", "@types/request-promise-native": "1.0.15",
"@types/rimraf": "2.0.2", "@types/rimraf": "2.0.2",
"@types/seedrandom": "2.4.27", "@types/seedrandom": "2.4.27",
"@types/sharp": "0.17.9",
"@types/showdown": "1.7.5",
"@types/single-line-log": "1.1.0", "@types/single-line-log": "1.1.0",
"@types/speakeasy": "2.0.2", "@types/speakeasy": "2.0.2",
"@types/tmp": "0.0.33", "@types/tmp": "0.0.33",
"@types/uuid": "3.4.3", "@types/uuid": "3.4.3",
"@types/webpack": "4.4.2", "@types/webpack": "4.4.8",
"@types/webpack-stream": "3.2.10", "@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.39", "@types/websocket": "0.0.39",
"@types/ws": "5.1.2", "@types/ws": "5.1.2",
@@ -89,48 +87,49 @@
"autwh": "0.1.0", "autwh": "0.1.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"bootstrap-vue": "2.0.0-rc.11", "bootstrap-vue": "2.0.0-rc.11",
"cafy": "8.0.0", "cafy": "11.3.0",
"chalk": "2.4.1", "chalk": "2.4.1",
"crc-32": "1.2.0", "crc-32": "1.2.0",
"css-loader": "0.28.11", "css-loader": "1.0.0",
"dateformat": "3.0.3",
"debug": "3.1.0", "debug": "3.1.0",
"deep-equal": "1.0.1", "deep-equal": "1.0.1",
"deepcopy": "0.6.3", "deepcopy": "0.6.3",
"diskusage": "0.2.4", "diskusage": "0.2.4",
"dompurify": "1.0.5", "dompurify": "1.0.5",
"elasticsearch": "15.0.0", "elasticsearch": "15.1.1",
"element-ui": "2.4.1", "element-ui": "2.4.4",
"emojilib": "2.2.12", "emojilib": "2.3.0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "4.19.1", "eslint": "5.0.1",
"eslint-plugin-vue": "4.5.0", "eslint-plugin-vue": "4.7.1",
"eventemitter3": "3.1.0", "eventemitter3": "3.1.0",
"exif-js": "2.3.0", "exif-js": "2.3.0",
"file-loader": "1.1.11", "file-loader": "1.1.11",
"file-type": "8.0.0", "file-type": "8.1.0",
"fuckadblock": "3.2.1", "fuckadblock": "3.2.1",
"gm": "1.23.1",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-cssnano": "2.1.3", "gulp-cssnano": "2.1.3",
"gulp-htmlmin": "4.0.0", "gulp-htmlmin": "4.0.0",
"gulp-imagemin": "4.1.0", "gulp-imagemin": "4.1.0",
"gulp-mocha": "6.0.0", "gulp-mocha": "6.0.0",
"gulp-pug": "4.0.1", "gulp-pug": "4.0.1",
"gulp-rename": "1.3.0", "gulp-rename": "1.4.0",
"gulp-replace": "1.0.0", "gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.4", "gulp-sourcemaps": "2.6.4",
"gulp-stylus": "2.7.0", "gulp-stylus": "2.7.0",
"gulp-tslint": "8.1.3", "gulp-tslint": "8.1.3",
"gulp-typescript": "4.0.2", "gulp-typescript": "4.0.2",
"gulp-uglify": "3.0.0", "gulp-uglify": "3.0.1",
"gulp-util": "3.0.8", "gulp-util": "3.0.8",
"hard-source-webpack-plugin": "0.8.1", "hard-source-webpack-plugin": "0.11.2",
"highlight.js": "9.12.0", "highlight.js": "9.12.0",
"html-minifier": "3.5.16", "html-minifier": "3.5.19",
"http-signature": "1.2.0", "http-signature": "1.2.0",
"inquirer": "6.0.0", "insert-text-at-cursor": "0.1.1",
"is-root": "2.0.0", "is-root": "2.0.0",
"is-url": "1.2.4", "is-url": "1.2.4",
"jquery": "3.3.1",
"js-yaml": "3.12.0", "js-yaml": "3.12.0",
"jsdom": "11.11.0", "jsdom": "11.11.0",
"koa": "2.5.1", "koa": "2.5.1",
@@ -146,31 +145,30 @@
"koa-slow": "2.1.0", "koa-slow": "2.1.0",
"koa-views": "6.1.4", "koa-views": "6.1.4",
"kue": "0.11.6", "kue": "0.11.6",
"license-checker": "20.1.0",
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"mecab-async": "0.1.2", "mecab-async": "0.1.2",
"minio": "6.0.0",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"mocha": "5.2.0", "mocha": "5.2.0",
"moji": "0.5.1", "moji": "0.5.1",
"mongodb": "3.0.10", "mongodb": "3.1.1",
"monk": "6.0.6", "monk": "6.0.6",
"ms": "2.1.1", "ms": "2.1.1",
"nan": "2.10.0", "nan": "2.10.0",
"node-sass": "4.9.0", "node-sass": "4.9.2",
"node-sass-json-importer": "3.3.1", "node-sass-json-importer": "3.3.1",
"nopt": "4.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"object-assign-deep": "0.4.0", "object-assign-deep": "0.4.0",
"on-build-webpack": "0.1.0", "on-build-webpack": "0.1.0",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"parse5": "5.0.0", "parse5": "5.0.0",
"portscanner": "2.2.0",
"progress-bar-webpack-plugin": "1.11.0", "progress-bar-webpack-plugin": "1.11.0",
"prominence": "0.2.0",
"promise-sequential": "1.1.1", "promise-sequential": "1.1.1",
"pug": "2.0.3", "pug": "2.0.3",
"punycode": "2.1.1", "punycode": "2.1.1",
"qrcode": "1.2.0", "qrcode": "1.2.0",
"ratelimiter": "3.1.0", "ratelimiter": "3.2.0",
"recaptcha-promise": "0.1.3", "recaptcha-promise": "0.1.3",
"reconnecting-websocket": "3.2.2", "reconnecting-websocket": "3.2.2",
"redis": "2.8.0", "redis": "2.8.0",
@@ -181,42 +179,44 @@
"s-age": "1.1.2", "s-age": "1.1.2",
"sass-loader": "7.0.3", "sass-loader": "7.0.3",
"seedrandom": "2.4.3", "seedrandom": "2.4.3",
"sharp": "0.20.5",
"showdown": "1.8.6",
"showdown-highlightjs-extension": "0.1.2",
"single-line-log": "1.1.2", "single-line-log": "1.1.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
"style-loader": "0.21.0", "style-loader": "0.21.0",
"stylus": "0.54.5", "stylus": "0.54.5",
"stylus-loader": "3.0.2", "stylus-loader": "3.0.2",
"summaly": "2.0.6", "summaly": "2.0.6",
"swagger-jsdoc": "1.9.7",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"tcp-port-used": "0.1.2",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"tmp": "0.0.33", "tmp": "0.0.33",
"ts-loader": "4.4.1", "ts-loader": "4.4.1",
"ts-node": "6.1.2", "ts-node": "7.0.0",
"tslint": "5.10.0", "tslint": "5.10.0",
"typescript": "2.9.2", "typescript": "2.9.2",
"typescript-eslint-parser": "16.0.0", "typescript-eslint-parser": "16.0.1",
"uglify-es": "3.3.9", "uglify-es": "3.3.9",
"url-loader": "1.0.1", "url-loader": "1.0.1",
"uuid": "3.2.1", "uuid": "3.3.2",
"v-animate-css": "0.0.2", "v-animate-css": "0.0.2",
"vue": "2.5.16", "vue": "2.5.16",
"vue-cropperjs": "2.2.1", "vue-cropperjs": "2.2.1",
"vue-js-modal": "1.3.15", "vue-js-modal": "1.3.16",
"vue-json-tree-view": "2.1.4", "vue-json-tree-view": "2.1.4",
"vue-loader": "15.2.4", "vue-loader": "15.2.6",
"vue-router": "3.0.1", "vue-router": "3.0.1",
"vue-style-loader": "4.1.1",
"vue-template-compiler": "2.5.16", "vue-template-compiler": "2.5.16",
"vuedraggable": "2.16.0", "vuedraggable": "2.16.0",
"vuex": "3.0.1", "vuex": "3.0.1",
"vuex-persistedstate": "^2.5.4", "vuex-persistedstate": "2.5.4",
"web-push": "3.3.2", "web-push": "3.3.2",
"webfinger.js": "2.6.6", "webfinger.js": "2.6.6",
"webpack": "4.12.0", "webpack": "4.16.2",
"webpack-cli": "3.0.8", "webpack-cli": "3.1.0",
"websocket": "1.0.26", "websocket": "1.0.26",
"ws": "5.2.0", "ws": "6.0.0",
"xev": "2.0.1" "xev": "2.0.1"
}, },
"greenkeeper": { "greenkeeper": {
-5
View File
@@ -1,5 +0,0 @@
import { IUser } from '../models/user';
export default (user: IUser) => {
return user.host === null ? user.username : `${user.username}@${user.host}`;
};
+1 -1
View File
@@ -2,7 +2,7 @@
<div class="form"> <div class="form">
<header> <header>
<h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか</h1> <h1><i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか</h1>
<img :src="`${app.iconUrl}?thumbnail&size=64`"/> <img :src="app.iconUrl"/>
</header> </header>
<div class="app"> <div class="app">
<section> <section>
@@ -1,6 +1,6 @@
import getNoteSummary from '../../../../renderers/get-note-summary'; import getNoteSummary from '../../../../misc/get-note-summary';
import getReactionEmoji from '../../../../renderers/get-reaction-emoji'; import getReactionEmoji from '../../../../misc/get-reaction-emoji';
import getUserName from '../../../../renderers/get-user-name'; import getUserName from '../../../../misc/get-user-name';
type Notification = { type Notification = {
title: string; title: string;
@@ -17,21 +17,21 @@ export default function(type, data): Notification {
return { return {
title: 'ファイルがアップロードされました', title: 'ファイルがアップロードされました',
body: data.name, body: data.name,
icon: data.url + '?thumbnail&size=64' icon: data.url
}; };
case 'unread_messaging_message': case 'unread_messaging_message':
return { return {
title: `${getUserName(data.user)}さんからメッセージ:`, title: `${getUserName(data.user)}さんからメッセージ:`,
body: data.text, // TODO: getMessagingMessageSummary(data), body: data.text, // TODO: getMessagingMessageSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl
}; };
case 'reversi_invited': case 'reversi_invited':
return { return {
title: '対局への招待があります', title: '対局への招待があります',
body: `${getUserName(data.parent)}さんから`, body: `${getUserName(data.parent)}さんから`,
icon: data.parent.avatarUrl + '?thumbnail&size=64' icon: data.parent.avatarUrl
}; };
case 'notification': case 'notification':
@@ -40,28 +40,28 @@ export default function(type, data): Notification {
return { return {
title: `${getUserName(data.user)}さんから:`, title: `${getUserName(data.user)}さんから:`,
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl
}; };
case 'reply': case 'reply':
return { return {
title: `${getUserName(data.user)}さんから返信:`, title: `${getUserName(data.user)}さんから返信:`,
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl
}; };
case 'quote': case 'quote':
return { return {
title: `${getUserName(data.user)}さんが引用:`, title: `${getUserName(data.user)}さんが引用:`,
body: getNoteSummary(data), body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl
}; };
case 'reaction': case 'reaction':
return { return {
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`, title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
body: getNoteSummary(data.note), body: getNoteSummary(data.note),
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl
}; };
default: default:
+1 -1
View File
@@ -1,5 +1,5 @@
export default () => [ export default () => [
'(=^・・^=)', '(=^・・^=)',
'v(‘ω’)v', 'v(\'ω\')v',
'🐡( \'-\' 🐡 )フグパンチ!!!!' '🐡( \'-\' 🐡 )フグパンチ!!!!'
][Math.floor(Math.random() * 3)]; ][Math.floor(Math.random() * 3)];
@@ -1,9 +1,9 @@
import Stream from './stream'; import Stream from '../../stream';
import MiOS from '../../../mios'; import MiOS from '../../../../../mios';
export class ReversiGameStream extends Stream { export class ReversiGameStream extends Stream {
constructor(os: MiOS, me, game) { constructor(os: MiOS, me, game) {
super(os, 'reversi-game', { super(os, 'games/reversi-game', {
i: me ? me.token : null, i: me ? me.token : null,
game: game.id game: game.id
}); });
@@ -1,10 +1,10 @@
import StreamManager from './stream-manager'; import StreamManager from '../../stream-manager';
import Stream from './stream'; import Stream from '../../stream';
import MiOS from '../../../mios'; import MiOS from '../../../../../mios';
export class ReversiStream extends Stream { export class ReversiStream extends Stream {
constructor(os: MiOS, me) { constructor(os: MiOS, me) {
super(os, 'reversi', { super(os, 'games/reversi', {
i: me.token i: me.token
}); });
} }
@@ -0,0 +1,34 @@
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;
}
}
@@ -39,13 +39,17 @@ export default Vue.extend({
dark: { dark: {
type: Boolean, type: Boolean,
default: false default: false
},
smooth: {
type: Boolean,
default: false
} }
}, },
data() { data() {
return { return {
now: new Date(), now: new Date(),
clock: null, enabled: true,
graduationsPadding: 0.5, graduationsPadding: 0.5,
handsPadding: 1, handsPadding: 1,
@@ -74,6 +78,9 @@ export default Vue.extend({
return themeColor; return themeColor;
}, },
ms(): number {
return this.now.getMilliseconds() * this.smooth;
}
s(): number { s(): number {
return this.now.getSeconds(); return this.now.getSeconds();
}, },
@@ -85,13 +92,13 @@ export default Vue.extend({
}, },
hAngle(): number { hAngle(): number {
return Math.PI * (this.h % 12 + this.m / 60) / 6; return Math.PI * (this.h % 12 + (this.m + (this.s + this.ms / 1000) / 60) / 60) / 6;
}, },
mAngle(): number { mAngle(): number {
return Math.PI * (this.m + this.s / 60) / 30; return Math.PI * (this.m + (this.s + this.ms / 1000) / 60) / 30;
}, },
sAngle(): number { sAngle(): number {
return Math.PI * this.s / 30; return Math.PI * (this.s + this.ms / 1000) / 30;
}, },
graduations(): any { graduations(): any {
@@ -106,11 +113,17 @@ export default Vue.extend({
}, },
mounted() { mounted() {
this.clock = setInterval(this.tick, 1000); const update = () => {
if (this.enabled) {
this.tick();
requestAnimationFrame(update);
}
};
update();
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.clock); this.enabled = false;
}, },
methods: { methods: {
@@ -2,11 +2,16 @@
<div class="mk-autocomplete" @contextmenu.prevent="() => {}"> <div class="mk-autocomplete" @contextmenu.prevent="() => {}">
<ol class="users" ref="suggests" v-if="users.length > 0"> <ol class="users" ref="suggests" v-if="users.length > 0">
<li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1"> <li v-for="user in users" @click="complete(type, user)" @keydown="onKeydown" tabindex="-1">
<img class="avatar" :src="`${user.avatarUrl}?thumbnail&size=32`" alt=""/> <img class="avatar" :src="user.avatarUrl" alt=""/>
<span class="name">{{ user | userName }}</span> <span class="name">{{ user | userName }}</span>
<span class="username">@{{ user | acct }}</span> <span class="username">@{{ user | acct }}</span>
</li> </li>
</ol> </ol>
<ol class="hashtags" ref="suggests" v-if="hashtags.length > 0">
<li v-for="hashtag in hashtags" @click="complete(type, hashtag)" @keydown="onKeydown" tabindex="-1">
<span class="name">{{ hashtag }}</span>
</li>
</ol>
<ol class="emojis" ref="suggests" v-if="emojis.length > 0"> <ol class="emojis" ref="suggests" v-if="emojis.length > 0">
<li v-for="emoji in emojis" @click="complete(type, emoji.emoji)" @keydown="onKeydown" tabindex="-1"> <li v-for="emoji in emojis" @click="complete(type, emoji.emoji)" @keydown="onKeydown" tabindex="-1">
<span class="emoji">{{ emoji.emoji }}</span> <span class="emoji">{{ emoji.emoji }}</span>
@@ -48,33 +53,33 @@ emjdb.sort((a, b) => a.name.length - b.name.length);
export default Vue.extend({ export default Vue.extend({
props: ['type', 'q', 'textarea', 'complete', 'close', 'x', 'y'], props: ['type', 'q', 'textarea', 'complete', 'close', 'x', 'y'],
data() { data() {
return { return {
fetching: true, fetching: true,
users: [], users: [],
hashtags: [],
emojis: [], emojis: [],
select: -1, select: -1,
emojilib emojilib
} }
}, },
computed: { computed: {
items(): HTMLCollection { items(): HTMLCollection {
return (this.$refs.suggests as Element).children; return (this.$refs.suggests as Element).children;
} }
}, },
updated() { updated() {
//#region 位置調整 //#region 位置調整
const margin = 32; if (this.x + this.$el.offsetWidth > window.innerWidth) {
this.$el.style.left = (window.innerWidth - this.$el.offsetWidth) + 'px';
if (this.x + this.$el.offsetWidth > window.innerWidth - margin) {
this.$el.style.left = (this.x - this.$el.offsetWidth) + 'px';
this.$el.style.marginLeft = '-16px';
} else { } else {
this.$el.style.left = this.x + 'px'; this.$el.style.left = this.x + 'px';
this.$el.style.marginLeft = '0';
} }
if (this.y + this.$el.offsetHeight > window.innerHeight - margin) { if (this.y + this.$el.offsetHeight > window.innerHeight) {
this.$el.style.top = (this.y - this.$el.offsetHeight) + 'px'; this.$el.style.top = (this.y - this.$el.offsetHeight) + 'px';
this.$el.style.marginTop = '0'; this.$el.style.marginTop = '0';
} else { } else {
@@ -83,6 +88,7 @@ export default Vue.extend({
} }
//#endregion //#endregion
}, },
mounted() { mounted() {
this.textarea.addEventListener('keydown', this.onKeydown); this.textarea.addEventListener('keydown', this.onKeydown);
@@ -100,6 +106,7 @@ export default Vue.extend({
}); });
}); });
}, },
beforeDestroy() { beforeDestroy() {
this.textarea.removeEventListener('keydown', this.onKeydown); this.textarea.removeEventListener('keydown', this.onKeydown);
@@ -107,6 +114,7 @@ export default Vue.extend({
el.removeEventListener('mousedown', this.onMousedown); el.removeEventListener('mousedown', this.onMousedown);
}); });
}, },
methods: { methods: {
exec() { exec() {
this.select = -1; this.select = -1;
@@ -117,7 +125,8 @@ export default Vue.extend({
} }
if (this.type == 'user') { if (this.type == 'user') {
const cache = sessionStorage.getItem(this.q); const cacheKey = 'autocomplete:user:' + this.q;
const cache = sessionStorage.getItem(cacheKey);
if (cache) { if (cache) {
const users = JSON.parse(cache); const users = JSON.parse(cache);
this.users = users; this.users = users;
@@ -131,9 +140,33 @@ export default Vue.extend({
this.fetching = false; this.fetching = false;
// キャッシュ // キャッシュ
sessionStorage.setItem(this.q, JSON.stringify(users)); sessionStorage.setItem(cacheKey, JSON.stringify(users));
}); });
} }
} else if (this.type == 'hashtag') {
if (this.q == null || this.q == '') {
this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
this.fetching = false;
} else {
const cacheKey = 'autocomplete:hashtag:' + this.q;
const cache = sessionStorage.getItem(cacheKey);
if (cache) {
const hashtags = JSON.parse(cache);
this.hashtags = hashtags;
this.fetching = false;
} else {
(this as any).api('hashtags/search', {
query: this.q,
limit: 30
}).then(hashtags => {
this.hashtags = hashtags;
this.fetching = false;
// キャッシュ
sessionStorage.setItem(cacheKey, JSON.stringify(hashtags));
});
}
}
} else if (this.type == 'emoji') { } else if (this.type == 'emoji') {
const matched = []; const matched = [];
emjdb.some(x => { emjdb.some(x => {
@@ -228,12 +261,13 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '~const.styl' @import '~const.styl'
.mk-autocomplete root(isDark)
position fixed position fixed
z-index 65535 z-index 65535
max-width 100%
margin-top calc(1em + 8px) margin-top calc(1em + 8px)
overflow hidden overflow hidden
background #fff background isDark ? #313543 : #fff
border solid 1px rgba(#000, 0.1) border solid 1px rgba(#000, 0.1)
border-radius 4px border-radius 4px
transition top 0.1s ease, left 0.1s ease transition top 0.1s ease, left 0.1s ease
@@ -248,7 +282,8 @@ export default Vue.extend({
list-style none list-style none
> li > li
display block display flex
align-items center
padding 4px 12px padding 4px 12px
white-space nowrap white-space nowrap
overflow hidden overflow hidden
@@ -259,7 +294,13 @@ export default Vue.extend({
&, * &, *
user-select none user-select none
*
overflow hidden
text-overflow ellipsis
&:hover &:hover
background isDark ? rgba(#fff, 0.1) : rgba(#000, 0.1)
&[data-selected='true'] &[data-selected='true']
background $theme-color background $theme-color
@@ -275,7 +316,6 @@ export default Vue.extend({
> .users > li > .users > li
.avatar .avatar
vertical-align middle
min-width 28px min-width 28px
min-height 28px min-height 28px
max-width 28px max-width 28px
@@ -285,10 +325,15 @@ export default Vue.extend({
.name .name
margin 0 8px 0 0 margin 0 8px 0 0
color rgba(#000, 0.8) color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
.username .username
color rgba(#000, 0.3) color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
> .hashtags > li
.name
color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
> .emojis > li > .emojis > li
@@ -298,10 +343,15 @@ export default Vue.extend({
width 24px width 24px
.name .name
color rgba(#000, 0.8) color isDark ? rgba(#fff, 0.8) : rgba(#000, 0.8)
.alias .alias
margin 0 0 0 8px margin 0 0 0 8px
color rgba(#000, 0.3) color isDark ? rgba(#fff, 0.3) : rgba(#000, 0.3)
.mk-autocomplete[data-darkmode]
root(true)
.mk-autocomplete:not([data-darkmode])
root(false)
</style> </style>
@@ -31,7 +31,7 @@ export default Vue.extend({
: this.user.avatarColor && this.user.avatarColor.length == 3 : this.user.avatarColor && this.user.avatarColor.length == 3
? `rgb(${ this.user.avatarColor.join(',') })` ? `rgb(${ this.user.avatarColor.join(',') })`
: null, : null,
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl }?thumbnail)`, backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl })`,
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
}; };
} }
@@ -3,24 +3,39 @@
<header><b>{{ blackUser.name }}</b>() vs <b>{{ whiteUser.name }}</b>()</header> <header><b>{{ blackUser.name }}</b>() vs <b>{{ whiteUser.name }}</b>()</header>
<div style="overflow: hidden"> <div style="overflow: hidden">
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ turnUser.name }}のターンです<mk-ellipsis/></p> <p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser.name) }}<mk-ellipsis/></p>
<p class="turn" v-if="logPos != logs.length">{{ turnUser.name }}のターン</p> <p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', turnUser.name) }}</p>
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">相手のターンです<mk-ellipsis/></p> <p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">あなたのターンです</p> <p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
<p class="result" v-if="game.isEnded && logPos == logs.length"> <p class="result" v-if="game.isEnded && logPos == logs.length">
<template v-if="game.winner"><b>{{ game.winner.name }}</b>の勝ち{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template> <template v-if="game.winner"><b>{{ game.winner.name }}</b>の勝ち{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
<template v-else>引き分け</template> <template v-else>%i18n:common.reversi.drawn%</template>
</p> </p>
</div> </div>
<div class="board" :style="{ 'grid-template-rows': `repeat(${ game.settings.map.length }, 1fr)`, 'grid-template-columns': `repeat(${ game.settings.map[0].length }, 1fr)` }"> <div class="board">
<div v-for="(stone, i) in o.board" <div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }" <span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
@click="set(i)" </div>
:title="'[' + (o.transformPosToXy(i)[0] + 1) + ', ' + (o.transformPosToXy(i)[1] + 1) + '] (' + i + ')'" <div class="flex">
> <div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
<img v-if="stone === true" :src="`${blackUser.avatarUrl}?thumbnail&size=128`" alt=""> <div v-for="i in game.settings.map.length">{{ i }}</div>
<img v-if="stone === false" :src="`${whiteUser.avatarUrl}?thumbnail&size=128`" alt=""> </div>
<div class="cells" :style="cellsStyle">
<div v-for="(stone, i) in o.board"
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
@click="set(i)"
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="">
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="">
</div>
</div>
<div class="labels-y" v-if="this.$store.state.settings.reversiBoardLabels">
<div v-for="i in game.settings.map.length">{{ i }}</div>
</div>
</div>
<div class="labels-x" v-if="this.$store.state.settings.reversiBoardLabels">
<span v-for="i in game.settings.map[0].length">{{ String.fromCharCode(64 + i) }}</span>
</div> </div>
</div> </div>
@@ -43,8 +58,8 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import * as CRC32 from 'crc-32'; import * as CRC32 from 'crc-32';
import Reversi, { Color } from '../../../../../reversi/core'; import Reversi, { Color } from '../../../../../../../games/reversi/core';
import { url } from '../../../config'; import { url } from '../../../../../config';
export default Vue.extend({ export default Vue.extend({
props: ['initGame', 'connection'], props: ['initGame', 'connection'],
@@ -92,6 +107,12 @@ export default Vue.extend({
isMyTurn(): boolean { isMyTurn(): boolean {
if (this.turnUser == null) return null; if (this.turnUser == null) return null;
return this.turnUser.id == this.$store.state.i.id; return this.turnUser.id == this.$store.state.i.id;
},
cellsStyle(): any {
return {
'grid-template-rows': `repeat(${ this.game.settings.map.length }, 1fr)`,
'grid-template-columns': `repeat(${ this.game.settings.map[0].length }, 1fr)`
};
} }
}, },
@@ -244,54 +265,99 @@ export default Vue.extend({
border-bottom dashed 1px #c4cdd4 border-bottom dashed 1px #c4cdd4
> .board > .board
display grid width calc(100% - 16px)
grid-gap 4px max-width 500px
width 350px
height 350px
margin 0 auto margin 0 auto
> div $label-size = 16px
background transparent $gap = 4px
border-radius 6px
overflow hidden
* > .labels-x
pointer-events none height $label-size
user-select none padding 0 $label-size
display flex
&.empty > *
border solid 2px #eee flex 1
display flex
align-items center
justify-content center
font-size 12px
&.empty.can &:first-child
background #eee margin-left -($gap / 2)
&.empty.myTurn &:last-child
border-color #ddd margin-right -($gap / 2)
&.can > .flex
background #eee display flex
cursor pointer
&:hover > .labels-y
border-color darken($theme-color, 10%) width $label-size
background $theme-color display flex
flex-direction column
&:active > *
background darken($theme-color, 10%) flex 1
display flex
align-items center
justify-content center
font-size 12px
&.prev &:first-child
box-shadow 0 0 0 4px rgba($theme-color, 0.7) margin-top -($gap / 2)
&.isEnded &:last-child
border-color #ddd margin-bottom -($gap / 2)
&.none > .cells
border-color transparent !important flex 1
display grid
grid-gap $gap
> img > div
display block background transparent
width 100% border-radius 6px
height 100% overflow hidden
*
pointer-events none
user-select none
&.empty
border solid 2px #eee
&.empty.can
background #eee
&.empty.myTurn
border-color #ddd
&.can
background #eee
cursor pointer
&:hover
border-color darken($theme-color, 10%)
background $theme-color
&:active
background darken($theme-color, 10%)
&.prev
box-shadow 0 0 0 4px rgba($theme-color, 0.7)
&.isEnded
border-color #ddd
&.none
border-color transparent !important
> img
display block
width 100%
height 100%
> .graph > .graph
display grid display grid
@@ -9,7 +9,7 @@
import Vue from 'vue'; import Vue from 'vue';
import XGame from './reversi.game.vue'; import XGame from './reversi.game.vue';
import XRoom from './reversi.room.vue'; import XRoom from './reversi.room.vue';
import { ReversiGameStream } from '../../scripts/streaming/reversi-game'; import { ReversiGameStream } from '../../../../scripts/streaming/games/reversi/reversi-game';
export default Vue.extend({ export default Vue.extend({
components: { components: {
@@ -94,7 +94,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import * as maps from '../../../../../reversi/maps'; import * as maps from '../../../../../../../games/reversi/maps';
export default Vue.extend({ export default Vue.extend({
props: ['game', 'connection'], props: ['game', 'connection'],
@@ -112,7 +112,7 @@ export default Vue.extend({
computed: { computed: {
mapCategories(): string[] { mapCategories(): string[] {
const categories = Object.entries(maps).map(x => x[1].category); const categories = Object.values(maps).map(x => x.category);
return categories.filter((item, pos) => categories.indexOf(item) == pos); return categories.filter((item, pos) => categories.indexOf(item) == pos);
}, },
isAccepted(): boolean { isAccepted(): boolean {
@@ -179,8 +179,8 @@ export default Vue.extend({
if (this.game.settings.map == null) { if (this.game.settings.map == null) {
this.mapName = null; this.mapName = null;
} else { } else {
const foundMap = Object.entries(maps).find(x => x[1].data.join('') == this.game.settings.map.join('')); const found = Object.values(maps).find(x => x.data.join('') == this.game.settings.map.join(''));
this.mapName = foundMap ? foundMap[1].name : '-Custom-'; this.mapName = found ? found.name : '-Custom-';
} }
}, },
@@ -206,7 +206,7 @@ export default Vue.extend({
if (v == null) { if (v == null) {
this.game.settings.map = null; this.game.settings.map = null;
} else { } else {
this.game.settings.map = Object.entries(maps).find(x => x[1].name == v)[1].data; this.game.settings.map = Object.values(maps).find(x => x.name == v).data;
} }
this.$forceUpdate(); this.$forceUpdate();
this.updateSettings(); this.updateSettings();
@@ -217,9 +217,9 @@ export default Vue.extend({
const y = Math.floor(pos / this.game.settings.map[0].length); const y = Math.floor(pos / this.game.settings.map[0].length);
const newPixel = const newPixel =
pixel == ' ' ? '-' : pixel == ' ' ? '-' :
pixel == '-' ? 'b' : pixel == '-' ? 'b' :
pixel == 'b' ? 'w' : pixel == 'b' ? 'w' :
' '; ' ';
const line = this.game.settings.map[y].split(''); const line = this.game.settings.map[y].split('');
line[x] = newPixel; line[x] = newPixel;
this.$set(this.game.settings.map, y, line.join('')); this.$set(this.game.settings.map, y, line.join(''));
@@ -10,7 +10,7 @@
</div> </div>
</div> </div>
<div class="index" v-else> <div class="index" v-else>
<h1>Misskey %fa:circle%thell%fa:circle R%</h1> <h1>Misskey Reversi</h1>
<p>他のMisskeyユーザーとリバーシで対戦しよう</p> <p>他のMisskeyユーザーとリバーシで対戦しよう</p>
<div class="play"> <div class="play">
<el-button round>フリーマッチ(準備中)</el-button> <el-button round>フリーマッチ(準備中)</el-button>
@@ -99,18 +99,18 @@ export default Vue.extend({
this.connection.on('matched', this.onMatched); this.connection.on('matched', this.onMatched);
this.connection.on('invited', this.onInvited); this.connection.on('invited', this.onInvited);
(this as any).api('reversi/games', { (this as any).api('games/reversi/games', {
my: true my: true
}).then(games => { }).then(games => {
this.myGames = games; this.myGames = games;
}); });
(this as any).api('reversi/games').then(games => { (this as any).api('games/reversi/games').then(games => {
this.games = games; this.games = games;
this.gamesFetching = false; this.gamesFetching = false;
}); });
(this as any).api('reversi/invitations').then(invitations => { (this as any).api('games/reversi/invitations').then(invitations => {
this.invitations = this.invitations.concat(invitations); this.invitations = this.invitations.concat(invitations);
}); });
@@ -132,7 +132,7 @@ export default Vue.extend({
}, },
methods: { methods: {
go(game) { go(game) {
(this as any).api('reversi/games/show', { (this as any).api('games/reversi/games/show', {
gameId: game.id gameId: game.id
}).then(game => { }).then(game => {
this.matching = null; this.matching = null;
@@ -146,7 +146,7 @@ export default Vue.extend({
(this as any).api('users/show', { (this as any).api('users/show', {
username username
}).then(user => { }).then(user => {
(this as any).api('reversi/match', { (this as any).api('games/reversi/match', {
userId: user.id userId: user.id
}).then(res => { }).then(res => {
if (res == null) { if (res == null) {
@@ -160,10 +160,10 @@ export default Vue.extend({
}, },
cancel() { cancel() {
this.matching = null; this.matching = null;
(this as any).api('reversi/match/cancel'); (this as any).api('games/reversi/match/cancel');
}, },
accept(invitation) { accept(invitation) {
(this as any).api('reversi/match', { (this as any).api('games/reversi/match', {
userId: invitation.parent.id userId: invitation.parent.id
}).then(game => { }).then(game => {
if (game) { if (game) {
@@ -1,7 +1,7 @@
<template> <template>
<div class="mk-google"> <div class="mk-google">
<input type="search" v-model="query" :placeholder="q"> <input type="search" v-model="query" :placeholder="q">
<button @click="search">検索</button> <button @click="search">%fa:search% %i18n:common.search%</button>
</div> </div>
</template> </template>
@@ -27,7 +27,7 @@ import urlPreview from './url-preview.vue';
import twitterSetting from './twitter-setting.vue'; import twitterSetting from './twitter-setting.vue';
import fileTypeIcon from './file-type-icon.vue'; import fileTypeIcon from './file-type-icon.vue';
import Switch from './switch.vue'; import Switch from './switch.vue';
import Reversi from './reversi.vue'; import Reversi from './games/reversi/reversi.vue';
import welcomeTimeline from './welcome-timeline.vue'; import welcomeTimeline from './welcome-timeline.vue';
import uiInput from './ui/input.vue'; import uiInput from './ui/input.vue';
import uiButton from './ui/button.vue'; import uiButton from './ui/button.vue';
@@ -46,33 +46,45 @@ export default Vue.extend({
display grid display grid
grid-gap 4px grid-gap 4px
> *
overflow hidden
border-radius 4px
&[data-count="1"] &[data-count="1"]
grid-template-rows 1fr grid-template-rows 1fr
&[data-count="2"] &[data-count="2"]
grid-template-columns 1fr 1fr grid-template-columns 1fr 1fr
grid-template-rows 1fr grid-template-rows 1fr
&[data-count="3"] &[data-count="3"]
grid-template-columns 1fr 0.5fr grid-template-columns 1fr 0.5fr
grid-template-rows 1fr 1fr grid-template-rows 1fr 1fr
:nth-child(1)
> *:nth-child(1)
grid-row 1 / 3 grid-row 1 / 3
:nth-child(3)
> *:nth-child(3)
grid-column 2 / 3 grid-column 2 / 3
grid-row 2 / 3 grid-row 2 / 3
&[data-count="4"] &[data-count="4"]
grid-template-columns 1fr 1fr grid-template-columns 1fr 1fr
grid-template-rows 1fr 1fr grid-template-rows 1fr 1fr
:nth-child(1) > *:nth-child(1)
grid-column 1 / 2 grid-column 1 / 2
grid-row 1 / 2 grid-row 1 / 2
:nth-child(2)
> *:nth-child(2)
grid-column 2 / 3 grid-column 2 / 3
grid-row 1 / 2 grid-row 1 / 2
:nth-child(3)
> *:nth-child(3)
grid-column 1 / 2 grid-column 1 / 2
grid-row 2 / 3 grid-row 2 / 3
:nth-child(4)
> *:nth-child(4)
grid-column 2 / 3 grid-column 2 / 3
grid-row 2 / 3 grid-row 2 / 3
@@ -119,7 +119,7 @@ export default Vue.extend({
}, },
onKeypress(e) { onKeypress(e) {
if ((e.which == 10 || e.which == 13) && e.ctrlKey) { if ((e.which == 10 || e.which == 13) && e.ctrlKey && this.canSend) {
this.send(); this.send();
} }
}, },
@@ -3,10 +3,9 @@
<mk-avatar class="avatar" :user="message.user" target="_blank"/> <mk-avatar class="avatar" :user="message.user" target="_blank"/>
<div class="content"> <div class="content">
<div class="balloon" :data-no-text="message.text == null"> <div class="balloon" :data-no-text="message.text == null">
<p class="read" v-if="isMe && message.isRead">%i18n:@is-read%</p> <!-- <button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
<button class="delete-button" v-if="isMe" title="%i18n:common.delete%">
<img src="/assets/desktop/messaging/delete.png" alt="Delete"/> <img src="/assets/desktop/messaging/delete.png" alt="Delete"/>
</button> </button> -->
<div class="content" v-if="!message.isDeleted"> <div class="content" v-if="!message.isDeleted">
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/> <misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
<div class="file" v-if="message.file"> <div class="file" v-if="message.file">
@@ -23,6 +22,7 @@
<div></div> <div></div>
<mk-url-preview v-for="url in urls" :url="url" :key="url"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
<footer> <footer>
<span class="read" v-if="isMe && message.isRead">%i18n:@is-read%</span>
<mk-time :time="message.createdAt"/> <mk-time :time="message.createdAt"/>
<template v-if="message.is_edited">%fa:pencil-alt%</template> <template v-if="message.is_edited">%fa:pencil-alt%</template>
</footer> </footer>
@@ -120,17 +120,6 @@ root(isDark)
height 16px height 16px
cursor pointer cursor pointer
> .read
user-select none
display block
position absolute
z-index 1
bottom -4px
left -12px
margin 0
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
font-size 11px
> .content > .content
> .is-deleted > .is-deleted
@@ -258,6 +247,12 @@ root(isDark)
> footer > footer
text-align right text-align right
> .read
user-select none
margin 0 4px 0 0
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
font-size 11px
&[data-is-deleted] &[data-is-deleted]
> .baloon > .baloon
opacity 0.5 opacity 0.5
@@ -51,7 +51,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import getAcct from '../../../../../acct/render'; import getAcct from '../../../../../misc/acct/render';
export default Vue.extend({ export default Vue.extend({
props: { props: {
@@ -1,7 +1,7 @@
import Vue from 'vue'; import Vue from 'vue';
import * as emojilib from 'emojilib'; import * as emojilib from 'emojilib';
import parse from '../../../../../mfm/parse'; import parse from '../../../../../mfm/parse';
import getAcct from '../../../../../acct/render'; import getAcct from '../../../../../misc/acct/render';
import { url } from '../../../config'; import { url } from '../../../config';
import MkUrl from './url.vue'; import MkUrl from './url.vue';
import MkGoogle from './google.vue'; import MkGoogle from './google.vue';
@@ -40,17 +40,6 @@ export default Vue.component('misskey-flavored-markdown', {
ast = this.ast; ast = this.ast;
} }
if (ast.filter(x => x.type != 'hashtag').length == 0) {
return;
}
while (ast[ast.length - 1] && (
ast[ast.length - 1].type == 'hashtag' ||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == ' ') ||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == '\n'))) {
ast.pop();
}
// Parse ast to DOM // Parse ast to DOM
const els = flatten(ast.map(token => { const els = flatten(ast.map(token => {
switch (token.type) { switch (token.type) {
@@ -2,9 +2,9 @@
<span class="mk-nav"> <span class="mk-nav">
<a :href="aboutUrl">%i18n:@about%</a> <a :href="aboutUrl">%i18n:@about%</a>
<i></i> <i></i>
<a href="https://github.com/syuilo/misskey">%i18n:@repository%</a> <a :href="repositoryUrl">%i18n:@repository%</a>
<i></i> <i></i>
<a href="https://github.com/syuilo/misskey/issues/new" target="_blank">%i18n:@feedback%</a> <a :href="feedbackUrl" target="_blank">%i18n:@feedback%</a>
<i></i> <i></i>
<a :href="devUrl">%i18n:@develop%</a> <a :href="devUrl">%i18n:@develop%</a>
<i></i> <i></i>
@@ -14,7 +14,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import { docsUrl, statsUrl, statusUrl, devUrl, lang } from '../../../config'; import { docsUrl, statsUrl, statusUrl, devUrl, repositoryUrl, feedbackUrl, lang } from '../../../config';
export default Vue.extend({ export default Vue.extend({
data() { data() {
@@ -22,7 +22,9 @@ export default Vue.extend({
aboutUrl: `${docsUrl}/${lang}/about`, aboutUrl: `${docsUrl}/${lang}/about`,
statsUrl, statsUrl,
statusUrl, statusUrl,
devUrl devUrl,
repositoryUrl: repositoryUrl || `https://github.com/syuilo/misskey`,
feedbackUrl: feedbackUrl || `https://github.com/syuilo/misskey/issues/new`
} }
} }
}); });
@@ -2,6 +2,7 @@
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu"> <header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/> <mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link> <router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:bookmark%</span>
<span class="is-admin" v-if="note.user.isAdmin">admin</span> <span class="is-admin" v-if="note.user.isAdmin">admin</span>
<span class="is-bot" v-if="note.user.isBot">bot</span> <span class="is-bot" v-if="note.user.isBot">bot</span>
<span class="is-cat" v-if="note.user.isCat">cat</span> <span class="is-cat" v-if="note.user.isCat">cat</span>
@@ -69,6 +70,10 @@ root(isDark)
&:hover &:hover
text-decoration underline text-decoration underline
> .is-verified
margin-right 8px
color #4dabf7
> .is-admin > .is-admin
> .is-bot > .is-bot
> .is-cat > .is-cat
@@ -1,7 +1,7 @@
<template> <template>
<div class="mk-reaction-picker"> <div class="mk-reaction-picker">
<div class="backdrop" ref="backdrop" @click="close"></div> <div class="backdrop" ref="backdrop" @click="close"></div>
<div class="popover" :class="{ compact }" ref="popover"> <div class="popover" :class="{ compact, big }" ref="popover">
<p v-if="!compact">{{ title }}</p> <p v-if="!compact">{{ title }}</p>
<div> <div>
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" title="%i18n:common.reactions.like%"><mk-reaction-icon reaction='like'/></button> <button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" title="%i18n:common.reactions.like%"><mk-reaction-icon reaction='like'/></button>
@@ -25,7 +25,28 @@ import * as anime from 'animejs';
const placeholder = '%i18n:@choose-reaction%'; const placeholder = '%i18n:@choose-reaction%';
export default Vue.extend({ export default Vue.extend({
props: ['note', 'source', 'compact', 'cb'], props: {
note: {
type: Object,
required: true
},
source: {
required: true
},
compact: {
type: Boolean,
required: false,
default: false
},
cb: {
required: false
},
big: {
type: Boolean,
required: false,
default: false
}
},
data() { data() {
return { return {
title: placeholder title: placeholder
@@ -162,6 +183,16 @@ root(isDark)
border-right solid $balloon-size transparent border-right solid $balloon-size transparent
border-bottom solid $balloon-size $bgcolor border-bottom solid $balloon-size $bgcolor
&.big
> div
width 280px
> button
width 50px
height 50px
font-size 28px
border-radius 4px
> p > p
display block display block
margin 0 margin 0
@@ -29,11 +29,7 @@
<p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p> <p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
</div> </div>
</ui-input> </ui-input>
<div class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div> <div v-if="recaptchaSitekey != null" class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div>
<label class="agree-tou" style="display: block; margin: 16px 0;">
<input name="agree-tou" type="checkbox" required/>
<p><a :href="touUrl" target="_blank">利用規約</a>に同意する</p>
</label>
<ui-button type="submit">%i18n:@create%</ui-button> <ui-button type="submit">%i18n:@create%</ui-button>
</form> </form>
</template> </template>
@@ -41,7 +37,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
const getPasswordStrength = require('syuilo-password-strength'); const getPasswordStrength = require('syuilo-password-strength');
import { host, url, docsUrl, lang, recaptchaSitekey } from '../../../config'; import { host, url, recaptchaSitekey } from '../../../config';
export default Vue.extend({ export default Vue.extend({
data() { data() {
@@ -51,7 +47,6 @@ export default Vue.extend({
password: '', password: '',
retypedPassword: '', retypedPassword: '',
url, url,
touUrl: `${docsUrl}/${lang}/tou`,
recaptchaSitekey, recaptchaSitekey,
usernameState: null, usernameState: null,
passwordStrength: '', passwordStrength: '',
@@ -115,7 +110,7 @@ export default Vue.extend({
(this as any).api('signup', { (this as any).api('signup', {
username: this.username, username: this.username,
password: this.password, password: this.password,
'g-recaptcha-response': (window as any).grecaptcha.getResponse() 'g-recaptcha-response': recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
}).then(() => { }).then(() => {
(this as any).api('signin', { (this as any).api('signin', {
username: this.username, username: this.username,
@@ -126,15 +121,19 @@ export default Vue.extend({
}).catch(() => { }).catch(() => {
alert('%i18n:@some-error%'); alert('%i18n:@some-error%');
(window as any).grecaptcha.reset(); if (recaptchaSitekey != null) {
(window as any).grecaptcha.reset();
}
}); });
} }
}, },
mounted() { mounted() {
const head = document.getElementsByTagName('head')[0]; if (recaptchaSitekey != null) {
const script = document.createElement('script'); const head = document.getElementsByTagName('head')[0];
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js'); const script = document.createElement('script');
head.appendChild(script); script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
head.appendChild(script);
}
} }
}); });
</script> </script>
@@ -144,22 +143,4 @@ export default Vue.extend({
.mk-signup .mk-signup
min-width 302px min-width 302px
.agree-tou
padding 4px
border-radius 4px
&:hover
background #f4f4f4
&:active
background #eee
&, *
cursor pointer
p
display inline
color #555
</style> </style>
@@ -2,6 +2,9 @@
<iframe v-if="youtubeId" type="text/html" height="250" <iframe v-if="youtubeId" type="text/html" height="250"
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`" :src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
frameborder="0"/> frameborder="0"/>
<blockquote v-else-if="tweetUrl" class="twitter-tweet" ref="tweet">
<a :href="url"></a>
</blockquote>
<div v-else class="mk-url-preview"> <div v-else class="mk-url-preview">
<a :href="url" target="_blank" :title="url" v-if="!fetching"> <a :href="url" target="_blank" :title="url" v-if="!fetching">
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div> <div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
@@ -34,6 +37,7 @@ export default Vue.extend({
icon: null, icon: null,
sitename: null, sitename: null,
youtubeId: null, youtubeId: null,
tweetUrl: null,
misskeyUrl misskeyUrl
}; };
}, },
@@ -44,6 +48,25 @@ export default Vue.extend({
this.youtubeId = url.searchParams.get('v'); this.youtubeId = url.searchParams.get('v');
} else if (url.hostname == 'youtu.be') { } else if (url.hostname == 'youtu.be') {
this.youtubeId = url.pathname; this.youtubeId = url.pathname;
} else if (url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
this.tweetUrl = url;
const twttr = (window as any).twttr || {};
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
if (twttr.widgets) {
Vue.nextTick(loadTweet);
} else {
const wjsId = 'twitter-wjs';
if (!document.getElementById(wjsId)) {
const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script');
script.setAttribute('id', wjsId);
script.setAttribute('src', 'https://platform.twitter.com/widgets.js');
head.appendChild(script);
}
twttr.ready = loadTweet;
(window as any).twttr = twttr;
}
} else { } else {
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => { fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
res.json().then(info => { res.json().then(info => {
@@ -1,5 +1,6 @@
import * as getCaretCoordinates from 'textarea-caret'; import * as getCaretCoordinates from 'textarea-caret';
import MkAutocomplete from '../components/autocomplete.vue'; import MkAutocomplete from '../components/autocomplete.vue';
import renderAcct from '../../../../../misc/acct/render';
export default { export default {
bind(el, binding, vn) { bind(el, binding, vn) {
@@ -67,15 +68,30 @@ class Autocomplete {
* テキスト入力時 * テキスト入力時
*/ */
private onInput() { private onInput() {
const caret = this.textarea.selectionStart; const caretPos = this.textarea.selectionStart;
const text = this.text.substr(0, caret); const text = this.text.substr(0, caretPos);
const mentionIndex = text.lastIndexOf('@'); const mentionIndex = text.lastIndexOf('@');
const hashtagIndex = text.lastIndexOf('#');
const emojiIndex = text.lastIndexOf(':'); const emojiIndex = text.lastIndexOf(':');
const start = Math.min(
mentionIndex == -1 ? Infinity : mentionIndex,
hashtagIndex == -1 ? Infinity : hashtagIndex,
emojiIndex == -1 ? Infinity : emojiIndex);
if (start == Infinity) {
this.close();
return;
}
const isMention = mentionIndex == start;
const isHashtag = hashtagIndex == start;
const isEmoji = emojiIndex == start;
let opened = false; let opened = false;
if (mentionIndex != -1 && mentionIndex > emojiIndex) { if (isMention) {
const username = text.substr(mentionIndex + 1); const username = text.substr(mentionIndex + 1);
if (username != '' && username.match(/^[a-zA-Z0-9_]+$/)) { if (username != '' && username.match(/^[a-zA-Z0-9_]+$/)) {
this.open('user', username); this.open('user', username);
@@ -83,7 +99,15 @@ class Autocomplete {
} }
} }
if (emojiIndex != -1 && emojiIndex > mentionIndex) { if (isHashtag || opened == false) {
const hashtag = text.substr(hashtagIndex + 1);
if (!hashtag.includes(' ') && !hashtag.includes('\n')) {
this.open('hashtag', hashtag);
opened = true;
}
}
if (isEmoji || opened == false) {
const emoji = text.substr(emojiIndex + 1); const emoji = text.substr(emojiIndex + 1);
if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) { if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) {
this.open('emoji', emoji); this.open('emoji', emoji);
@@ -164,13 +188,31 @@ class Autocomplete {
const trimmedBefore = before.substring(0, before.lastIndexOf('@')); const trimmedBefore = before.substring(0, before.lastIndexOf('@'));
const after = source.substr(caret); const after = source.substr(caret);
const acct = renderAcct(value);
// 挿入 // 挿入
this.text = trimmedBefore + '@' + value.username + ' ' + after; this.text = trimmedBefore + '@' + acct + ' ' + after;
// キャレットを戻す // キャレットを戻す
this.vm.$nextTick(() => { this.vm.$nextTick(() => {
this.textarea.focus(); this.textarea.focus();
const pos = trimmedBefore.length + (value.username.length + 2); const pos = trimmedBefore.length + (acct.length + 2);
this.textarea.setSelectionRange(pos, pos);
});
} else if (type == 'hashtag') {
const source = this.text;
const before = source.substr(0, caret);
const trimmedBefore = before.substring(0, before.lastIndexOf('#'));
const after = source.substr(caret);
// 挿入
this.text = trimmedBefore + '#' + value + ' ' + after;
// キャレットを戻す
this.vm.$nextTick(() => {
this.textarea.focus();
const pos = trimmedBefore.length + (value.length + 2);
this.textarea.setSelectionRange(pos, pos); this.textarea.setSelectionRange(pos, pos);
}); });
} else if (type == 'emoji') { } else if (type == 'emoji') {
+2 -2
View File
@@ -1,6 +1,6 @@
import Vue from 'vue'; import Vue from 'vue';
import getAcct from '../../../../../acct/render'; import getAcct from '../../../../../misc/acct/render';
import getUserName from '../../../../../renderers/get-user-name'; import getUserName from '../../../../../misc/get-user-name';
Vue.filter('acct', user => { Vue.filter('acct', user => {
return getAcct(user); return getAcct(user);
@@ -0,0 +1,215 @@
<template>
<div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
<div class="signed-in-as" v-html="'%i18n:@signed-in-as%'.replace('{}', '<b>' + myName + '</b>')"></div>
<main>
<div class="banner" :style="bannerStyle"></div>
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
<div class="body">
<router-link :to="user | userPage" class="name">{{ user | userName }}</router-link>
<span class="username">@{{ user | acct }}</span>
<div class="description">
<misskey-flavored-markdown v-if="user.description" :text="user.description" :i="$store.state.i"/>
</div>
</div>
</main>
<button
:class="{ wait: followWait, active: user.isFollowing || user.hasPendingFollowRequestFromYou }"
@click="onClick"
:disabled="followWait">
<template v-if="!followWait">
<template v-if="user.hasPendingFollowRequestFromYou">%fa:hourglass-half% %i18n:@request-pending%</template>
<template v-else-if="user.isFollowing">%fa:minus% %i18n:@following%</template>
<template v-else-if="!user.isFollowing && user.isLocked">%fa:plus% %i18n:@follow-request%</template>
<template v-else-if="!user.isFollowing && !user.isLocked">%fa:plus% %i18n:@follow%</template>
</template>
<template v-else>%fa:spinner .pulse .fw%</template>
</button>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import parseAcct from '../../../../../misc/acct/parse';
import getUserName from '../../../../../misc/get-user-name';
import Progress from '../../../common/scripts/loading';
export default Vue.extend({
data() {
return {
fetching: true,
user: null,
followWait: false
};
},
computed: {
myName(): string {
return Vue.filter('userName')(this.$store.state.i);
},
bannerStyle(): any {
if (this.user.bannerUrl == null) return {};
return {
backgroundColor: this.user.bannerColor && this.user.bannerColor.length == 3 ? `rgb(${ this.user.bannerColor.join(',') })` : null,
backgroundImage: `url(${ this.user.bannerUrl })`
};
}
},
created() {
this.fetch();
},
methods: {
fetch() {
const acct = new URL(location.href).searchParams.get('acct');
this.fetching = true;
Progress.start();
(this as any).api('users/show', parseAcct(acct)).then(user => {
this.user = user;
this.fetching = false;
Progress.done();
document.title = getUserName(this.user) + ' | Misskey';
});
},
async onClick() {
this.followWait = true;
try {
if (this.user.isFollowing) {
this.user = await (this as any).api('following/delete', {
userId: this.user.id
});
} else {
if (this.user.isLocked && this.user.hasPendingFollowRequestFromYou) {
this.user = await (this as any).api('following/requests/cancel', {
userId: this.user.id
});
} else if (this.user.isLocked) {
this.user = await (this as any).api('following/create', {
userId: this.user.id
});
} else {
this.user = await (this as any).api('following/create', {
userId: this.user.id
});
}
}
} catch (e) {
console.error(e);
} finally {
this.followWait = false;
}
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark)
padding 32px
max-width 500px
margin 0 auto
text-align center
color isDark ? #9baec8 : #868c8c
$bg = isDark ? #282C37 : #fff
@media (max-width 400px)
padding 16px
> .signed-in-as
margin-bottom 16px
font-size 14px
color isDark ? #9baec8 : #9daab3
> main
margin-bottom 16px
background $bg
border-radius 8px
box-shadow 0 4px 12px rgba(#000, 0.1)
overflow hidden
> .banner
height 128px
background-position center
background-size cover
> .avatar
display block
margin -50px auto 0 auto
width 100px
height 100px
border-radius 100%
border solid 4px $bg
> .body
padding 4px 32px 32px 32px
@media (max-width 400px)
padding 4px 16px 16px 16px
> .name
font-size 20px
font-weight bold
> .username
display block
opacity 0.7
> .description
margin-top 16px
> button
display block
user-select none
cursor pointer
padding 10px 16px
margin 0
width 100%
min-width 150px
font-size 14px
font-weight bold
color $theme-color
background transparent
outline none
border solid 1px $theme-color
border-radius 36px
&:hover
background rgba($theme-color, 0.1)
&:active
background rgba($theme-color, 0.2)
&.active
color $theme-color-foreground
background $theme-color
&:hover
background lighten($theme-color, 10%)
border-color lighten($theme-color, 10%)
&:active
background darken($theme-color, 10%)
border-color darken($theme-color, 10%)
&.wait
cursor wait !important
opacity 0.7
*
pointer-events none
.syxhndwprovvuqhmyvveewmbqayniwkv[data-darkmode]
root(true)
.syxhndwprovvuqhmyvveewmbqayniwkv:not([data-darkmode])
root(false)
</style>
@@ -1,8 +1,8 @@
<template> <template>
<div class="mkw-analog-clock"> <div class="mkw-analog-clock">
<mk-widget-container :naked="props.naked" :show-header="false"> <mk-widget-container :naked="!(props.design % 2)" :show-header="false">
<div class="mkw-analog-clock--body"> <div class="mkw-analog-clock--body">
<mk-analog-clock :dark="$store.state.device.darkmode"/> <mk-analog-clock :dark="$store.state.device.darkmode" :smooth="!(props.design && ~props.design)"/>
</div> </div>
</mk-widget-container> </mk-widget-container>
</div> </div>
@@ -13,12 +13,13 @@ import define from '../../../common/define-widget';
export default define({ export default define({
name: 'analog-clock', name: 'analog-clock',
props: () => ({ props: () => ({
naked: false design: -1
}) })
}).extend({ }).extend({
methods: { methods: {
func() { func() {
this.props.naked = !this.props.naked; if (++this.props.design > 2)
this.props.design = -1;
this.save(); this.save();
} }
} }
@@ -175,6 +175,7 @@ root(isDark)
> .val > .val
height 4px height 4px
background $theme-color background $theme-color
transition width .3s cubic-bezier(0.23, 1, 0.32, 1)
&:nth-child(1) &:nth-child(1)
> .meter > .val > .meter > .val
@@ -5,7 +5,7 @@
<p :class="$style.fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p> <p :class="$style.fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<div :class="$style.stream" v-if="!fetching && images.length > 0"> <div :class="$style.stream" v-if="!fetching && images.length > 0">
<div v-for="image in images" :class="$style.img" :style="`background-image: url(${image.url}?thumbnail&size=256)`"></div> <div v-for="image in images" :class="$style.img" :style="`background-image: url(${image.url})`"></div>
</div> </div>
<p :class="$style.empty" v-if="!fetching && images.length == 0">%i18n:@no-photos%</p> <p :class="$style.empty" v-if="!fetching && images.length == 0">%i18n:@no-photos%</p>
</mk-widget-container> </mk-widget-container>
@@ -72,7 +72,7 @@ export default define({
if (this.images.length == 0) return; if (this.images.length == 0) return;
const index = Math.floor(Math.random() * this.images.length); const index = Math.floor(Math.random() * this.images.length);
const img = `url(${ this.images[index].url }?thumbnail&size=1024)`; const img = `url(${ this.images[index].url })`;
(this.$refs.slideB as any).style.backgroundImage = img; (this.$refs.slideB as any).style.backgroundImage = img;
+4
View File
@@ -9,6 +9,8 @@ declare const _DOCS_URL_: string;
declare const _STATS_URL_: string; declare const _STATS_URL_: string;
declare const _STATUS_URL_: string; declare const _STATUS_URL_: string;
declare const _DEV_URL_: string; declare const _DEV_URL_: string;
declare const _REPOSITORY_URL_: string;
declare const _FEEDBACK_URL_: string;
declare const _LANG_: string; declare const _LANG_: string;
declare const _LANGS_: string; declare const _LANGS_: string;
declare const _RECAPTCHA_SITEKEY_: string; declare const _RECAPTCHA_SITEKEY_: string;
@@ -32,6 +34,8 @@ export const docsUrl = _DOCS_URL_;
export const statsUrl = _STATS_URL_; export const statsUrl = _STATS_URL_;
export const statusUrl = _STATUS_URL_; export const statusUrl = _STATUS_URL_;
export const devUrl = _DEV_URL_; export const devUrl = _DEV_URL_;
export const repositoryUrl = _REPOSITORY_URL_;
export const feedbackUrl = _FEEDBACK_URL_;
export const lang = _LANG_; export const lang = _LANG_;
export const langs = _LANGS_; export const langs = _LANGS_;
export const recaptchaSitekey = _RECAPTCHA_SITEKEY_; export const recaptchaSitekey = _RECAPTCHA_SITEKEY_;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 401 KiB

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 424 B

+3 -1
View File
@@ -36,6 +36,7 @@ import MkSearch from './views/pages/search.vue';
import MkTag from './views/pages/tag.vue'; import MkTag from './views/pages/tag.vue';
import MkReversi from './views/pages/reversi.vue'; import MkReversi from './views/pages/reversi.vue';
import MkShare from './views/pages/share.vue'; import MkShare from './views/pages/share.vue';
import MkFollow from '../common/views/pages/follow.vue';
/** /**
* init * init
@@ -67,7 +68,8 @@ init(async (launch) => {
{ path: '/reversi', component: MkReversi }, { path: '/reversi', component: MkReversi },
{ path: '/reversi/:game', component: MkReversi }, { path: '/reversi/:game', component: MkReversi },
{ path: '/@:user', component: MkUser }, { path: '/@:user', component: MkUser },
{ path: '/notes/:note', component: MkNote } { path: '/notes/:note', component: MkNote },
{ path: '/authorize-follow', component: MkFollow }
] ]
}); });
@@ -35,10 +35,7 @@ import Vue from 'vue';
const eachMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; const eachMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function isLeapYear(year) { function isLeapYear(year) {
return (year % 400 == 0) ? true : return !(year % (year % 25 ? 4 : 16));
(year % 100 == 0) ? false :
(year % 4 == 0) ? true :
false;
} }
export default Vue.extend({ export default Vue.extend({
@@ -28,7 +28,7 @@ export default Vue.extend({
default: false default: false
}, },
title: { title: {
default: '%fa:R file%%i18n:@choose-prompt%s' default: '%fa:R file%%i18n:@choose-prompt%'
} }
}, },
data() { data() {
@@ -1,5 +1,5 @@
<template> <template>
<div class="root file" <div class="gvfdktuvdgwhmztnuekzkswkjygptfcv"
:data-is-selected="isSelected" :data-is-selected="isSelected"
:data-is-contextmenu-showing="isContextmenuShowing" :data-is-contextmenu-showing="isContextmenuShowing"
@click="onClick" @click="onClick"
@@ -16,7 +16,7 @@
<p>%i18n:@banner%</p> <p>%i18n:@banner%</p>
</div> </div>
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`"> <div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
<img :src="`${file.url}?thumbnail&size=128`" alt="" @load="onThumbnailLoaded"/> <img :src="file.url" alt="" @load="onThumbnailLoaded"/>
</div> </div>
<p class="name"> <p class="name">
<span>{{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }}</span> <span>{{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }}</span>
@@ -68,6 +68,11 @@ export default Vue.extend({
icon: '%fa:i-cursor%', icon: '%fa:i-cursor%',
action: this.rename action: this.rename
}, { }, {
type: 'item',
text: this.file.isSensitive ? '%i18n:@contextmenu.unmark-as-sensitive%' : '%i18n:@contextmenu.mark-as-sensitive%',
icon: this.file.isSensitive ? '%fa:R eye%' : '%fa:R eye-slash%',
action: this.toggleSensitive
}, null, {
type: 'item', type: 'item',
text: '%i18n:@contextmenu.copy-url%', text: '%i18n:@contextmenu.copy-url%',
icon: '%fa:link%', icon: '%fa:link%',
@@ -149,6 +154,13 @@ export default Vue.extend({
}); });
}, },
toggleSensitive() {
(this as any).api('drive/files/update', {
fileId: this.file.id,
isSensitive: !this.file.isSensitive
});
},
copyUrl() { copyUrl() {
copyToClipboard(this.file.url); copyToClipboard(this.file.url);
(this as any).apis.dialog({ (this as any).apis.dialog({
@@ -312,10 +324,10 @@ root(isDark)
> .ext > .ext
opacity 0.5 opacity 0.5
.root.file[data-darkmode] .gvfdktuvdgwhmztnuekzkswkjygptfcv[data-darkmode]
root(true) root(true)
.root.file:not([data-darkmode]) .gvfdktuvdgwhmztnuekzkswkjygptfcv:not([data-darkmode])
root(false) root(false)
</style> </style>
@@ -1,5 +1,5 @@
<template> <template>
<div class="root folder" <div class="ynntpczxvnusfwdyxsfuhvcmuypqopdd"
:data-is-contextmenu-showing="isContextmenuShowing" :data-is-contextmenu-showing="isContextmenuShowing"
:data-draghover="draghover" :data-draghover="draghover"
@click="onClick" @click="onClick"
@@ -216,10 +216,10 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '~const.styl' @import '~const.styl'
.root.folder root(isDark)
padding 8px padding 8px
height 64px height 64px
background lighten($theme-color, 95%) background isDark ? rgba($theme-color, 0.2) : lighten($theme-color, 95%)
border-radius 4px border-radius 4px
&, * &, *
@@ -229,10 +229,10 @@ export default Vue.extend({
pointer-events none pointer-events none
&:hover &:hover
background lighten($theme-color, 90%) background isDark ? rgba(lighten($theme-color, 10%), 0.2) : lighten($theme-color, 90%)
&:active &:active
background lighten($theme-color, 85%) background isDark ? rgba(darken($theme-color, 10%), 0.2) : lighten($theme-color, 85%)
&[data-is-contextmenu-showing] &[data-is-contextmenu-showing]
&[data-draghover] &[data-draghover]
@@ -248,16 +248,22 @@ export default Vue.extend({
border-radius 4px border-radius 4px
&[data-draghover] &[data-draghover]
background lighten($theme-color, 90%) background isDark ? rgba(darken($theme-color, 10%), 0.2) : lighten($theme-color, 90%)
> .name > .name
margin 0 margin 0
font-size 0.9em font-size 0.9em
color darken($theme-color, 30%) color isDark ? #fff : darken($theme-color, 30%)
> [data-fa] > [data-fa]
margin-right 4px margin-right 4px
margin-left 2px margin-left 2px
text-align left text-align left
.ynntpczxvnusfwdyxsfuhvcmuypqopdd[data-darkmode]
root(true)
.ynntpczxvnusfwdyxsfuhvcmuypqopdd:not([data-darkmode])
root(false)
</style> </style>
@@ -10,7 +10,10 @@
<span class="separator" v-if="folder != null">%fa:angle-right%</span> <span class="separator" v-if="folder != null">%fa:angle-right%</span>
<span class="folder current" v-if="folder != null">{{ folder.name }}</span> <span class="folder current" v-if="folder != null">{{ folder.name }}</span>
</div> </div>
<input class="search" type="search" placeholder="&#xf002; %i18n:@search%"/> <!--
TODO: #343
<input class="search" type="search" placeholder="&#xf002; %i18n:@search%"/>
-->
</nav> </nav>
<div class="main" :class="{ uploading: uploadings.length > 0, fetching }" <div class="main" :class="{ uploading: uploadings.length > 0, fetching }"
ref="main" ref="main"
@@ -1,7 +1,7 @@
<template> <template>
<mk-window width="400px" height="550px" @closed="$destroy"> <mk-window width="400px" height="550px" @closed="$destroy">
<span slot="header" :class="$style.header"> <span slot="header" :class="$style.header">
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@followers%'.replace('{}', name) }} <img :src="user.avatarUrl" alt=""/>{{ '%i18n:@followers%'.replace('{}', name) }}
</span> </span>
<mk-followers :user="user"/> <mk-followers :user="user"/>
</mk-window> </mk-window>
@@ -1,7 +1,7 @@
<template> <template>
<mk-window width="400px" height="550px" @closed="$destroy"> <mk-window width="400px" height="550px" @closed="$destroy">
<span slot="header" :class="$style.header"> <span slot="header" :class="$style.header">
<img :src="`${user.avatarUrl}?thumbnail&size=64`" alt=""/>{{ '%i18n:@following%'.replace('{}', name) }} <img :src="user.avatarUrl" alt=""/>{{ '%i18n:@following%'.replace('{}', name) }}
</span> </span>
<mk-following :user="user"/> <mk-following :user="user"/>
</mk-window> </mk-window>
@@ -1,5 +1,11 @@
<template> <template>
<a class="mk-media-image" <div class="ldwbgwstjsdgcjruamauqdrffetqudry" v-if="image.isSensitive && hide" @click="hide = false">
<div>
<b>%fa:exclamation-triangle% %i18n:@sensitive%</b>
<span>%i18n:@click-to-show%</span>
</div>
</div>
<a class="lcjomzwbohoelkxsnuqjiaccdbdfiazy" v-else
:href="image.url" :href="image.url"
@mousemove="onMousemove" @mousemove="onMousemove"
@mouseleave="onMouseleave" @mouseleave="onMouseleave"
@@ -21,13 +27,17 @@ export default Vue.extend({
}, },
raw: { raw: {
default: false default: false
},
hide: {
type: Boolean,
default: true
} }
}, },
computed: { computed: {
style(): any { style(): any {
return { return {
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent', 'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.url}?thumbnail&size=512)` 'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.url})`
}; };
} }
}, },
@@ -56,16 +66,30 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.mk-media-image .lcjomzwbohoelkxsnuqjiaccdbdfiazy
display block display block
cursor zoom-in cursor zoom-in
overflow hidden overflow hidden
width 100% width 100%
height 100% height 100%
background-position center background-position center
border-radius 4px
&:not(:hover) &:not(:hover)
background-size cover background-size cover
.ldwbgwstjsdgcjruamauqdrffetqudry
display flex
justify-content center
align-items center
background #111
color #fff
> div
display table-cell
text-align center
font-size 12px
> b
display block
</style> </style>
@@ -1,12 +1,19 @@
<template> <template>
<video class="mk-media-video" <div class="uofhebxjdgksfmltszlxurtjnjjsvioh" v-if="video.isSensitive && hide" @click="hide = false">
<div>
<b>%fa:exclamation-triangle% %i18n:@sensitive%</b>
<span>%i18n:@click-to-show%</span>
</div>
</div>
<div class="vwxdhznewyashiknzolsoihtlpicqepe" v-else>
<video class="video"
:src="video.url" :src="video.url"
:title="video.name" :title="video.name"
controls controls
@dblclick.prevent="onClick" @dblclick.prevent="onClick"
ref="video" ref="video"
v-if="inlinePlayable" /> v-if="inlinePlayable" />
<a class="mk-media-video-thumbnail" <a class="thumbnail"
:href="video.url" :href="video.url"
:style="imageStyle" :style="imageStyle"
@click.prevent="onClick" @click.prevent="onClick"
@@ -14,6 +21,7 @@
v-else> v-else>
%fa:R play-circle% %fa:R play-circle%
</a> </a>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -21,11 +29,23 @@ import Vue from 'vue';
import MkMediaVideoDialog from './media-video-dialog.vue'; import MkMediaVideoDialog from './media-video-dialog.vue';
export default Vue.extend({ export default Vue.extend({
props: ['video', 'inlinePlayable'], props: {
video: {
type: Object,
required: true
},
inlinePlayable: {
default: false
},
hide: {
type: Boolean,
default: true
}
},
computed: { computed: {
imageStyle(): any { imageStyle(): any {
return { return {
'background-image': `url(${this.video.url}?thumbnail&size=512)` 'background-image': `url(${this.video.url})`
}; };
} }
}, },
@@ -47,22 +67,39 @@ export default Vue.extend({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.mk-media-video .vwxdhznewyashiknzolsoihtlpicqepe
display block .video
width 100% display block
height 100% width 100%
border-radius 4px height 100%
border-radius 4px
.mk-media-video-thumbnail .thumbnail
display flex
justify-content center
align-items center
font-size 3.5em
cursor zoom-in
overflow hidden
background-position center
background-size cover
width 100%
height 100%
.uofhebxjdgksfmltszlxurtjnjjsvioh
display flex display flex
justify-content center justify-content center
align-items center align-items center
font-size 3.5em background #111
color #fff
> div
display table-cell
text-align center
font-size 12px
> b
display block
cursor zoom-in
overflow hidden
background-position center
background-size cover
width 100%
height 100%
</style> </style>
@@ -8,7 +8,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import { url } from '../../../config'; import { url } from '../../../config';
import getAcct from '../../../../../acct/render'; import getAcct from '../../../../../misc/acct/render';
export default Vue.extend({ export default Vue.extend({
props: ['user'], props: ['user'],

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