Compare commits

...

787 Commits

Author SHA1 Message Date
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 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
syuilo 328dc80324 4.7.1 2018-06-23 12:09:58 +09:00
syuilo 24d8617f81 Fix bug 2018-06-23 12:09:09 +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
syuilo 40235463bc Fix 2018-06-23 11:30:18 +09: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
syuilo 72eedd2ff9 Merge pull request #1764 from syuilo/greenkeeper/ratelimiter-3.1.0
Update ratelimiter to the latest version 🚀
2018-06-22 23:06:04 +09:00
greenkeeper[bot] a7e9d5a60b fix(package): update ratelimiter to version 3.1.0 2018-06-22 13:55:39 +00:00
syuilo c3d081b700 Merge pull request #1763 from tamaina/better-note-header
change flex-shrink of .username to 2147483647
2018-06-22 21:00:19 +09:00
tamaina 57f62c919c change flex-shrink of .username to 2147483647 2018-06-22 20:55:19 +09:00
syuilo 19bdd4fa2a 4.7.0 2018-06-22 18:51:41 +09:00
syuilo 9d8391583f ✌️ 2018-06-22 18:47:23 +09:00
syuilo 6037b0acc5 非ログイン時のトップにトレンドを表示するように 2018-06-22 18:32:21 +09:00
syuilo 09c5efc161 ✌️ 2018-06-22 18:03:08 +09:00
syuilo 16c2aefe7b Clean up: Remove the unused file 2018-06-22 17:55:58 +09:00
syuilo 06cfa207fc ✌️ 2018-06-22 17:51:36 +09:00
syuilo 0be8bbc19f Update README.md 2018-06-22 17:49:21 +09:00
syuilo bad85375de Merge pull request #1760 from syuilo/greenkeeper/@types/koa-router-7.0.30
Update @types/koa-router to the latest version 🚀
2018-06-22 17:48:41 +09:00
syuilo 6c11a7a6c4 Merge pull request #1762 from tamaina/Improve-UI
trifling style changes
2018-06-22 13:39:19 +09:00
tamaina 6f38c6f339 $theme-color 2018-06-22 13:37:46 +09:00
tamaina fb1d727db9 trifling style changes
投稿のタグのマージンと色の最適化
ユーザーページの修正(幅が伸びる、profileの色)
ウェルカムページの修正(ダークモード時)
2018-06-22 13:20:27 +09:00
syuilo d98d286dc4 Merge pull request #1761 from tamaina/better-note-header
Fix #1759 (Improve note-header)
2018-06-22 12:26:37 +09:00
tamaina 1be279dbaa revert ✌️ d6ef92 2018-06-22 11:15:11 +09:00
greenkeeper[bot] 90e6feeb4c fix(package): update @types/koa-router to version 7.0.30 2018-06-22 01:51:01 +00:00
syuilo f1f9f235c7 Update README.md 2018-06-22 02:13:16 +09:00
syuilo eb3f938281 Merge pull request #1759 from tamaina/better-note-header
Improve note-header
2018-06-21 21:21:14 +09:00
tamaina d6ef923134 ✌️ 2018-06-21 21:19:54 +09:00
tamaina 5b01577810 Improve note-header 2018-06-21 19:59:33 +09:00
syuilo 2a111d472a Merge pull request #1758 from syuilo/l10n_master
New Crowdin translations
2018-06-21 14:49:17 +09:00
syuilo a8809e89b9 New translations ja.yml (English) 2018-06-21 14:10:53 +09:00
syuilo 1ab9a49d01 New translations ja.yml (English) 2018-06-21 14:00:53 +09:00
syuilo f92c116564 4.6.0 2018-06-21 11:39:54 +09:00
syuilo b54539b647 Fix bug 2018-06-21 11:37:18 +09:00
syuilo 87fc6522fb Improve ServiceWorker notification 2018-06-21 11:35:28 +09:00
syuilo b0408d1d6e Merge pull request #1757 from syuilo/greenkeeper/@types/webpack-4.4.2
Update @types/webpack to the latest version 🚀
2018-06-21 09:53:45 +09:00
greenkeeper[bot] 39779ca8d5 fix(package): update @types/webpack to version 4.4.2 2018-06-21 00:50:02 +00:00
syuilo 8c34f7559d Merge pull request #1756 from syuilo/greenkeeper/@types/mocha-5.2.3
Update @types/mocha to the latest version 🚀
2018-06-21 09:42:39 +09:00
syuilo 740c7c2476 Merge pull request #1754 from syuilo/greenkeeper/@types/koa-bodyparser-5.0.0
Update @types/koa-bodyparser to the latest version 🚀
2018-06-21 09:39:22 +09:00
syuilo abd43dd471 Merge pull request #1755 from syuilo/greenkeeper/@types/koa-router-7.0.29
Update @types/koa-router to the latest version 🚀
2018-06-21 09:39:11 +09:00
greenkeeper[bot] c24b5410bc fix(package): update @types/mocha to version 5.2.3 2018-06-21 00:38:08 +00:00
greenkeeper[bot] cde7d0f463 fix(package): update @types/koa-router to version 7.0.29 2018-06-21 00:29:15 +00:00
greenkeeper[bot] 54548c3ed0 fix(package): update @types/koa-bodyparser to version 5.0.0 2018-06-21 00:21:18 +00:00
syuilo 221d1edf0f Merge pull request #1753 from syuilo/l10n_master
New Crowdin translations
2018-06-21 08:54:59 +09:00
syuilo 02e75f9539 Merge pull request #1752 from syuilo/greenkeeper/web-push-3.3.2
Update web-push to the latest version 🚀
2018-06-21 08:54:46 +09:00
syuilo 6bed2ff106 Merge pull request #1751 from syuilo/greenkeeper/ts-node-6.1.2
Update ts-node to the latest version 🚀
2018-06-21 08:54:36 +09:00
syuilo f3e1e4d1da New translations ja.yml (Polish) 2018-06-21 07:21:29 +09:00
greenkeeper[bot] 370f6384d9 fix(package): update web-push to version 3.3.2 2018-06-20 21:58:40 +00:00
greenkeeper[bot] 0105587d04 fix(package): update ts-node to version 6.1.2 2018-06-20 20:49:11 +00:00
syuilo e327970ab9 Merge pull request #1750 from syuilo/l10n_master
New Crowdin translations
2018-06-21 02:26:14 +09:00
syuilo 9e247f39ff New translations ja.yml (English) 2018-06-21 02:20:19 +09:00
syuilo 09f3a10b46 4.5.0 2018-06-21 02:14:26 +09:00
syuilo c3679a84e5 ✌️ 2018-06-21 02:12:20 +09:00
syuilo 75f8d5e7d9 ✌️ 2018-06-21 02:03:25 +09:00
syuilo 6ba4fa50b9 New translations ja.yml (Portuguese) 2018-06-21 02:01:46 +09:00
syuilo f5e130f2a6 New translations ja.yml (Korean) 2018-06-21 02:01:44 +09:00
syuilo cd5dcd87b0 New translations ja.yml (Polish) 2018-06-21 02:01:41 +09:00
syuilo 54f319af0e New translations ja.yml (Chinese Simplified) 2018-06-21 02:01:38 +09:00
syuilo 96949059cf New translations ja.yml (Italian) 2018-06-21 02:01:36 +09:00
syuilo 763368db99 New translations ja.yml (Russian) 2018-06-21 02:01:34 +09:00
syuilo f622ea654f New translations ja.yml (English) 2018-06-21 02:01:32 +09:00
syuilo 70c4e6c287 New translations ja.yml (Spanish) 2018-06-21 02:01:30 +09:00
syuilo d7692e875a New translations ja.yml (German) 2018-06-21 02:01:28 +09:00
syuilo 0a94010668 New translations ja.yml (French) 2018-06-21 02:01:26 +09:00
syuilo 50bd1d9a5d 更新ダイアログをHTMLで描画 2018-06-21 01:58:47 +09:00
syuilo d45121a93b New translations ja.yml (Portuguese) 2018-06-21 01:51:30 +09:00
syuilo a55e3fb225 New translations ja.yml (Korean) 2018-06-21 01:51:28 +09:00
syuilo 426b2f5858 New translations ja.yml (Polish) 2018-06-21 01:51:26 +09:00
syuilo 3d10b5e538 New translations ja.yml (Chinese Simplified) 2018-06-21 01:51:24 +09:00
syuilo b639599620 New translations ja.yml (Italian) 2018-06-21 01:51:22 +09:00
syuilo 63c51c6ee0 New translations ja.yml (Russian) 2018-06-21 01:51:19 +09:00
syuilo f39934c274 New translations ja.yml (English) 2018-06-21 01:51:17 +09:00
syuilo adec1643bf New translations ja.yml (Spanish) 2018-06-21 01:51:15 +09:00
syuilo 229ea7d3ab New translations ja.yml (German) 2018-06-21 01:51:13 +09:00
syuilo 03899f042d New translations ja.yml (French) 2018-06-21 01:51:09 +09:00
syuilo 46d7cee639 🎨 2018-06-21 01:46:35 +09:00
syuilo eb0c378138 Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-21 01:22:06 +09:00
syuilo 79d1bf30a4 リモートユーザーのHTMLで表現されたプロフィールをMFMに変換するように 2018-06-21 01:21:57 +09:00
syuilo 5786434f37 Update README.md 2018-06-20 22:40:02 +09:00
syuilo 3633d7ada1 Disable transitions to avoid memory leak 2018-06-20 22:28:08 +09:00
syuilo b95d4aed11 Merge pull request #1749 from syuilo/greenkeeper/initial
Update dependencies to enable Greenkeeper 🌴
2018-06-20 20:28:15 +09:00
syuilo c2f599a33c Merge branch 'master' into greenkeeper/initial 2018-06-20 20:28:02 +09:00
syuilo 89361cfce4 4.4.0 2018-06-20 20:08:36 +09:00
syuilo 278a6c504a ✌️ 2018-06-20 20:04:28 +09:00
syuilo e140ddf7be Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-20 20:02:11 +09:00
syuilo f00ba4e704 Prevent update those packages 2018-06-20 20:02:03 +09:00
greenkeeper[bot] 8128656a9e docs(readme): add Greenkeeper badge 2018-06-20 10:59:57 +00:00
greenkeeper[bot] f2f7a6de6b chore(package): update dependencies 2018-06-20 10:59:54 +00:00
syuilo 8651d81b73 Merge pull request #1748 from syuilo/l10n_master
New Crowdin translations
2018-06-20 19:58:47 +09:00
syuilo 2458255e22 nanka iroiro 2018-06-20 19:55:34 +09:00
syuilo ea12c6e2c0 New translations ja.yml (Polish) 2018-06-20 04:31:22 +09:00
syuilo 2e22bd2ecf Update manifest.json 2018-06-19 19:07:39 +09:00
syuilo 777cb0033e Merge pull request #1745 from syuilo/l10n_master
New Crowdin translations
2018-06-19 08:08:23 +09:00
syuilo 127c126ef5 4.3.1 2018-06-19 08:03:39 +09:00
syuilo 01ff8d171a Fix bug 2018-06-19 08:03:00 +09:00
syuilo 457c23fffa New translations ja.yml (English) 2018-06-19 08:00:54 +09:00
syuilo b07911ec68 Fix 2018-06-19 07:56:26 +09:00
syuilo fb211d59a8 Merge branch 'master' into l10n_master 2018-06-19 07:53:32 +09:00
syuilo 4e586d35a9 New translations ja.yml (Polish) 2018-06-18 20:23:37 +09:00
syuilo 52f2461fe6 New translations ja.yml (Portuguese) 2018-06-18 17:32:21 +09:00
syuilo ac7dab8b6e New translations ja.yml (Korean) 2018-06-18 17:32:19 +09:00
syuilo 5e171c2ad1 New translations ja.yml (Polish) 2018-06-18 17:32:17 +09:00
syuilo b4a139515c New translations ja.yml (Chinese Simplified) 2018-06-18 17:32:15 +09:00
syuilo 30219f6b6f New translations ja.yml (Italian) 2018-06-18 17:32:13 +09:00
syuilo d19e6bdd03 New translations ja.yml (Russian) 2018-06-18 17:32:11 +09:00
syuilo 65ce0a5e54 New translations ja.yml (English) 2018-06-18 17:32:09 +09:00
syuilo c2659d68dc New translations ja.yml (Spanish) 2018-06-18 17:32:07 +09:00
syuilo 773c7ba14b New translations ja.yml (German) 2018-06-18 17:32:05 +09:00
syuilo 93e617f488 New translations ja.yml (French) 2018-06-18 17:32:02 +09:00
syuilo f7959c073f 4.3.0 2018-06-18 17:25:45 +09:00
syuilo 6953970be7 Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-18 17:25:23 +09:00
syuilo 1496fdaf80 nanka 2018-06-18 17:25:20 +09:00
syuilo 0fc034b1ac Merge pull request #1743 from Tosuke/patch-1
Replace "size" to "sizes"
2018-06-18 16:48:49 +09:00
tosuke c3312c918e replace "size" to "sizes"
やらかした
2018-06-18 16:44:42 +09:00
syuilo 5a13964ced Fix bug 2018-06-18 16:34:26 +09:00
syuilo fe07b1cb7f Merge pull request #1742 from Tosuke/patch-1
Fix path
2018-06-18 15:39:40 +09:00
tosuke d805a70508 Fix path 2018-06-18 15:38:58 +09:00
syuilo 0f0009e0db Clean up 2018-06-18 15:12:29 +09:00
syuilo 4c4cb2bb17 ✌️ 2018-06-18 15:05:38 +09:00
syuilo fe319a529f 4.2.0 2018-06-18 14:54:09 +09:00
syuilo 91bea1f6c7 ✌️ 2018-06-18 14:52:36 +09:00
syuilo 01745f7c65 Merge pull request #1706 from syuilo/l10n_master
New Crowdin translations
2018-06-18 14:44:29 +09:00
syuilo 5d3943ffa8 Merge branch 'master' into l10n_master 2018-06-18 14:43:56 +09:00
syuilo e66d7babc5 yatta 2018-06-18 14:28:43 +09:00
syuilo 80e5645a84 wip 2018-06-18 09:54:53 +09:00
syuilo a766faeae9 Merge pull request #1738 from rinsuki/features/ts-noimplicitany-true
[WIP] noImplicitAny: true
2018-06-18 08:42:17 +09:00
syuilo 4d2d226446 New translations ja.yml (Spanish) 2018-06-18 00:40:45 +09:00
syuilo 61e83b10c3 New translations ja.yml (Spanish) 2018-06-18 00:30:44 +09:00
syuilo ed675f0956 New translations ja.yml (French) 2018-06-17 22:10:47 +09:00
syuilo 9cce8ab214 New translations ja.yml (French) 2018-06-17 22:00:55 +09:00
rinsuki daa409cd82 [noImplicitAny: true] src/services/drive 2018-06-17 20:04:19 +09:00
rinsuki 9d65415fdc [noImplicitAny: true] src/services/note 2018-06-17 19:59:02 +09:00
rinsuki 8c40917cc2 [noImplicitAny: true] src/text 2018-06-17 19:55:39 +09:00
rinsuki 871f886702 build:ts success 2018-06-17 19:09:24 +09:00
rinsuki f19075c50a upgrade font-awesome packages 2018-06-17 17:57:50 +09:00
rinsuki 71da205ab7 fix 2018-06-17 17:45:59 +09:00
rinsuki a34cc47a11 tsconfig.json noImplicitAny: true 2018-06-17 17:43:54 +09:00
syuilo cbddaf1d19 Merge pull request #1735 from rinsuki/fix/minor-fix-201806171721
minor fix
2018-06-17 17:21:50 +09:00
rinsuki 1f1ed2da4c minor fix 2018-06-17 17:21:16 +09:00
syuilo 8d81bd0dc0 Merge pull request #1732 from rinsuki/fix/1731
Fix #1731
2018-06-17 17:15:31 +09:00
syuilo 5773a5bfa6 Refactor 2018-06-17 17:15:03 +09:00
rinsuki 7275a48102 Fix #1731 2018-06-17 17:11:05 +09:00
syuilo 8f84dd610c Use ' 2018-06-17 16:55:55 +09:00
syuilo f1f466ed23 Merge pull request #1730 from rinsuki/fix/1729
Fix #1729
2018-06-17 16:51:24 +09:00
syuilo 0ca5237139 Send servicewroker script 2018-06-17 16:47:37 +09:00
rinsuki 20549bfdf0 Fix #1729 2018-06-17 16:45:01 +09:00
syuilo d692bb3c52 Improve user search 2018-06-17 16:40:18 +09:00
syuilo 44cd1e9223 Merge pull request #1728 from rinsuki/fix/1726
fix #1726
2018-06-17 16:02:21 +09:00
rinsuki f0fec654ff fix #1726 2018-06-17 15:58:23 +09:00
syuilo 4e04e5e0c0 Merge pull request #1722 from rinsuki/fix/1700
Fix #1700
2018-06-17 14:30:07 +09:00
rinsuki 4991fb2769 Fix #1700 2018-06-17 14:29:07 +09:00
syuilo 4d90d554f8 Merge pull request #1721 from rinsuki/activitypub/support-cw
maybe Support CW in ActivityPub
2018-06-17 14:12:50 +09:00
rinsuki e5468713ac maybe Support CW in ActivityPub 2018-06-17 14:11:31 +09:00
syuilo 77013f982d Fiox bug 2018-06-17 13:52:52 +09:00
syuilo 0460cdedd7 inputのsuffixがはみ出す問題を修正 2018-06-17 11:42:23 +09:00
syuilo 73f5bf69e8 4.1.0 2018-06-17 11:33:24 +09:00
syuilo 750c0d7df2 Use wildcard 2018-06-17 11:27:20 +09:00
syuilo 2fcebdd281 cors 2018-06-17 11:23:18 +09:00
syuilo e4e65a4cd5 Update CHANGELOG.md 2018-06-17 08:23:46 +09:00
syuilo e010ecb03f New translations ja.yml (Portuguese) 2018-06-17 08:21:10 +09:00
syuilo fc74db668d New translations ja.yml (Korean) 2018-06-17 08:21:08 +09:00
syuilo 1bac3418b4 New translations ja.yml (Polish) 2018-06-17 08:21:06 +09:00
syuilo 53df8c48b7 New translations ja.yml (Chinese Simplified) 2018-06-17 08:21:04 +09:00
syuilo 92702fe47e New translations ja.yml (Italian) 2018-06-17 08:21:02 +09:00
syuilo 017c4c12cd New translations ja.yml (Russian) 2018-06-17 08:21:01 +09:00
syuilo 830d246ba4 New translations ja.yml (English) 2018-06-17 08:20:59 +09:00
syuilo 6b33afa916 New translations ja.yml (Spanish) 2018-06-17 08:20:57 +09:00
syuilo 69a3efd534 Update CHANGELOG.md 2018-06-17 08:20:56 +09:00
syuilo 2d0adb8f4c New translations ja.yml (German) 2018-06-17 08:20:55 +09:00
syuilo da9d8cb138 New translations ja.yml (French) 2018-06-17 08:20:53 +09:00
syuilo 2acaca8582 Update CHANGELOG.md 2018-06-17 08:20:22 +09:00
syuilo 11cf82c6a4 4.0.0 2018-06-17 08:15:57 +09:00
syuilo 1ef66c962a reversi 💮 💯 2018-06-17 08:10:54 +09:00
syuilo 03f20599ba Add missing semicolon 2018-06-17 07:39:51 +09:00
syuilo d150b10b3e Update default home widgets 2018-06-17 06:57:50 +09:00
syuilo c4f323aae3 Merge pull request #1719 from Tosuke/master
Improve web app manifest(#1716)
2018-06-16 19:53:08 +09:00
Tosuke 8297f8ccd0 Merge branch 'master' of github.com:syuilo/misskey 2018-06-16 19:46:51 +09:00
Tosuke f336241576 improve web app manifest 2018-06-16 19:45:49 +09:00
syuilo f6d9a7e7c3 3.1.1 2018-06-16 19:45:47 +09:00
syuilo 80d1ee7543 Fix bug 2018-06-16 19:45:29 +09:00
syuilo e55a254353 3.1.0 2018-06-16 18:43:25 +09:00
syuilo 555a0f276c MisskeyShare 2018-06-16 18:42:49 +09:00
syuilo 792632d726 3.0.1 2018-06-16 15:23:44 +09:00
syuilo 9cac293efc #1708 2018-06-16 15:23:03 +09:00
syuilo cd8bfca29c npm install --only=dev するのが既存のドキュメントと互換性が無いため戻す 2018-06-16 13:10:17 +09:00
syuilo b5b437b878 ✌️ 2018-06-16 12:43:58 +09:00
syuilo cc2947063a add lock file 2018-06-16 12:42:59 +09:00
syuilo 2864a9027f save-exact=true 2018-06-16 12:02:38 +09:00
syuilo e11f547308 #1715 2018-06-16 10:40:53 +09:00
syuilo cdce7aa5e2 New translations ja.yml (Spanish) 2018-06-16 09:51:05 +09:00
syuilo 82cea185b2 New translations ja.yml (Spanish) 2018-06-16 09:30:38 +09:00
syuilo f92a4bb195 New translations ja.yml (Spanish) 2018-06-16 09:20:56 +09:00
syuilo 9f4f88df9c New translations ja.yml (Spanish) 2018-06-16 09:10:48 +09:00
syuilo e69803cbd1 New translations ja.yml (Spanish) 2018-06-16 09:00:56 +09:00
syuilo f164661ef2 2.42.0 2018-06-16 07:40:39 +09:00
syuilo c9d993b838 ✌️ 2018-06-16 07:40:07 +09:00
syuilo 65f35dc9f4 ✌️ 2018-06-16 07:31:35 +09:00
syuilo b600d462c1 ✌️ 2018-06-16 07:13:45 +09:00
syuilo fa5a82c9ab ✌️ 2018-06-16 07:06:58 +09:00
syuilo a9885be09e New translations ja.yml (Spanish) 2018-06-16 05:40:57 +09:00
syuilo 7b011f4a91 New translations ja.yml (Spanish) 2018-06-16 05:30:45 +09:00
syuilo 41c404abe6 New translations ja.yml (Spanish) 2018-06-16 05:20:43 +09:00
syuilo 2089a761cf New translations ja.yml (Spanish) 2018-06-16 05:00:48 +09:00
syuilo 0ee2df010d New translations ja.yml (Spanish) 2018-06-16 04:50:43 +09:00
syuilo 466844c016 New translations ja.yml (Spanish) 2018-06-16 04:40:58 +09:00
syuilo bbf9a08649 New translations ja.yml (Polish) 2018-06-15 20:11:35 +09:00
syuilo c985c66652 New translations ja.yml (Portuguese) 2018-06-15 20:02:34 +09:00
syuilo f9dc96320e New translations ja.yml (Korean) 2018-06-15 20:02:32 +09:00
syuilo 42552789fe New translations ja.yml (Polish) 2018-06-15 20:02:30 +09:00
syuilo 1a2ffeb0b5 New translations ja.yml (Chinese Simplified) 2018-06-15 20:02:28 +09:00
syuilo 4f75493249 New translations ja.yml (Italian) 2018-06-15 20:02:25 +09:00
syuilo 42193695fb New translations ja.yml (Russian) 2018-06-15 20:02:23 +09:00
syuilo 02af0de21e New translations ja.yml (English) 2018-06-15 20:02:21 +09:00
syuilo 5f8e10e524 New translations ja.yml (Spanish) 2018-06-15 20:02:19 +09:00
syuilo cee93d746c New translations ja.yml (German) 2018-06-15 20:02:17 +09:00
syuilo 08704a383f New translations ja.yml (French) 2018-06-15 20:02:14 +09:00
syuilo 7c596be638 2.41.1 2018-06-15 19:58:15 +09:00
syuilo 07265f594b ✌️ 2018-06-15 19:58:04 +09:00
syuilo 392cb1ba89 2.41.0 2018-06-15 19:57:13 +09:00
syuilo e6f33e997f 🎨 2018-06-15 19:56:18 +09:00
syuilo a44387f250 ✌️ 2018-06-15 13:58:09 +09:00
syuilo b1b1b7592b ✌️ 2018-06-15 13:08:56 +09:00
syuilo ca668898f4 2.40.1 2018-06-15 09:57:06 +09:00
syuilo fcd437c89f Fix bug 2018-06-15 09:56:59 +09:00
syuilo 7f7d7edc7f 2.40.0 2018-06-15 09:53:53 +09:00
syuilo bd827f946a ドライブのファイルの削除を実装 2018-06-15 09:53:30 +09:00
syuilo ad8aa1c179 Fix 2018-06-15 09:33:25 +09:00
syuilo 3ebaf83ce0 2.39.0 2018-06-15 08:00:14 +09:00
syuilo 39b1978ff3 Merge pull request #1713 from syuilo/without-vue-material
Without vue material
2018-06-15 07:58:58 +09:00
syuilo bddff17e5e wip 2018-06-15 07:58:27 +09:00
syuilo 0ac9120064 wip 2018-06-15 07:56:56 +09:00
syuilo d90f75425f wip 2018-06-14 21:38:39 +09:00
syuilo dec7d537dc wip 2018-06-14 20:23:50 +09:00
syuilo 11e95ea092 wip 2018-06-14 18:57:54 +09:00
syuilo c5e9b69eb3 wip 2018-06-14 18:53:02 +09:00
syuilo 120c11b181 wip 2018-06-14 16:48:49 +09:00
syuilo a1ae832129 wip 2018-06-14 14:52:37 +09:00
syuilo 3a4833818f wip 2018-06-14 09:51:55 +09:00
syuilo 8814fc9c9c wip 2018-06-14 07:22:50 +09:00
syuilo e6e02ece89 wip 2018-06-14 06:29:01 +09:00
syuilo 9059c149dd 2.38.3 2018-06-13 05:40:27 +09:00
syuilo 7d8e70b2ac Fix bug 2018-06-13 05:40:12 +09:00
syuilo 89105f5641 2.38.2 2018-06-13 05:25:27 +09:00
syuilo 1813d17b4c Fix bug 2018-06-13 05:24:44 +09:00
syuilo ce27b36fd0 Fix bug 2018-06-13 05:21:55 +09:00
syuilo e635a87628 2.38.1 2018-06-13 05:16:53 +09:00
syuilo 80c52433cc Fix bug 2018-06-13 05:15:26 +09:00
syuilo 1472f0b141 Fix #1712 2018-06-13 05:11:55 +09:00
syuilo 4d914f5c0a 2.38.0 2018-06-12 19:07:36 +09:00
syuilo 0318f7344f Fix bug 2018-06-12 19:05:40 +09:00
syuilo 413fbb3d0c モバイルでもハッシュタグを検索できるように 2018-06-12 19:03:57 +09:00
syuilo 8bc47baf4f #1710 2018-06-12 18:54:36 +09:00
syuilo e3f6d42a47 Fix bug 2018-06-12 11:38:44 +09:00
syuilo 8230935fd3 🎨 2018-06-12 11:27:35 +09:00
syuilo f968d05ea0 2.37.7 2018-06-12 09:10:52 +09:00
syuilo d6e5dc2167 Fix bugs 2018-06-12 09:10:34 +09:00
syuilo 460147fea2 2.37.6 2018-06-12 08:59:36 +09:00
syuilo cea44834bb Improve usability 2018-06-12 08:58:50 +09:00
syuilo 1af50fd7b8 冗長なハッシュタグの表示を無くした 2018-06-12 08:43:48 +09:00
syuilo b18013025f 🎨 2018-06-12 08:09:27 +09:00
syuilo acdf7c244f New translations ja.yml (Polish) 2018-06-12 03:15:56 +09:00
syuilo 399eb60809 2.37.5 2018-06-12 02:47:17 +09:00
syuilo ed67e3506b ✌️ 2018-06-12 02:46:54 +09:00
syuilo a72b6745aa New translations ja.yml (Portuguese) 2018-06-12 02:33:16 +09:00
syuilo 24086e9023 New translations ja.yml (Korean) 2018-06-12 02:33:14 +09:00
syuilo c3d4b5ad38 New translations ja.yml (Polish) 2018-06-12 02:33:12 +09:00
syuilo cc618a83e5 New translations ja.yml (Chinese Simplified) 2018-06-12 02:33:08 +09:00
syuilo 9eaa0b27db New translations ja.yml (Italian) 2018-06-12 02:33:06 +09:00
syuilo a8835a679e New translations ja.yml (Russian) 2018-06-12 02:33:00 +09:00
syuilo 656bc6df84 New translations ja.yml (English) 2018-06-12 02:32:57 +09:00
syuilo 019aaf7d82 New translations ja.yml (Spanish) 2018-06-12 02:32:55 +09:00
syuilo 76bafbf398 New translations ja.yml (German) 2018-06-12 02:32:52 +09:00
syuilo 030bcb99b1 New translations ja.yml (French) 2018-06-12 02:32:47 +09:00
syuilo d8ff37fc45 ✌️ 2018-06-12 02:28:28 +09:00
syuilo 2fcc3bb1ea 2.37.4 2018-06-12 02:19:00 +09:00
syuilo 2e680c3d1e Fix bug 2018-06-12 02:18:29 +09:00
syuilo af0a0ef41b Merge branch 'master' of https://github.com/syuilo/misskey 2018-06-12 02:03:26 +09:00
syuilo bbfccb0bbf 🎨 2018-06-12 02:03:18 +09:00
syuilo c89eb5d69f Merge pull request #1705 from syuilo/l10n_master
New Crowdin translations
2018-06-12 02:03:06 +09:00
syuilo ebde84214e Improve hashtag trend detection 2018-06-12 02:00:05 +09:00
syuilo 03fbae7b6d 変数調整 2018-06-12 01:51:51 +09:00
syuilo f90e9596d4 Fix bug 2018-06-12 01:48:29 +09:00
syuilo 944f9524e2 Fix bug 2018-06-12 01:45:58 +09:00
syuilo c61050244e 変数調整 2018-06-12 01:43:56 +09:00
syuilo 90337adbbc Improve hashtag trend detection 2018-06-12 01:41:17 +09:00
syuilo 7b67e41c5b New translations ja.yml (Polish) 2018-06-11 19:22:16 +09:00
syuilo 91db24fcfc 2.37.3 2018-06-11 14:16:46 +09:00
syuilo bb53db905f ✌️ 2018-06-11 14:16:21 +09:00
syuilo 0e9a1efe46 Merge pull request #1704 from syuilo/l10n_master
New Crowdin translations
2018-06-11 14:11:33 +09:00
syuilo 289cd3e200 New translations ja.yml (English) 2018-06-11 14:10:47 +09:00
syuilo e0f847e539 ✌️ 2018-06-11 14:06:23 +09:00
syuilo c2842b486e New translations ja.yml (Portuguese) 2018-06-11 13:51:15 +09:00
syuilo 7235ade42f New translations ja.yml (Korean) 2018-06-11 13:51:13 +09:00
syuilo 850be2df1d New translations ja.yml (Polish) 2018-06-11 13:51:11 +09:00
syuilo d504501440 New translations ja.yml (Chinese Simplified) 2018-06-11 13:51:09 +09:00
syuilo 208392f12c New translations ja.yml (Italian) 2018-06-11 13:51:07 +09:00
syuilo 0fe036c640 New translations ja.yml (Russian) 2018-06-11 13:51:05 +09:00
syuilo a40c41f0b0 New translations ja.yml (English) 2018-06-11 13:51:03 +09:00
syuilo 4affa5b710 New translations ja.yml (Spanish) 2018-06-11 13:51:01 +09:00
syuilo 4eb574d991 New translations ja.yml (German) 2018-06-11 13:50:59 +09:00
syuilo 2c1577ea24 New translations ja.yml (French) 2018-06-11 13:50:56 +09:00
syuilo b87e7e50b6 Clean up 2018-06-11 13:49:53 +09:00
syuilo 36215d50bd 2.37.2 2018-06-11 13:48:07 +09:00
syuilo 5ff1245d0c Merge pull request #1703 from syuilo/l10n_master
New Crowdin translations
2018-06-11 13:47:42 +09:00
syuilo ebd189fb27 🍕 2018-06-11 13:46:23 +09:00
syuilo 6f724827bd ✌️ 2018-06-11 13:45:32 +09:00
syuilo b6a0982012 New translations ja.yml (English) 2018-06-11 13:00:50 +09:00
syuilo c3e375e8a5 ✌️ 2018-06-11 12:52:47 +09:00
syuilo 302409fd83 New translations ja.yml (Portuguese) 2018-06-11 11:51:04 +09:00
syuilo a2046461c1 New translations ja.yml (Korean) 2018-06-11 11:51:03 +09:00
syuilo 6660c34120 New translations ja.yml (Polish) 2018-06-11 11:51:01 +09:00
syuilo b88ccf0ddd New translations ja.yml (Chinese Simplified) 2018-06-11 11:50:58 +09:00
syuilo b898bbf94c New translations ja.yml (Italian) 2018-06-11 11:50:57 +09:00
syuilo 787e89eb95 New translations ja.yml (Russian) 2018-06-11 11:50:55 +09:00
syuilo 1022c2c438 New translations ja.yml (English) 2018-06-11 11:50:53 +09:00
syuilo ba21c62ed4 New translations ja.yml (Spanish) 2018-06-11 11:50:51 +09:00
syuilo bfe66c919b New translations ja.yml (German) 2018-06-11 11:50:49 +09:00
syuilo 3dacf7f661 New translations ja.yml (French) 2018-06-11 11:50:47 +09:00
syuilo c0a3ae2612 2.37.1 2018-06-11 11:45:27 +09:00
syuilo da612ef789 ✌️ 2018-06-11 11:45:10 +09:00
syuilo df9cb7cf6e 2.37.0 2018-06-11 11:44:26 +09:00
syuilo 9c1a26110e Merge pull request #1697 from syuilo/l10n_master
New Crowdin translations
2018-06-11 11:43:58 +09:00
syuilo 0883d18a6c New translations ja.yml (English) 2018-06-11 11:41:56 +09:00
syuilo c7246c61a5 New translations ja.yml (Portuguese) 2018-06-11 11:31:01 +09:00
syuilo c5a1431fc0 New translations ja.yml (Korean) 2018-06-11 11:30:59 +09:00
syuilo f0118a0dff New translations ja.yml (Polish) 2018-06-11 11:30:57 +09:00
syuilo cffe96e46f New translations ja.yml (Chinese Simplified) 2018-06-11 11:30:55 +09:00
syuilo a9256578f0 New translations ja.yml (Italian) 2018-06-11 11:30:53 +09:00
syuilo 05ed202904 New translations ja.yml (Russian) 2018-06-11 11:30:51 +09:00
syuilo 963b63389a New translations ja.yml (English) 2018-06-11 11:30:50 +09:00
syuilo e04706dc74 New translations ja.yml (Spanish) 2018-06-11 11:30:47 +09:00
syuilo 04d4ce5ce1 New translations ja.yml (German) 2018-06-11 11:30:46 +09:00
syuilo 24cf3730fa New translations ja.yml (French) 2018-06-11 11:30:44 +09:00
syuilo 0700be86e2 Merge pull request #1702 from syuilo/hashtags-stats
Hashtags stats
2018-06-11 11:27:55 +09:00
syuilo 7cca509eb3 ✌️ 2018-06-11 11:27:21 +09:00
syuilo 7d7193cb63 ✌️ 2018-06-11 11:24:29 +09:00
syuilo 1cf10d05ff Merge pull request #1698 from syuilo/cleanup-dependencies
🆙 move some packages to devDependencies that non required by server
2018-06-11 09:40:04 +09:00
syuilo 2ec25a7729 wip 2018-06-11 09:11:32 +09:00
syuilo 2a9065a61e New translations ja.yml (French) 2018-06-11 08:20:56 +09:00
otofune 7518e30dcf 🆙 move some packages to devDependencies that non required by server
presumed by:
- move-to-devdependencies.fish
```fish
set targets (ls src | grep -v client | xargs -I'%' echo "src/%")
alias from_import="git grep 'import ' $targets | grep -v 'from \'\.' | grep -v 'from \"\.' | cut -d: -f2 | cut -d\; -f1 | rev | cut -d' ' -f1 | rev | cut -d\' -f2 | sort | uniq | grep -v '^readline\$' | grep -v '^zlib\$' | grep -v '^os\$' | grep -v '^http\$' | grep -v '^fs\$' | grep -v '^events\$' | grep -v '^crypto\$' | grep -v '^child_process\$' | grep -v '^cluster\$'`"
alias from_require="git grep 'require(' $targets | grep -v '(\'\.' | cut -d= -f2 | grep -v '__dirname' | grep require | cut -d' ' -f2 | cut -d')' -f1 | cut -d'(' -f2 | cut -d'\'' -f2 | sort | uniq | grep -v '^readline\$' | grep -v '^zlib\$' | grep -v '^os\$' | grep -v '^http\$' | grep -v '^fs\$' | grep -v '^events\$' | grep -v '^crypto\$' | grep -v '^child_process\$' | grep -v '^cluster\$'"
from_import | xargs npm uninstall --save-dev
from_require | xargs npm uninstall --save-dev
from_import | xargs npm install --save
from_require | xargs npm install --save
git show HEAD:require | node revert-pinning-dependencies.js
```
- revert-pinning-dependencies.js
```js
const readFromStdin = () => new Promise((resolve, reject) => {
  const chunks = []

  process.stdin.setEncoding('utf8')

  process.stdin.on('readable', () => {
    const chunk = process.stdin.read()
    if (chunk == null) return
    chunks.push(chunk)
  })

  process.stdin.on('end', () => {
    return resolve(chunks.join('\n'))
  })
})

async function main () {
  const fs = require('fs')

  const raw = await readFromStdin()
  const head = JSON.parse(raw)
  const now = JSON.parse(fs.readFileSync('package.json'))

  Object.keys(now.dependencies).forEach(key => {
    now.dependencies[key] = head.dependencies[key]
  })

  fs.writeFileSync('package.json', JSON.stringify(now,null,'\t'))
}

main().catch(console.error)
```
2018-06-11 08:08:52 +09:00
syuilo dc3c80e3ce wip 2018-06-11 06:48:25 +09:00
syuilo a25f61f6be New translations ja.yml (Polish) 2018-06-11 05:41:06 +09:00
syuilo e70fb71a04 Update example.yml 2018-06-11 02:18:00 +09:00
syuilo f499630c2b 2.36.1 2018-06-11 01:28:45 +09:00
syuilo 43319a8588 Merge pull request #1694 from syuilo/l10n_master
New Crowdin translations
2018-06-11 01:21:52 +09:00
syuilo d62b943c5d New translations ja.yml (English) 2018-06-11 01:21:03 +09:00
syuilo 8baddf2ea3 Fix #1695 2018-06-11 01:14:29 +09:00
syuilo 600482660b タグは最大100文字までにした 2018-06-11 01:12:37 +09:00
syuilo 72ab5c143e Revert "✌️"
This reverts commit 96ab0e7b4c.
2018-06-11 01:07:34 +09:00
syuilo 96ab0e7b4c ✌️ 2018-06-11 00:27:16 +09:00
syuilo b60903e2b4 🍕 2018-06-11 00:24:03 +09:00
syuilo b4f4d3f267 New translations ja.yml (Portuguese) 2018-06-10 12:51:00 +09:00
syuilo 6e017c86e8 New translations ja.yml (Korean) 2018-06-10 12:50:58 +09:00
syuilo afcfc2dca5 New translations ja.yml (Polish) 2018-06-10 12:50:57 +09:00
syuilo 59e22a12a9 New translations ja.yml (Chinese Simplified) 2018-06-10 12:50:55 +09:00
syuilo b740ac3e01 New translations ja.yml (Italian) 2018-06-10 12:50:53 +09:00
syuilo 9719f0df03 New translations ja.yml (Russian) 2018-06-10 12:50:51 +09:00
syuilo d4be599538 New translations ja.yml (English) 2018-06-10 12:50:49 +09:00
syuilo f88195c90a New translations ja.yml (Spanish) 2018-06-10 12:50:47 +09:00
syuilo 3b33f7e752 New translations ja.yml (German) 2018-06-10 12:50:46 +09:00
syuilo 67a37294f7 New translations ja.yml (French) 2018-06-10 12:50:43 +09:00
syuilo fd88955696 ✌️ 2018-06-10 12:36:48 +09:00
syuilo 9d248dbb5a 🎨 2018-06-10 12:29:19 +09:00
syuilo 20ec4104c6 2.36.0 2018-06-10 12:22:48 +09:00
syuilo 6c232d116d Merge pull request #1692 from syuilo/l10n_master
New Crowdin translations
2018-06-10 12:22:28 +09:00
syuilo 2ef78bcd40 🍕 2018-06-10 12:21:44 +09:00
syuilo 94ce658ab9 ハッシュタグ検索を実装 2018-06-10 12:19:19 +09:00
syuilo d8cf4cd341 New translations ja.yml (Polish) 2018-06-10 10:30:48 +09:00
syuilo 0360337df9 2.35.3 2018-06-10 08:42:29 +09:00
syuilo 119d38ea08 Fix bug 2018-06-10 08:41:57 +09:00
syuilo bee77afb7f Fix bug 2018-06-10 08:34:46 +09:00
syuilo 16d4b16872 Revert "✌️"
This reverts commit 951b2346ab.
2018-06-10 08:21:48 +09:00
syuilo 951b2346ab ✌️ 2018-06-10 08:15:05 +09:00
syuilo b29ff0e94b ✌️ 2018-06-10 08:03:02 +09:00
syuilo c8dd8341ca 2.35.2 2018-06-10 03:58:12 +09:00
syuilo 8bcf44bc16 ✌️ 2018-06-10 03:55:51 +09:00
syuilo 50b37a8420 oops 2018-06-10 03:48:38 +09:00
syuilo 22df795733 Fix bug 2018-06-10 03:47:09 +09:00
syuilo 7e3bf06db1 2.35.1 2018-06-10 03:31:42 +09:00
syuilo 6630ca595c 🎨 2018-06-10 03:31:13 +09:00
syuilo 5d01e19ce7 Fix bug 2018-06-10 03:27:10 +09:00
syuilo 56df89f8dd 2.35.0 2018-06-10 01:22:44 +09:00
syuilo 13de984ce3 Merge pull request #1688 from syuilo/l10n_master
New Crowdin translations
2018-06-10 01:21:55 +09:00
syuilo 15fc0e30d7 New translations ja.yml (English) 2018-06-10 01:21:19 +09:00
syuilo 4289c11185 New translations ja.yml (German) 2018-06-10 01:21:17 +09:00
syuilo a3f564e702 New translations ja.yml (Portuguese) 2018-06-10 01:11:33 +09:00
syuilo f6734a0c98 New translations ja.yml (Korean) 2018-06-10 01:11:32 +09:00
syuilo 72fb416239 New translations ja.yml (Polish) 2018-06-10 01:11:30 +09:00
syuilo 833f5b09d2 New translations ja.yml (Chinese Simplified) 2018-06-10 01:11:28 +09:00
syuilo b21b21f30a New translations ja.yml (Italian) 2018-06-10 01:11:26 +09:00
syuilo 2f77a3f6d2 New translations ja.yml (Russian) 2018-06-10 01:11:25 +09:00
syuilo 0bda655452 New translations ja.yml (English) 2018-06-10 01:11:23 +09:00
syuilo 4f80bb7031 New translations ja.yml (Spanish) 2018-06-10 01:11:21 +09:00
syuilo fbe7b3cc9b New translations ja.yml (German) 2018-06-10 01:11:18 +09:00
syuilo 8402f0abd7 New translations ja.yml (French) 2018-06-10 01:11:16 +09:00
syuilo 149b2ee5a7 Update sentences 2018-06-10 01:04:31 +09:00
syuilo f9d5af0600 MissketDeck: Implement media view tl 2018-06-10 01:01:28 +09:00
syuilo 72c4ccaee8 Clean up dependencies 2018-06-10 00:41:57 +09:00
syuilo 92999dcaf2 Update gitignore 2018-06-10 00:39:30 +09:00
syuilo 5bbd318518 Update message 2018-06-09 23:52:11 +09:00
syuilo 8807894890 Fix bug 2018-06-09 22:25:15 +09:00
syuilo 63b7820717 New translations ja.yml (German) 2018-06-09 20:41:00 +09:00
syuilo 9e7e2d6977 New translations ja.yml (German) 2018-06-09 20:31:00 +09:00
syuilo 89e4c280ae New translations ja.yml (German) 2018-06-09 20:20:56 +09:00
syuilo b6c9f29be4 New translations ja.yml (German) 2018-06-09 20:11:27 +09:00
syuilo 74cbbc84ed New translations ja.yml (English) 2018-06-09 20:00:53 +09:00
syuilo ead4197670 New translations ja.yml (German) 2018-06-09 20:00:51 +09:00
syuilo 4fc69ccdc8 New translations ja.yml (German) 2018-06-09 19:51:04 +09:00
syuilo f556cb44b9 New translations ja.yml (German) 2018-06-09 19:40:57 +09:00
syuilo 45b540d375 New translations ja.yml (Polish) 2018-06-09 12:00:47 +09:00
syuilo e2503cdb47 New translations ja.yml (English) 2018-06-09 06:31:45 +09:00
440 changed files with 25390 additions and 6497 deletions
+18 -2
View File
@@ -1,3 +1,9 @@
# インスタンス名
name:
# インスタンスの紹介
description:
# サーバーのメンテナ情報 # サーバーのメンテナ情報
maintainer: maintainer:
# メンテナの名前 # メンテナの名前
@@ -6,13 +12,19 @@ maintainer:
# メンテナの連絡先(URLかmailto形式のURL) # メンテナの連絡先(URLかmailto形式のURL)
url: url:
# レポジトリのURL
repository_url:
# フィードバックのURL(issueなど)
feedback_url:
# (Misskeyを動かす)URL # (Misskeyを動かす)URL
url: url:
# 待受ポート # 待受ポート
port: port:
# TLSの設定(利用しない場合は省略してください) # TLSの設定(利用しない場合はフィールドごと削除してください)
https: https:
# 証明書のパス... # 証明書のパス...
key: key:
@@ -37,7 +49,7 @@ recaptcha:
site_key: site_key:
secret_key: secret_key:
# ServiceWrokerの設定 # ServiceWorkerの設定
sw: sw:
# VAPIDの公開鍵 # VAPIDの公開鍵
public_key: public_key:
@@ -55,3 +67,7 @@ twitter:
# インテグレーション用アプリのコンシューマーシークレット # インテグレーション用アプリのコンシューマーシークレット
consumer_secret: consumer_secret:
# true にすると、リモートのファイルをキャッシュしなくなります(直リンクします)。
# ストレージ容量を節約することができますが、「リモートメディアを表示しない」設定をオンにしているユーザーは、リモートの画像などは見えなくなります。
preventCache: false
+2
View File
@@ -1,3 +1,5 @@
*.svg -diff -text *.svg -diff -text
*.psd -diff -text *.psd -diff -text
*.ai -diff -text *.ai -diff -text
yarn.lock -diff -text
package-lock.json -diff -text
+1 -2
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
yarn.lock
+1 -1
View File
@@ -1 +1 @@
package-lock = false save-exact=true
+28
View File
@@ -0,0 +1,28 @@
ChangeLog
=========
破壊的変更のみ記載。
This document describes breaking changes only.
4.0.0
-----
オセロがリバーシに変更されました。
Othello is now Reversi.
### Migration
MongoDBの、`othelloGames``othelloMatchings`コレクションをそれぞれ`reversiGames``reversiMatchings`にリネームしてください。
You need to rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings`.
3.0.0
-----
### Migration
起動する前に、`node cli/recount-stats`してください。
Please run `node cli/recount-stats` before launch.
+13 -18
View File
@@ -5,9 +5,7 @@
[![][travis-badge]][travis-link] [![][travis-badge]][travis-link]
[![][dependencies-badge]][dependencies-link] [![][dependencies-badge]][dependencies-link]
[![][himawari-badge]][himasaku] [![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/)
[![][sakurako-badge]][himasaku]
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
> Lead Maintainer: [syuilo][syuilo-link] > Lead Maintainer: [syuilo][syuilo-link]
@@ -16,17 +14,17 @@ 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
---------------------------------------------------------------- ----------------------------------------------------------------
* 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 * Mute
* Streaming * Real-time timelines
* ActivityPub compatible * 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).
@@ -46,18 +44,15 @@ If you want to...
:heart: Backers & Sponsors :heart: Backers & Sponsors
---------------------------------------------------------------- ----------------------------------------------------------------
[![Backers][backers-image]][support-url] | ![][nagarus-icon] | ![][dansup-icon] |
[![Sponsors][sponsors-image]][support-url] |:-:|:-:|
| [nagarus][nagarus-link] | [dansup][dansup-link] |
| ![][ooo-icon] |
|:-:|
| [ooo][ooo-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]
@@ -67,9 +62,6 @@ Misskey is an open-source software licensed under [GNU AGPLv3](LICENSE).
[travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square [travis-badge]: http://img.shields.io/travis/syuilo/misskey/master.svg?style=flat-square
[dependencies-link]: https://david-dm.org/syuilo/misskey [dependencies-link]: https://david-dm.org/syuilo/misskey
[dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square [dependencies-badge]: https://img.shields.io/david/syuilo/misskey.svg?style=flat-square
[himasaku]: https://himasaku.net
[himawari-badge]: https://img.shields.io/badge/%E5%8F%A4%E8%B0%B7-%E5%90%91%E6%97%A5%E8%91%B5-1684c5.svg?style=flat-square
[sakurako-badge]: https://img.shields.io/badge/%E5%A4%A7%E5%AE%A4-%E6%AB%BB%E5%AD%90-efb02a.svg?style=flat-square
[backer-url]: #backers [backer-url]: #backers
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg [backer-badge]: https://opencollective.com/misskey/backers/badge.svg
@@ -82,5 +74,8 @@ 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
[ooo-link]: https://www.patreon.com/user/creators?u=11601413 [nagarus-link]: https://www.patreon.com/user/creators?u=11601413
[ooo-icon]: https://c10.patreonusercontent.com/3/eyJ2IjoiMSIsInciOjIwMH0%3D/patreon-media/user/11601413/20cb15f209924302b399b99d3c98b850?token-time=2145916800&token-hash=IO31nK6VZCMWBWU2VAk2c824BX2QZ4DNPKyHHZXS0iw%3D [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
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+42
View File
@@ -0,0 +1,42 @@
const { default: Note } = require('../built/models/note');
const { default: Meta } = require('../built/models/meta');
const { default: User } = require('../built/models/user');
async function main() {
const meta = await Meta.findOne({});
const notesCount = await Note.count();
const usersCount = await User.count();
const originalNotesCount = await Note.count({
'_user.host': null
});
const originalUsersCount = await User.count({
host: null
});
const stats = {
notesCount,
usersCount,
originalNotesCount,
originalUsersCount
};
if (meta) {
await Meta.update({}, {
$set: {
stats
}
});
} else {
await Meta.insert({
stats
});
}
}
main().then(() => {
console.log('done');
}).catch(console.error);
+1 -5
View File
@@ -22,8 +22,4 @@ The list of people who have sent donation for Misskey.
--- ---
If your name is missing, please contact us! If your name is missing, please contact us!
If you want to donate to Misskey, please get in touch with [@syuilo][syuilo-link].
[syuilo-link]: https://syuilo.com
-26
View File
@@ -1,26 +0,0 @@
# Misskeyにカンパする方法
Misskeyのサポートにご興味をお持ちいただきありがとうございます!
Misskeyにカンパをしていただくと、貴方のお名前と好きなURLなどをMisskeyのリポジトリに刻む権利がもらえます。
Misskeyにカンパして開発・運営をサポートするには、次のいくつかの方法があります:
## ConoHaカードを購入する
(本家)Misskeyは、ConoHaというVPSサービスを利用しています。ConoHaカードを購入して、
カードに記載されているクーポンコードを syuilotan@yahoo.co.jp までお送りいただければ、
そのクーポンをチャージしてサーバーの運営費に充てることができます。
ConoHaカードについてはこちらをご覧ください: https://www.conoha.jp/conohacard/
Amazonでも買えます: https://www.amazon.co.jp/dp/B01N9E3416
## Amazonギフトカード
これは間接的な方法です。
## 銀行振込
syuilotan@yahoo.co.jp までお問い合わせください。
## 手渡し
オフ会を行ったときなどに行使できる方法です。
## その他
なにかいいアイデアがあればお教えください。
+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"
}
}
}
}
}
+4 -4
View File
@@ -8,20 +8,20 @@ import * as gutil from 'gulp-util';
import * as ts from 'gulp-typescript'; 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';
import cssnano = require('gulp-cssnano'); const cssnano = require('gulp-cssnano');
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';
import chalk from 'chalk'; import chalk from 'chalk';
import imagemin = require('gulp-imagemin'); const imagemin = require('gulp-imagemin');
import * as rename from 'gulp-rename'; import * as rename from 'gulp-rename';
import * as mocha from 'gulp-mocha'; import * as mocha from 'gulp-mocha';
import * as replace from 'gulp-replace'; import * as replace from 'gulp-replace';
import * as htmlmin from 'gulp-htmlmin'; 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'); const client = require('./built/client/meta.json');
import config from './src/config'; import config from './src/config';
+938
View File
@@ -0,0 +1,938 @@
---
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: "リバーシのボードの行と列のラベルを表示"
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: "ローカル"
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: "名前を変更"
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/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: "残り{}文字"
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: "ローカル"
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/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: "ローカル"
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: "パラメータ"
res: "レスポンス"
props:
name: "名前"
type: "型"
description: "説明"
+100 -61
View File
@@ -3,7 +3,7 @@ meta:
lang: "Deutsch" lang: "Deutsch"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ 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"
update-available-title: "更新があります"
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: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
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"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "Benachrichtigungen" notifications: "Benachrichtigungen"
users: "Empfohlene Benutzer" users: "Empfohlene Benutzer"
polls: "Umfragen" polls: "アンケート"
post-form: "投稿フォーム" post-form: "Beitragsform"
messaging: "Nachrichten" messaging: "Nachrichten"
server: "Server-Info" server: "Server-Info"
donation: "Spenden" donation: "Spenden"
nav: "Navigation" nav: "Navigation"
tips: "Tipps" tips: "Tipps"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "Widget hinzufügen:" widgets: "Widget hinzufügen:"
home: "Startseite" home: "Startseite"
@@ -84,7 +95,7 @@ common:
remove: "Spalte löschen" remove: "Spalte löschen"
add-column: "Eine Spalte hinzufügen" add-column: "Eine Spalte hinzufügen"
rename: "Umbenennen" rename: "Umbenennen"
stack-left: "左に重ねる" stack-left: "Nach links schichten"
pop-right: "右に出す" pop-right: "右に出す"
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "Verbindung zum Server ist fehlgeschlagen" title: "Verbindung zum Server ist fehlgeschlagen"
@@ -224,6 +235,10 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "Serverinformationen" title: "Serverinformationen"
toggle: "Sicht umschalten" toggle: "Sicht umschalten"
@@ -231,6 +246,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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "Mehr" refresh: "Mehr"
close: "Schließen" close: "Schließen"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "Verbunden" done: "Verbunden"
add-widget: "Widget hinzufügen:" add-widget: "Widget hinzufügen:"
@@ -360,13 +381,14 @@ 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"
desktop/views/components/post-form.vue: desktop/views/components/post-form.vue:
reply-placeholder: "Antworte auf diese Anmerkung..." reply-placeholder: "Antworte auf diese Anmerkung..."
quote-placeholder: "Zitiere diese Anmerkung..." quote-placeholder: "Zitiere diese Anmerkung..."
submit: "投稿" submit: "Beitragsform"
reply: "Antworten" reply: "Antworten"
renote: "Anmerkung" renote: "Anmerkung"
posted: "Gepostet!" posted: "Gepostet!"
@@ -379,7 +401,7 @@ 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"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
@@ -401,52 +423,54 @@ desktop/views/components/renote-form-window.vue:
desktop/views/components/settings-window.vue: desktop/views/components/settings-window.vue:
settings: "Experimentelles" settings: "Experimentelles"
desktop/views/components/settings.vue: desktop/views/components/settings.vue:
profile: "プロフィール" profile: "Profil"
notification: "Mitteilungen" notification: "Mitteilungen"
apps: "In App öffnen" apps: "In App öffnen"
mute: "Stummschalten" mute: "Stummschalten"
drive: "Dateien vom Drive anfügen" drive: "Dateien vom Drive anfügen"
security: "セキュリティ" security: "Sicherheit"
signin: "サインイン履歴" signin: "サインイン履歴"
password: "パスワード" password: "Passwort"
2fa: "二段階認証" 2fa: "Zwei-Faktor-Authentifizierung"
other: "その他" other: "Anderes"
license: "ライセンス" license: "Lizenz"
behaviour: "Verhalten" behaviour: "Verhalten"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "Aktualisieren beim scrollen"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。" fetch-on-scroll-desc: "Wenn du runterscrollst empfängt die Seite automatisch zusätzliche Inhalte."
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "Automatische Pop-out Fenster"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
advanced: "Erweiterte Einstellungen" advanced: "Erweiterte Einstellungen"
api-via-stream: "API-Anfrage via stream" api-via-stream: "API-Anfrage via stream"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" 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"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "Zeige Antworten"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する" show-my-renotes: "Zeige meine Reposts auf der Zeitleiste"
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する" show-renoted-my-notes: "Zeige meine Reposts, die geteilt wurden, auf der Zeitleiste"
show-maps: "マップの自動展開" show-maps: "Karte anzeigen"
show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。" show-maps-desc: "Zeige den Standort zu diesem Beitrag automatisch an."
sound: "サウンド" sound: "Ton"
enable-sounds: "サウンドを有効にする" enable-sounds: "Ton aktivieren"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
volume: "ボリューム" volume: "Lautstärke"
test: "テスト" test: "Test"
mobile: "Mobil" mobile: "Mobil"
disable-via-mobile: "Diesen Beitrag nicht mit 'vom Handy' absenden" disable-via-mobile: "Diesen Beitrag nicht mit 'vom Handy' absenden"
language: "Sprache" language: "Sprache"
pick-language: "Sprache auswählen" pick-language: "Sprache auswählen"
recommended: "Empfohlen" recommended: "Empfohlen"
auto: "Automatisch" auto: "Automatisch"
specify-language: "言語を指定" specify-language: "Sprache auswählen"
language-desc: "変更はページの再度読み込み後に反映されます。" language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast."
cache-cleared: "キャッシュを削除しました" cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。" cache-cleared-desc: "ページを再度読み込みしてください。"
auto-watch: "投稿の自動ウォッチ" auto-watch: "投稿の自動ウォッチ"
@@ -455,9 +479,9 @@ desktop/views/components/settings.vue:
operator: "このサーバーの運営者" operator: "このサーバーの運営者"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "Neuste Version:"
update-checking: "アップデートを確認中" update-checking: "Suche nach Updates"
do-update: "アップデートを確認" do-update: "Suche nach Updates"
update-settings: "詳細設定" update-settings: "詳細設定"
prevent-update: "アップデートを延期する(非推奨)" prevent-update: "アップデートを延期する(非推奨)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。" prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
@@ -469,20 +493,20 @@ desktop/views/components/settings.vue:
debug-mode: "デバッグモードを有効にする" debug-mode: "デバッグモードを有効にする"
debug-mode-desc: "この設定はブラウザに記憶されます。" debug-mode-desc: "この設定はブラウザに記憶されます。"
experimental: "実験的機能を有効にする" experimental: "実験的機能を有効にする"
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。" experimental-desc: "Experimentelle Funktionen können die Stabilität von Misskey beeinträchtigen. Diese Einstellung wird im Browser gespeichert."
tools: "ツール" tools: "Werkzeuge"
task-manager: "タスクマネージャ" task-manager: "Taskmanager"
third-parties: "サードパーティ" third-parties: "サードパーティ"
desktop/views/components/settings.2fa.vue: desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。" intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..." detail: "詳細..."
url: "https://www.google.co.jp/intl/ja/landing/2step/" url: "https://www.google.de/intl/de/landing/2step/"
caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。" caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
register: "デバイスを登録する" register: "Ein Gerät registrieren"
already-registered: "既に設定は完了しています。" already-registered: "Das Gerät wurde bereits registriert"
unregister: "設定を解除" unregister: "Abschalten"
unregistered: "二段階認証が無効になりました。" unregistered: "Zwei-Faktor-Authentifizierung wurde deaktiviert."
enter-password: "パスワードを入力してください" enter-password: "Bitte Passwort eingeben"
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:" authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
howtoinstall: "インストール方法はこちら" howtoinstall: "インストール方法はこちら"
scan: "次に、表示されているQRコードをスキャンします:" scan: "次に、表示されているQRコードをスキャンします:"
@@ -497,16 +521,16 @@ desktop/views/components/settings.api.vue:
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。" regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
regenerate-token: "トークンを再生成" regenerate-token: "トークンを再生成"
token: "Token:" token: "Token:"
enter-password: "パスワードを入力してください" enter-password: "Bitte Passwort eingeben"
desktop/views/components/settings.apps.vue: desktop/views/components/settings.apps.vue:
no-apps: "連携しているアプリケーションはありません" no-apps: "連携しているアプリケーションはありません"
desktop/views/components/settings.mute.vue: desktop/views/components/settings.mute.vue:
no-users: "ミュートしているユーザーはいません" no-users: "ミュートしているユーザーはいません"
desktop/views/components/settings.password.vue: desktop/views/components/settings.password.vue:
reset: "パスワードを変更する" reset: "パスワードを変更する"
enter-current-password: "現在のパスワードを入力してください" enter-current-password: "Derzeitiges Passwort eingeben"
enter-new-password: "新しいパスワードを入力してください" enter-new-password: "Neues Passwort eingeben"
enter-new-password-again: "もう一度新しいパスワードを入力してください" enter-new-password-again: "Neues Passwort erneut eingeben"
not-match: "新しいパスワードが一致しません" not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました" changed: "パスワードを変更しました"
desktop/views/components/settings.profile.vue: desktop/views/components/settings.profile.vue:
@@ -517,27 +541,32 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "Taskmanager"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
home: "Home" home: "Home"
local: "Lokal" local: "Lokal"
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"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -793,7 +835,7 @@ mobile/views/pages/notifications.vue:
notifications: "通知" notifications: "通知"
read-all: "すべての通知を既読にしますか?" read-all: "すべての通知を既読にしますか?"
mobile/views/pages/settings/settings.profile.vue: mobile/views/pages/settings/settings.profile.vue:
title: "プロフィール" title: "Profil"
name: "名前" name: "名前"
account: "アカウント" account: "アカウント"
location: "場所" location: "場所"
@@ -803,7 +845,7 @@ mobile/views/pages/settings/settings.profile.vue:
banner: "バナー" banner: "バナー"
is-cat: "このアカウントはCatです" is-cat: "このアカウントはCatです"
save: "保存" save: "保存"
saved: "プロフィールを保存しました" saved: "Profil wurde aktualisiert"
uploading: "アップロード中" uploading: "アップロード中"
upload-failed: "アップロードに失敗しました" upload-failed: "アップロードに失敗しました"
mobile/views/pages/search.vue: mobile/views/pages/search.vue:
@@ -817,7 +859,7 @@ mobile/views/pages/settings.vue:
lang-tip: "変更はページの再読み込み後に反映されます。" lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨" recommended: "推奨"
auto: "自動" auto: "自動"
specify-language: "言語を指定" specify-language: "Sprache auswählen"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
@@ -840,9 +882,9 @@ mobile/views/pages/settings.vue:
twitter-disconnect: "切断する" twitter-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "Neuste Version:"
update-checking: "アップデートを確認中" update-checking: "Suche nach Updates"
check-for-updates: "アップデートを確認" check-for-updates: "Suche nach Updates"
no-updates: "利用可能な更新はありません" no-updates: "利用可能な更新はありません"
no-updates-desc: "お使いのMisskeyは最新です。" no-updates-desc: "お使いのMisskeyは最新です。"
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+185 -146
View File
@@ -3,13 +3,13 @@ meta:
lang: "English" lang: "English"
divider: "" divider: ""
common: common:
misskey: "A planet 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,14 +39,24 @@ 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: "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 prefer sushi rather than pudding"
show-reversi-board-labels: "Show row and column labels in Reversi"
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"
@@ -54,10 +64,10 @@ common:
timemachine: "Calendar (Time Machine)" timemachine: "Calendar (Time Machine)"
activity: "Activity" activity: "Activity"
rss: "RSS reader" rss: "RSS reader"
memo: "Memo" memo: "Sticky note"
trends: "Trends" trends: "Trends"
photo-stream: "Photo stream" photo-stream: "Photostream"
posts-monitor: "投稿チャート" posts-monitor: "Chart of posts"
slideshow: "Slideshow" slideshow: "Slideshow"
version: "Version" version: "Version"
broadcast: "Broadcast" broadcast: "Broadcast"
@@ -67,28 +77,29 @@ 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"
deck: deck:
widgets: "Widgets" widgets: "Widgets"
home: "Home" home: "Home"
local: "Local" local: "Local"
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 upward"
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:
@@ -101,11 +112,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"
@@ -113,17 +124,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"
@@ -139,10 +150,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"
@@ -151,13 +162,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"
@@ -182,9 +193,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!"
@@ -193,7 +204,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"
@@ -212,30 +223,40 @@ 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: "Photostream"
no-photos: "No photos" no-photos: "No photos"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "Chart of posts"
toggle: "表示を切り替え" toggle: "Toggle views"
common/views/widgets/hashtags.vue:
title: "Hashtags"
count: "{} users mentioned"
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"
common/views/widgets/memo.vue: common/views/widgets/memo.vue:
title: "Memo" 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"
@@ -245,22 +266,22 @@ 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 a file"
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"
@@ -288,13 +309,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."
@@ -312,7 +333,7 @@ desktop/views/components/drive.vue:
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "Following" following: "Following"
follow: "Follow" follow: "Follow"
request-pending: "フォロー許可待ち" request-pending: "Pending follow request"
follow-request: "Follow request" follow-request: "Follow request"
desktop/views/components/followers-window.vue: desktop/views/components/followers-window.vue:
followers: "{}'s followers" followers: "{}'s followers"
@@ -325,13 +346,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: "Othello" 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:
@@ -343,8 +364,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"
@@ -355,14 +376,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..."
@@ -372,14 +394,14 @@ 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"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
@@ -413,15 +435,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"
@@ -430,7 +454,7 @@ desktop/views/components/settings.vue:
show-my-renotes: "Show my reposts in the timeline" show-my-renotes: "Show my reposts in the timeline"
show-renoted-my-notes: "Show my posts that have been shared in the timeline" show-renoted-my-notes: "Show my posts that have been shared in the timeline"
show-maps: "Show the map" show-maps: "Show the map"
show-maps-desc: "Automatically show the map of the location attached to the post." show-maps-desc: "Automatically show the location on the map attached to this post."
sound: "Sound" sound: "Sound"
enable-sounds: "Enable sound" enable-sounds: "Enable sound"
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser." enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
@@ -441,15 +465,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"
@@ -457,44 +481,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"
@@ -503,12 +527,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"
@@ -517,13 +541,16 @@ 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: "Polls" poll: "Poll"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Task Manager" title: "Task Manager"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,21 +558,23 @@ desktop/views/components/timeline.vue:
local: "Local" local: "Local"
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: "Customization of the 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"
messaging: "Messages" messaging: "Messages"
game: "Play Othello" game: "Games"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
title: "Notifications" title: "Notifications"
desktop/views/components/ui.header.post.vue: desktop/views/components/ui.header.post.vue:
@@ -558,7 +587,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"
@@ -571,10 +600,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:
is-media-only: "Only media posts"
is-media-view: "Media view"
edit: "Options"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "Reposted by {}"
private: "This post is private"
deleted: "This post has been deleted"
desktop/views/pages/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"
@@ -582,11 +619,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"
@@ -594,7 +631,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"
@@ -602,17 +639,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.header.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"
@@ -625,11 +662,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:
@@ -637,7 +679,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"
@@ -647,28 +689,28 @@ 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:
@@ -684,7 +726,7 @@ mobile/views/components/drive.file-detail.vue:
mobile/views/components/follow-button.vue: mobile/views/components/follow-button.vue:
following: "Following" following: "Following"
follow: "Follow" follow: "Follow"
request-pending: "フォロー許可待ち" request-pending: "Pending follow request"
follow-request: "Follow request" follow-request: "Follow request"
mobile/views/components/friends-maker.vue: mobile/views/components/friends-maker.vue:
title: "Let's follow users" title: "Let's follow users"
@@ -696,15 +738,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"
@@ -715,7 +757,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"
@@ -724,16 +766,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:
@@ -754,8 +796,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"
@@ -791,21 +833,21 @@ 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 '{}'"
@@ -817,7 +859,7 @@ mobile/views/pages/settings.vue:
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"
@@ -830,10 +872,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"
@@ -842,39 +884,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"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "Name" name: "Name"
type: "Type" type: "Type"
optional: "Optional"
description: "Description" description: "Description"
yes: "Yes"
no: "No"
+329 -290
View File
@@ -1,222 +1,233 @@
--- ---
meta: meta:
lang: "日本語" lang: "Español"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "Una ⭐️ del fediverso"
about-title: "A ⭐ of fediverse." about-title: "Una ⭐️ del fediverso"
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Gracias por encontrae Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?"
time: time:
unknown: "なぞのじかん" unknown: "Desconocido"
future: "未来" future: "Futuro"
just_now: "たった今" just_now: "Ahora mismo"
seconds_ago: "{}秒前" seconds_ago: "Hace {}"
minutes_ago: "{}分前" minutes_ago: "Hace {} minuto(s)"
hours_ago: "{}時間前" hours_ago: "Hace {} hora(s)"
days_ago: "{}日前" days_ago: "Hace {} dia(s)"
weeks_ago: "{}週間前" weeks_ago: "Hace {} semana(s)"
months_ago: "{}ヶ月前" months_ago: "Hace {} mes(es)"
years_ago: "{}年前" years_ago: "Hace {} año(s)"
weekday-short: weekday-short:
sunday: "" sunday: "domingo"
monday: "" monday: "lunes"
tuesday: "" tuesday: "martes"
wednesday: "" wednesday: "miércoles"
thursday: "" thursday: "jueves"
friday: "" friday: "viernes"
saturday: "" saturday: "sábado"
reactions: reactions:
like: "いいね" like: "me gusta"
love: "しゅき" love: "amor"
laugh: "" laugh: "risa"
hmm: "ふぅ~む" hmm: "hmm"
surprise: "わお" surprise: "sorpresa"
congrats: "おめでとう" congrats: "felicidades"
angry: "おこ" angry: "enfadado"
confused: "こまこまのこまり" confused: "confundido"
pudding: "Pudding" pudding: "Chafado"
note-placeholders: note-placeholders:
a: "今どうしてる?" a: "¿Qué haces?"
b: "何かありましたか?" b: "¿Qué está pasando?"
c: "何をお考えですか?" c: "¿Qué te pasa por la cabeza?"
d: "言いたいことは?" d: "¿Quieres decir algo?"
e: "ここに書いてください" e: "¡Escribe aquí!"
f: "あなたが書くのを待っています..." f: "Esperando a que escribas algo..."
delete: "削除" search: "検索"
loading: "読み込み中" delete: "eliminar"
ok: "わかった" loading: "cargando"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" ok: "OK"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします" update-available-title: "更新があります"
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."
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "Reloj analógico"
profile: "プロフィール" profile: "Perfil"
calendar: "カレンダー" calendar: "Calendario"
timemachine: "カレンダー(タイムマシン)" timemachine: "Calendario (máquina del tiempo)"
activity: "アクティビティ" activity: "Actividad"
rss: "RSSリーダー" rss: "Lector RSS"
memo: "メモ" memo: "Notas adhesivas"
trends: "トレンド" trends: "Tendencias"
photo-stream: "フォトストリーム" photo-stream: "Secuencia de fotos"
posts-monitor: "投稿チャート" posts-monitor: "Gráfico de publicaciones"
slideshow: "スライドショー" slideshow: "Diapositivas"
version: "バージョン" version: "Versión"
broadcast: "ブロードキャスト" broadcast: "Transmisión"
notifications: "通知" notifications: "Notificaciones"
users: "おすすめユーザー" users: "Usuarios destacados"
polls: "投票" polls: "Encuestas"
post-form: "投稿フォーム" post-form: "Formulario"
messaging: "メッセージ" messaging: "Mensajes"
server: "サーバー情報" server: "Información del servidor"
donation: "寄付のお願い" donation: "Donaciones"
nav: "ナビゲーション" nav: "Navegación"
tips: "ヒント" tips: "Consejos"
hashtags: "Etiquetas"
deck: deck:
widgets: "ウィジェット" widgets: "Accesorios"
home: "ホーム" home: "Inicio"
local: "ローカル" local: "Local"
global: "グローバル" global: "Global"
notifications: "通知" notifications: "Notificaciones"
list: "リスト" list: "Listado"
swap-left: "左に移動" swap-left: "Desplazar a la izq."
swap-right: "右に移動" swap-right: "Desplazar a la dcha."
swap-up: "上に移動" swap-up: "Desplazar arriba"
swap-down: "下に移動" swap-down: "Desplazar abajo"
remove: "カラムを削除" remove: "Borrar"
add-column: "カラムを追加" add-column: "Añadir columna"
rename: "名前を変更" rename: "Renombrar"
stack-left: "左に重ねる" stack-left: "A la izqda."
pop-right: "右に出す" pop-right: "A la dcha."
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "サーバーに接続できません" title: "Imposible conectar al servidor"
description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。" description: "Hay un problema en tu conexió o puede que el servidor esté caido o en mantenimiento. Por favor {try again} más tarde."
thanks: "いつもMisskeyをご利用いただきありがとうございます。" thanks: "Gracias por usar Misskey."
troubleshoot: "トラブルシュート" troubleshoot: "Problemas más frecuentes"
common/views/components/connect-failed.troubleshooter.vue: common/views/components/connect-failed.troubleshooter.vue:
title: "トラブルシューティング" title: "Resolución de problemas"
network: "ネットワーク接続" network: "Conexión de red"
checking-network: "ネットワーク接続を確認中" checking-network: "Verificar la conexión a la red"
internet: "インターネット接続" internet: "Conexión a Internet"
checking-internet: "インターネット接続を確認中" checking-internet: "Comprobando la conexión a Internet"
server: "サーバー接続" server: "Conexión al servidor"
checking-server: "サーバー接続を確認中" checking-server: "Probando la conexión al servidor"
finding: "問題を調べています" finding: "Buscando cualquier problema"
no-network: "ネットワークに接続されていません" no-network: "Sin conexión"
no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。" no-network-desc: "Por favor, asegurate que estás conectado a una red"
no-internet: "インターネットに接続されていません" no-internet: "Sin conexión a Internet"
no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。" no-internet-desc: "Por favor, asegurate de estar conectado a Internet."
no-server: "Misskeyのサーバーに接続できません" no-server: "Imposible conectarse al servidor de Misskey"
no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。" no-server-desc: "La conexión de red de tu PC es correcta, aún así no puedes conectarte al servidor de Misskey. Es posible que el servidor esté caido o en mantenimiento. Por favor vuelve a intentarlo más tarde."
success: "Misskeyのサーバーに接続できました" success: "Conectado al servidor de Misskey de manera correcta"
success-desc: "正常に接続できるようです。ページを再度読み込みしてください。" success-desc: "Parece que la conexión ha sido posible. Por favor refresca la página."
flush: "キャッシュの削除" flush: "Limpiar la memoria caché"
set-version: "バージョン指定" set-version: "Escoge la versión"
common/views/components/messaging.vue: common/views/components/messaging.vue:
search-user: "ユーザーを探す" search-user: "Encuentra un usuario"
you: "あなた" you: "Tu"
no-history: "履歴はありません" no-history: "Sin historial"
common/views/components/messaging-room.vue: common/views/components/messaging-room.vue:
empty: "このユーザーと話したことはありません" empty: "Sin conversaciones"
more: "もっと読む" more: "Leer más"
no-history: "これより過去の履歴はありません" no-history: "El historial se ha acabado"
resize-form: "ドラッグしてフォームの広さを調整" resize-form: "Arrastra para redimensionar"
new-message: "新しいメッセージがあります" new-message: "Nuevo mensaje"
common/views/components/messaging-room.form.vue: common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力" input-message-here: "Escribe el mensaje aquí"
send: "送信" send: "Enviar"
attach-from-local: "PCからファイルを添付する" attach-from-local: "Adjunta ficheros desde tu PC"
attach-from-drive: "ドライブからファイルを添付する" attach-from-drive: "Adjunta ficheros desde tu disco"
common/views/components/messaging-room.message.vue: common/views/components/messaging-room.message.vue:
is-read: "既読" is-read: "Leer"
deleted: "このメッセージは削除されました" deleted: "El mensaje se ha borrado"
common/views/components/nav.vue: common/views/components/nav.vue:
about: "Misskeyについて" about: "Sobre"
stats: "統計" stats: "Estadísticas"
status: "ステータス" status: "Estado"
wiki: "Wiki" wiki: "Wiki"
donors: "ドナー" donors: "Donantes"
repository: "リポジトリ" repository: "Repositorio"
develop: "開発者" develop: "Desarrolladores"
feedback: "フィードバック" feedback: "Opiniones"
common/views/components/note-menu.vue: common/views/components/note-menu.vue:
favorite: "お気に入り" favorite: "Me gusta esta nota"
pin: "ピン留め" pin: "Fijar en el perfil"
delete: "削除" delete: "Borrar"
delete-confirm: "この投稿を削除しますか?" delete-confirm: "¿Seguro que quieres borrar la publicación?"
remote: "投稿元で見る" remote: "Ver el original"
common/views/components/poll.vue: common/views/components/poll.vue:
vote-to: "{}」に投票する" vote-to: "'{}' para votar"
vote-count: "{}" vote-count: "{} votos"
total-users: "{}人が投票" total-users: "{} usuario(s) que ha(n) votado"
vote: "投票する" vote: "Vota"
show-result: "結果を見る" show-result: "Mostrar resultados"
voted: "投票済み" voted: "Votado"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "Selecciona dos o más opciones."
choice-n: "選択肢{}" choice-n: "{} opcion(es)"
remove: "この選択肢を削除" remove: "Borra la opción"
add: "+選択肢を追加" add: "+ Añade una opción"
destroy: "投票を破棄" destroy: "Cancelar la encuesta"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "Escoge una reacción"
common/views/components/signin.vue: common/views/components/signin.vue:
username: "ユーザー名" username: "Usuario"
password: "パスワード" password: "Contraseña"
token: "トークン" token: "Identificador"
signing-in: "やってます..." signing-in: "Entrando..."
signin: "サインイン" signin: "Entra"
common/views/components/signup.vue: common/views/components/signup.vue:
username: "ユーザー名" username: "Usuario"
checking: "確認しています..." checking: "Comprobando..."
available: "利用できます" available: "Disponible"
unavailable: "既に利用されています" unavailable: "Utilizado"
error: "通信エラー" error: "Error de conexión"
invalid-format: "a~z、A~Z、0~9、_が使えます" invalid-format: "utiliza letras, números y/o -."
too-short: "1文字以上でお願いします!" too-short: "¡Mínimo tienes que introducir un caracter!"
too-long: "20文字以内でお願いします" too-long: "No puedes usar más de 20 caracteres."
password: "パスワード" password: "Contraseña"
password-placeholder: "8文字以上を推奨します" password-placeholder: "Te recomendamos más de 8 caracteres"
weak-password: "弱いパスワード" weak-password: "Contraseña débil"
normal-password: "まあまあのパスワード" normal-password: "No está mal"
strong-password: "強いパスワード" strong-password: "Muy buena contraseña"
retype: "再入力" retype: "Inténtalo otra vez"
retype-placeholder: "確認のため再入力してください" retype-placeholder: "Confirma la contraseña"
password-matched: "確認されました" password-matched: "OK"
password-not-matched: "一致していません" password-not-matched: "Las contraseñas no son las mismas"
recaptcha: "認証" recaptcha: "Verificar"
create: "アカウント作成" create: "Crea una cuenta"
some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。" some-error: "Por algún motivo no se ha podido crear la cuenta. Por favor inténtalo de nuevo."
common/views/components/special-message.vue: common/views/components/special-message.vue:
new-year: "Happy New Year!" new-year: "¡Feliz Año Nuevo!"
christmas: "Merry Christmas!" christmas: "¡Feliz Navidad!"
common/views/components/stream-indicator.vue: common/views/components/stream-indicator.vue:
connecting: "接続中" connecting: "Conectando"
reconnecting: "再接続中" reconnecting: "Reconectando"
connected: "接続完了" connected: "Conectado"
common/views/components/twitter-setting.vue: common/views/components/twitter-setting.vue:
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" description: "Si comectas tu cuenta de Twitter con tu cuenta de Misskey podrás ver la información de tu cuemta de Twitter en tu perfil y además podrás entrar usando Twitter."
connected-to: "次のTwitterアカウントに接続されています" connected-to: "Estas comectado con las siguientes cuentas de Twitter"
detail: "詳細..." detail: "Detalles..."
reconnect: "再接続する" reconnect: "Conectar de nuevo"
connect: "Twitterと接続する" connect: "Conectate usando Twitter"
disconnect: "切断する" disconnect: "Desconectado"
common/views/components/uploader.vue: common/views/components/uploader.vue:
waiting: "待機中" waiting: "Un momento"
common/views/components/visibility-chooser.vue: common/views/components/visibility-chooser.vue:
public: "公開" public: "Público"
home: "ホーム" home: "Inicio"
home-desc: "ホームタイムラインにのみ公開" home-desc: "Publica solo en la página de inicio"
followers: "フォロワー" followers: "Seguidores"
followers-desc: "自分のフォロワーにのみ公開" followers-desc: "Piblica solo para tus seguidores"
specified: "ダイレクト" specified: "Directo"
specified-desc: "指定したユーザーにのみ公開" specified-desc: "Publica solo para los seguidores que quieras"
private: "非公開" private: "Privada"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "確認中" fetching: "Recuperando"
no-broadcasts: "お知らせはありません" no-broadcasts: "Sin emisión"
have-a-nice-day: "良い一日を!" have-a-nice-day: "¡Buenos dias!"
next: "" next: "Siguiente"
common/views/widgets/donation.vue: common/views/widgets/donation.vue:
title: "寄付のお願い" title: "Donaciones"
text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。" text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
common/views/widgets/photo-stream.vue: common/views/widgets/photo-stream.vue:
title: "フォトストリーム" title: "フォトストリーム"
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -253,66 +274,66 @@ desktop/views/components/choose-file-from-drive-window.vue:
desktop/views/components/choose-folder-from-drive-window.vue: desktop/views/components/choose-folder-from-drive-window.vue:
cancel: "キャンセル" cancel: "キャンセル"
ok: "決定" ok: "決定"
choose-prompt: "フォルダを選択" choose-prompt: "Escoge una Carpeta"
desktop/views/components/crop-window.vue: desktop/views/components/crop-window.vue:
skip: "クロップをスキップ" skip: "クロップをスキップ"
cancel: "キャンセル" cancel: "Cancelar"
ok: "決定" ok: "OK"
desktop/views/components/drive-window.vue: desktop/views/components/drive-window.vue:
used: "使用中" used: "usado"
drive: "ドライブ" drive: "Disco"
desktop/views/components/drive.file.vue: desktop/views/components/drive.file.vue:
avatar: "アイコン" avatar: "Avatar"
banner: "バナー" banner: "Banner"
contextmenu: contextmenu:
rename: "名前を変更" rename: "Renombrar"
copy-url: "URLをコピー" copy-url: "Copia la URL"
download: "ダウンロード" download: "Descargar"
else-files: "その他..." else-files: "Otros"
set-as-avatar: "アイコンに設定" set-as-avatar: "Utilizar como avatar"
set-as-banner: "バナーに設定" set-as-banner: "Utilizar como banner"
open-in-app: "アプリで開く" open-in-app: "Abrir en la aplicación"
add-app: "アプリを追加" add-app: "Añadir aplicación"
rename-file: "ファイル名の変更" rename-file: "Renombra el fichero"
input-new-file-name: "新しいファイル名を入力してください" input-new-file-name: "Escribe el nombre nuevo"
copied: "コピー完了" copied: "Copiado"
copied-url-to-clipboard: "URLをクリップボードにコピーしました" copied-url-to-clipboard: "URL copiada al porta papeles"
desktop/views/components/drive.folder.vue: desktop/views/components/drive.folder.vue:
unable-to-process: "操作を完了できません" unable-to-process: "La operación no se puede llevar a cabo"
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。" circular-reference-detected: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
unhandled-error: "不明なエラー" unhandled-error: "Error desconocido"
contextmenu: contextmenu:
move-to-this-folder: "このフォルダへ移動" move-to-this-folder: "Mover a esta carpeta"
show-in-new-window: "新しいウィンドウで表示" show-in-new-window: "Abrir en una ventana nueva"
rename: "名前を変更" rename: "Renombrar"
rename-folder: "フォルダ名の変更" rename-folder: "Renombrar carpeta"
input-new-folder-name: "新しいフォルダ名を入力してください" input-new-folder-name: "Escribe el nombre nuevo"
desktop/views/components/drive.nav-folder.vue: desktop/views/components/drive.nav-folder.vue:
drive: "ドライブ" drive: "Disco"
desktop/views/components/drive.vue: desktop/views/components/drive.vue:
search: "検索" search: "Buscar"
load-more: "もっと読み込む" load-more: "Cargar más"
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね" empty-draghover: "¡Saluda!"
empty-drive: "ドライブには何もありません。" empty-drive: "Tu disco está vacio"
empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。" empty-drive-description: "También puedes subir archivos seleccionándolos y con el botón derecho selecciona \"Subir fichero\" o puedes arrastrarlo hasta la ventana."
empty-folder: "このフォルダーは空です" empty-folder: "La carpeta está vacia"
unable-to-process: "操作を完了できません" unable-to-process: "La operación no se puede llevar a cabo."
circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。" circular-reference-detected: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
unhandled-error: "不明なエラー" unhandled-error: "Errer desconocido"
url-upload: "URLアップロード" url-upload: "Subir desde una URL"
url-of-file: "アップロードしたいファイルのURL" url-of-file: "URL del fichero que quieres subir"
url-upload-requested: "アップロードをリクエストしました" url-upload-requested: "Subida solicitada"
may-take-time: "アップロードが完了するまで時間がかかる場合があります。" may-take-time: "Subir el fichero puede tardar un tiempo."
create-folder: "フォルダー作成" create-folder: "Crear una carpeta"
folder-name: "フォルダー名" folder-name: "Nombre de la carpeta"
contextmenu: contextmenu:
create-folder: "フォルダーを作成" create-folder: "Crear una carpeta"
upload: "ファイルをアップロード" upload: "Subir fichero"
url-upload: "URLからアップロード" url-upload: "Subir desde una URL"
desktop/views/components/follow-button.vue: desktop/views/components/follow-button.vue:
following: "フォロー中" following: "Siguiendo"
follow: "フォロー" follow: "Sigue"
request-pending: "フォロー許可待ち" request-pending: "Pendiente de aprobación"
follow-request: "フォロー申請" follow-request: "フォロー申請"
desktop/views/components/followers-window.vue: desktop/views/components/followers-window.vue:
followers: "{} のフォロワー" followers: "{} のフォロワー"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -377,55 +399,57 @@ desktop/views/components/post-form.vue:
renote-failed: "Renoteに失敗しました" renote-failed: "Renoteに失敗しました"
posting: "投稿中" posting: "投稿中"
attach-media-from-local: "PCからメディアを添付" attach-media-from-local: "PCからメディアを添付"
attach-media-from-drive: "ドライブからメディアを添付" attach-media-from-drive: "Adjunta multimedia desde tu Disco"
attach-cancel: "添付取り消し" attach-cancel: "Quitar el archivo adjunto"
insert-a-kao: "v(‘ω’)v" insert-a-kao: "v('ω')v"
create-poll: "投票を作成" create-poll: "Crea una encuesta"
text-remain: "残り{}文字" text-remain: "quedan {} caracteres"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "Nota nueva"
reply: "返信" reply: "Responder"
attaches: "添付: {}メディア" attaches: "{} archivo(s) multimedia adjuntados"
uploading-media: "{}個のメディアをアップロード中" uploading-media: "Subiendo {} archivo(s) multimedia"
desktop/views/components/progress-dialog.vue: desktop/views/components/progress-dialog.vue:
waiting: "待機中" waiting: "Un momento"
desktop/views/components/renote-form.vue: desktop/views/components/renote-form.vue:
quote: "引用する..." quote: "Cita..."
cancel: "キャンセル" cancel: "Cancelar"
renote: "Renote" renote: "Volver a publicar"
reposting: "しています..." reposting: "Publicando de nuevo..."
success: "Renoteしました!" success: "¡Publicado!"
failure: "Renoteに失敗しました" failure: "La publicación ha fallado"
desktop/views/components/renote-form-window.vue: desktop/views/components/renote-form-window.vue:
title: "この投稿をRenoteしますか?" title: "¿Seguro qué quieres volver a publicarlo?"
desktop/views/components/settings-window.vue: desktop/views/components/settings-window.vue:
settings: "設定" settings: "Configuración"
desktop/views/components/settings.vue: desktop/views/components/settings.vue:
profile: "プロフィール" profile: "Perfil"
notification: "通知" notification: "Notificación"
apps: "アプリ" apps: "Aplicaciones"
mute: "ミュート" mute: "Silenciar"
drive: "ドライブ" drive: "Disco"
security: "セキュリティ" security: "Seguridad"
signin: "サインイン履歴" signin: "Historial de inicios de sesión"
password: "パスワード" password: "Contraseña"
2fa: "二段階認証" 2fa: "Autenticación de Doble-Factor"
other: "その他" other: "Otros"
license: "ライセンス" license: "Licencia"
behaviour: "動作" behaviour: "Acciones"
fetch-on-scroll: "スクロールで自動読み込み" fetch-on-scroll: "Desplazamiento infinito"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。" fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
auto-popout: "ウィンドウの自動ポップアウト" auto-popout: "Ventana emergente automática"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
advanced: "詳細設定" advanced: "Configuración avanzada"
api-via-stream: "ストリームを経由したAPIリクエスト" api-via-stream: "Solicitar API por medio de un stream"
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。" 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: "デザインと表示" display: "Diseño y pantalla"
customize: "ホームをカスタマイズ" customize: "Personaliza la página principal"
dark-mode: "ダークモード" choose-wallpaper: "壁紙を選択"
circle-icons: "円形のアイコンを使用" delete-wallpaper: "壁紙を削除"
gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用" dark-mode: "Modo Nocturno"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" circle-icons: "Usar iconos circulares"
gradient-window-header: "Usar degradados en las cabeceras de las páginas"
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する" show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する" show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+86 -47
View File
@@ -3,20 +3,20 @@ meta:
lang: "Français" lang: "Français"
divider: "" divider: ""
common: common:
misskey: "Une planète du fédiverse" misskey: "Une du 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:
unknown: "inconnu" unknown: "inconnu"
future: "future" future: "future"
just_now: "maintenant" just_now: "à l'instant"
seconds_ago: "Il y a {}seconde(s)" seconds_ago: "Il y a {} seconde·s"
minutes_ago: "Il y a {}minute(s)" minutes_ago: "Il y a {} minute·s"
hours_ago: "Il y a {}heure(s)" hours_ago: "Il y a {} heure·s"
days_ago: "Il y a {}jour(s)" days_ago: "Il y a {} jour·s"
weeks_ago: "Il y a{}semaines(s)" weeks_ago: "Il y a {} semaines·s"
months_ago: "Il y a {}mois" months_ago: "Il y a {} mois"
years_ago: "Il y a {}an(s)" years_ago: "Il y a {} an·s"
weekday-short: weekday-short:
sunday: "D" sunday: "D"
monday: "L" monday: "L"
@@ -29,24 +29,34 @@ common:
like: "Aime" like: "Aime"
love: "Adore" love: "Adore"
laugh: "Rire" laugh: "Rire"
hmm: "Hmm...?" hmm: "Hmm ... ?"
surprise: "Wow" surprise: "Wow"
congrats: "Félicitations!" congrats: "Félicitations !"
angry: "En Colère" angry: "En colère"
confused: "Confus" confused: "Confus"
pudding: "Pudding" pudding: "Pudding"
note-placeholders: note-placeholders:
a: "Que faîtes vous à cet instant ?" a: "Que faîtes vous maintenant ?"
b: "Quoi de neuf ?" b: "Quoi de neuf ?"
c: "Qu'avez-vous en tête ?" c: "Qu'avez-vous en tête ?"
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: "Une nouvelle version de Misskey est disponible({newer}, version actuelle: {current}). Recharger la page pour appliquer la mise à jour." 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."
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: "Je préfère les sushis (au pudding)"
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
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"
@@ -54,10 +64,10 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "Activité" activity: "Activité"
rss: "Lecteur de flux RSS" rss: "Lecteur de flux RSS"
memo: "Note" memo: "Pense-bête"
trends: "Tendances" trends: "Tendances"
photo-stream: "Flux de photos" photo-stream: "Flux de photos"
posts-monitor: "投稿チャート" posts-monitor: "Graph des publications"
slideshow: "Diaporama" slideshow: "Diaporama"
version: "Version" version: "Version"
broadcast: "Diffusion" broadcast: "Diffusion"
@@ -70,6 +80,7 @@ common:
donation: "Dons" donation: "Dons"
nav: "Navigation" nav: "Navigation"
tips: "Conseils" tips: "Conseils"
hashtags: "Étiquettes"
deck: deck:
widgets: "Widgets" widgets: "Widgets"
home: "Accueil" home: "Accueil"
@@ -142,7 +153,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"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "Montrer les résultats" show-result: "Montrer les résultats"
voted: "Voté" voted: "Voté"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "Vous devez entrer au moins deux choix" no-only-one-choice: "Vous devez saisir au moins deux choix."
choice-n: "Choix {}" choice-n: "Choix {}"
remove: "Supprimer ce choix" remove: "Supprimer ce choix"
add: "+ Ajouter un choix" add: "+ Ajouter un choix"
destroy: "Supprimer ce sondage" destroy: "Annuler ce sondage"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "Choisissez votre réaction" choose-reaction: "Choisissez votre réaction"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -222,17 +233,27 @@ common/views/widgets/photo-stream.vue:
title: "Flux de photo" title: "Flux de photo"
no-photos: "Pas de photos" no-photos: "Pas de photos"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "Graph des publications"
toggle: "表示を切り替え" toggle: "Basculer les vues"
common/views/widgets/hashtags.vue:
title: "Étiquettes"
count: "{} utilisateurs mentionnés"
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"
common/views/widgets/memo.vue: common/views/widgets/memo.vue:
title: "Note" 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"
@@ -329,7 +350,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: "Othello" 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"
@@ -360,6 +381,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: "もっと読み込む"
desktop/views/components/notifications.vue: desktop/views/components/notifications.vue:
more: "Plus" more: "Plus"
empty: "Pas de notifications" empty: "Pas de notifications"
@@ -379,7 +401,7 @@ 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"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
@@ -407,14 +429,14 @@ 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"
license: "License" license: "License"
behaviour: "Comportement" behaviour: "Comportement"
fetch-on-scroll: "Chargement lors du défilement" fetch-on-scroll: "Chargement lors du défilement"
fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。" fetch-on-scroll-desc: "Chargement automatique du contenu lors du défilement de la page."
auto-popout: "Fenêtre contextuelle automatique" auto-popout: "Fenêtre contextuelle automatique"
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
advanced: "Paramètres avancés" advanced: "Paramètres avancés"
@@ -422,9 +444,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: "壁紙を選択"
delete-wallpaper: "壁紙を削除"
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"
@@ -437,13 +461,13 @@ 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: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -459,12 +483,12 @@ desktop/views/components/settings.vue:
update-checking: "Recherche de mises à jour" update-checking: "Recherche de mises à jour"
do-update: "Rechercher des mises à jour" do-update: "Rechercher des mises à jour"
update-settings: "Paramètres avancés" update-settings: "Paramètres avancés"
prevent-update: "アップデートを延期する(非推奨)" prevent-update: "Reporter les mises à jour (non recommandé)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。" prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
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."
@@ -517,13 +541,16 @@ 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: "アカウントの保護"
is-locked: "投稿を非公開にする"
other: "その他"
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:
private: "cette publication est privée" private: "cette publication est privée"
deleted: "cette publication a été supprimée" deleted: "cette publication a été supprimée"
media-count: "{} médias attachés" media-count: "{} médias attachés"
poll: "Sondages" poll: "Sondage"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Gestionnaire de tâches" title: "Gestionnaire de tâches"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "Local" local: "Local"
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"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "Fermer" close: "Fermer"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Les publications médias uniquement"
is-media-view: "Vue média"
edit: "オプション"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "Reposté par {}"
private: "cette publication est privée"
deleted: "cette publication a été supprimée"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "à propos" about: "à propos"
gotit: "J'ai compris !" gotit: "J'ai compris !"
@@ -607,9 +644,9 @@ desktop/views/pages/user/user.friends.vue:
title: "Personnes qui répondent le plus" title: "Personnes qui répondent le plus"
loading: "Chargement en cours" loading: "Chargement en cours"
no-users: "Pas d'utilisateurs" no-users: "Pas d'utilisateurs"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "This account has been 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:
last-used-at: "Last used at" last-used-at: "Last used at"
@@ -625,6 +662,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: "投稿"
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"
@@ -663,11 +705,11 @@ mobile/views/components/drive.vue:
nothing-in-drive: "Rien" nothing-in-drive: "Rien"
folder-is-empty: "Ce dossier est vide" folder-is-empty: "Ce dossier est vide"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>" prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。" deletion-alert: "Désolé ! La suppression dun dossier nest pas encore implémentée."
folder-name: "Nom du dossier" folder-name: "Nom du dossier"
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。" root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。" root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
url-prompt: "アップロードしたいファイルのURL" url-prompt: "URL du fichier que vous souhaitez téléverser"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。" uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue: mobile/views/components/drive-file-detail.vue:
rename: "Renommer" rename: "Renommer"
@@ -682,13 +724,13 @@ mobile/views/components/drive.file-detail.vue:
hash: "Hash (md5)" hash: "Hash (md5)"
exif: "EXIF" exif: "EXIF"
mobile/views/components/follow-button.vue: mobile/views/components/follow-button.vue:
following: "フォロー中" following: "Abonnements"
follow: "Suivre" follow: "Suivre"
request-pending: "フォロー許可待ち" request-pending: "En attente d'approbation"
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"
@@ -831,7 +873,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"
@@ -846,7 +888,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:
@@ -893,7 +935,4 @@ docs:
props: props:
name: "Nom" name: "Nom"
type: "Type" type: "Type"
optional: "Optionel"
description: "Description" description: "Description"
yes: "Oui"
no: "Non"
+6 -5
View File
@@ -2,11 +2,11 @@
* Languages Loader * Languages Loader
*/ */
import * as fs from 'fs'; const fs = require('fs');
import * as yaml from 'js-yaml'; const yaml = require('js-yaml');
const loadLang = lang => yaml.safeLoad( const loadLang = lang => yaml.safeLoad(
fs.readFileSync(`./locales/${lang}.yml`, 'utf-8')); fs.readFileSync(`${__dirname}/${lang}.yml`, 'utf-8'));
const native = loadLang('ja'); const native = loadLang('ja');
@@ -15,7 +15,8 @@ const langs = {
'en': loadLang('en'), 'en': loadLang('en'),
'fr': loadLang('fr'), 'fr': loadLang('fr'),
'ja': native, 'ja': native,
'pl': loadLang('pl') 'pl': loadLang('pl'),
'es': loadLang('es')
}; };
Object.entries(langs).map(([, locale]) => { Object.entries(langs).map(([, locale]) => {
@@ -23,4 +24,4 @@ Object.entries(langs).map(([, locale]) => {
locale = Object.assign({}, native, locale); locale = Object.assign({}, native, locale);
}); });
export default langs; module.exports = langs;
+56 -17
View File
@@ -3,7 +3,7 @@ meta:
lang: "日本語" lang: "日本語"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -54,7 +64,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "結果を見る" show-result: "結果を見る"
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -379,8 +401,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -422,6 +444,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+66 -17
View File
@@ -3,7 +3,7 @@ meta:
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
@@ -47,11 +47,22 @@ common:
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
@@ -60,7 +71,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -69,18 +80,20 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
local: "ローカル" local: "ローカル"
hybrid: "ハイブリッド"
global: "グローバル" global: "グローバル"
notifications: "通知" notifications: "通知"
list: "リスト" list: "リスト"
@@ -168,11 +181,11 @@ common/views/components/poll.vue:
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
@@ -254,15 +267,27 @@ common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -378,7 +403,7 @@ desktop/views/components/friends-maker.vue:
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
@@ -416,6 +441,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: "もっと見る"
@@ -437,8 +463,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
@@ -488,6 +514,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -597,6 +625,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です"
@@ -604,7 +635,7 @@ desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
@@ -612,16 +643,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: "闇に飲まれる"
@@ -668,6 +703,16 @@ desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -711,7 +756,7 @@ desktop/views/pages/user/user.friends.vue:
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -733,6 +778,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: "投稿と返信"
@@ -747,7 +798,7 @@ desktop/views/widgets/notifications.vue:
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
@@ -865,7 +916,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
@@ -916,6 +967,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:
@@ -1050,7 +1102,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+56 -17
View File
@@ -3,7 +3,7 @@ meta:
lang: "日本語" lang: "日本語"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -54,7 +64,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "結果を見る" show-result: "結果を見る"
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -379,8 +401,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -422,6 +444,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+57 -18
View File
@@ -3,7 +3,7 @@ meta:
lang: "język polski" lang: "język polski"
divider: "" divider: ""
common: common:
misskey: "Planeta Fediwersum" misskey: " Fediwersum"
about-title: "⭐ Fediwersum" about-title: "⭐ Fediwersum"
about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?" about: "Dziękujemy za znalezienie Misskey. Misskey jest <b>zdecentralizowaną platformą mikroblogową</b> powstałą na Ziemi. Ponieważ działa ona w Fediwersum (uniwersum, w którego skład wchodzi wiele sieci społecznościowych), jest ona połączona z innymi platformami społecznościowymi. Spróbujesz odpocząć od zatłoczoneo miasta i zanurzyć się w nowym Internecie?"
time: time:
@@ -42,11 +42,21 @@ 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"
update-available-title: "Aktualizacja jest dostępna"
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"
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
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"
@@ -54,10 +64,10 @@ common:
timemachine: "Kalendarz (wehikuł czasu)" timemachine: "Kalendarz (wehikuł czasu)"
activity: "Aktywność" activity: "Aktywność"
rss: "Czytnik RSS" rss: "Czytnik RSS"
memo: "Notatki" memo: "Notatka"
trends: "Na czasie" trends: "Na czasie"
photo-stream: "Photostream" photo-stream: "Photostream"
posts-monitor: "投稿チャート" posts-monitor: "Wykres wpisów"
slideshow: "Pokaz slajdów" slideshow: "Pokaz slajdów"
version: "Wersja" version: "Wersja"
broadcast: "Transmisja" broadcast: "Transmisja"
@@ -70,6 +80,7 @@ common:
donation: "Dotacje" donation: "Dotacje"
nav: "Nawigacja" nav: "Nawigacja"
tips: "Wskazówki" tips: "Wskazówki"
hashtags: "Hashtagi"
deck: deck:
widgets: "Widżety" widgets: "Widżety"
home: "Strona główna" home: "Strona główna"
@@ -84,8 +95,8 @@ common:
remove: "Usuń" remove: "Usuń"
add-column: "Dodaj kolumnę" add-column: "Dodaj kolumnę"
rename: "Zmień nazwę" rename: "Zmień nazwę"
stack-left: "左に重ねる" stack-left: "Przypnij do lewej"
pop-right: "右に出す" pop-right: "Odepnij w prawo"
common/views/components/connect-failed.vue: common/views/components/connect-failed.vue:
title: "Nie udało się połączyć z serwerem" title: "Nie udało się połączyć z serwerem"
description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce." description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "Pokaż wyniki" show-result: "Pokaż wyniki"
voted: "Zagłosowano" voted: "Zagłosowano"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "Musisz wprowadzić dwie lub więcej opcji." no-only-one-choice: "Musisz wprowadzić przynajmniej dwie opcje."
choice-n: "Opcja {}" choice-n: "Opcja {}"
remove: "Usuń tą opcję" remove: "Usuń tą opcję"
add: "+ Dodaj opcję" add: "+ Dodaj opcję"
destroy: "Usuń ankietę" destroy: "Usuń ankietę"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "Wybierz reakcję" choose-reaction: "Wybierz reakcję"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -222,15 +233,25 @@ common/views/widgets/photo-stream.vue:
title: "Photostream" title: "Photostream"
no-photos: "Brak zdjęć" no-photos: "Brak zdjęć"
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "Wykres wpisów"
toggle: "表示を切り替え" toggle: "Przełącz widok"
common/views/widgets/hashtags.vue:
title: "Hashtagi"
count: "Wspomniany przez {} użytkowników"
empty: "Brak popularnych hashtagów"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "Informacje o serwerze" title: "Informacje o serwerze"
toggle: "Przełącz widok" toggle: "Przełącz widok"
common/views/widgets/memo.vue: common/views/widgets/memo.vue:
title: "Notatki" 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "Więcej" refresh: "Więcej"
close: "Zamknij" close: "Zamknij"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "Othello" game: "Reversi"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "Wyślij" done: "Wyślij"
add-widget: "Dodaj widżet:" add-widget: "Dodaj widżet:"
@@ -360,6 +381,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ń"
@@ -379,7 +401,7 @@ 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: {}"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
@@ -422,6 +444,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"
@@ -517,13 +541,16 @@ 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:
private: "ten wpis jest prywatny" private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty" deleted: "ten wpis został usunięty"
media-count: "{}zawartości multimedialnej" media-count: "{}zawartości multimedialnej"
poll: "Ankiety" poll: "Ankieta"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "Menedżer zadań" title: "Menedżer zadań"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "Lokalne" local: "Lokalne"
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ść"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "Pop-out" popout: "Pop-out"
close: "Zamknij" close: "Zamknij"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Tylko wpisy z zawartością multimedialną"
is-media-view: "Widok multimediów"
edit: "Opcje"
desktop/views/pages/deck/deck.note.vue:
reposted-by: "Udostępniono przez {}"
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "O Misskey" about: "O Misskey"
gotit: "Rozumiem!" gotit: "Rozumiem!"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "Najbardziej aktywni" title: "Najbardziej aktywni"
loading: "Ładowanie" loading: "Ładowanie"
no-users: "Brak użytkowników" no-users: "Brak użytkowników"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "To konto zostało zawieszone." is-suspended: "To konto zostało zawieszone."
is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne." is-remote: "To jest użytkownik zdalnej instancji, informacje mogą nie być w pełni dokładne."
view-remote: "Wyświetl dokładne informacje" view-remote: "Wyświetl dokładne informacje"
@@ -625,6 +662,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"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "Nazwa" name: "Nazwa"
type: "Rodzaj" type: "Rodzaj"
optional: "Nieobowiązkowy"
description: "Opis" description: "Opis"
yes: "Tak"
no: "Nie"
+56 -17
View File
@@ -3,7 +3,7 @@ meta:
lang: "Português" lang: "Português"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -54,7 +64,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "結果を見る" show-result: "結果を見る"
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -379,8 +401,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -422,6 +444,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+56 -17
View File
@@ -3,7 +3,7 @@ meta:
lang: "Русский язык" lang: "Русский язык"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -54,7 +64,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "結果を見る" show-result: "結果を見る"
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -379,8 +401,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -422,6 +444,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+56 -17
View File
@@ -3,7 +3,7 @@ meta:
lang: "中文(简体)" lang: "中文(简体)"
divider: "" divider: ""
common: common:
misskey: "A planet of fediverse" misskey: "A of fediverse"
about-title: "A ⭐ of fediverse." about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。" about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
time: time:
@@ -42,11 +42,21 @@ common:
d: "言いたいことは?" d: "言いたいことは?"
e: "ここに書いてください" e: "ここに書いてください"
f: "あなたが書くのを待っています..." f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除" delete: "削除"
loading: "読み込み中" loading: "読み込み中"
ok: "わかった" ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
widgets: widgets:
analog-clock: "アナログ時計" analog-clock: "アナログ時計"
profile: "プロフィール" profile: "プロフィール"
@@ -54,7 +64,7 @@ common:
timemachine: "カレンダー(タイムマシン)" timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ" activity: "アクティビティ"
rss: "RSSリーダー" rss: "RSSリーダー"
memo: "メモ" memo: "付箋"
trends: "トレンド" trends: "トレンド"
photo-stream: "フォトストリーム" photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート" posts-monitor: "投稿チャート"
@@ -63,13 +73,14 @@ common:
broadcast: "ブロードキャスト" broadcast: "ブロードキャスト"
notifications: "通知" notifications: "通知"
users: "おすすめユーザー" users: "おすすめユーザー"
polls: "投票" polls: "アンケート"
post-form: "投稿フォーム" post-form: "投稿フォーム"
messaging: "メッセージ" messaging: "メッセージ"
server: "サーバー情報" server: "サーバー情報"
donation: "寄付のお願い" donation: "寄付のお願い"
nav: "ナビゲーション" nav: "ナビゲーション"
tips: "ヒント" tips: "ヒント"
hashtags: "ハッシュタグ"
deck: deck:
widgets: "ウィジェット" widgets: "ウィジェット"
home: "ホーム" home: "ホーム"
@@ -151,11 +162,11 @@ common/views/components/poll.vue:
show-result: "結果を見る" show-result: "結果を見る"
voted: "投票済み" voted: "投票済み"
common/views/components/poll-editor.vue: common/views/components/poll-editor.vue:
no-only-one-choice: "投票には、選択肢が最低2つ必要です" no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
choice-n: "選択肢{}" choice-n: "選択肢{}"
remove: "この選択肢を削除" remove: "この選択肢を削除"
add: "+選択肢を追加" add: "+選択肢を追加"
destroy: "投票を破棄" destroy: "アンケートを破棄"
common/views/components/reaction-picker.vue: common/views/components/reaction-picker.vue:
choose-reaction: "リアクションを選択" choose-reaction: "リアクションを選択"
common/views/components/signin.vue: common/views/components/signin.vue:
@@ -224,13 +235,23 @@ common/views/widgets/photo-stream.vue:
common/views/widgets/posts-monitor.vue: common/views/widgets/posts-monitor.vue:
title: "投稿チャート" title: "投稿チャート"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/hashtags.vue:
title: "ハッシュタグ"
count: "{}人が投稿"
empty: "トレンドなし"
common/views/widgets/server.vue: common/views/widgets/server.vue:
title: "サーバー情報" title: "サーバー情報"
toggle: "表示を切り替え" toggle: "表示を切り替え"
common/views/widgets/memo.vue: 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"
@@ -329,7 +350,7 @@ desktop/views/components/friends-maker.vue:
refresh: "もっと見る" refresh: "もっと見る"
close: "閉じる" close: "閉じる"
desktop/views/components/game-window.vue: desktop/views/components/game-window.vue:
game: "オセロ" game: "リバーシ"
desktop/views/components/home.vue: desktop/views/components/home.vue:
done: "完了" done: "完了"
add-widget: "ウィジェットを追加:" add-widget: "ウィジェットを追加:"
@@ -360,6 +381,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: "ありません!"
@@ -379,8 +401,8 @@ 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: "残り{}文字"
desktop/views/components/post-form-window.vue: desktop/views/components/post-form-window.vue:
note: "新規投稿" note: "新規投稿"
@@ -422,6 +444,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: "ウィンドウのタイトルバーにグラデーションを使用"
@@ -517,13 +541,16 @@ 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:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
desktop/views/components/taskmanager.vue: desktop/views/components/taskmanager.vue:
title: "タスクマネージャ" title: "タスクマネージャ"
desktop/views/components/timeline.vue: desktop/views/components/timeline.vue:
@@ -531,13 +558,15 @@ desktop/views/components/timeline.vue:
local: "ローカル" local: "ローカル"
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: "闇に飲まれる"
@@ -573,6 +602,14 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue: desktop/views/components/window.vue:
popout: "ポップアウト" popout: "ポップアウト"
close: "閉じる" 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: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった" gotit: "わかった"
@@ -607,7 +644,7 @@ desktop/views/pages/user/user.friends.vue:
title: "よく話すユーザー" title: "よく話すユーザー"
loading: "読み込み中" loading: "読み込み中"
no-users: "よく話すユーザーはいません" no-users: "よく話すユーザーはいません"
desktop/views/pages/user/user.header.vue: desktop/views/pages/user/user.vue:
is-suspended: "このユーザーは凍結されています。" is-suspended: "このユーザーは凍結されています。"
is-remote: "このユーザーはリモートユーザーです。" is-remote: "このユーザーはリモートユーザーです。"
view-remote: "正確な情報を見る" view-remote: "正確な情報を見る"
@@ -625,6 +662,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: "投稿と返信"
@@ -636,7 +678,7 @@ desktop/views/widgets/notifications.vue:
title: "通知" title: "通知"
settings: "通知の設定" settings: "通知の設定"
desktop/views/widgets/polls.vue: desktop/views/widgets/polls.vue:
title: "投票" title: "アンケート"
refresh: "他を見る" refresh: "他を見る"
nothing: "ありません!" nothing: "ありません!"
desktop/views/widgets/post-form.vue: desktop/views/widgets/post-form.vue:
@@ -735,7 +777,7 @@ mobile/views/components/sub-note-content.vue:
private: "この投稿は非公開です" private: "この投稿は非公開です"
deleted: "この投稿は削除されました" deleted: "この投稿は削除されました"
media-count: "{}つのメディア" media-count: "{}つのメディア"
poll: "投票" poll: "アンケート"
mobile/views/components/timeline.vue: mobile/views/components/timeline.vue:
empty: "投稿がありません" empty: "投稿がありません"
load-more: "もっと" load-more: "もっと"
@@ -893,7 +935,4 @@ docs:
props: props:
name: "名前" name: "名前"
type: "型" type: "型"
optional: "オプション"
description: "説明" description: "説明"
yes: "はい"
no: "いいえ"
+16344
View File
File diff suppressed because it is too large Load Diff
+62 -60
View File
@@ -1,8 +1,8 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "2.34.3", "version": "4.17.1",
"clientVersion": "1.0.6328", "clientVersion": "1.0.7112",
"codename": "nighthike", "codename": "nighthike",
"main": "./built/index.js", "main": "./built/index.js",
"private": true, "private": true,
@@ -23,18 +23,18 @@
"format": "gulp format" "format": "gulp format"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome": "1.0.1", "@fortawesome/fontawesome": "1.1.8",
"@fortawesome/fontawesome-free-brands": "5.0.2", "@fortawesome/fontawesome-free-brands": "5.0.13",
"@fortawesome/fontawesome-free-regular": "5.0.2", "@fortawesome/fontawesome-free-regular": "5.0.13",
"@fortawesome/fontawesome-free-solid": "5.0.2", "@fortawesome/fontawesome-free-solid": "5.0.13",
"@koa/cors": "2.2.1", "@koa/cors": "2.2.1",
"@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/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.23", "@types/elasticsearch": "5.0.24",
"@types/eventemitter3": "2.0.2", "@types/file-type": "5.2.1",
"@types/gm": "1.18.0", "@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",
@@ -43,71 +43,69 @@
"@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.41", "@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/koa": "2.0.45", "@types/jsdom": "11.0.6",
"@types/koa-bodyparser": "4.2.0", "@types/koa": "2.0.46",
"@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",
"@types/koa-mount": "3.0.1", "@types/koa-mount": "3.0.1",
"@types/koa-multer": "1.0.0", "@types/koa-multer": "1.0.0",
"@types/koa-router": "7.0.28", "@types/koa-router": "7.0.30",
"@types/koa-send": "4.1.1", "@types/koa-send": "4.1.1",
"@types/koa-views": "2.0.3", "@types/koa-views": "2.0.3",
"@types/koa__cors": "2.2.2", "@types/koa__cors": "2.2.2",
"@types/kue": "0.11.8", "@types/kue": "0.11.9",
"@types/license-checker": "15.0.0",
"@types/mkdirp": "0.5.2", "@types/mkdirp": "0.5.2",
"@types/mocha": "5.2.0", "@types/mocha": "5.2.3",
"@types/mongodb": "3.0.18", "@types/mongodb": "3.1.1",
"@types/monk": "6.0.0",
"@types/ms": "0.7.30", "@types/ms": "0.7.30",
"@types/node": "10.1.2", "@types/node": "10.5.2",
"@types/nopt": "3.0.29", "@types/parse5": "5.0.0",
"@types/parse5": "3.0.0",
"@types/pug": "2.0.4", "@types/pug": "2.0.4",
"@types/qrcode": "0.8.1", "@types/qrcode": "1.2.0",
"@types/ratelimiter": "2.1.28", "@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.6", "@types/redis": "2.8.6",
"@types/request": "2.47.0", "@types/request": "2.47.1",
"@types/request-promise-native": "1.0.14", "@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/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.0", "@types/webpack": "4.4.5",
"@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.1", "@types/ws": "5.1.2",
"animejs": "2.2.0", "animejs": "2.2.0",
"autosize": "4.0.2", "autosize": "4.0.2",
"autwh": "0.1.0", "autwh": "0.1.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"bootstrap-vue": "2.0.0-rc.6", "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",
"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.4", "dompurify": "1.0.5",
"elasticsearch": "15.0.0", "elasticsearch": "15.1.1",
"element-ui": "2.3.9", "element-ui": "2.4.3",
"emojilib": "2.2.12", "emojilib": "2.2.12",
"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.5.0",
"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", "gm": "1.23.1",
"gulp": "3.9.1", "gulp": "3.9.1",
@@ -116,7 +114,7 @@
"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.2.3", "gulp-rename": "1.3.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",
@@ -124,14 +122,14 @@
"gulp-typescript": "4.0.2", "gulp-typescript": "4.0.2",
"gulp-uglify": "3.0.0", "gulp-uglify": "3.0.0",
"gulp-util": "3.0.8", "gulp-util": "3.0.8",
"hard-source-webpack-plugin": "0.6.10", "hard-source-webpack-plugin": "0.11.0",
"highlight.js": "9.12.0", "highlight.js": "9.12.0",
"html-minifier": "3.5.16", "html-minifier": "3.5.18",
"http-signature": "1.2.0", "http-signature": "1.2.0",
"inquirer": "5.2.0", "inquirer": "6.0.0",
"is-root": "2.0.0", "is-root": "2.0.0",
"is-url": "1.2.4", "is-url": "1.2.4",
"js-yaml": "3.11.0", "js-yaml": "3.12.0",
"jsdom": "11.11.0", "jsdom": "11.11.0",
"koa": "2.5.1", "koa": "2.5.1",
"koa-bodyparser": "4.2.1", "koa-bodyparser": "4.2.1",
@@ -142,23 +140,21 @@
"koa-mount": "3.0.0", "koa-mount": "3.0.0",
"koa-multer": "1.0.2", "koa-multer": "1.0.2",
"koa-router": "7.4.0", "koa-router": "7.4.0",
"koa-send": "4.1.3", "koa-send": "5.0.0",
"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.0.0",
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"mecab-async": "0.1.2", "mecab-async": "0.1.2",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"mocha": "5.2.0", "mocha": "5.2.0",
"moji": "0.5.1", "moji": "0.5.1",
"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.2.0", "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",
@@ -170,7 +166,7 @@
"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.0.3", "ratelimiter": "3.1.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",
@@ -179,7 +175,7 @@
"rimraf": "2.6.2", "rimraf": "2.6.2",
"rndstr": "1.0.0", "rndstr": "1.0.0",
"s-age": "1.1.2", "s-age": "1.1.2",
"sass-loader": "7.0.1", "sass-loader": "7.0.3",
"seedrandom": "2.4.3", "seedrandom": "2.4.3",
"single-line-log": "1.1.2", "single-line-log": "1.1.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
@@ -192,32 +188,38 @@
"tcp-port-used": "0.1.2", "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.3.0", "ts-loader": "4.4.1",
"ts-node": "6.0.4", "ts-node": "7.0.0",
"tslint": "5.10.0", "tslint": "5.10.0",
"typescript": "2.8.3", "typescript": "2.9.2",
"typescript-eslint-parser": "15.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.0", "vue-cropperjs": "2.2.1",
"vue-js-modal": "1.3.13", "vue-js-modal": "1.3.16",
"vue-json-tree-view": "2.1.4", "vue-json-tree-view": "2.1.4",
"vue-loader": "15.2.1", "vue-loader": "15.2.4",
"vue-material": "^1.0.0-beta-10.2",
"vue-router": "3.0.1", "vue-router": "3.0.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.1", "web-push": "3.3.2",
"webfinger.js": "2.6.6", "webfinger.js": "2.6.6",
"webpack": "4.9.1", "webpack": "4.15.1",
"webpack-cli": "2.1.4", "webpack-cli": "3.0.8",
"websocket": "1.0.26", "websocket": "1.0.26",
"ws": "5.2.0", "ws": "5.2.1",
"xev": "2.0.1" "xev": "2.0.1"
},
"greenkeeper": {
"ignore": [
"deepcopy",
"cafy",
"@types/gulp"
]
} }
} }
-5
View File
@@ -7,11 +7,6 @@ html
cursor progress !important cursor progress !important
body body
// for md
font-size 16px !important
line-height initial !important
letter-spacing initial !important
overflow-wrap break-word overflow-wrap break-word
#error #error
@@ -1,16 +0,0 @@
export default function(note) {
if (note.text == null) return true;
let txt = note.text;
if (note.media) {
note.media.forEach(file => {
txt = txt.replace(file.url, '');
if (file.src) txt = txt.replace(file.src, '');
});
if (txt == '') return true;
}
return false;
}
@@ -23,7 +23,10 @@ export default async function(mios: MiOS, force = false, silent = false) {
} }
if (!silent) { if (!silent) {
alert('%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)); mios.apis.dialog({
title: '%i18n:common.update-available-title%',
text: '%i18n:common.update-available%'.replace('{newer}', newer).replace('{current}', current)
});
} }
return newer; return newer;
@@ -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;
@@ -20,34 +20,6 @@ export default function(type, data): Notification {
icon: data.url + '?thumbnail&size=64' icon: data.url + '?thumbnail&size=64'
}; };
case 'mention':
return {
title: `${getUserName(data.user)}さんから:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'reply':
return {
title: `${getUserName(data.user)}さんから返信:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'quote':
return {
title: `${getUserName(data.user)}さんが引用:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'reaction':
return {
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
body: getNoteSummary(data.note),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'unread_messaging_message': case 'unread_messaging_message':
return { return {
title: `${getUserName(data.user)}さんからメッセージ:`, title: `${getUserName(data.user)}さんからメッセージ:`,
@@ -55,13 +27,47 @@ export default function(type, data): Notification {
icon: data.user.avatarUrl + '?thumbnail&size=64' icon: data.user.avatarUrl + '?thumbnail&size=64'
}; };
case 'othello_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 + '?thumbnail&size=64'
}; };
case 'notification':
switch (data.type) {
case 'mention':
return {
title: `${getUserName(data.user)}さんから:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'reply':
return {
title: `${getUserName(data.user)}さんから返信:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'quote':
return {
title: `${getUserName(data.user)}さんが引用:`,
body: getNoteSummary(data),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
case 'reaction':
return {
title: `${getUserName(data.user)}: ${getReactionEmoji(data.reaction)}:`,
body: getNoteSummary(data.note),
icon: data.user.avatarUrl + '?thumbnail&size=64'
};
default:
return null;
}
default: default:
return null; return null;
} }
+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)];
@@ -0,0 +1,11 @@
import Stream from '../../stream';
import MiOS from '../../../../../mios';
export class ReversiGameStream extends Stream {
constructor(os: MiOS, me, game) {
super(os, 'games/reversi-game', {
i: me ? me.token : null,
game: game.id
});
}
}
@@ -0,0 +1,31 @@
import StreamManager from '../../stream-manager';
import Stream from '../../stream';
import MiOS from '../../../../../mios';
export class ReversiStream extends Stream {
constructor(os: MiOS, me) {
super(os, 'games/reversi', {
i: me.token
});
}
}
export class ReversiStreamManager extends StreamManager<ReversiStream> {
private me;
private os: MiOS;
constructor(os: MiOS, me) {
super();
this.me = me;
this.os = os;
}
public getConnection() {
if (this.connection == null) {
this.connection = new ReversiStream(this.os, this.me);
}
return this.connection;
}
}
@@ -1,16 +1,19 @@
import StreamManager from './stream-manager';
import Stream from './stream'; import Stream from './stream';
import StreamManager from './stream-manager';
import MiOS from '../../../mios'; import MiOS from '../../../mios';
export class OthelloStream extends Stream { /**
* Hybrid timeline stream connection
*/
export class HybridTimelineStream extends Stream {
constructor(os: MiOS, me) { constructor(os: MiOS, me) {
super(os, 'othello', { super(os, 'hybrid-timeline', {
i: me.token i: me.token
}); });
} }
} }
export class OthelloStreamManager extends StreamManager<OthelloStream> { export class HybridTimelineStreamManager extends StreamManager<HybridTimelineStream> {
private me; private me;
private os: MiOS; private os: MiOS;
@@ -23,7 +26,7 @@ export class OthelloStreamManager extends StreamManager<OthelloStream> {
public getConnection() { public getConnection() {
if (this.connection == null) { if (this.connection == null) {
this.connection = new OthelloStream(this.os, this.me); this.connection = new HybridTimelineStream(this.os, this.me);
} }
return this.connection; return this.connection;
@@ -1,11 +0,0 @@
import Stream from './stream';
import MiOS from '../../../mios';
export class OthelloGameStream extends Stream {
constructor(os: MiOS, me, game) {
super(os, 'othello-game', {
i: me ? me.token : null,
game: game.id
});
}
}
@@ -13,9 +13,6 @@
.a .a
display block display block
position fixed
top 0
right 0
> svg > svg
display block display block
@@ -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}?thumbnail&size=128`" alt="">
<img v-if="stone === false" :src="`${whiteUser.avatarUrl}?thumbnail&size=128`" 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 Othello, { Color } from '../../../../../othello/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'],
@@ -52,7 +67,7 @@ export default Vue.extend({
data() { data() {
return { return {
game: null, game: null,
o: null as Othello, o: null as Reversi,
logs: [], logs: [],
logPos: 0, logPos: 0,
pollingClock: null pollingClock: null
@@ -92,13 +107,19 @@ 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)`
};
} }
}, },
watch: { watch: {
logPos(v) { logPos(v) {
if (!this.game.isEnded) return; if (!this.game.isEnded) return;
this.o = new Othello(this.game.settings.map, { this.o = new Reversi(this.game.settings.map, {
isLlotheo: this.game.settings.isLlotheo, isLlotheo: this.game.settings.isLlotheo,
canPutEverywhere: this.game.settings.canPutEverywhere, canPutEverywhere: this.game.settings.canPutEverywhere,
loopedBoard: this.game.settings.loopedBoard loopedBoard: this.game.settings.loopedBoard
@@ -115,7 +136,7 @@ export default Vue.extend({
created() { created() {
this.game = this.initGame; this.game = this.initGame;
this.o = new Othello(this.game.settings.map, { this.o = new Reversi(this.game.settings.map, {
isLlotheo: this.game.settings.isLlotheo, isLlotheo: this.game.settings.isLlotheo,
canPutEverywhere: this.game.settings.canPutEverywhere, canPutEverywhere: this.game.settings.canPutEverywhere,
loopedBoard: this.game.settings.loopedBoard loopedBoard: this.game.settings.loopedBoard
@@ -163,7 +184,7 @@ export default Vue.extend({
// //
if (this.$store.state.device.enableSounds) { if (this.$store.state.device.enableSounds) {
const sound = new Audio(`${url}/assets/othello-put-me.mp3`); const sound = new Audio(`${url}/assets/reversi-put-me.mp3`);
sound.volume = this.$store.state.device.soundVolume; sound.volume = this.$store.state.device.soundVolume;
sound.play(); sound.play();
} }
@@ -187,7 +208,7 @@ export default Vue.extend({
// //
if (this.$store.state.device.enableSounds && x.color != this.myColor) { if (this.$store.state.device.enableSounds && x.color != this.myColor) {
const sound = new Audio(`${url}/assets/othello-put-you.mp3`); const sound = new Audio(`${url}/assets/reversi-put-you.mp3`);
sound.volume = this.$store.state.device.soundVolume; sound.volume = this.$store.state.device.soundVolume;
sound.play(); sound.play();
} }
@@ -213,7 +234,7 @@ export default Vue.extend({
onRescue(game) { onRescue(game) {
this.game = game; this.game = game;
this.o = new Othello(this.game.settings.map, { this.o = new Reversi(this.game.settings.map, {
isLlotheo: this.game.settings.isLlotheo, isLlotheo: this.game.settings.isLlotheo,
canPutEverywhere: this.game.settings.canPutEverywhere, canPutEverywhere: this.game.settings.canPutEverywhere,
loopedBoard: this.game.settings.loopedBoard loopedBoard: this.game.settings.loopedBoard
@@ -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
@@ -7,9 +7,9 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import XGame from './othello.game.vue'; import XGame from './reversi.game.vue';
import XRoom from './othello.room.vue'; import XRoom from './reversi.room.vue';
import { OthelloGameStream } from '../../scripts/streaming/othello-game'; import { ReversiGameStream } from '../../../../scripts/streaming/games/reversi/reversi-game';
export default Vue.extend({ export default Vue.extend({
components: { components: {
@@ -25,7 +25,7 @@ export default Vue.extend({
}, },
created() { created() {
this.g = this.game; this.g = this.game;
this.connection = new OthelloGameStream((this as any).os, this.$store.state.i, this.game); this.connection = new ReversiGameStream((this as any).os, this.$store.state.i, this.game);
this.connection.on('started', this.onStarted); this.connection.on('started', this.onStarted);
}, },
beforeDestroy() { beforeDestroy() {
@@ -94,7 +94,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import * as maps from '../../../../../othello/maps'; import * as maps from '../../../../../../../games/reversi/maps';
export default Vue.extend({ export default Vue.extend({
props: ['game', 'connection'], props: ['game', 'connection'],
@@ -1,5 +1,5 @@
<template> <template>
<div class="mk-othello"> <div class="mk-reversi">
<div v-if="game"> <div v-if="game">
<x-gameroom :game="game"/> <x-gameroom :game="game"/>
</div> </div>
@@ -10,15 +10,15 @@
</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>
<el-button type="primary" round @click="match">指名</el-button> <el-button type="primary" round @click="match">指名</el-button>
<details> <details>
<summary>遊び方</summary> <summary>遊び方</summary>
<div> <div>
<p>オセロ相手と交互に石をボードに置いてゆき相手の石を挟んでひっくり返しながら最終的に残った石が多い方が勝ちというボードゲームです</p> <p>リバーシ相手と交互に石をボードに置いてゆき相手の石を挟んでひっくり返しながら最終的に残った石が多い方が勝ちというボードゲームです</p>
<dl> <dl>
<dt><b>フリーマッチ</b></dt> <dt><b>フリーマッチ</b></dt>
<dd>ランダムなユーザーと対戦するモードです</dd> <dd>ランダムなユーザーと対戦するモードです</dd>
@@ -39,7 +39,7 @@
</section> </section>
<section v-if="myGames.length > 0"> <section v-if="myGames.length > 0">
<h2>自分の対局</h2> <h2>自分の対局</h2>
<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`"> <a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
<mk-avatar class="avatar" :user="g.user1"/> <mk-avatar class="avatar" :user="g.user1"/>
<mk-avatar class="avatar" :user="g.user2"/> <mk-avatar class="avatar" :user="g.user2"/>
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span> <span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
@@ -48,7 +48,7 @@
</section> </section>
<section v-if="games.length > 0"> <section v-if="games.length > 0">
<h2>みんなの対局</h2> <h2>みんなの対局</h2>
<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/othello/${g.id}`"> <a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
<mk-avatar class="avatar" :user="g.user1"/> <mk-avatar class="avatar" :user="g.user1"/>
<mk-avatar class="avatar" :user="g.user2"/> <mk-avatar class="avatar" :user="g.user2"/>
<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span> <span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
@@ -61,7 +61,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import XGameroom from './othello.gameroom.vue'; import XGameroom from './reversi.gameroom.vue';
export default Vue.extend({ export default Vue.extend({
components: { components: {
@@ -93,24 +93,24 @@ export default Vue.extend({
} }
}, },
mounted() { mounted() {
this.connection = (this as any).os.streams.othelloStream.getConnection(); this.connection = (this as any).os.streams.reversiStream.getConnection();
this.connectionId = (this as any).os.streams.othelloStream.use(); this.connectionId = (this as any).os.streams.reversiStream.use();
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('othello/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('othello/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('othello/invitations').then(invitations => { (this as any).api('games/reversi/invitations').then(invitations => {
this.invitations = this.invitations.concat(invitations); this.invitations = this.invitations.concat(invitations);
}); });
@@ -126,13 +126,13 @@ export default Vue.extend({
beforeDestroy() { beforeDestroy() {
this.connection.off('matched', this.onMatched); this.connection.off('matched', this.onMatched);
this.connection.off('invited', this.onInvited); this.connection.off('invited', this.onInvited);
(this as any).os.streams.othelloStream.dispose(this.connectionId); (this as any).os.streams.reversiStream.dispose(this.connectionId);
clearInterval(this.pingClock); clearInterval(this.pingClock);
}, },
methods: { methods: {
go(game) { go(game) {
(this as any).api('othello/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('othello/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('othello/match/cancel'); (this as any).api('games/reversi/match/cancel');
}, },
accept(invitation) { accept(invitation) {
(this as any).api('othello/match', { (this as any).api('games/reversi/match', {
userId: invitation.parent.id userId: invitation.parent.id
}).then(game => { }).then(game => {
if (game) { if (game) {
@@ -186,7 +186,7 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '~const.styl' @import '~const.styl'
.mk-othello .mk-reversi
color #677f84 color #677f84
background #fff background #fff
@@ -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>
@@ -9,7 +9,7 @@ import forkit from './forkit.vue';
import acct from './acct.vue'; import acct from './acct.vue';
import avatar from './avatar.vue'; import avatar from './avatar.vue';
import nav from './nav.vue'; import nav from './nav.vue';
import noteHtml from './note-html'; import misskeyFlavoredMarkdown from './misskey-flavored-markdown';
import poll from './poll.vue'; import poll from './poll.vue';
import pollEditor from './poll-editor.vue'; import pollEditor from './poll-editor.vue';
import reactionIcon from './reaction-icon.vue'; import reactionIcon from './reaction-icon.vue';
@@ -27,8 +27,16 @@ 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 Othello from './othello.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 uiButton from './ui/button.vue';
import uiCard from './ui/card.vue';
import uiForm from './ui/form.vue';
import uiTextarea from './ui/textarea.vue';
import uiSwitch from './ui/switch.vue';
import uiRadio from './ui/radio.vue';
import uiSelect from './ui/select.vue';
Vue.component('mk-analog-clock', analogClock); Vue.component('mk-analog-clock', analogClock);
Vue.component('mk-menu', menu); Vue.component('mk-menu', menu);
@@ -39,7 +47,7 @@ Vue.component('mk-forkit', forkit);
Vue.component('mk-acct', acct); Vue.component('mk-acct', acct);
Vue.component('mk-avatar', avatar); Vue.component('mk-avatar', avatar);
Vue.component('mk-nav', nav); Vue.component('mk-nav', nav);
Vue.component('mk-note-html', noteHtml); Vue.component('misskey-flavored-markdown', misskeyFlavoredMarkdown);
Vue.component('mk-poll', poll); Vue.component('mk-poll', poll);
Vue.component('mk-poll-editor', pollEditor); Vue.component('mk-poll-editor', pollEditor);
Vue.component('mk-reaction-icon', reactionIcon); Vue.component('mk-reaction-icon', reactionIcon);
@@ -57,5 +65,13 @@ Vue.component('mk-url-preview', urlPreview);
Vue.component('mk-twitter-setting', twitterSetting); Vue.component('mk-twitter-setting', twitterSetting);
Vue.component('mk-file-type-icon', fileTypeIcon); Vue.component('mk-file-type-icon', fileTypeIcon);
Vue.component('mk-switch', Switch); Vue.component('mk-switch', Switch);
Vue.component('mk-othello', Othello); Vue.component('mk-reversi', Reversi);
Vue.component('mk-welcome-timeline', welcomeTimeline); Vue.component('mk-welcome-timeline', welcomeTimeline);
Vue.component('ui-input', uiInput);
Vue.component('ui-button', uiButton);
Vue.component('ui-card', uiCard);
Vue.component('ui-form', uiForm);
Vue.component('ui-textarea', uiTextarea);
Vue.component('ui-switch', uiSwitch);
Vue.component('ui-radio', uiRadio);
Vue.component('ui-select', uiSelect);
@@ -15,7 +15,20 @@ import Vue from 'vue';
import * as anime from 'animejs'; import * as anime from 'animejs';
export default Vue.extend({ export default Vue.extend({
props: ['source', 'compact', 'items'], props: {
source: {
required: true
},
items: {
type: Array,
required: true
},
compact: {
type: Boolean,
required: false,
default: false
}
},
data() { data() {
return { return {
hukidasi: !this.compact hukidasi: !this.compact
@@ -44,13 +57,13 @@ export default Vue.extend({
top = y; top = y;
} }
if (left + width > window.innerWidth) { if (left + width - window.pageXOffset > window.innerWidth) {
left = window.innerWidth - width; left = window.innerWidth - width + window.pageXOffset;
this.hukidasi = false; this.hukidasi = false;
} }
if (top + height > window.innerHeight) { if (top + height - window.pageYOffset > window.innerHeight) {
top = window.innerHeight - height; top = window.innerHeight - height + window.pageYOffset;
this.hukidasi = false; this.hukidasi = false;
} }
@@ -139,9 +152,13 @@ $border-color = rgba(27, 31, 35, 0.15)
transform-origin center -($balloon-size) transform-origin center -($balloon-size)
&:before &:before
&:after
content "" content ""
display block display block
position absolute position absolute
pointer-events none
&:before
top -($balloon-size * 2) top -($balloon-size * 2)
left s('calc(50% - %s)', $balloon-size) left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent border-top solid $balloon-size transparent
@@ -150,9 +167,6 @@ $border-color = rgba(27, 31, 35, 0.15)
border-bottom solid $balloon-size $border-color border-bottom solid $balloon-size $border-color
&:after &:after
content ""
display block
position absolute
top -($balloon-size * 2) + 1.5px top -($balloon-size * 2) + 1.5px
left s('calc(50% - %s)', $balloon-size) left s('calc(50% - %s)', $balloon-size)
border-top solid $balloon-size transparent border-top solid $balloon-size transparent
@@ -3,12 +3,11 @@
<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">
<mk-note-html 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">
<a :href="message.file.url" target="_blank" :title="message.file.name"> <a :href="message.file.url" target="_blank" :title="message.file.name">
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/> <img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"/>
@@ -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>
@@ -32,7 +32,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import parse from '../../../../../text/parse'; import parse from '../../../../../mfm/parse';
export default Vue.extend({ export default Vue.extend({
props: { props: {
@@ -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
@@ -186,11 +175,14 @@ root(isDark)
margin 8px 0 margin 8px 0
> footer > footer
display block display flex
margin 2px 0 0 0 margin 2px 0 0 0
font-size 10px font-size 11px
color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4) color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4)
> .read
margin 0 8px 0 0
> [data-fa] > [data-fa]
margin-left 4px margin-left 4px
@@ -222,7 +214,7 @@ root(isDark)
color #fff color #fff
> footer > footer
text-align left justify-content left
&[data-is-me] &[data-is-me]
> .avatar > .avatar
@@ -256,7 +248,7 @@ root(isDark)
color #fff !important color #fff !important
> footer > footer
text-align right justify-content right
&[data-is-deleted] &[data-is-deleted]
> .baloon > .baloon
@@ -255,7 +255,8 @@ root(isDark)
width 100% width 100%
max-width 600px max-width 600px
margin 0 auto margin 0 auto
flex 1 flex 1 1 0
overflow-y auto
> .init > .init
width 100% width 100%
@@ -341,10 +342,6 @@ root(isDark)
background isDark ? #191b22 : #fff background isDark ? #191b22 : #fff
> footer > footer
position -webkit-sticky
position sticky
z-index 2
bottom 0
width 100% width 100%
max-width 600px max-width 600px
margin 0 auto margin 0 auto
@@ -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 '../../../../../text/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';
@@ -10,7 +10,7 @@ const flatten = list => list.reduce(
(a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [] (a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []
); );
export default Vue.component('mk-note-html', { export default Vue.component('misskey-flavored-markdown', {
props: { props: {
text: { text: {
type: String, type: String,
@@ -92,7 +92,7 @@ export default Vue.component('mk-note-html', {
case 'hashtag': case 'hashtag':
return createElement('a', { return createElement('a', {
attrs: { attrs: {
href: `${url}/search?q=${token.content}`, href: `${url}/tags/${token.hashtag}`,
target: '_blank' target: '_blank'
} }
}, token.content); }, token.content);
@@ -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`
} }
} }
}); });
@@ -72,6 +72,7 @@ root(isDark)
> .is-admin > .is-admin
> .is-bot > .is-bot
> .is-cat > .is-cat
flex-shrink 0
align-self center align-self center
margin 0 .5em 0 0 margin 0 .5em 0 0
padding 1px 6px padding 1px 6px
@@ -89,6 +90,7 @@ root(isDark)
overflow hidden overflow hidden
text-overflow ellipsis text-overflow ellipsis
color isDark ? #606984 : #ccc color isDark ? #606984 : #ccc
flex-shrink 2147483647
> .info > .info
margin-left auto margin-left auto
@@ -1,6 +1,6 @@
<template> <template>
<div class="mk-note-menu" style="position:initial"> <div style="position:initial">
<mk-menu ref="menu" :source="source" :compact="compact" :items="items" @closed="$destroy"/> <mk-menu :source="source" :compact="compact" :items="items" @closed="closed"/>
</div> </div>
</template> </template>
@@ -13,21 +13,25 @@ export default Vue.extend({
items() { items() {
const items = []; const items = [];
items.push({ items.push({
icon: '%fa:star%',
text: '%i18n:@favorite%', text: '%i18n:@favorite%',
action: this.favorite action: this.favorite
}); });
if (this.note.userId == this.$store.state.i.id) { if (this.note.userId == this.$store.state.i.id) {
items.push({ items.push({
icon: '%fa:thumbtack%',
text: '%i18n:@pin%', text: '%i18n:@pin%',
action: this.pin action: this.pin
}); });
items.push({ items.push({
icon: '%fa:trash-alt R%',
text: '%i18n:@delete%', text: '%i18n:@delete%',
action: this.del action: this.del
}); });
} }
if (this.note.uri) { if (this.note.uri) {
items.push({ items.push({
icon: '%fa:external-link-square-alt%',
text: '%i18n:@remote%', text: '%i18n:@remote%',
action: () => { action: () => {
window.open(this.note.uri, '_blank'); window.open(this.note.uri, '_blank');
@@ -63,8 +67,10 @@ export default Vue.extend({
}); });
}, },
close() { closed() {
this.$refs.menu.close(); this.$nextTick(() => {
this.$destroy();
});
} }
} }
}); });
@@ -8,7 +8,10 @@
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%"> <img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%"> <img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%"> <img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
<img v-if="reaction == 'pudding'" src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%"> <template v-if="reaction == 'pudding'">
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
</template>
</span> </span>
</template> </template>
@@ -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
@@ -1,24 +1,33 @@
<template> <template>
<form class="mk-signin" :class="{ signing }" @submit.prevent="onSubmit"> <form class="mk-signin" :class="{ signing }" @submit.prevent="onSubmit">
<label class="user-name"> <div class="avatar" :style="{ backgroundImage: user ? `url('${ user.avatarUrl }')` : null }" v-show="withAvatar"></div>
<input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" placeholder="%i18n:@username%" autofocus required @change="onUsernameChange"/>%fa:at% <ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" spellcheck="false" autofocus required @input="onUsernameChange">
</label> <span>%i18n:@username%</span>
<label class="password"> <span slot="prefix">@</span>
<input v-model="password" type="password" placeholder="%i18n:@password%" required/>%fa:lock% <span slot="suffix">@{{ host }}</span>
</label> </ui-input>
<label class="token" v-if="user && user.twoFactorEnabled"> <ui-input v-model="password" type="password" required>
<input v-model="token" type="number" placeholder="%i18n:@token%" required/>%fa:lock% <span>%i18n:@password%</span>
</label> <span slot="prefix">%fa:lock%</span>
<button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</button> </ui-input>
もしくは <a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a> <ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
</form> </form>
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import { apiUrl } from '../../../config'; import { apiUrl, host } from '../../../config';
export default Vue.extend({ export default Vue.extend({
props: {
withAvatar: {
type: Boolean,
required: false,
default: true
}
},
data() { data() {
return { return {
signing: false, signing: false,
@@ -27,6 +36,7 @@ export default Vue.extend({
password: '', password: '',
token: '', token: '',
apiUrl, apiUrl,
host
}; };
}, },
methods: { methods: {
@@ -35,6 +45,8 @@ export default Vue.extend({
username: this.username username: this.username
}).then(user => { }).then(user => {
this.user = user; this.user = user;
}, () => {
this.user = null;
}); });
}, },
onSubmit() { onSubmit() {
@@ -59,84 +71,19 @@ export default Vue.extend({
@import '~const.styl' @import '~const.styl'
.mk-signin .mk-signin
color #555
&.signing &.signing
&, * &, *
cursor wait !important cursor wait !important
label > .avatar
display block margin 16px auto 0 auto
margin 12px 0 width 64px
height 64px
[data-fa] background #ddd
display block background-position center
pointer-events none background-size cover
position absolute border-radius 100%
bottom 0
top 0
left 0
z-index 1
margin auto
padding 0 16px
height 1em
color #898786
input[type=text]
input[type=password]
input[type=number]
user-select text
display inline-block
cursor auto
padding 0 0 0 38px
margin 0
width 100%
line-height 44px
font-size 1em
color rgba(#000, 0.7)
background #fff
outline none
border solid 1px #eee
border-radius 4px
&:hover
background rgba(255, 255, 255, 0.7)
border-color #ddd
& + i
color #797776
&:focus
background #fff
border-color #ccc
& + i
color #797776
[type=submit]
cursor pointer
padding 16px
margin -6px 0 0 0
width 100%
font-size 1.2em
color rgba(#000, 0.5)
outline none
border none
border-radius 0
background transparent
transition all .5s ease
&:hover
color $theme-color
transition all .2s ease
&:focus
color $theme-color
transition all .2s ease
&:active
color darken($theme-color, 30%)
transition all .2s ease
&:disabled
opacity 0.7
</style> </style>
+35 -157
View File
@@ -1,60 +1,58 @@
<template> <template>
<form class="mk-signup" @submit.prevent="onSubmit" autocomplete="off"> <form class="mk-signup" @submit.prevent="onSubmit" :autocomplete="Math.random()">
<label class="username"> <ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" :autocomplete="Math.random()" spellcheck="false" required @input="onChangeUsername">
<p class="caption">%fa:at%%i18n:@username%</p> <span>%i18n:@username%</span>
<input v-model="username" type="text" pattern="^[a-zA-Z0-9_]{1,20}$" placeholder="a~z、A~Z、0~9、-" autocomplete="off" required @input="onChangeUsername"/> <span slot="prefix">@</span>
<p class="profile-page-url-preview" v-if="shouldShowProfileUrl">{{ `${url}/@${username}` }}</p> <span slot="suffix">@{{ host }}</span>
<p class="info" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw%%i18n:@checking%</p> <p slot="text" v-if="usernameState == 'wait'" style="color:#999">%fa:spinner .pulse .fw% %i18n:@checking%</p>
<p class="info" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw%%i18n:@available%</p> <p slot="text" v-if="usernameState == 'ok'" style="color:#3CB7B5">%fa:check .fw% %i18n:@available%</p>
<p class="info" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@unavailable%</p> <p slot="text" v-if="usernameState == 'unavailable'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@unavailable%</p>
<p class="info" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@error%</p> <p slot="text" v-if="usernameState == 'error'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@error%</p>
<p class="info" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@invalid-format%</p> <p slot="text" v-if="usernameState == 'invalid-format'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@invalid-format%</p>
<p class="info" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@too-short%</p> <p slot="text" v-if="usernameState == 'min-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-short%</p>
<p class="info" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@too-long%</p> <p slot="text" v-if="usernameState == 'max-range'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@too-long%</p>
</label> </ui-input>
<label class="password"> <ui-input v-model="password" type="password" :autocomplete="Math.random()" required @input="onChangePassword" :with-password-meter="true">
<p class="caption">%fa:lock%%i18n:@password%</p> <span>%i18n:@password%</span>
<input v-model="password" type="password" placeholder="%i18n:@password-placeholder%" autocomplete="off" required @input="onChangePassword"/> <span slot="prefix">%fa:lock%</span>
<div class="meter" v-show="passwordStrength != ''" :data-strength="passwordStrength"> <div slot="text">
<div class="value" ref="passwordMetar"></div> <p slot="text" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@weak-password%</p>
<p slot="text" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw% %i18n:@normal-password%</p>
<p slot="text" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw% %i18n:@strong-password%</p>
</div> </div>
<p class="info" v-if="passwordStrength == 'low'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@weak-password%</p> </ui-input>
<p class="info" v-if="passwordStrength == 'medium'" style="color:#3CB7B5">%fa:check .fw%%i18n:@normal-password%</p> <ui-input v-model="retypedPassword" type="password" :autocomplete="Math.random()" required @input="onChangePasswordRetype">
<p class="info" v-if="passwordStrength == 'high'" style="color:#3CB7B5">%fa:check .fw%%i18n:@strong-password%</p> <span>%i18n:@password% (%i18n:@retype%)</span>
</label> <span slot="prefix">%fa:lock%</span>
<label class="retype-password"> <div slot="text">
<p class="caption">%fa:lock%%i18n:@password%(%i18n:@retype%)</p> <p slot="text" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw% %i18n:@password-matched%</p>
<input v-model="retypedPassword" type="password" placeholder="%i18n:@retype-placeholder%" autocomplete="off" required @input="onChangePasswordRetype"/> <p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
<p class="info" v-if="passwordRetypeState == 'match'" style="color:#3CB7B5">%fa:check .fw%%i18n:@password-matched%</p> </div>
<p class="info" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw%%i18n:@password-not-matched%</p> </ui-input>
</label> <div class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div>
<label class="recaptcha"> <label class="agree-tou" style="display: block; margin: 16px 0;">
<p class="caption"><template v-if="recaptchaed">%fa:toggle-on%</template><template v-if="!recaptchaed">%fa:toggle-off%</template>%i18n:@recaptcha%</p> <input name="agree-tou" type="checkbox" required/>
<div class="g-recaptcha" data-callback="onRecaptchaed" data-expired-callback="onRecaptchaExpired" :data-sitekey="recaptchaSitekey"></div>
</label>
<label class="agree-tou">
<input name="agree-tou" type="checkbox" autocomplete="off" required/>
<p><a :href="touUrl" target="_blank">利用規約</a>に同意する</p> <p><a :href="touUrl" target="_blank">利用規約</a>に同意する</p>
</label> </label>
<button type="submit">%i18n:@create%</button> <ui-button type="submit">%i18n:@create%</ui-button>
</form> </form>
</template> </template>
<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 { url, docsUrl, lang, recaptchaSitekey } from '../../../config'; import { host, url, docsUrl, lang, recaptchaSitekey } from '../../../config';
export default Vue.extend({ export default Vue.extend({
data() { data() {
return { return {
host,
username: '', username: '',
password: '', password: '',
retypedPassword: '', retypedPassword: '',
url, url,
touUrl: `${docsUrl}/${lang}/tou`, touUrl: `${docsUrl}/${lang}/tou`,
recaptchaSitekey, recaptchaSitekey,
recaptchaed: false,
usernameState: null, usernameState: null,
passwordStrength: '', passwordStrength: '',
passwordRetypeState: null passwordRetypeState: null
@@ -104,7 +102,6 @@ export default Vue.extend({
const strength = getPasswordStrength(this.password); const strength = getPasswordStrength(this.password);
this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low'; this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low';
(this.$refs.passwordMetar as any).style.width = `${strength * 100}%`;
}, },
onChangePasswordRetype() { onChangePasswordRetype() {
if (this.retypedPassword == '') { if (this.retypedPassword == '') {
@@ -130,19 +127,9 @@ export default Vue.extend({
alert('%i18n:@some-error%'); alert('%i18n:@some-error%');
(window as any).grecaptcha.reset(); (window as any).grecaptcha.reset();
this.recaptchaed = false;
}); });
} }
}, },
created() {
(window as any).onRecaptchaed = () => {
this.recaptchaed = true;
};
(window as any).onRecaptchaExpired = () => {
this.recaptchaed = false;
};
},
mounted() { mounted() {
const head = document.getElementsByTagName('head')[0]; const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script'); const script = document.createElement('script');
@@ -158,100 +145,6 @@ export default Vue.extend({
.mk-signup .mk-signup
min-width 302px min-width 302px
label
display block
margin 0 0 16px 0
> .caption
margin 0 0 4px 0
color #828888
font-size 0.95em
> [data-fa]
margin-right 0.25em
color #96adac
> .info
display block
margin 4px 0
font-size 0.8em
> [data-fa]
margin-right 0.3em
&.username
.profile-page-url-preview
display block
margin 4px 8px 0 4px
font-size 0.8em
color #888
&:empty
display none
&:not(:empty) + .info
margin-top 0
&.password
.meter
display block
margin-top 8px
width 100%
height 8px
&[data-strength='']
display none
&[data-strength='low']
> .value
background #d73612
&[data-strength='medium']
> .value
background #d7ca12
&[data-strength='high']
> .value
background #61bb22
> .value
display block
width 0%
height 100%
background transparent
border-radius 4px
transition all 0.1s ease
[type=text], [type=password]
user-select text
display inline-block
cursor auto
padding 0 12px
margin 0
width 100%
line-height 44px
font-size 1em
color #333 !important
background #fff !important
outline none
border solid 1px rgba(#000, 0.1)
border-radius 4px
box-shadow 0 0 0 114514px #fff inset
transition all .3s ease
&:hover
border-color rgba(#000, 0.2)
transition all .1s ease
&:focus
color $theme-color !important
border-color $theme-color
box-shadow 0 0 0 1024px #fff inset, 0 0 0 4px rgba($theme-color, 10%)
transition all 0s ease
&:disabled
opacity 0.5
.agree-tou .agree-tou
padding 4px padding 4px
border-radius 4px border-radius 4px
@@ -269,19 +162,4 @@ export default Vue.extend({
display inline display inline
color #555 color #555
button
margin 0
padding 16px
width 100%
font-size 1em
color #fff
background $theme-color
border-radius 3px
&:hover
background lighten($theme-color, 5%)
&:active
background darken($theme-color, 5%)
</style> </style>
@@ -58,18 +58,21 @@ export default Vue.extend({
}, },
created() { created() {
if (this.mode == 'relative' || this.mode == 'detail') { if (this.mode == 'relative' || this.mode == 'detail') {
this.tick(); this.tickId = window.requestAnimationFrame(this.tick);
this.tickId = setInterval(this.tick, 10000);
} }
}, },
destroyed() { destroyed() {
if (this.mode === 'relative' || this.mode === 'detail') { if (this.mode === 'relative' || this.mode === 'detail') {
clearInterval(this.tickId); window.clearTimeout(this.tickId);
} }
}, },
methods: { methods: {
tick() { tick() {
this.now = new Date(); this.now = new Date();
this.tickId = setTimeout(() => {
window.requestAnimationFrame(this.tick);
}, 10000);
} }
} }
}); });
@@ -0,0 +1,82 @@
<template>
<div class="ui-button" :class="[styl]">
<button :type="type" @click="$emit('click')">
<slot></slot>
</button>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
type: {
type: String,
required: false
}
},
data() {
return {
styl: 'fill'
};
},
inject: {
isCardChild: { default: false }
},
created() {
if (this.isCardChild) {
this.styl = 'line';
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark, fill)
> button
display block
width 100%
margin 0
padding 0
font-weight bold
font-size 16px
line-height 44px
border none
border-radius 6px
outline none
box-shadow none
if fill
color $theme-color-foreground
background $theme-color
&:hover
background lighten($theme-color, 5%)
&:active
background darken($theme-color, 5%)
else
color $theme-color
background none
&:hover
color darken($theme-color, 5%)
&:active
background rgba($theme-color, 0.3)
.ui-button[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
.ui-button:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
</style>
@@ -0,0 +1,46 @@
<template>
<div class="ui-card">
<header>
<slot name="title"></slot>
</header>
<slot></slot>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
provide() {
return {
isCardChild: true
};
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark)
margin 16px
padding 16px
color isDark ? #fff : #000
background isDark ? #282C37 : #fff
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
@media (min-width 500px)
padding 32px
> header
font-weight normal
font-size 24px
color isDark ? #fff : #444
.ui-card[data-darkmode]
root(true)
.ui-card:not([data-darkmode])
root(false)
</style>
@@ -0,0 +1,30 @@
<template>
<div class="ui-form">
<fieldset :disabled="disabled">
<slot></slot>
</fieldset>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
disabled: {
type: Boolean,
required: false
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
.ui-form
> fieldset
margin 0
padding 0
border none
</style>
@@ -0,0 +1,350 @@
<template>
<div class="ui-input" :class="[{ focused, filled }, styl]">
<div class="icon" ref="icon"><slot name="icon"></slot></div>
<div class="input">
<div class="password-meter" v-if="withPasswordMeter" v-show="passwordStrength != ''" :data-strength="passwordStrength">
<div class="value" ref="passwordMetar"></div>
</div>
<span class="label" ref="label"><slot></slot></span>
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
<template v-if="type != 'file'">
<input ref="input"
:type="type"
v-model="v"
:required="required"
:readonly="readonly"
:pattern="pattern"
:autocomplete="autocomplete"
:spellcheck="spellcheck"
@focus="focused = true"
@blur="focused = false">
</template>
<template v-else>
<input ref="input"
type="text"
:value="placeholder"
readonly
@click="chooseFile">
<input ref="file"
type="file"
:value="value"
@change="onChangeFile">
</template>
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
</div>
<div class="text"><slot name="text"></slot></div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
const getPasswordStrength = require('syuilo-password-strength');
export default Vue.extend({
props: {
value: {
required: false
},
type: {
type: String,
required: false
},
required: {
type: Boolean,
required: false
},
readonly: {
type: Boolean,
required: false
},
pattern: {
type: String,
required: false
},
autocomplete: {
required: false
},
spellcheck: {
required: false
},
withPasswordMeter: {
type: Boolean,
required: false,
default: false
}
},
data() {
return {
v: this.value,
focused: false,
passwordStrength: '',
styl: 'fill'
};
},
computed: {
filled(): boolean {
return this.v != '' && this.v != null;
},
placeholder(): string {
if (this.type != 'file') return null;
if (this.v == null) return null;
if (typeof this.v == 'string') return this.v;
if (Array.isArray(this.v)) {
return this.v.map(file => file.name).join(', ');
} else {
return this.v.name;
}
}
},
watch: {
value(v) {
this.v = v;
},
v(v) {
this.$emit('input', v);
if (this.withPasswordMeter) {
if (v == '') {
this.passwordStrength = '';
return;
}
const strength = getPasswordStrength(v);
this.passwordStrength = strength > 0.7 ? 'high' : strength > 0.3 ? 'medium' : 'low';
(this.$refs.passwordMetar as any).style.width = `${strength * 100}%`;
}
}
},
inject: {
isCardChild: { default: false }
},
created() {
if (this.isCardChild) {
this.styl = 'line';
}
},
mounted() {
if (this.$refs.prefix) {
this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px';
if (this.$refs.prefix.offsetWidth) {
this.$refs.input.style.paddingLeft = this.$refs.prefix.offsetWidth + 'px';
}
}
if (this.$refs.suffix) {
if (this.$refs.suffix.offsetWidth) {
this.$refs.input.style.paddingRight = this.$refs.suffix.offsetWidth + 'px';
}
}
},
methods: {
focus() {
this.$refs.input.focus();
},
chooseFile() {
this.$refs.file.click();
},
onChangeFile() {
this.v = Array.from((this.$refs.file as any).files);
this.$emit('input', this.v);
this.$emit('change', this.v);
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark, fill)
margin 32px 0
> .icon
position absolute
top 0
left 0
width 24px
text-align center
line-height 32px
color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
&:not(:empty) + .input
margin-left 28px
> .input
if !fill
&:before
content ''
display block
position absolute
bottom 0
left 0
right 0
height 1px
background isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42)
&:after
content ''
display block
position absolute
bottom 0
left 0
right 0
height 2px
background $theme-color
opacity 0
transform scaleX(0.12)
transition border 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)
will-change border opacity transform
> .password-meter
position absolute
top 0
left 0
width 100%
height 100%
border-radius 6px
overflow hidden
opacity 0.3
&[data-strength='']
display none
&[data-strength='low']
> .value
background #d73612
&[data-strength='medium']
> .value
background #d7ca12
&[data-strength='high']
> .value
background #61bb22
> .value
display block
width 0%
height 100%
background transparent
border-radius 6px
transition all 0.1s ease
> .label
position absolute
z-index 1
top fill ? 6px : 0
left 0
pointer-events none
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
transition-duration 0.3s
font-size 16px
line-height 32px
color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
pointer-events none
//will-change transform
transform-origin top left
transform scale(1)
> input
display block
width 100%
margin 0
padding 0
font inherit
font-weight fill ? bold : normal
font-size 16px
line-height 32px
color isDark ? #fff : #000
background transparent
border none
border-radius 0
outline none
box-shadow none
if fill
padding 6px 12px
background rgba(#000, 0.035)
border-radius 6px
&[type='file']
display none
> .prefix
> .suffix
display block
position absolute
z-index 1
top 0
font-size 16px
line-height fill ? 44px : 32px
color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
pointer-events none
&:empty
display none
> *
display block
min-width 16px
max-width 150px
overflow hidden
white-space nowrap
text-overflow ellipsis
> .prefix
left 0
padding-right 4px
if fill
padding-left 12px
> .suffix
right 0
padding-left 4px
if fill
padding-right 12px
> .text
margin 6px 0
font-size 13px
*
margin 0
&.focused
> .input
if fill
background rgba(#000, 0.05)
else
&:after
opacity 1
transform scaleX(1)
> .label
color $theme-color
&.focused
&.filled
> .input
> .label
top fill ? -24px : -17px
left 0 !important
transform scale(0.75)
.ui-input[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
.ui-input:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
</style>
@@ -0,0 +1,120 @@
<template>
<div
class="ui-radio"
:class="{ disabled, checked }"
:aria-checked="checked"
:aria-disabled="disabled"
@click="toggle"
>
<input type="radio"
:disabled="disabled"
>
<span class="button">
<span></span>
</span>
<span class="label"><slot></slot></span>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
model: {
prop: 'model',
event: 'change'
},
props: {
model: {
type: String,
required: false
},
value: {
type: String,
required: false
},
disabled: {
type: Boolean,
default: false
}
},
computed: {
checked(): boolean {
return this.model === this.value;
}
},
methods: {
toggle() {
this.$emit('change', this.value);
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark)
display inline-block
margin 32px 32px 32px 0
cursor pointer
transition all 0.3s
> *
user-select none
&.disabled
opacity 0.6
cursor not-allowed
&.checked
> .button
border-color $theme-color
&:after
background-color $theme-color
transform scale(1)
opacity 1
> input
position absolute
width 0
height 0
opacity 0
margin 0
> .button
position absolute
width 20px
height 20px
background none
border solid 2px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
border-radius 100%
transition inherit
&:after
content ''
display block
position absolute
top 3px
right 3px
bottom 3px
left 3px
border-radius 100%
opacity 0
transform scale(0)
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
> .label
margin-left 28px
display block
font-size 16px
line-height 20px
cursor pointer
.ui-radio[data-darkmode]
root(true)
.ui-radio:not([data-darkmode])
root(false)
</style>
@@ -0,0 +1,215 @@
<template>
<div class="ui-select" :class="[{ focused, filled }, styl]">
<div class="icon" ref="icon"><slot name="icon"></slot></div>
<div class="input" @click="focus">
<span class="label" ref="label"><slot name="label"></slot></span>
<div class="prefix" ref="prefix"><slot name="prefix"></slot></div>
<select ref="input"
:value="v"
:required="required"
@input="$emit('input', $event.target.value)"
@focus="focused = true"
@blur="focused = false">
<slot></slot>
</select>
<div class="suffix"><slot name="suffix"></slot></div>
</div>
<div class="text"><slot name="text"></slot></div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: {
value: {
required: false
},
required: {
type: Boolean,
required: false
}
},
data() {
return {
v: this.value,
focused: false,
styl: 'fill'
};
},
computed: {
filled(): boolean {
return this.v != '' && this.v != null;
}
},
watch: {
value(v) {
this.v = v;
}
},
inject: {
isCardChild: { default: false }
},
created() {
if (this.isCardChild) {
this.styl = 'line';
}
},
mounted() {
if (this.$refs.prefix) {
this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px';
}
},
methods: {
focus() {
this.$refs.input.focus();
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark, fill)
margin 32px 0
> .icon
position absolute
top 0
left 0
width 24px
text-align center
line-height 32px
color rgba(#000, 0.54)
&:not(:empty) + .input
margin-left 28px
> .input
display flex
if fill
padding 6px 12px
background rgba(#000, 0.035)
border-radius 6px
else
&:before
content ''
display block
position absolute
bottom 0
left 0
right 0
height 1px
background isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42)
&:after
content ''
display block
position absolute
bottom 0
left 0
right 0
height 2px
background $theme-color
opacity 0
transform scaleX(0.12)
transition border 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)
will-change border opacity transform
> .label
position absolute
top fill ? 6px : 0
left 0
pointer-events none
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
transition-duration 0.3s
font-size 16px
line-height 32px
color rgba(#000, 0.54)
pointer-events none
//will-change transform
transform-origin top left
transform scale(1)
> select
display block
flex 1
width 100%
padding 0
font inherit
font-weight fill ? bold : normal
font-size 16px
height 32px
color isDark ? #fff : #000
background transparent
border none
border-radius 0
outline none
box-shadow none
*
color #000
> .prefix
> .suffix
display block
align-self center
justify-self center
font-size 16px
line-height 32px
color rgba(#000, 0.54)
pointer-events none
> *
display block
min-width 16px
> .prefix
padding-right 4px
> .suffix
padding-left 4px
> .text
margin 6px 0
font-size 13px
*
margin 0
&.focused
> .input
if fill
background rgba(#000, 0.05)
else
&:after
opacity 1
transform scaleX(1)
> .label
color $theme-color
&.focused
&.filled
> .input
> .label
top fill ? -24px : -17px
left 0 !important
transform scale(0.75)
.ui-select[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
.ui-select:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
</style>
@@ -0,0 +1,135 @@
<template>
<div
class="ui-switch"
:class="{ disabled, checked }"
role="switch"
:aria-checked="checked"
:aria-disabled="disabled"
@click="toggle"
>
<input
type="checkbox"
ref="input"
:disabled="disabled"
@keydown.enter="toggle"
>
<span class="button">
<span></span>
</span>
<span class="label">
<span :aria-hidden="!checked"><slot></slot></span>
<p :aria-hidden="!checked">
<slot name="text"></slot>
</p>
</span>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
model: {
prop: 'value',
event: 'change'
},
props: {
value: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
}
},
computed: {
checked(): boolean {
return this.value;
}
},
methods: {
toggle() {
this.$emit('change', !this.checked);
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark)
display flex
margin 32px 0
cursor pointer
transition all 0.3s
> *
user-select none
&.disabled
opacity 0.6
cursor not-allowed
&.checked
> .button
background-color rgba($theme-color, 0.4)
border-color rgba($theme-color, 0.4)
> *
background-color $theme-color
transform translateX(14px)
> input
position absolute
width 0
height 0
opacity 0
margin 0
> .button
display inline-block
margin 3px 0 0 0
width 34px
height 14px
background isDark ? rgba(#fff, 0.15) : rgba(#000, 0.25)
outline none
border-radius 14px
transition inherit
> *
position absolute
top -3px
left 0
border-radius 100%
transition background-color 0.3s, transform 0.3s
width 20px
height 20px
background-color #fff
box-shadow 0 2px 1px -1px rgba(#000, 0.2), 0 1px 1px 0 rgba(#000, 0.14), 0 1px 3px 0 rgba(#000, 0.12)
> .label
margin-left 8px
display block
font-size 16px
cursor pointer
transition inherit
> span
display block
line-height 20px
color isDark ? #c4ccd2 : rgba(#000, 0.75)
transition inherit
> p
margin 0
//font-size 90%
color isDark ? #78858e : #9daab3
.ui-switch[data-darkmode]
root(true)
.ui-switch:not([data-darkmode])
root(false)
</style>
@@ -0,0 +1,174 @@
<template>
<div class="ui-textarea" :class="{ focused, filled }">
<div class="input">
<span class="label" ref="label"><slot></slot></span>
<textarea ref="input"
:value="value"
:required="required"
:readonly="readonly"
:pattern="pattern"
:autocomplete="autocomplete"
@input="$emit('input', $event.target.value)"
@focus="focused = true"
@blur="focused = false">
</textarea>
</div>
<div class="text"><slot name="text"></slot></div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
const getPasswordStrength = require('syuilo-password-strength');
export default Vue.extend({
props: {
value: {
required: false
},
required: {
type: Boolean,
required: false
},
readonly: {
type: Boolean,
required: false
},
pattern: {
type: String,
required: false
},
autocomplete: {
type: String,
required: false
}
},
data() {
return {
focused: false,
passwordStrength: ''
}
},
computed: {
filled(): boolean {
return this.value != '' && this.value != null;
}
},
methods: {
focus() {
this.$refs.input.focus();
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
root(isDark, fill)
margin 42px 0 32px 0
> .input
padding 12px
if fill
background rgba(#000, 0.035)
border-radius 6px
else
&:before
content ''
display block
position absolute
top 0
bottom 0
left 0
right 0
background none
border solid 1px isDark ? rgba(#fff, 0.7) : rgba(#000, 0.42)
border-radius 3px
pointer-events none
&:after
content ''
display block
position absolute
top 0
bottom 0
left 0
right 0
background none
border solid 2px $theme-color
border-radius 3px
opacity 0
transition opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1)
pointer-events none
> .label
position absolute
top 6px
left 12px
pointer-events none
transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
transition-duration 0.3s
font-size 16px
line-height 32px
color isDark ? rgba(#fff, 0.7) : rgba(#000, 0.54)
pointer-events none
//will-change transform
transform-origin top left
transform scale(1)
> textarea
display block
width 100%
min-height 100px
padding 0
font inherit
font-weight fill ? bold : normal
font-size 16px
color isDark ? #fff : #000
background transparent
border none
border-radius 0
outline none
box-shadow none
> .text
margin 6px 0
font-size 13px
*
margin 0
&.focused
> .input
if fill
background rgba(#000, 0.05)
else
&:after
opacity 1
> .label
color $theme-color
&.focused
&.filled
> .input
> .label
top -24px
left 0 !important
transform scale(0.75)
.ui-textarea[data-darkmode]
&.fill
root(true, true)
&:not(.fill)
root(true, false)
.ui-textarea:not([data-darkmode])
&.fill
root(false, true)
&:not(.fill)
root(false, false)
</style>
@@ -203,6 +203,7 @@ root(isDark)
justify-content center justify-content center
align-items center align-items center
margin-right 10px margin-right 10px
width 16px
> *:last-child > *:last-child
flex 1 1 auto flex 1 1 auto
@@ -13,7 +13,7 @@
</div> </div>
</header> </header>
<div class="text"> <div class="text">
<mk-note-html v-if="note.text" :text="note.text"/> <misskey-flavored-markdown v-if="note.text" :text="note.text"/>
</div> </div>
</div> </div>
</div> </div>
@@ -24,6 +24,13 @@
import Vue from 'vue'; import Vue from 'vue';
export default Vue.extend({ export default Vue.extend({
props: {
max: {
type: Number,
required: false,
default: undefined
}
},
data() { data() {
return { return {
fetching: true, fetching: true,
@@ -37,6 +44,7 @@ export default Vue.extend({
fetch(cb?) { fetch(cb?) {
this.fetching = true; this.fetching = true;
(this as any).api('notes', { (this as any).api('notes', {
limit: this.max,
local: true, local: true,
reply: false, reply: false,
renote: false, renote: false,
@@ -109,6 +117,9 @@ root(isDark)
> .created-at > .created-at
color isDark ? #606984 : #c0c0c0 color isDark ? #606984 : #c0c0c0
> .text
text-align left
.mk-welcome-timeline[data-darkmode] .mk-welcome-timeline[data-darkmode]
root(true) root(true)
+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>
@@ -0,0 +1,89 @@
<template>
<svg :viewBox="`0 0 ${ viewBoxX } ${ viewBoxY }`" style="overflow:visible">
<defs>
<linearGradient :id="gradientId" x1="0" x2="0" y1="1" y2="0">
<stop offset="0%" stop-color="hsl(200, 80%, 70%)"></stop>
<stop offset="100%" stop-color="hsl(90, 80%, 70%)"></stop>
</linearGradient>
<mask :id="maskId" x="0" y="0" :width="viewBoxX" :height="viewBoxY">
<polygon
:points="polygonPoints"
fill="#fff"
fill-opacity="0.5"/>
<polyline
:points="polylinePoints"
fill="none"
stroke="#fff"
stroke-width="2"/>
<circle
:cx="headX"
:cy="headY"
r="3"
fill="#fff"/>
</mask>
</defs>
<rect
x="-10" y="-10"
:width="viewBoxX + 20" :height="viewBoxY + 20"
:style="`stroke: none; fill: url(#${ gradientId }); mask: url(#${ maskId })`"/>
</svg>
</template>
<script lang="ts">
import Vue from 'vue';
import * as uuid from 'uuid';
export default Vue.extend({
props: {
src: {
type: Array,
required: true
}
},
data() {
return {
viewBoxX: 50,
viewBoxY: 30,
gradientId: uuid(),
maskId: uuid(),
polylinePoints: '',
polygonPoints: '',
headX: null,
headY: null,
clock: null
};
},
watch: {
src() {
this.draw();
}
},
created() {
this.draw();
// VueWatch
this.clock = setInterval(this.draw, 1000);
},
beforeDestroy() {
clearInterval(this.clock);
},
methods: {
draw() {
const stats = this.src.slice().reverse();
const peak = Math.max.apply(null, stats) || 1;
const polylinePoints = stats.map((n, i) => [
i * (this.viewBoxX / (stats.length - 1)),
(1 - (n / peak)) * this.viewBoxY
]);
this.polylinePoints = polylinePoints.map(xy => `${xy[0]},${xy[1]}`).join(' ');
this.polygonPoints = `0,${ this.viewBoxY } ${ this.polylinePoints } ${ this.viewBoxX },${ this.viewBoxY }`;
this.headX = polylinePoints[polylinePoints.length - 1][0];
this.headY = polylinePoints[polylinePoints.length - 1][1];
}
}
});
</script>
@@ -0,0 +1,121 @@
<template>
<div class="mkw-hashtags">
<mk-widget-container :show-header="!props.compact">
<template slot="header">%fa:hashtag%%i18n:@title%</template>
<div class="mkw-hashtags--body" :data-mobile="platform == 'mobile'">
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
<p class="empty" v-else-if="stats.length == 0">%fa:exclamation-circle%%i18n:@empty%</p>
<!-- トランジションを有効にするとなぜかメモリリークする -->
<!-- <transition-group v-else tag="div" name="chart"> -->
<div>
<div v-for="stat in stats" :key="stat.tag">
<div class="tag">
<router-link :to="`/tags/${ stat.tag }`" :title="stat.tag">#{{ stat.tag }}</router-link>
<p>{{ '%i18n:@count%'.replace('{}', stat.usersCount) }}</p>
</div>
<x-chart class="chart" :src="stat.chart"/>
</div>
</div>
<!-- </transition-group> -->
</div>
</mk-widget-container>
</div>
</template>
<script lang="ts">
import define from '../../../common/define-widget';
import XChart from './hashtags.chart.vue';
export default define({
name: 'hashtags',
props: () => ({
compact: false
})
}).extend({
components: {
XChart
},
data() {
return {
stats: [],
fetching: true,
clock: null
};
},
mounted() {
this.fetch();
this.clock = setInterval(this.fetch, 1000 * 60);
},
beforeDestroy() {
clearInterval(this.clock);
},
methods: {
func() {
this.props.compact = !this.props.compact;
this.save();
},
fetch() {
(this as any).api('hashtags/trend').then(stats => {
this.stats = stats;
this.fetching = false;
});
}
}
});
</script>
<style lang="stylus" scoped>
root(isDark)
.mkw-hashtags--body
> .fetching
> .empty
margin 0
padding 16px
text-align center
color #aaa
> [data-fa]
margin-right 4px
> div
.chart-move
transition transform 1s ease
> div
display flex
align-items center
padding 14px 16px
&:not(:last-child)
border-bottom solid 1px isDark ? #393f4f : #eee
> .tag
flex 1
overflow hidden
font-size 14px
color isDark ? #9baec8 : #65727b
> a
display block
width 100%
white-space nowrap
overflow hidden
text-overflow ellipsis
color inherit
> p
margin 0
font-size 75%
opacity 0.7
> .chart
height 30px
.mkw-hashtags[data-darkmode]
root(true)
.mkw-hashtags:not([data-darkmode])
root(false)
</style>
@@ -13,6 +13,7 @@ import wSlideshow from './slideshow.vue';
import wTips from './tips.vue'; import wTips from './tips.vue';
import wDonation from './donation.vue'; import wDonation from './donation.vue';
import wNav from './nav.vue'; import wNav from './nav.vue';
import wHashtags from './hashtags.vue';
Vue.component('mkw-analog-clock', wAnalogClock); Vue.component('mkw-analog-clock', wAnalogClock);
Vue.component('mkw-nav', wNav); Vue.component('mkw-nav', wNav);
@@ -27,3 +28,4 @@ Vue.component('mkw-posts-monitor', wPostsMonitor);
Vue.component('mkw-memo', wMemo); Vue.component('mkw-memo', wMemo);
Vue.component('mkw-rss', wRss); Vue.component('mkw-rss', wRss);
Vue.component('mkw-version', wVersion); Vue.component('mkw-version', wVersion);
Vue.component('mkw-hashtags', wHashtags);
+10
View File
@@ -1,12 +1,16 @@
declare const _HOST_: string; declare const _HOST_: string;
declare const _HOSTNAME_: string; declare const _HOSTNAME_: string;
declare const _URL_: string; declare const _URL_: string;
declare const _NAME_: string;
declare const _DESCRIPTION_: string;
declare const _API_URL_: string; declare const _API_URL_: string;
declare const _WS_URL_: string; declare const _WS_URL_: string;
declare const _DOCS_URL_: string; 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;
@@ -17,16 +21,21 @@ declare const _VERSION_: string;
declare const _CODENAME_: string; declare const _CODENAME_: string;
declare const _LICENSE_: string; declare const _LICENSE_: string;
declare const _GOOGLE_MAPS_API_KEY_: string; declare const _GOOGLE_MAPS_API_KEY_: string;
declare const _WELCOME_BG_URL_: string;
export const host = _HOST_; export const host = _HOST_;
export const hostname = _HOSTNAME_; export const hostname = _HOSTNAME_;
export const url = _URL_; export const url = _URL_;
export const name = _NAME_;
export const description = _DESCRIPTION_;
export const apiUrl = _API_URL_; export const apiUrl = _API_URL_;
export const wsUrl = _WS_URL_; export const wsUrl = _WS_URL_;
export const docsUrl = _DOCS_URL_; 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_;
@@ -37,3 +46,4 @@ export const version = _VERSION_;
export const codename = _CODENAME_; export const codename = _CODENAME_;
export const license = _LICENSE_; export const license = _LICENSE_;
export const googleMapsApiKey = _GOOGLE_MAPS_API_KEY_; export const googleMapsApiKey = _GOOGLE_MAPS_API_KEY_;
export const welcomeBgUrl = _WELCOME_BG_URL_;
@@ -21,7 +21,7 @@ export default (os: OS) => opts => {
res(file); res(file);
}; };
window.open(url + '/selectdrive', window.open(url + `/selectdrive?multiple=${o.multiple}`,
'choose_drive_window', 'choose_drive_window',
'height=500, width=800'); 'height=500, width=800');
} }
+21 -33
View File
@@ -33,7 +33,10 @@ import MkHomeCustomize from './views/pages/home-customize.vue';
import MkMessagingRoom from './views/pages/messaging-room.vue'; import MkMessagingRoom from './views/pages/messaging-room.vue';
import MkNote from './views/pages/note.vue'; import MkNote from './views/pages/note.vue';
import MkSearch from './views/pages/search.vue'; import MkSearch from './views/pages/search.vue';
import MkOthello from './views/pages/othello.vue'; import MkTag from './views/pages/tag.vue';
import MkReversi from './views/pages/reversi.vue';
import MkShare from './views/pages/share.vue';
import MkFollow from '../common/views/pages/follow.vue';
/** /**
* init * init
@@ -60,10 +63,13 @@ init(async (launch) => {
{ path: '/i/lists/:list', component: MkUserList }, { path: '/i/lists/:list', component: MkUserList },
{ path: '/selectdrive', component: MkSelectDrive }, { path: '/selectdrive', component: MkSelectDrive },
{ path: '/search', component: MkSearch }, { path: '/search', component: MkSearch },
{ path: '/othello', component: MkOthello }, { path: '/tags/:tag', component: MkTag },
{ path: '/othello/:game', component: MkOthello }, { path: '/share', component: MkShare },
{ path: '/reversi', 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 }
] ]
}); });
@@ -111,6 +117,15 @@ function registerNotifications(stream: HomeStreamManager) {
}); });
function attach(connection) { function attach(connection) {
connection.on('notification', notification => {
const _n = composeNotification('notification', notification);
const n = new Notification(_n.title, {
body: _n.body,
icon: _n.icon
});
setTimeout(n.close.bind(n), 6000);
});
connection.on('drive_file_created', file => { connection.on('drive_file_created', file => {
const _n = composeNotification('drive_file_created', file); const _n = composeNotification('drive_file_created', file);
const n = new Notification(_n.title, { const n = new Notification(_n.title, {
@@ -120,33 +135,6 @@ function registerNotifications(stream: HomeStreamManager) {
setTimeout(n.close.bind(n), 5000); setTimeout(n.close.bind(n), 5000);
}); });
connection.on('mention', note => {
const _n = composeNotification('mention', note);
const n = new Notification(_n.title, {
body: _n.body,
icon: _n.icon
});
setTimeout(n.close.bind(n), 6000);
});
connection.on('reply', note => {
const _n = composeNotification('reply', note);
const n = new Notification(_n.title, {
body: _n.body,
icon: _n.icon
});
setTimeout(n.close.bind(n), 6000);
});
connection.on('quote', note => {
const _n = composeNotification('quote', note);
const n = new Notification(_n.title, {
body: _n.body,
icon: _n.icon
});
setTimeout(n.close.bind(n), 6000);
});
connection.on('unread_messaging_message', message => { connection.on('unread_messaging_message', message => {
const _n = composeNotification('unread_messaging_message', message); const _n = composeNotification('unread_messaging_message', message);
const n = new Notification(_n.title, { const n = new Notification(_n.title, {
@@ -162,8 +150,8 @@ function registerNotifications(stream: HomeStreamManager) {
setTimeout(n.close.bind(n), 7000); setTimeout(n.close.bind(n), 7000);
}); });
connection.on('othello_invited', matching => { connection.on('reversi_invited', matching => {
const _n = composeNotification('othello_invited', matching); const _n = composeNotification('reversi_invited', matching);
const n = new Notification(_n.title, { const n = new Notification(_n.title, {
body: _n.body, body: _n.body,
icon: _n.icon icon: _n.icon
@@ -23,12 +23,12 @@ export default Vue.extend({
let x = this.x; let x = this.x;
let y = this.y; let y = this.y;
if (x + width > window.innerWidth) { if (x + width - window.pageXOffset > window.innerWidth) {
x = window.innerWidth - width; x = window.innerWidth - width + window.pageXOffset;
} }
if (y + height > window.innerHeight) { if (y + height - window.pageYOffset > window.innerHeight) {
y = window.innerHeight - height; y = window.innerHeight - height + window.pageYOffset;
} }
this.$el.style.left = x + 'px'; this.$el.style.left = x + 'px';
@@ -145,7 +145,7 @@ export default Vue.extend({
(this as any).api('drive/files/update', { (this as any).api('drive/files/update', {
fileId: this.file.id, fileId: this.file.id,
name: name name: name
}) });
}); });
}, },
@@ -173,7 +173,9 @@ export default Vue.extend({
}, },
deleteFile() { deleteFile() {
alert('not implemented yet'); (this as any).api('drive/files/delete', {
fileId: this.file.id
});
} }
} }
}); });
@@ -118,6 +118,7 @@ export default Vue.extend({
this.connection.on('file_created', this.onStreamDriveFileCreated); this.connection.on('file_created', this.onStreamDriveFileCreated);
this.connection.on('file_updated', this.onStreamDriveFileUpdated); this.connection.on('file_updated', this.onStreamDriveFileUpdated);
this.connection.on('file_deleted', this.onStreamDriveFileDeleted);
this.connection.on('folder_created', this.onStreamDriveFolderCreated); this.connection.on('folder_created', this.onStreamDriveFolderCreated);
this.connection.on('folder_updated', this.onStreamDriveFolderUpdated); this.connection.on('folder_updated', this.onStreamDriveFolderUpdated);
@@ -130,6 +131,7 @@ export default Vue.extend({
beforeDestroy() { beforeDestroy() {
this.connection.off('file_created', this.onStreamDriveFileCreated); this.connection.off('file_created', this.onStreamDriveFileCreated);
this.connection.off('file_updated', this.onStreamDriveFileUpdated); this.connection.off('file_updated', this.onStreamDriveFileUpdated);
this.connection.off('file_deleted', this.onStreamDriveFileDeleted);
this.connection.off('folder_created', this.onStreamDriveFolderCreated); this.connection.off('folder_created', this.onStreamDriveFolderCreated);
this.connection.off('folder_updated', this.onStreamDriveFolderUpdated); this.connection.off('folder_updated', this.onStreamDriveFolderUpdated);
(this as any).os.streams.driveStream.dispose(this.connectionId); (this as any).os.streams.driveStream.dispose(this.connectionId);
@@ -167,6 +169,10 @@ export default Vue.extend({
} }
}, },
onStreamDriveFileDeleted(fileId) {
this.removeFile(fileId);
},
onStreamDriveFolderCreated(folder) { onStreamDriveFolderCreated(folder) {
this.addFolder(folder, true); this.addFolder(folder, true);
}, },
@@ -1,7 +1,7 @@
<template> <template>
<mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy"> <mk-window ref="window" width="500px" height="560px" :popout-url="popout" @closed="$destroy">
<span slot="header" :class="$style.header">%fa:gamepad%%i18n:@game%</span> <span slot="header" :class="$style.header">%fa:gamepad%%i18n:@game%</span>
<mk-othello :class="$style.content" @gamed="g => game = g"/> <mk-reversi :class="$style.content" @gamed="g => game = g"/>
</mk-window> </mk-window>
</template> </template>
@@ -18,8 +18,8 @@ export default Vue.extend({
computed: { computed: {
popout(): string { popout(): string {
return this.game return this.game
? `${url}/othello/${this.game.id}` ? `${url}/reversi/${this.game.id}`
: `${url}/othello`; : `${url}/reversi`;
} }
} }
}); });
@@ -23,6 +23,7 @@
<option value="post-form">%i18n:common.widgets.post-form%</option> <option value="post-form">%i18n:common.widgets.post-form%</option>
<option value="messaging">%i18n:common.widgets.messaging%</option> <option value="messaging">%i18n:common.widgets.messaging%</option>
<option value="memo">%i18n:common.widgets.memo%</option> <option value="memo">%i18n:common.widgets.memo%</option>
<option value="hashtags">%i18n:common.widgets.hashtags%</option>
<option value="posts-monitor">%i18n:common.widgets.posts-monitor%</option> <option value="posts-monitor">%i18n:common.widgets.posts-monitor%</option>
<option value="server">%i18n:common.widgets.server%</option> <option value="server">%i18n:common.widgets.server%</option>
<option value="donation">%i18n:common.widgets.donation%</option> <option value="donation">%i18n:common.widgets.donation%</option>
@@ -65,7 +66,7 @@
</div> </div>
<div class="main"> <div class="main">
<mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/> <mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
<mk-timeline class="tl" cref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/> <mk-timeline class="tl" ref="tl" @loaded="onTlLoaded" v-if="mode == 'timeline'"/>
</div> </div>
</template> </template>
</div> </div>
@@ -83,7 +84,7 @@ const defaultDesktopHomeWidgets = {
'calendar', 'calendar',
'activity', 'activity',
'rss', 'rss',
'trends', 'hashtags',
'photo-stream', 'photo-stream',
'version' 'version'
], ],
@@ -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'],
@@ -40,16 +40,13 @@
<div class="text"> <div class="text">
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span> <span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span> <span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
<mk-note-html v-if="p.text" :text="p.text" :i="$store.state.i"/> <misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
</div> </div>
<div class="media" v-if="p.media.length > 0"> <div class="media" v-if="p.media.length > 0">
<mk-media-list :media-list="p.media" :raw="true"/> <mk-media-list :media-list="p.media" :raw="true"/>
</div> </div>
<mk-poll v-if="p.poll" :note="p"/> <mk-poll v-if="p.poll" :note="p"/>
<mk-url-preview v-for="url in urls" :url="url" :key="url"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
<div class="tags" v-if="p.tags && p.tags.length > 0">
<router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
</div>
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a> <a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
<div class="map" v-if="p.geo" ref="map"></div> <div class="map" v-if="p.geo" ref="map"></div>
<div class="renote" v-if="p.renote"> <div class="renote" v-if="p.renote">
@@ -83,7 +80,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify'; import dateStringify from '../../../common/scripts/date-stringify';
import parse from '../../../../../text/parse'; import parse from '../../../../../mfm/parse';
import MkPostFormWindow from './post-form-window.vue'; import MkPostFormWindow from './post-form-window.vue';
import MkRenoteFormWindow from './renote-form-window.vue'; import MkRenoteFormWindow from './renote-form-window.vue';
@@ -363,35 +360,6 @@ root(isDark)
> .mk-url-preview > .mk-url-preview
margin-top 8px margin-top 8px
> .tags
margin 4px 0 0 0
> *
display inline-block
margin 0 8px 0 0
padding 2px 8px 2px 16px
font-size 90%
color #8d969e
background #edf0f3
border-radius 4px
&:before
content ""
display block
position absolute
top 0
bottom 0
left 4px
width 8px
height 8px
margin auto 0
background #fff
border-radius 100%
&:hover
text-decoration none
background #e2e7ec
> footer > footer
font-size 1.2em font-size 1.2em
@@ -1,6 +1,6 @@
<template> <template>
<div class="mk-note-preview" :title="title"> <div class="mk-note-preview" :title="title">
<mk-avatar class="avatar" :user="note.user"/> <mk-avatar class="avatar" :user="note.user" v-if="!mini"/>
<div class="main"> <div class="main">
<mk-note-header class="header" :note="note" :mini="true"/> <mk-note-header class="header" :note="note" :mini="true"/>
<div class="body"> <div class="body">
@@ -15,7 +15,17 @@ import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify'; import dateStringify from '../../../common/scripts/date-stringify';
export default Vue.extend({ export default Vue.extend({
props: ['note'], props: {
note: {
type: Object,
required: true
},
mini: {
type: Boolean,
required: false,
default: false
}
},
computed: { computed: {
title(): string { title(): string {
return dateStringify(this.note.createdAt); return dateStringify(this.note.createdAt);
@@ -25,16 +25,13 @@
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span> <span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span> <span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
<a class="reply" v-if="p.reply">%fa:reply%</a> <a class="reply" v-if="p.reply">%fa:reply%</a>
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="$store.state.i" :class="$style.text"/> <misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i" :class="$style.text"/>
<a class="rp" v-if="p.renote">RP:</a> <a class="rp" v-if="p.renote">RP:</a>
</div> </div>
<div class="media" v-if="p.media.length > 0"> <div class="media" v-if="p.media.length > 0">
<mk-media-list :media-list="p.media"/> <mk-media-list :media-list="p.media"/>
</div> </div>
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/> <mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
<div class="tags" v-if="p.tags && p.tags.length > 0">
<router-link v-for="tag in p.tags" :key="tag" :to="`/search?q=#${tag}`">{{ tag }}</router-link>
</div>
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a> <a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
<div class="map" v-if="p.geo" ref="map"></div> <div class="map" v-if="p.geo" ref="map"></div>
<div class="renote" v-if="p.renote"> <div class="renote" v-if="p.renote">
@@ -75,8 +72,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify'; import dateStringify from '../../../common/scripts/date-stringify';
import canHideText from '../../../common/scripts/can-hide-text'; import parse from '../../../../../mfm/parse';
import parse from '../../../../../text/parse';
import MkPostFormWindow from './post-form-window.vue'; import MkPostFormWindow from './post-form-window.vue';
import MkRenoteFormWindow from './renote-form-window.vue'; import MkRenoteFormWindow from './renote-form-window.vue';
@@ -190,8 +186,6 @@ export default Vue.extend({
}, },
methods: { methods: {
canHideText,
capture(withHandler = false) { capture(withHandler = false) {
if (this.$store.getters.isSignedIn) { if (this.$store.getters.isSignedIn) {
this.connection.send({ this.connection.send({
@@ -468,35 +462,6 @@ root(isDark)
&:empty &:empty
display none display none
> .tags
margin 4px 0 0 0
> *
display inline-block
margin 0 8px 0 0
padding 2px 8px 2px 16px
font-size 90%
color #8d969e
background isDark ? #313543 : #edf0f3
border-radius 4px
&:before
content ""
display block
position absolute
top 0
bottom 0
left 4px
width 8px
height 8px
margin auto 0
background isDark ? #282c37 : #fff
border-radius 100%
&:hover
text-decoration none
background #e2e7ec
.mk-url-preview .mk-url-preview
margin-top 8px margin-top 8px
@@ -9,7 +9,9 @@
<button @click="resolveInitPromise">%i18n:@retry%</button> <button @click="resolveInitPromise">%i18n:@retry%</button>
</div> </div>
<transition-group name="mk-notes" class="transition"> <!-- トランジションを有効にするとなぜかメモリリークする -->
<!--<transition-group name="mk-notes" class="transition">-->
<div class="notes">
<template v-for="(note, i) in _notes"> <template v-for="(note, i) in _notes">
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/> <x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date"> <p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
@@ -17,7 +19,8 @@
<span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span> <span>%fa:angle-down%{{ _notes[i + 1]._datetext }}</span>
</p> </p>
</template> </template>
</transition-group> </div>
<!--</transition-group>-->
<footer v-if="more"> <footer v-if="more">
<button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }"> <button @click="loadMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
@@ -31,7 +34,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import { url } from '../../../config'; import { url } from '../../../config';
import getNoteSummary from '../../../../../renderers/get-note-summary'; import getNoteSummary from '../../../../../misc/get-note-summary';
import XNote from './notes.note.vue'; import XNote from './notes.note.vue';
@@ -221,6 +224,7 @@ root(isDark)
> * > *
transition transform .3s ease, opacity .3s ease transition transform .3s ease, opacity .3s ease
> .notes
> .date > .date
display block display block
margin 0 margin 0
@@ -1,7 +1,9 @@
<template> <template>
<div class="mk-notifications"> <div class="mk-notifications">
<div class="notifications" v-if="notifications.length != 0"> <div class="notifications" v-if="notifications.length != 0">
<transition-group name="mk-notifications" class="transition"> <!-- トランジションを有効にするとなぜかメモリリークする -->
<!-- <transition-group name="mk-notifications" class="transition"> -->
<div>
<template v-for="(notification, i) in _notifications"> <template v-for="(notification, i) in _notifications">
<div class="notification" :class="notification.type" :key="notification.id"> <div class="notification" :class="notification.type" :key="notification.id">
<mk-time :time="notification.createdAt"/> <mk-time :time="notification.createdAt"/>
@@ -95,7 +97,8 @@
<span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span> <span>%fa:angle-down%{{ _notifications[i + 1]._datetext }}</span>
</p> </p>
</template> </template>
</transition-group> </div>
<!-- </transition-group> -->
</div> </div>
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications"> <button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }} <template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
@@ -107,7 +110,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import getNoteSummary from '../../../../../renderers/get-note-summary'; import getNoteSummary from '../../../../../misc/get-note-summary';
export default Vue.extend({ export default Vue.extend({
data() { data() {
@@ -201,7 +204,7 @@ root(isDark)
transition transform .3s ease, opacity .3s ease transition transform .3s ease, opacity .3s ease
> .notifications > .notifications
> * > div
> .notification > .notification
margin 0 margin 0
padding 16px padding 16px
@@ -49,7 +49,8 @@ import Vue from 'vue';
import * as XDraggable from 'vuedraggable'; import * as XDraggable from 'vuedraggable';
import getKao from '../../../common/scripts/get-kao'; import getKao from '../../../common/scripts/get-kao';
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue'; import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
import parse from '../../../../../text/parse'; import parse from '../../../../../mfm/parse';
import { host } from '../../../config';
export default Vue.extend({ export default Vue.extend({
components: { components: {
@@ -57,7 +58,25 @@ export default Vue.extend({
MkVisibilityChooser MkVisibilityChooser
}, },
props: ['reply', 'renote'], props: {
reply: {
type: Object,
required: false
},
renote: {
type: Object,
required: false
},
initialText: {
type: String,
required: false
},
instant: {
type: Boolean,
required: false,
default: false
}
},
data() { data() {
return { return {
@@ -117,6 +136,10 @@ export default Vue.extend({
}, },
mounted() { mounted() {
if (this.initialText) {
this.text = this.initialText;
}
if (this.reply && this.reply.user.host != null) { if (this.reply && this.reply.user.host != null) {
this.text = `@${this.reply.user.username}@${this.reply.user.host} `; this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
} }
@@ -129,6 +152,7 @@ export default Vue.extend({
// //
if (this.$store.state.i.username == x.username && x.host == null) return; if (this.$store.state.i.username == x.username && x.host == null) return;
if (this.$store.state.i.username == x.username && x.host == host) return;
// //
if (this.text.indexOf(`${mention} `) != -1) return; if (this.text.indexOf(`${mention} `) != -1) return;
@@ -139,17 +163,19 @@ export default Vue.extend({
this.$nextTick(() => { this.$nextTick(() => {
// 稿 // 稿
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId]; if (!this.instant) {
if (draft) { const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
this.text = draft.data.text; if (draft) {
this.files = draft.data.files; this.text = draft.data.text;
if (draft.data.poll) { this.files = draft.data.files;
this.poll = true; if (draft.data.poll) {
this.$nextTick(() => { this.poll = true;
(this.$refs.poll as any).set(draft.data.poll); this.$nextTick(() => {
}); (this.$refs.poll as any).set(draft.data.poll);
});
}
this.$emit('change-attached-media', this.files);
} }
this.$emit('change-attached-media', this.files);
} }
this.$nextTick(() => this.watch()); this.$nextTick(() => this.watch());
@@ -347,6 +373,8 @@ export default Vue.extend({
}, },
saveDraft() { saveDraft() {
if (this.instant) return;
const data = JSON.parse(localStorage.getItem('drafts') || '{}'); const data = JSON.parse(localStorage.getItem('drafts') || '{}');
data[this.draftId] = { data[this.draftId] = {
@@ -45,6 +45,7 @@
<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/> <mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/> <mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/> <mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
</div> </div>
<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/> <mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/> <mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
@@ -53,6 +54,7 @@
<mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%"> <mk-switch v-model="$store.state.settings.showMaps" @change="onChangeShowMaps" text="%i18n:@show-maps%">
<span>%i18n:@show-maps-desc%</span> <span>%i18n:@show-maps-desc%</span>
</mk-switch> </mk-switch>
<mk-switch v-model="$store.state.settings.reversiBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
</section> </section>
<section class="web" v-show="page == 'web'"> <section class="web" v-show="page == 'web'">
@@ -362,6 +364,18 @@ export default Vue.extend({
value: v value: v
}); });
}, },
onChangeILikeSushi(v) {
this.$store.dispatch('settings/set', {
key: 'iLikeSushi',
value: v
});
},
onChangeReversiBoardLabels(v) {
this.$store.dispatch('settings/set', {
key: 'reversiBoardLabels',
value: v
});
},
onChangeGradientWindowHeader(v) { onChangeGradientWindowHeader(v) {
this.$store.dispatch('settings/set', { this.$store.dispatch('settings/set', {
key: 'gradientWindowHeader', key: 'gradientWindowHeader',
@@ -396,7 +410,7 @@ export default Vue.extend({
localStorage.clear(); localStorage.clear();
(this as any).apis.dialog({ (this as any).apis.dialog({
title: '%i18n:@cache-cleared%', title: '%i18n:@cache-cleared%',
text: '%i18n:@caache-cleared-desc%' text: '%i18n:@cache-cleared-desc%'
}); });
}, },
soundTest() { soundTest() {
@@ -4,7 +4,7 @@
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span> <span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span> <span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
<a class="reply" v-if="note.replyId">%fa:reply%</a> <a class="reply" v-if="note.replyId">%fa:reply%</a>
<mk-note-html v-if="note.text" :text="note.text" :i="$store.state.i"/> <misskey-flavored-markdown v-if="note.text" :text="note.text" :i="$store.state.i"/>
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a> <a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
</div> </div>
<details v-if="note.media.length > 0"> <details v-if="note.media.length > 0">
@@ -43,19 +43,21 @@ export default Vue.extend({
}, },
stream(): any { stream(): any {
return this.src == 'home' switch (this.src) {
? (this as any).os.stream case 'home': return (this as any).os.stream;
: this.src == 'local' case 'local': return (this as any).os.streams.localTimelineStream;
? (this as any).os.streams.localTimelineStream case 'hybrid': return (this as any).os.streams.hybridTimelineStream;
: (this as any).os.streams.globalTimelineStream; case 'global': return (this as any).os.streams.globalTimelineStream;
}
}, },
endpoint(): string { endpoint(): string {
return this.src == 'home' switch (this.src) {
? 'notes/timeline' case 'home': return 'notes/timeline';
: this.src == 'local' case 'local': return 'notes/local-timeline';
? 'notes/local-timeline' case 'hybrid': return 'notes/hybrid-timeline';
: 'notes/global-timeline'; case 'global': return 'notes/global-timeline';
}
}, },
canFetchMore(): boolean { canFetchMore(): boolean {
@@ -3,12 +3,14 @@
<header> <header>
<span :data-active="src == 'home'" @click="src = 'home'">%fa:home% %i18n:@home%</span> <span :data-active="src == 'home'" @click="src = 'home'">%fa:home% %i18n:@home%</span>
<span :data-active="src == 'local'" @click="src = 'local'">%fa:R comments% %i18n:@local%</span> <span :data-active="src == 'local'" @click="src = 'local'">%fa:R comments% %i18n:@local%</span>
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'">%fa:share-alt% %i18n:@hybrid%</span>
<span :data-active="src == 'global'" @click="src = 'global'">%fa:globe% %i18n:@global%</span> <span :data-active="src == 'global'" @click="src = 'global'">%fa:globe% %i18n:@global%</span>
<span :data-active="src == 'list'" @click="src = 'list'" v-if="list">%fa:list% {{ list.title }}</span> <span :data-active="src == 'list'" @click="src = 'list'" v-if="list">%fa:list% {{ list.title }}</span>
<button @click="chooseList" title="%i18n:@list%">%fa:list%</button> <button @click="chooseList" title="%i18n:@list%">%fa:list%</button>
</header> </header>
<x-core v-if="src == 'home'" ref="tl" key="home" src="home"/> <x-core v-if="src == 'home'" ref="tl" key="home" src="home"/>
<x-core v-if="src == 'local'" ref="tl" key="local" src="local"/> <x-core v-if="src == 'local'" ref="tl" key="local" src="local"/>
<x-core v-if="src == 'hybrid'" ref="tl" key="hybrid" src="hybrid"/>
<x-core v-if="src == 'global'" ref="tl" key="global" src="global"/> <x-core v-if="src == 'global'" ref="tl" key="global" src="global"/>
<mk-user-list-timeline v-if="src == 'list'" ref="tl" :key="list.id" :list="list"/> <mk-user-list-timeline v-if="src == 'list'" ref="tl" :key="list.id" :list="list"/>
</div> </div>
@@ -56,23 +56,23 @@ export default Vue.extend({
this.connection = (this as any).os.stream.getConnection(); this.connection = (this as any).os.stream.getConnection();
this.connectionId = (this as any).os.stream.use(); this.connectionId = (this as any).os.stream.use();
this.connection.on('othello_invited', this.onOthelloInvited); this.connection.on('reversi_invited', this.onReversiInvited);
this.connection.on('othello_no_invites', this.onOthelloNoInvites); this.connection.on('reversi_no_invites', this.onReversiNoInvites);
} }
}, },
beforeDestroy() { beforeDestroy() {
if (this.$store.getters.isSignedIn) { if (this.$store.getters.isSignedIn) {
this.connection.off('othello_invited', this.onOthelloInvited); this.connection.off('reversi_invited', this.onReversiInvited);
this.connection.off('othello_no_invites', this.onOthelloNoInvites); this.connection.off('reversi_no_invites', this.onReversiNoInvites);
(this as any).os.stream.dispose(this.connectionId); (this as any).os.stream.dispose(this.connectionId);
} }
}, },
methods: { methods: {
onOthelloInvited() { onReversiInvited() {
this.hasGameInvitations = true; this.hasGameInvitations = true;
}, },
onOthelloNoInvites() { onReversiNoInvites() {
this.hasGameInvitations = false; this.hasGameInvitations = false;
}, },
@@ -17,7 +17,11 @@ export default Vue.extend({
}, },
methods: { methods: {
onSubmit() { onSubmit() {
location.href = `/search?q=${encodeURIComponent(this.q)}`; if (this.q.startsWith('#')) {
this.$router.push(`/tags/${encodeURIComponent(this.q.substr(1))}`);
} else {
this.$router.push(`/search?q=${encodeURIComponent(this.q)}`);
}
} }
} }
}); });

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