Compare commits

...

436 Commits

Author SHA1 Message Date
2a1def3cce 10.82.0 2019-02-05 19:53:31 +09:00
938fe05fef Update CHANGELOG.md 2019-02-05 19:52:22 +09:00
5db5bbd1cd 自分の投稿情報をエクスポートできるように (#4144)
* wip

* 正しいJSONを生成するように

* データを整形
2019-02-05 19:50:14 +09:00
ba7e05837c Add ffmpeg package for the runner container (#4145)
* Revert "Update Dockerfile (#4090)"

This reverts commit 6758b0f133.

* Docker: Add ffmpeg package for the runner container

Misskey 10.81.0 added thumbnail generation support.
However it did not work with Docker bacause ffmpeg has not been
installed in the runner container.
2019-02-05 19:32:53 +09:00
9dd06a7621 /.well-known 周りをいい感じに (#4141)
* Enhance /.well-known and their friends

* Fix bug
2019-02-05 17:42:55 +09:00
2f4434b0d8 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-05 17:30:25 +09:00
350328770b Improve readability 2019-02-05 17:30:17 +09:00
17e1b49bff New translations ja-JP.yml (Chinese Simplified) (#4140) 2019-02-05 15:16:53 +09:00
266c31981d Fix typo 2019-02-05 15:09:37 +09:00
803fb0898a Fix bug 2019-02-05 14:56:33 +09:00
01983da514 [Client] Use localStorage instead of window 2019-02-05 14:42:18 +09:00
6f473aa64a Update setup.ja.md 2019-02-05 14:25:03 +09:00
574747b9d4 Improve doc 2019-02-05 14:24:10 +09:00
dff1122bd5 Enable service worker 2019-02-05 14:22:52 +09:00
43cb12930a Remove unused declare 2019-02-05 14:22:35 +09:00
8129d4dc23 Refactoring 2019-02-05 14:14:23 +09:00
9b780dff04 Fix log 2019-02-05 14:04:40 +09:00
11a0ef485b Resolve #4139 2019-02-05 13:56:50 +09:00
83b2aa72b1 [Client] Clip note content 2019-02-05 13:54:40 +09:00
c71b24987d Make index.js for more convinience 2019-02-05 13:46:06 +09:00
78d22dbd22 Update vue to 2.6.2 🚀 2019-02-05 13:35:47 +09:00
8961dab137 Fix comment 2019-02-05 11:49:03 +09:00
bcc549fd8e Fix style 2019-02-05 11:48:08 +09:00
5a6c3fc11c Update css-loader to 2.1.0 🚀
Close #3961
2019-02-05 07:06:57 +09:00
7d730f676d Refactoring: Extract showMachineInfo function 2019-02-05 06:49:00 +09:00
6bda571660 Make some error logs important 2019-02-05 06:46:01 +09:00
d3c7129e1f Refactoring: Extract checkMongoDB function 2019-02-05 06:43:36 +09:00
3709ba95cd Improve doc 2019-02-05 06:29:56 +09:00
4162981081 アニメーション停止箇所の追加 (#4138) 2019-02-05 06:22:39 +09:00
7b7359fbdc [Client] Fix bug 2019-02-05 06:12:41 +09:00
70c01c52a8 Update Vue to 2.6 🚀 2019-02-05 06:07:23 +09:00
443006c868 Update terser-webpack-plugin requirement from 1.2.1 to 1.2.2 (#4137)
Updates the requirements on [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) to permit the latest version.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/commits/v1.2.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-05 05:20:10 +09:00
7c1db1fea5 New Crowdin translations (#4130)
* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)
2019-02-05 04:58:07 +09:00
7c2b704bef Fix CHANGELOG 2019-02-05 04:23:28 +09:00
368c3f1e29 Update CHANGELOG.md 2019-02-05 04:22:24 +09:00
dd39d6ea37 Better key name 2019-02-05 04:09:44 +09:00
ef618b2431 [Client] Increase font size a little in the Deck view
Resolve #1821
2019-02-05 04:01:50 +09:00
861302f0fd アニメーション画像を無効にする際、サーバーサイドではなくクライアントサイドでURLを変更するように 2019-02-05 03:51:54 +09:00
f014b7ae0e アニメーションを自動再生しないオプション (#4131)
* Refactor

* settings

* Media Proxy

* Replace API response
2019-02-05 03:01:36 +09:00
00b2d89f1a Refactor: Better type definition 2019-02-05 01:52:09 +09:00
5410efe9ca Refactoring 2019-02-05 01:31:02 +09:00
1d814ba0e1 個別に投稿のウォッチ/ウォッチ解除をできるように
Resolve #161
2019-02-05 01:24:44 +09:00
c107333f56 [API] お気に入り状態は投稿情報に含めないように統一 2019-02-05 01:11:06 +09:00
06707705bf Add dummy option for some libraries 2019-02-04 19:41:31 +09:00
68ee9a008e Resolve #4121 (#4122)
* Resolve #4121

* Update tslint.json
2019-02-04 18:27:45 +09:00
3a035c481e Fix fusion 2019-02-04 16:50:14 +09:00
23a0aead9f Update config.yml
Redis なしが帰ってきたぞっ!
2019-02-04 16:41:57 +09:00
6cd41f9860 Initialize queue only if queue is enabled (#4125) 2019-02-04 16:41:53 +09:00
baf861ac79 Update __MISSKEY_HEAD 2019-02-04 16:41:11 +09:00
0ae1190c08 Add --disable-queue option 2019-02-04 13:37:50 +09:00
d3b3426ebe Enable job queue
Resolve #3216
2019-02-04 13:35:58 +09:00
4982ea8f14 Add --verbose option 2019-02-04 12:14:07 +09:00
3be89e9702 Better logging 2019-02-04 12:09:59 +09:00
4275af2324 Make Logger#log method private 2019-02-04 11:51:23 +09:00
84d42be090 Fix MongoDB connectivity checking 2019-02-04 11:48:59 +09:00
c4c7783691 [Server] Enable slow option 2019-02-04 10:03:49 +09:00
d6dba7fd71 Update dependencies 🚀 2019-02-04 09:56:48 +09:00
30b1b1a5ed Fix imports 2019-02-04 09:37:15 +09:00
90b6688057 Update apexcharts requirement from 2.5.1 to 3.2.1 (#4124)
Updates the requirements on [apexcharts](https://github.com/apexcharts/apexcharts.js) to permit the latest version.
- [Release notes](https://github.com/apexcharts/apexcharts.js/releases)
- [Changelog](https://github.com/apexcharts/apexcharts.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apexcharts/apexcharts.js/commits/v3.2.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-04 09:29:47 +09:00
b536ee4dcd Add collaborators credit 2019-02-04 09:09:45 +09:00
11101a6aca Better error log of WebFinger 2019-02-04 09:06:13 +09:00
b4a3e5aa4f Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-04 09:02:27 +09:00
874c0eae6a Better error log of WebFinger 2019-02-04 09:02:23 +09:00
9950b6fbc6 Update tslint-sonarts requirement from 1.8.0 to 1.9.0 (#3978)
Updates the requirements on [tslint-sonarts](https://github.com/SonarSource/SonarTS) to permit the latest version.
- [Release notes](https://github.com/SonarSource/SonarTS/releases)
- [Commits](https://github.com/SonarSource/SonarTS/commits/v1.9.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-04 07:16:01 +09:00
42d6ed62f6 New translations ja-JP.yml (English) (#4120) 2019-02-04 07:01:19 +09:00
beb1b570d4 New translations ja-JP.yml (Polish) (#4119) 2019-02-04 01:52:39 +09:00
ba1b5a8ede Update README.md 2019-02-04 01:51:01 +09:00
99d8d0a484 Create type definition for '*/const.json' (#4118) 2019-02-04 01:47:12 +09:00
5891135ac1 Create type definition for ./locales (#4117) 2019-02-04 01:46:59 +09:00
c4f7491322 Revert "Create new type definition for 'is-url' (#4013)"
This reverts commit 014b58cb40.
2019-02-04 01:30:33 +09:00
206b57b962 New translations ja-JP.yml (Polish) (#4116) 2019-02-04 01:22:37 +09:00
1b0e03704e New translations ja-JP.yml (Polish) (#4115) 2019-02-04 01:13:39 +09:00
8f2f4b6d2d Add missing semicolons 2019-02-03 23:52:46 +09:00
6e0c055faf Module 'jsdom' as import syntax (#4016) 2019-02-03 23:49:00 +09:00
893a3b527d Create type definition for 'os-utils' (#4050) 2019-02-03 23:41:27 +09:00
fe13c17fcb Create type definition for 'langmap' (#4059)
* Create type definition for 'langmap'

* Follow lint
2019-02-03 23:41:05 +09:00
5049870b6e Create type definition for 'koa-slow' (#4072) 2019-02-03 23:01:03 +09:00
ce576dea8f Create type definition for 'recaptcha-promise' (#4068) 2019-02-03 22:21:55 +09:00
ceda3dd72a Create new type definition for 'escape-regexp' (#4058) 2019-02-03 22:21:47 +09:00
014b58cb40 Create new type definition for 'is-url' (#4013)
* Create new type definition for 'is-url'

* [Client] Resolve #3638

* 10.79.1

* New translations ja-JP.yml (Korean)

* Add missing semicolon

* Remove file-loader from dependencies (#4025)

* Update README.md [AUTOGEN] (#4028)

* Update README.md [AUTOGEN] (#4030)

* Add visibility test (#4029)

* Update ws requirement from 6.1.2 to 6.1.3 (#4027)

Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits/6.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Module 'web-push' as import syntax (#4017)

* Fix visibility test (#4031)

* Upgrade gulp version to 4.0.0

* Prevent typescript errors from crashing

* Remove duplicated dependencies

* Use parallel and task to specify dependencies

* Sort tasks by topological ordering

* リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033)

* 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除

* リプライ/メンションされていれば非フォロワーでも参照可能に

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

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

* Fix #4034 (#4037)

* Fix #4034

* improve

* Module 'crypto' as import syntax (#4011)

* Extract MFM normalize function

* Extract MFM types

* Rename html to toHtml

* Rename html-to-mfm to fromHtml

* Merge plainParser into mfm

* Extract parsePlain function

* Rename analyze to parse in MFM tests

* Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041)

Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040)

Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version.
- [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases)
- [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Avoid export default

* Rename parser to language

* Fix import

* Introduce silence (#4043)

* Introduce silence

* Fix icon

* delete unnecessary key (#4045)

* delete unnecessary key

* Add note

* Update CHANGELOG.md

* [ActivityPub] Use microformats on mentions

To avoid pointless link previews.
see: https://misskey.xyz/notes/5c51ab5c2d85f2003248eddc

* Create type definition for '*/package.json' (#4014)

* Create type definition for '*/package.json'

* Update tsconfig.json

* Update index.ts

* Create type definition for 'is-root' (#4001)

* Update @types/sharp requirement from 0.21.0 to 0.21.1

Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add multiline math syntax

Co-authored-by: syuilo <syuilotan@yahoo.co.jp>

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)

* Create type definition for 'is-root'

* [MFM] Add spin syntax

Resolve #4003

* [MFM] Add flip syntax

Resolve #4002

* Fix test

* Update CHANGELOG.md

* 10.79.0

* Update @fortawesome/free-regular-svg-icons requirement (#3963)

Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update @types/webpack requirement from 4.4.21 to 4.4.24 (#3976)

Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update @types/js-yaml requirement from 3.11.4 to 3.12.0 (#3977)

Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update debug requirement from 4.1.0 to 4.1.1 (#3964)

Updates the requirements on [debug](https://github.com/visionmedia/debug) to permit the latest version.
- [Release notes](https://github.com/visionmedia/debug/releases)
- [Commits](https://github.com/visionmedia/debug/commits/4.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* [MFM] spinの中でflipを使えるように

* Add jump syntax (#4007)

* Add jump syntax

* Fix typo: spin -> jump

* Fix typo

* [MFM] Resolve #4009

* Module 'nprogress' as import syntax (#4012)

* 🎨

* [Client] Fix #4008

* Use yarn instead of npm on CircleCI

* touch yarn.lock

* [Client] Resolve #3638

* 10.79.1

* New translations ja-JP.yml (Korean)

* Add missing semicolon

* Remove file-loader from dependencies (#4025)

* Update README.md [AUTOGEN] (#4028)

* Update README.md [AUTOGEN] (#4030)

* Add visibility test (#4029)

* Update ws requirement from 6.1.2 to 6.1.3 (#4027)

Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits/6.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Module 'web-push' as import syntax (#4017)

* Fix visibility test (#4031)

* Upgrade gulp version to 4.0.0

* Prevent typescript errors from crashing

* Remove duplicated dependencies

* Use parallel and task to specify dependencies

* Sort tasks by topological ordering

* リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033)

* 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除

* リプライ/メンションされていれば非フォロワーでも参照可能に

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

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

* Fix #4034 (#4037)

* Fix #4034

* improve

* Module 'crypto' as import syntax (#4011)

* Extract MFM normalize function

* Extract MFM types

* Rename html to toHtml

* Rename html-to-mfm to fromHtml

* Merge plainParser into mfm

* Extract parsePlain function

* Rename analyze to parse in MFM tests

* Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041)

Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040)

Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version.
- [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases)
- [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Avoid export default

* Rename parser to language

* Fix import

* Introduce silence (#4043)

* Introduce silence

* Fix icon

* Update is-root.d.ts

* Update index.ts

* Create type definition for 'is-root'

* Update is-root.d.ts

* Update index.ts

* Fix path

refs: 7e3a8d56e6

* Re-fix path

refs: 4bb4903ee5, 7e3a8d56e6

*  Do not import as pack from AP renderer  (#4048)

* Do not import as pack from AP renderer

* rename

* Simplify MFM (#4046)

* [MFM] Make some syntax block

Resolve #3508

* [MFM] Better syntax parsing

Allow nesting by same tag

* [Client] MFMの制限を緩和

* 🎨

* Update CHANGELOG.md

* 10.80.0

* Update is-url.d.ts
2019-02-03 22:21:36 +09:00
b4859be098 Improve log readability 2019-02-03 21:42:52 +09:00
df54da9510 Fix type declaretion 2019-02-03 20:32:46 +09:00
b97f788d71 Display version in logo 2019-02-03 20:31:35 +09:00
edd1baa9f4 🎨 2019-02-03 20:23:53 +09:00
4a23ebe534 Refactoring 2019-02-03 20:10:20 +09:00
64c1075b06 Remember the media playback volume (#4089)
* Remember the media playback volume

* fix
2019-02-03 19:33:23 +09:00
217e4ee39c New translations ja-JP.yml (Korean) (#4110) 2019-02-03 19:13:56 +09:00
7e2a7cdff8 Update README.md [AUTOGEN] (#4111) 2019-02-03 19:13:41 +09:00
e1fb4f23f0 10.81.0 2019-02-03 18:41:41 +09:00
452fb8e496 Improve usability 2019-02-03 18:40:50 +09:00
6758b0f133 Update Dockerfile (#4090)
* Update Dockerfile

* Fix indent
2019-02-03 18:30:47 +09:00
35e509850f Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-03 18:17:05 +09:00
0868c3517f Use internal logger instead of debug/console for logging
Resolve #4104
Resolve #1966
Resolve #1937
2019-02-03 18:16:57 +09:00
1cd839215b Fix typo 2019-02-03 18:03:58 +09:00
42be09ad33 Fix typo 2019-02-03 18:01:09 +09:00
bcb7ee8d2a Hotfix build fails
refs: https://github.com/vuejs/vue-cli/issues/3407#issuecomment-459985313
2019-02-03 18:00:56 +09:00
3a5867b324 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-03 17:14:02 +09:00
efe2a6be14 Better logging 2019-02-03 17:09:16 +09:00
11f30b0444 Use yarn instead of npm 2019-02-03 16:57:36 +09:00
75558add17 Better logging 2019-02-03 16:45:13 +09:00
ca91709801 Revert "Revert "Merge pull request #4098 from syuilo/dependabot/npm_and_yarn/@fortawesome/fontawesome-svg-core-1.2.14""
This reverts commit 45b905df6a.
2019-02-03 14:55:58 +09:00
45b905df6a Revert "Merge pull request #4098 from syuilo/dependabot/npm_and_yarn/@fortawesome/fontawesome-svg-core-1.2.14"
This reverts commit 7f6bb75f95, reversing
changes made to cefecd7903.
2019-02-03 14:49:41 +09:00
32a0cd4b13 Display Misskey logo when misskey launched 🎨 2019-02-03 14:05:01 +09:00
0b2571858f More logs 2019-02-03 13:52:21 +09:00
08eb3851da Merge branches 'develop' and 'develop' of https://github.com/syuilo/misskey into develop 2019-02-03 13:51:32 +09:00
0bd0fb9fbf Include worker information for each logs 2019-02-03 13:51:24 +09:00
9beab05a30 Make more importance for env log 2019-02-03 13:51:00 +09:00
3b3ef20e0a New Crowdin translations (#4105)
* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

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

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

* New translations ja-JP.yml (Chinese Simplified)
2019-02-03 13:22:39 +09:00
3441acf56c Improve usability 2019-02-03 05:06:23 +09:00
189f9f6592 Close #4093 2019-02-03 04:50:40 +09:00
6071fc7077 Better log 2019-02-03 04:43:43 +09:00
2f215ea34c Use is syntax (#4079) 2019-02-03 04:31:03 +09:00
c44c777976 Update CHANGELOG.md 2019-02-03 04:27:45 +09:00
7d2f0a1f31 Fix: URLプレビューのthumbnailで()を含むURLを提示されると表示できない (#4103)
* Fix: URLプレビューのthumbnailで()を含むURLを提示されると表示できない

* remove debug
2019-02-03 04:26:58 +09:00
15eca04bc4 🎨 2019-02-03 04:20:35 +09:00
238c6a428b [Server] Use logger for logging 2019-02-03 04:18:27 +09:00
110eeb89f1 Clean up 2019-02-03 04:18:09 +09:00
278e43e9ba [Server] Use logger for logging 2019-02-03 04:04:57 +09:00
d55277e57e Better logging 2019-02-03 02:01:06 +09:00
f53a93ea13 Better logger 2019-02-03 01:39:42 +09:00
a3e37294e5 Better logs 2019-02-03 01:33:34 +09:00
05baa89508 Refactoring of logger 2019-02-03 01:24:59 +09:00
80aa45372a Better logger 2019-02-03 01:20:21 +09:00
a91f95451a Fix logger 2019-02-03 01:07:14 +09:00
122ef23e0f Remove unnecessary log 2019-02-03 01:04:38 +09:00
cd9d67389a Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-03 01:01:54 +09:00
52d6ec2138 Refatoring of logger 2019-02-03 01:01:40 +09:00
a5725c1d04 Merge pull request #4102 from syuilo/dependabot/npm_and_yarn/gulp-imagemin-5.0.3 2019-02-02 15:59:21 +00:00
db8ad3c035 Merge pull request #4101 from syuilo/dependabot/npm_and_yarn/vue-i18n-8.8.0 2019-02-02 15:56:02 +00:00
a0957f2e50 Merge pull request #4100 from syuilo/dependabot/npm_and_yarn/systeminformation-3.54.0 2019-02-02 15:47:56 +00:00
301b8f5e13 Update elasticsearch requirement from 15.3.0 to 15.3.1 (#4085)
Updates the requirements on [elasticsearch](https://github.com/elastic/elasticsearch-js) to permit the latest version.
- [Release notes](https://github.com/elastic/elasticsearch-js/releases)
- [Changelog](https://github.com/elastic/elasticsearch-js/blob/v15.3.1/docs/changelog.asciidoc)
- [Commits](https://github.com/elastic/elasticsearch-js/commits/v15.3.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-03 00:45:18 +09:00
7f6bb75f95 Merge pull request #4098 from syuilo/dependabot/npm_and_yarn/@fortawesome/fontawesome-svg-core-1.2.14 2019-02-02 15:44:00 +00:00
9be47df10e Update gulp-imagemin requirement from 4.1.0 to 5.0.3
Updates the requirements on [gulp-imagemin](https://github.com/sindresorhus/gulp-imagemin) to permit the latest version.
- [Release notes](https://github.com/sindresorhus/gulp-imagemin/releases)
- [Commits](https://github.com/sindresorhus/gulp-imagemin/commits/v5.0.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-02 15:40:08 +00:00
bec014da4a Update vue-i18n requirement from 8.7.0 to 8.8.0
Updates the requirements on [vue-i18n](https://github.com/kazupon/vue-i18n) to permit the latest version.
- [Release notes](https://github.com/kazupon/vue-i18n/releases)
- [Changelog](https://github.com/kazupon/vue-i18n/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/kazupon/vue-i18n/commits/v8.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-02 15:39:47 +00:00
cefecd7903 Update cafy requirement from 12.0.0 to 12.1.0 (#4099)
Updates the requirements on [cafy](https://github.com/syuilo/cafy) to permit the latest version.
- [Release notes](https://github.com/syuilo/cafy/releases)
- [Changelog](https://github.com/syuilo/cafy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/syuilo/cafy/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-03 00:35:30 +09:00
52cb043185 Update sharp requirement from 0.21.1 to 0.21.3 (#4097)
Updates the requirements on [sharp](https://github.com/lovell/sharp) to permit the latest version.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/commits/v0.21.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-03 00:35:03 +09:00
3a440dd116 Update systeminformation requirement from 3.52.2 to 3.54.0
Updates the requirements on [systeminformation](https://github.com/sebhildebrandt/systeminformation) to permit the latest version.
- [Release notes](https://github.com/sebhildebrandt/systeminformation/releases)
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-02 15:33:49 +00:00
8ae1039c77 Update @fortawesome/fontawesome-svg-core requirement
Updates the requirements on [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-02 15:30:23 +00:00
190eb0601f New Crowdin translations (#4096)
* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)
2019-02-03 00:15:50 +09:00
84931003ea Fix video thumbnails (#4095)
* Fix video thumbnails

* Fix import
2019-02-02 23:30:34 +09:00
2b0cb6d728 [Client] Resolve #3226 2019-02-02 23:20:40 +09:00
4ea7e711ce [Client] Improve usability
Resolve #4094
2019-02-02 22:59:11 +09:00
2a50997a75 Fallback en-US 2019-02-02 16:16:31 +09:00
d692d531d1 Fix indent 2019-02-02 13:57:26 +09:00
e325410649 [Server] Remove unnecessarily property 2019-02-02 13:50:41 +09:00
eea2b97ae5 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-02 13:47:26 +09:00
6b53e9ed29 [Client] Fix #4086 2019-02-02 13:47:12 +09:00
9ae3e7bdab New translations ja-JP.yml (Chinese Simplified) (#4087) 2019-02-02 13:42:34 +09:00
3905129eae New Crowdin translations (#4044)
* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Polish)

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

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

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

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

* New translations ja-JP.yml (Korean)

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

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

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

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

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

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

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

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

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

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

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

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

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)

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

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

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

* New translations ja-JP.yml (Chinese Simplified)
2019-02-02 13:39:48 +09:00
6b4e417cc7 Update CHANGELOG.md 2019-02-02 13:24:41 +09:00
3040700005 Generate video thumbnails (#4084)
* Generate video thumbnails

* import order
2019-02-02 13:22:09 +09:00
170b1bb4cc Downgrade webpack to avoid build error
See https://github.com/webpack/webpack/issues/8656
2019-02-02 02:00:00 +09:00
da1a238be3 Create new type definition for 'ms' (#4057)
* Create new type definition for 'ms'

* Follow lint
2019-02-02 00:16:27 +09:00
9c106022ae Fix #3871 (#4082) 2019-02-01 21:37:34 +09:00
bab1dc1d97 Create type definition for 'koa-json-body' (#4056)
* Create type definition for 'koa-json-body'

* Follow lint
2019-02-01 21:08:58 +09:00
3b30ad5404 Create type definition for 'nested-property' (#4004)
* Create type definition for 'nested-property'

* Follow lint
2019-02-01 21:08:49 +09:00
27268fd6b7 Update @fortawesome/free-regular-svg-icons requirement (#4076)
Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.7.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-01 20:03:11 +09:00
00f9c824d1 リモートの外部サービス認証情報を表示する (#4047)
* Update user.vue

* Update ja-JP.yml

* Fix path

refs: 7e3a8d56e6

* Update user.vue

* Update ja-JP.yml

* Re-fix path

refs: 4bb4903ee5, 7e3a8d56e6

* Update user.vue

* Update ja-JP.yml

* Update ja-JP.yml

* Fix sentence a little
2019-02-01 20:02:10 +09:00
40e177fa96 Create type definition for 'http-signature' (#4049)
* Create type definition for 'http-signature'

* Follow lint
2019-02-01 19:59:12 +09:00
2f72c38516 Create type definition for 'deepcopy' (#4000) 2019-02-01 19:56:16 +09:00
2dc4696b0a Module '@koa/cors' as import syntax (#4060) 2019-02-01 19:46:18 +09:00
723d5baed5 Module 'parse5' as import syntax (#4015) 2019-02-01 19:41:13 +09:00
341838b502 Update webpack requirement from 4.28.4 to 4.29.0 (#4077)
Updates the requirements on [webpack](https://github.com/webpack/webpack) to permit the latest version.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/commits/v4.29.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-01 12:17:15 +09:00
72efa278b3 Update CHANGELOG.md 2019-02-01 10:02:02 +09:00
5fe9f2baee Improve performance 2019-02-01 10:00:36 +09:00
c7ebf6f990 Hide suspended users (#4075) 2019-02-01 09:57:51 +09:00
9bf9519b8f Fix path 2019-02-01 00:17:15 +09:00
6c57690359 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-02-01 00:09:36 +09:00
3a03010ee2 Refactoring 2019-02-01 00:09:28 +09:00
ba4dcc40da Create type definition for '*/meta.json' (#4073) 2019-02-01 00:00:54 +09:00
1b0601b421 Update CHANGELOG.md 2019-01-31 23:53:20 +09:00
e2bf0067b2 Module 'request-stats' as import syntax (#4071) 2019-01-31 23:46:15 +09:00
6d004fde7c Module 'uuid' as import syntax (#4070) 2019-01-31 23:45:12 +09:00
f35547f3b8 API modules as import syntax (#4069) 2019-01-31 23:32:58 +09:00
c34a278533 おすすめのアンケートでミュートユーザーのものは表示しない (#4067) 2019-01-31 23:14:45 +09:00
6d3408ae73 [Client] Add information 2019-01-31 20:55:40 +09:00
a6e7bbc306 send/receive user hashtags via AP (#4064) 2019-01-31 20:42:45 +09:00
d140548784 Update @types/koa-router requirement from 7.0.38 to 7.0.39 (#4052)
Updates the requirements on [@types/koa-router](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-31 17:54:19 +09:00
76569bfb08 Create type definition for 'lookup-dns-cache' (#4051) 2019-01-31 17:53:49 +09:00
bbcdf1bb8a Create type definition for 'promise-any' (#4055) 2019-01-31 17:52:27 +09:00
6439a6c63f Create type definition for 'webfinger.js' (#4054) 2019-01-31 17:52:17 +09:00
76fe1c21c3 Update gulp-yaml requirement from 2.0.2 to 2.0.3 (#4053)
Updates the requirements on [gulp-yaml](https://github.com/crissdev/gulp-yaml) to permit the latest version.
- [Release notes](https://github.com/crissdev/gulp-yaml/releases)
- [Changelog](https://github.com/crissdev/gulp-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crissdev/gulp-yaml/commits/2.0.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-31 17:46:42 +09:00
4f99b98ed8 Revert b515cc90e9 2019-01-31 17:42:36 +09:00
7cb38f5525 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-31 17:38:24 +09:00
734277d9f6 [Server] Resolve #4062 2019-01-31 17:37:57 +09:00
960d4e2e7b Close #3380 (#4061)
* Delete index.ts

* Delete emoji.ts

* Update index.ts
2019-01-31 17:30:56 +09:00
33eb91c0f0 [Test] Disable some tests temporary 2019-01-31 17:15:14 +09:00
6f1e47f0b3 [Test] Better tests 2019-01-31 15:19:59 +09:00
0a8488a78c Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-31 15:10:33 +09:00
57ab640221 Fix typo 2019-01-31 15:10:27 +09:00
3c4682782c Add 'src/@types' to typeRoots 2019-01-31 14:40:06 +09:00
dc820ffba6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-31 14:31:31 +09:00
e4c745bccd [Test] Add MFM test 2019-01-31 14:31:25 +09:00
a05c94437c Make type definition for 'is-root' better 2019-01-31 13:42:13 +09:00
fdcc994291 10.80.0 2019-01-31 12:27:44 +09:00
f54363076c Update CHANGELOG.md 2019-01-31 12:26:56 +09:00
ec016e5a95 🎨 2019-01-31 12:24:21 +09:00
bbdb2496a4 [Client] MFMの制限を緩和 2019-01-31 12:24:14 +09:00
b515cc90e9 [MFM] Better syntax parsing
Allow nesting by same tag
2019-01-31 12:23:45 +09:00
bb92158dff [MFM] Make some syntax block
Resolve #3508
2019-01-31 12:10:48 +09:00
c652add16a Simplify MFM (#4046) 2019-01-31 12:06:13 +09:00
b8a7468c4a Do not import as pack from AP renderer (#4048)
* Do not import as pack from AP renderer

* rename
2019-01-31 02:29:35 +09:00
e220ef3e75 Re-fix path
refs: 4bb4903ee5, 7e3a8d56e6
2019-01-31 01:38:52 +09:00
4bb4903ee5 Fix path
refs: 7e3a8d56e6
2019-01-31 01:26:11 +09:00
9487840ae3 Create type definition for 'is-root' (#4001)
* Update @types/sharp requirement from 0.21.0 to 0.21.1

Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Add multiline math syntax

Co-authored-by: syuilo <syuilotan@yahoo.co.jp>

* New translations ja-JP.yml (Catalan)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

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

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (English)

* Create type definition for 'is-root'

* [MFM] Add spin syntax

Resolve #4003

* [MFM] Add flip syntax

Resolve #4002

* Fix test

* Update CHANGELOG.md

* 10.79.0

* Update @fortawesome/free-regular-svg-icons requirement (#3963)

Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update @types/webpack requirement from 4.4.21 to 4.4.24 (#3976)

Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update @types/js-yaml requirement from 3.11.4 to 3.12.0 (#3977)

Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update debug requirement from 4.1.0 to 4.1.1 (#3964)

Updates the requirements on [debug](https://github.com/visionmedia/debug) to permit the latest version.
- [Release notes](https://github.com/visionmedia/debug/releases)
- [Commits](https://github.com/visionmedia/debug/commits/4.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* [MFM] spinの中でflipを使えるように

* Add jump syntax (#4007)

* Add jump syntax

* Fix typo: spin -> jump

* Fix typo

* [MFM] Resolve #4009

* Module 'nprogress' as import syntax (#4012)

* 🎨

* [Client] Fix #4008

* Use yarn instead of npm on CircleCI

* touch yarn.lock

* [Client] Resolve #3638

* 10.79.1

* New translations ja-JP.yml (Korean)

* Add missing semicolon

* Remove file-loader from dependencies (#4025)

* Update README.md [AUTOGEN] (#4028)

* Update README.md [AUTOGEN] (#4030)

* Add visibility test (#4029)

* Update ws requirement from 6.1.2 to 6.1.3 (#4027)

Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits/6.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Module 'web-push' as import syntax (#4017)

* Fix visibility test (#4031)

* Upgrade gulp version to 4.0.0

* Prevent typescript errors from crashing

* Remove duplicated dependencies

* Use parallel and task to specify dependencies

* Sort tasks by topological ordering

* リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033)

* 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除

* リプライ/メンションされていれば非フォロワーでも参照可能に

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

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

* Fix #4034 (#4037)

* Fix #4034

* improve

* Module 'crypto' as import syntax (#4011)

* Extract MFM normalize function

* Extract MFM types

* Rename html to toHtml

* Rename html-to-mfm to fromHtml

* Merge plainParser into mfm

* Extract parsePlain function

* Rename analyze to parse in MFM tests

* Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041)

Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040)

Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version.
- [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases)
- [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>

* Avoid export default

* Rename parser to language

* Fix import

* Introduce silence (#4043)

* Introduce silence

* Fix icon

* Update is-root.d.ts

* Update index.ts

* Create type definition for 'is-root'

* Update is-root.d.ts

* Update index.ts
2019-01-31 01:09:52 +09:00
7e3a8d56e6 Update index.ts 2019-01-31 01:09:36 +09:00
e909eac296 Create type definition for '*/package.json' (#4014)
* Create type definition for '*/package.json'

* Update tsconfig.json
2019-01-31 01:08:43 +09:00
8dc7f28744 [ActivityPub] Use microformats on mentions
To avoid pointless link previews.
see: https://misskey.xyz/notes/5c51ab5c2d85f2003248eddc
2019-01-30 22:57:32 +09:00
a4b1e8ca26 Update CHANGELOG.md 2019-01-30 22:44:36 +09:00
79b0cc6785 delete unnecessary key (#4045)
* delete unnecessary key

* Add note
2019-01-30 21:31:45 +09:00
00b134ce1e Introduce silence (#4043)
* Introduce silence

* Fix icon
2019-01-30 17:25:56 +09:00
b3fc4dc00f Fix import 2019-01-30 17:15:12 +09:00
d06fbbe3ea Rename parser to language 2019-01-30 17:04:49 +09:00
28bfb45426 Avoid export default 2019-01-30 16:56:27 +09:00
1c60a49c96 Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040)
Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version.
- [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases)
- [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-30 16:06:45 +09:00
3ae8ff083b Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041)
Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-30 16:06:28 +09:00
c12ccb2a15 Rename analyze to parse in MFM tests 2019-01-30 15:30:05 +09:00
e3b1d00e4c Extract parsePlain function 2019-01-30 15:27:54 +09:00
98795aad9a Merge plainParser into mfm 2019-01-30 15:12:48 +09:00
ca26edbfce Rename html-to-mfm to fromHtml 2019-01-30 15:00:05 +09:00
3058e8f354 Rename html to toHtml 2019-01-30 14:57:13 +09:00
4c9b66b0f0 Extract MFM types 2019-01-30 14:51:30 +09:00
6eb9ba31bf Extract MFM normalize function 2019-01-30 14:21:36 +09:00
5bbf4187e6 Module 'crypto' as import syntax (#4011) 2019-01-30 11:51:29 +09:00
f2425f71c2 Merge pull request #4020 from syuilo/l10n_develop
New Crowdin translations
2019-01-30 11:50:55 +09:00
b0e00da2f7 Fix #4034 (#4037)
* Fix #4034

* improve
2019-01-29 20:33:28 +09:00
215472cd17 New translations ja-JP.yml (Chinese Simplified) 2019-01-29 18:33:13 +09:00
072fd4455e New translations ja-JP.yml (Chinese Simplified) 2019-01-29 18:22:34 +09:00
2ed9e26a4f リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033)
* 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除

* リプライ/メンションされていれば非フォロワーでも参照可能に
2019-01-29 17:34:43 +09:00
8a3e26cdb8 Sort tasks by topological ordering 2019-01-29 17:10:16 +09:00
7301671962 Use parallel and task to specify dependencies 2019-01-29 17:10:16 +09:00
0d0f25818e Remove duplicated dependencies 2019-01-29 17:10:16 +09:00
7850d68dc2 Prevent typescript errors from crashing 2019-01-29 17:10:16 +09:00
f0f5b32300 Upgrade gulp version to 4.0.0 2019-01-29 17:10:16 +09:00
1ca0976e85 Fix visibility test (#4031) 2019-01-29 15:16:11 +09:00
7fbfd17896 Module 'web-push' as import syntax (#4017) 2019-01-29 14:36:24 +09:00
3d04f7db62 Update ws requirement from 6.1.2 to 6.1.3 (#4027)
Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits/6.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-29 14:35:34 +09:00
e301630c9d Add visibility test (#4029) 2019-01-29 13:46:24 +09:00
afbccaae41 Update README.md [AUTOGEN] (#4030) 2019-01-29 13:42:28 +09:00
893c01c207 Update README.md [AUTOGEN] (#4028) 2019-01-29 05:55:21 +09:00
41c80097ce Remove file-loader from dependencies (#4025) 2019-01-28 18:04:30 +09:00
250933fff3 Add missing semicolon 2019-01-28 17:49:20 +09:00
bc9454f67c New translations ja-JP.yml (Korean) 2019-01-28 00:51:55 +09:00
377a7fdf3e 10.79.1 2019-01-27 23:25:20 +09:00
645f661911 [Client] Resolve #3638 2019-01-27 22:04:50 +09:00
db7c83c8ff touch yarn.lock 2019-01-27 20:19:24 +09:00
97385db5b5 Use yarn instead of npm on CircleCI 2019-01-27 20:13:06 +09:00
c69d57a064 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-27 20:09:03 +09:00
a488d6e2d6 [Client] Fix #4008 2019-01-27 20:05:03 +09:00
85e8b1fbf4 🎨 2019-01-27 20:03:58 +09:00
78763116c3 Module 'nprogress' as import syntax (#4012) 2019-01-27 19:41:41 +09:00
103fe8b91d [MFM] Resolve #4009 2019-01-27 19:32:35 +09:00
311e67047d Merge pull request #3998 from syuilo/l10n_develop
New Crowdin translations
2019-01-27 19:14:49 +09:00
62d41023e1 Add jump syntax (#4007)
* Add jump syntax

* Fix typo: spin -> jump

* Fix typo
2019-01-27 19:12:45 +09:00
5fac7c1718 [MFM] spinの中でflipを使えるように 2019-01-27 19:12:08 +09:00
ade01139ca New translations ja-JP.yml (French) 2019-01-27 17:54:13 +09:00
5ea8e9c787 New translations ja-JP.yml (Korean) 2019-01-27 17:01:41 +09:00
e5cfdbf372 New translations ja-JP.yml (Korean) 2019-01-27 16:51:42 +09:00
d2cc5c3b63 Update debug requirement from 4.1.0 to 4.1.1 (#3964)
Updates the requirements on [debug](https://github.com/visionmedia/debug) to permit the latest version.
- [Release notes](https://github.com/visionmedia/debug/releases)
- [Commits](https://github.com/visionmedia/debug/commits/4.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 16:46:41 +09:00
7cdd90db09 Update @types/sharp requirement from 0.21.0 to 0.21.1 (#3982)
Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 16:46:11 +09:00
aad1b8c12e Update @types/js-yaml requirement from 3.11.4 to 3.12.0 (#3977)
Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 16:45:55 +09:00
2519abdd39 Update @types/webpack requirement from 4.4.21 to 4.4.24 (#3976)
Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 16:45:48 +09:00
e8d0568a11 Update @fortawesome/free-regular-svg-icons requirement (#3963)
Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 16:45:36 +09:00
031287aebd 10.79.0 2019-01-27 16:43:50 +09:00
b24de13a37 Update CHANGELOG.md 2019-01-27 16:43:06 +09:00
c113fdc20e Merge pull request #3987 from syuilo/math-block
複数行用の数式構文を追加
2019-01-27 16:41:49 +09:00
1af1638e2b Merge branch 'develop' into math-block 2019-01-27 16:41:30 +09:00
8c62aafa97 Fix test 2019-01-27 16:36:01 +09:00
4de62220e3 [MFM] Add flip syntax
Resolve #4002
2019-01-27 16:31:00 +09:00
e5d9381503 [MFM] Add spin syntax
Resolve #4003
2019-01-27 16:18:04 +09:00
5621113d1f New translations ja-JP.yml (English) 2019-01-27 15:02:03 +09:00
d906d90010 [Server] Introduce admin stream channel 2019-01-27 14:55:02 +09:00
b836528b51 Celan up 2019-01-27 14:44:39 +09:00
4b191c7f68 [Client] Improve syntax highlighting
Resolve #3926
Resolve #3390
2019-01-27 14:34:52 +09:00
f9f70d5df4 Clean up 2019-01-27 14:30:57 +09:00
50b809784f Improve readability and some cleanups 2019-01-27 13:55:11 +09:00
54ce19bd56 Update parser.ts (#3999)
* Update parser.ts

* Update parser.ts

* Update parser.ts
2019-01-27 13:50:47 +09:00
71210595d2 [Test] Add a MFM test 2019-01-27 13:48:56 +09:00
085325e65f [MFM] Improve title syntax detection 2019-01-27 13:40:38 +09:00
e4c0c8869e New translations ja-JP.yml (Norwegian) 2019-01-27 13:33:03 +09:00
405f98d6d1 New translations ja-JP.yml (Dutch) 2019-01-27 13:32:58 +09:00
870ab3d3b6 New translations ja-JP.yml (Japanese, Kansai) 2019-01-27 13:32:54 +09:00
9ac2913afc New translations ja-JP.yml (Spanish) 2019-01-27 13:32:50 +09:00
171651484a New translations ja-JP.yml (Russian) 2019-01-27 13:32:45 +09:00
bfadb4026d New translations ja-JP.yml (Portuguese) 2019-01-27 13:32:40 +09:00
3940a9a447 New translations ja-JP.yml (Polish) 2019-01-27 13:32:34 +09:00
714446fb46 New translations ja-JP.yml (Korean) 2019-01-27 13:32:27 +09:00
e806f33f9f New translations ja-JP.yml (Italian) 2019-01-27 13:32:23 +09:00
65ee1711e5 New translations ja-JP.yml (German) 2019-01-27 13:32:16 +09:00
ef92578555 New translations ja-JP.yml (French) 2019-01-27 13:32:11 +09:00
0352fd0acd New translations ja-JP.yml (English) 2019-01-27 13:32:07 +09:00
fffce73d3e New translations ja-JP.yml (Chinese Simplified) 2019-01-27 13:32:03 +09:00
717f66b4a6 New translations ja-JP.yml (Catalan) 2019-01-27 13:31:58 +09:00
7dcea49be7 Refactoring 2019-01-27 13:29:53 +09:00
7c91915e50 Merge pull request #3997 from syuilo/l10n_develop
New Crowdin translations
2019-01-27 13:12:00 +09:00
895e80d794 New translations ja-JP.yml (French) 2019-01-27 13:11:47 +09:00
be5714a9f1 Update qrcode requirement from 1.3.2 to 1.3.3 (#3988)
Updates the requirements on [qrcode](https://github.com/soldair/node-qrcode) to permit the latest version.
- [Release notes](https://github.com/soldair/node-qrcode/releases)
- [Changelog](https://github.com/soldair/node-qrcode/blob/master/CHANGELOG.md)
- [Commits](https://github.com/soldair/node-qrcode/commits/v1.3.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 12:36:47 +09:00
1ba8374292 Merge pull request #3983 from syuilo/l10n_develop
New Crowdin translations
2019-01-27 10:59:28 +09:00
94154a1aa2 テーマによってコードが見づらいのを少し改善 (#3993) 2019-01-26 21:10:25 +09:00
5ae576bad1 🎨 2019-01-26 20:59:14 +09:00
f9e6c84d00 New translations ja-JP.yml (English) 2019-01-26 19:22:23 +09:00
3ab5d2e0e1 New translations ja-JP.yml (Norwegian) 2019-01-26 18:04:03 +09:00
b8f60527f6 New translations ja-JP.yml (Dutch) 2019-01-26 18:03:57 +09:00
a83c3557fc New translations ja-JP.yml (Japanese, Kansai) 2019-01-26 18:03:50 +09:00
a45abf858f New translations ja-JP.yml (Spanish) 2019-01-26 18:03:45 +09:00
a82eeb7e92 New translations ja-JP.yml (Russian) 2019-01-26 18:03:39 +09:00
3781f07c49 New translations ja-JP.yml (Portuguese) 2019-01-26 18:03:35 +09:00
990bc976de New translations ja-JP.yml (Polish) 2019-01-26 18:03:30 +09:00
ff2fc2267d New translations ja-JP.yml (Korean) 2019-01-26 18:03:26 +09:00
ec50240a03 New translations ja-JP.yml (Italian) 2019-01-26 18:03:21 +09:00
bf00b59339 New translations ja-JP.yml (German) 2019-01-26 18:03:17 +09:00
456b01590b New translations ja-JP.yml (French) 2019-01-26 18:03:13 +09:00
5eeec0becb New translations ja-JP.yml (English) 2019-01-26 18:03:08 +09:00
e5fcb2aea0 New translations ja-JP.yml (Chinese Simplified) 2019-01-26 18:03:03 +09:00
d717b1d404 New translations ja-JP.yml (Catalan) 2019-01-26 18:02:59 +09:00
2334b41375 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-26 17:54:09 +09:00
6f6974a6ae Update CHANGELOG.md 2019-01-26 17:54:00 +09:00
0854f2e180 管理画面からリモートユーザー情報を更新できるように (#3992) 2019-01-26 17:53:35 +09:00
a0f8c7e94e Resolve #2253 2019-01-26 17:47:56 +09:00
1f5e3040ed New translations ja-JP.yml (Norwegian) 2019-01-26 17:23:40 +09:00
6128e62751 New translations ja-JP.yml (Dutch) 2019-01-26 17:23:36 +09:00
7c6088b2b4 New translations ja-JP.yml (Japanese, Kansai) 2019-01-26 17:23:32 +09:00
9450e567c6 New translations ja-JP.yml (Spanish) 2019-01-26 17:23:27 +09:00
c9c2e36540 New translations ja-JP.yml (Russian) 2019-01-26 17:23:22 +09:00
fbfd3a60ed New translations ja-JP.yml (Portuguese) 2019-01-26 17:23:18 +09:00
9b386fd50e New translations ja-JP.yml (Polish) 2019-01-26 17:23:14 +09:00
db5a404081 New translations ja-JP.yml (Korean) 2019-01-26 17:23:09 +09:00
3bffe605f7 New translations ja-JP.yml (Italian) 2019-01-26 17:23:02 +09:00
4e92eb55cd New translations ja-JP.yml (German) 2019-01-26 17:22:57 +09:00
6667ddbc26 New translations ja-JP.yml (French) 2019-01-26 17:22:50 +09:00
16e4bb7f79 New translations ja-JP.yml (English) 2019-01-26 17:22:45 +09:00
821182cad5 New translations ja-JP.yml (Chinese Simplified) 2019-01-26 17:22:41 +09:00
b3730e3373 New translations ja-JP.yml (Catalan) 2019-01-26 17:22:36 +09:00
741efa1a9a Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-26 17:14:53 +09:00
de1a7b4364 Update CHANGELOG.md 2019-01-26 17:14:43 +09:00
85cd647946 Improve moderation UI (#3989)
* admin users UI

* tune
2019-01-26 17:14:10 +09:00
da7d1938c9 [Server] Fix #3991 2019-01-26 17:11:02 +09:00
5a795c4ab2 tools/resync-remote-user で exit しないように (#3990) 2019-01-26 16:56:05 +09:00
95d4937e16 Remove whiteP and blackP from Reversi (#3736) 2019-01-26 11:30:30 +09:00
6bbc6a80b2 Update style.styl (#3986) 2019-01-26 11:26:32 +09:00
79d2374d8e Add multiline math syntax
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2019-01-25 23:08:06 +09:00
e4601962d0 New translations ja-JP.yml (English) 2019-01-25 19:53:11 +09:00
4398651841 Refactor 2019-01-25 19:37:45 +09:00
42cd7c8a75 [MFM] Improve italic syntax detection 2019-01-25 16:41:51 +09:00
501379c82c [Test] Add sone streaming tests 2019-01-25 16:14:09 +09:00
92b45d1a9d Refactoring 2019-01-25 15:56:49 +09:00
3330c3f548 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-25 11:05:34 +09:00
3552b1c900 Update CHANGELOG.md 2019-01-25 11:05:24 +09:00
428d27a27b New translations ja-JP.yml (Spanish) 2019-01-25 11:01:47 +09:00
4f6e387d49 Update koa-views requirement from 6.1.4 to 6.1.5 (#3979)
Updates the requirements on [koa-views](https://github.com/queckezz/koa-views) to permit the latest version.
- [Release notes](https://github.com/queckezz/koa-views/releases)
- [Changelog](https://github.com/queckezz/koa-views/blob/master/history.md)
- [Commits](https://github.com/queckezz/koa-views/commits/v6.1.5)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-25 11:00:02 +09:00
01c0253c89 Merge pull request #3972 from syuilo/l10n_develop
New Crowdin translations
2019-01-25 10:59:34 +09:00
76fcf122f9 [Test] Add notes/timeline test 2019-01-25 10:58:39 +09:00
926ad23033 [Test] Add API test 2019-01-25 10:52:04 +09:00
b956d63c46 New translations ja-JP.yml (Spanish) 2019-01-25 10:11:46 +09:00
1970927b5e New translations ja-JP.yml (Spanish) 2019-01-25 08:52:43 +09:00
3995ae0957 New translations ja-JP.yml (Spanish) 2019-01-25 08:21:24 +09:00
c2a840fa19 New translations ja-JP.yml (English) 2019-01-25 08:21:20 +09:00
c7a6321a08 New translations ja-JP.yml (Spanish) 2019-01-25 08:12:04 +09:00
0c42c54b7a New translations ja-JP.yml (Spanish) 2019-01-25 08:01:47 +09:00
8b775c85f6 New translations ja-JP.yml (Spanish) 2019-01-25 07:52:46 +09:00
5c14ff661f New translations ja-JP.yml (Spanish) 2019-01-25 07:42:51 +09:00
160c1a3022 New translations ja-JP.yml (Spanish) 2019-01-25 07:22:31 +09:00
7017d3ae07 Update @types/sharp requirement from 0.21.0 to 0.21.1
Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-24 20:28:05 +00:00
5eca0a31f7 Filter hidden replies / mentions (#3981)
* Fix: 非公開投稿が返信一覧に出てくる

* Fix: 非公開投稿がメンション一覧に出てくる

* 非公開投稿は通知/メンション通知しない

* repliesにフォロワー限定がかからなかったのを修正

* Fix: ホームにフォロワー限定投稿が表示されない

* 認証必須エンドポイントで user == null にはならない

* mentionsにフォロワー限定がかからなかったのを修正
2019-01-25 00:06:20 +09:00
44d53488e0 New translations ja-JP.yml (English) 2019-01-24 21:05:22 +09:00
d731c7da13 Update CONTRIBUTING.md 2019-01-24 19:52:00 +09:00
225544e985 Reapply the theme first (#3971)
* Reapply the theme first

* Cannot
2019-01-24 18:06:20 +09:00
e2f7e82cac 外部サービス認証情報の配信 (#3975)
* Update person.ts

* Update person.ts

* Update person.ts

* Update person.ts

* Create original model

* Make type formal

* Update person.ts

* Follow @mei23's review

refs: https://github.com/syuilo/misskey/pull/3975#pullrequestreview-195770172
2019-01-24 17:33:39 +09:00
0be7bf93d9 New translations ja-JP.yml (Chinese Simplified) 2019-01-24 11:52:03 +09:00
75f9e6bdf5 New translations ja-JP.yml (Chinese Simplified) 2019-01-24 11:26:44 +09:00
8f6ea13696 New translations ja-JP.yml (English) 2019-01-24 09:21:48 +09:00
f434b3a875 New translations ja-JP.yml (English) 2019-01-24 09:12:19 +09:00
70b980d463 New translations ja-JP.yml (Norwegian) 2019-01-23 20:54:03 +09:00
a59cf87374 New translations ja-JP.yml (Dutch) 2019-01-23 20:53:56 +09:00
c9a9d5dbfd New translations ja-JP.yml (Japanese, Kansai) 2019-01-23 20:53:51 +09:00
e0480f4e01 New translations ja-JP.yml (Spanish) 2019-01-23 20:53:45 +09:00
d8cfd8f56d New translations ja-JP.yml (Russian) 2019-01-23 20:53:38 +09:00
593d3e2d55 New translations ja-JP.yml (Portuguese) 2019-01-23 20:53:33 +09:00
a79901b441 New translations ja-JP.yml (Polish) 2019-01-23 20:53:29 +09:00
4c526f2837 New translations ja-JP.yml (Korean) 2019-01-23 20:53:24 +09:00
3c28dd92ec New translations ja-JP.yml (Italian) 2019-01-23 20:53:19 +09:00
d09af4754a New translations ja-JP.yml (German) 2019-01-23 20:53:13 +09:00
44ab6cbc39 New translations ja-JP.yml (French) 2019-01-23 20:53:09 +09:00
6c42db7589 New translations ja-JP.yml (English) 2019-01-23 20:53:04 +09:00
20dfd2faca New translations ja-JP.yml (Chinese Simplified) 2019-01-23 20:52:59 +09:00
13696a85ee New translations ja-JP.yml (Catalan) 2019-01-23 20:52:53 +09:00
4632eecb76 Back to the #3813 (#3949)
* Revert "Revert "Resolve #3813 (#3814)""

This reverts commit f433182c4c.

* Keep CW is back

* New Wave

https://github.com/syuilo/misskey/pull/3949#pullrequestreview-194787210
2019-01-23 20:43:06 +09:00
44a3df0acf Merge pull request #3965 from syuilo/l10n_develop
New Crowdin translations
2019-01-23 19:47:22 +09:00
4ab96251f5 [Client] Resolve #3967 2019-01-23 19:45:14 +09:00
b795379417 Clean up 2019-01-23 19:43:45 +09:00
aa9ba31675 Squash multiple space 2019-01-23 19:42:47 +09:00
ad66c8478a Refactoring 2019-01-23 19:33:29 +09:00
4ec64b4c57 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-23 19:25:52 +09:00
2f0b75a882 Refactoring 2019-01-23 19:25:36 +09:00
912ee60781 Update index.ts
refs: 67dacb7725
2019-01-23 16:53:07 +09:00
67dacb7725 Supress log when test 2019-01-23 14:19:03 +09:00
82f1fc6cda Fix test 2019-01-23 13:50:36 +09:00
4d24741d48 Fix test 2019-01-23 13:35:22 +09:00
931f17c589 Refactor: Separate some test files 2019-01-23 12:15:27 +09:00
ff898b4c20 Update tslint.json 2019-01-23 11:55:47 +09:00
7b507c8480 New translations ja-JP.yml (English) 2019-01-23 11:51:44 +09:00
bb688f78fc New translations ja-JP.yml (English) 2019-01-23 10:47:34 +09:00
a2a31236f6 10.78.5 2019-01-23 05:37:37 +09:00
0b191b4d0e Merge pull request #3959 from syuilo/l10n_develop
New Crowdin translations
2019-01-23 05:33:51 +09:00
2e97f29411 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2019-01-23 05:30:12 +09:00
eb1ad54427 Clean up 2019-01-23 05:30:02 +09:00
e4974392e5 🎨 2019-01-23 05:25:46 +09:00
4e0d43b45a Update progress-bar-webpack-plugin requirement from 1.11.0 to 1.12.0 (#3962)
Updates the requirements on [progress-bar-webpack-plugin](https://github.com/clessg/progress-bar-webpack-plugin) to permit the latest version.
- [Release notes](https://github.com/clessg/progress-bar-webpack-plugin/releases)
- [Commits](https://github.com/clessg/progress-bar-webpack-plugin/commits/v1.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-23 05:24:23 +09:00
78c185a05a [Client] Improve usability 2019-01-23 05:20:28 +09:00
fa124abbe2 Supports Twemoji / CustomEmoji in poll (#3960)
* Supports Twemoji / CustomEmoji in poll

* extract emojis in polls
2019-01-23 04:49:16 +09:00
f4fa3f031e New translations ja-JP.yml (Korean) 2019-01-22 22:43:09 +09:00
3cc7a99d0f New translations ja-JP.yml (Korean) 2019-01-22 22:34:27 +09:00
8bf9e87117 Fix types 2019-01-22 21:42:05 +09:00
97e8ac1d27 [Client] Fix bug 2019-01-22 21:32:51 +09:00
45fb2ecb3a [Client] Fix UI 2019-01-22 21:25:37 +09:00
d5e80caac8 [Server] Fix #3958 2019-01-22 21:21:47 +09:00
7ceea61170 Create CODEOWNERS (#3882)
* Create CODEOWNERS

* Update CODEOWNERS

* Update CODEOWNERS

* Update CODEOWNERS
2019-01-22 20:56:55 +09:00
a3ce65ee28 Merge pull request #3956 from syuilo/l10n_develop
New Crowdin translations
2019-01-22 20:56:10 +09:00
d6b7a048e4 Merge branches 'develop', 'develop', 'develop' and 'develop' of https://github.com/syuilo/misskey into develop 2019-01-22 18:31:16 +09:00
f7c8e31b36 Update mfm.ts 2019-01-22 18:30:58 +09:00
26c327145f [Test] Add streaming test
#3955
2019-01-22 18:30:49 +09:00
b7afd07d6a New translations ja-JP.yml (Chinese Simplified) 2019-01-22 18:11:53 +09:00
eaff52548f New translations ja-JP.yml (Chinese Simplified) 2019-01-22 17:52:48 +09:00
76828adc54 New translations ja-JP.yml (Chinese Simplified) 2019-01-22 17:42:35 +09:00
198b0b3de3 New translations ja-JP.yml (Chinese Simplified) 2019-01-22 17:34:17 +09:00
3cdee2732a New translations ja-JP.yml (Chinese Simplified) 2019-01-22 17:22:13 +09:00
27a7bb7229 New translations ja-JP.yml (Chinese Simplified) 2019-01-22 17:15:40 +09:00
cf38a6d0a0 Little english improvements (#3931)
* Little english improvements

* Revert incorrect fix
2019-01-22 16:04:37 +09:00
02c88f9b3b Merge pull request #3954 from syuilo/l10n_develop
New Crowdin translations
2019-01-22 15:35:47 +09:00
3ac1077b36 New translations ja-JP.yml (French) 2019-01-22 15:32:15 +09:00
2b4f6abc15 New translations ja-JP.yml (French) 2019-01-22 15:22:17 +09:00
7bd24348d2 New translations ja-JP.yml (French) 2019-01-22 15:11:55 +09:00
c49ae672f2 Update @types/koa-router requirement from 7.0.35 to 7.0.38 (#3951)
Updates the requirements on [@types/koa-router](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-22 08:08:29 +09:00
2eb2cc7880 Update nodemailer requirement from 5.0.0 to 5.1.1 (#3950)
Updates the requirements on [nodemailer](https://github.com/nodemailer/nodemailer) to permit the latest version.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/commits/v5.1.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-22 08:08:21 +09:00
f2f3d4beec Update typescript requirement from 3.2.2 to 3.2.4 (#3953)
Updates the requirements on [typescript](https://github.com/Microsoft/TypeScript) to permit the latest version.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits/v3.2.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-22 08:08:02 +09:00
3fd1ea900a Update vue-loader requirement from 15.4.2 to 15.5.1 (#3952)
Updates the requirements on [vue-loader](https://github.com/vuejs/vue-loader) to permit the latest version.
- [Release notes](https://github.com/vuejs/vue-loader/releases)
- [Changelog](https://github.com/vuejs/vue-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-loader/commits/v15.5.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-22 08:07:37 +09:00
362 changed files with 5965 additions and 3404 deletions

View File

@ -2,7 +2,7 @@
# __MISSKEY_BEARER_TOKEN=
# __MISSKEY_CAMPAIGN_ID=
# __MISSKEY_GITHUB_TOKEN=
# __MISSKEY_HEAD=acid-chicken:patch-autogen
# __MISSKEY_HEAD=syuilo:patch-autogen
# __MISSKEY_REPO=syuilo/misskey
# __MISSKEY_BRANCH=develop
test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1

View File

@ -30,22 +30,21 @@ jobs:
steps:
- checkout
- run:
name: Ensure package-lock.json
name: Ensure yarn.lock
command: |
[ ! -e package-lock.json ] && echo '{}' > package-lock.json
touch yarn.lock
- restore_cache:
name: Restore npm package caches
keys:
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
- npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
- npm-v1-arch-{{ arch }}-
- npm-v1-
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-
- yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-
- yarn-v1-arch-{{ arch }}-
- yarn-v1-
- run:
name: Install Dependencies
command: |
npm install
npm prune
yarn install
- run:
name: Configure
command: |
@ -54,13 +53,11 @@ jobs:
- run:
name: Build
command: |
node-gyp configure
node-gyp build
npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)
ls -1ARl node_modules > ls
yarn build
touch yarn.lock
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
paths:
- node_modules
# - store_artifacts:
@ -90,11 +87,11 @@ jobs:
- run:
name: Test
command: |
npm run test
ls -1ARl node_modules > ls
yarn test
touch yarn.lock
- save_cache:
name: Cache npm packages
key: npm-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "package-lock.json" }}-ls-{{ checksum "ls" }}
key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }}
paths:
- node_modules
@ -137,12 +134,14 @@ workflows:
only:
- l10n_develop
- imgbot
- patch-autogen
- build:
filters:
branches:
ignore:
- l10n_develop
- imgbot
- patch-autogen
- test:
requires:
- build
@ -152,13 +151,20 @@ workflows:
# - master
- l10n_develop
- imgbot
- patch-autogen
- test:
without_redis: "true"
requires:
- build
filters:
# branches:
# only: master
branches:
only: master
ignore:
# - master
- l10n_develop
- imgbot
- patch-autogen
# - docker:
# filters:
# branches:

39
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1,39 @@
# PATH OWNERS
/.autogen/ @acid-chicken
/.circleci/ @syuilo @acid-chicken
/.config/ @syuilo @AyaMorisawa @mei23 @acid-chicken
# /.config/mongo_initdb_example.js @khws4v1
/.github/ @syuilo @AyaMorisawa @acid-chicken
/.vscode/ @acid-chicken
/assets/ @syuilo # @tamaina
/cli/ @syuilo
/docs/ @syuilo
/docs/*.en.md @AyaMorisawa # @skid9000
# /docs/*.fr.md @BoFFire
# /docs/docker.*.md @khws4v1
/locales/ @syuilo
/src/ @syuilo @AyaMorisawa @mei23 @acid-chicken
# /src/crypto_key.cc @akihikodaki
# /src/crypto_key.d.ts @akihikodaki
/.dockerignore @syuilo # @khws4v1
/.editorconfig @syuilo @AyaMorisawa
/.eslintrc @syuilo
/.gitattributes @syuilo
/.gitignore @syuilo
/.npmrc @syuilo
/.vsls.json @AyaMorisawa
/CHANGELOG.md @syuilo
/CODE_OF_CONDUCT.md @syuilo
/CONTRIBUTING.md @syuilo
/Dockerfile @syuilo @AyaMorisawa @acid-chicken # @khws4v1
/LICENSE @syuilo
/README.md @syuilo @AyaMorisawa @acid-chicken # @nikhiljha
# /binding.gyp @akihikodaki
/crowdin.yml @syuilo
# /docker-compose.yml @khws4v1
/gulpfile.ts @syuilo @AyaMorisawa
/jsconfig.json @syuilo @AyaMorisawa
/package.json @syuilo @AyaMorisawa
/tsconfig.json @syuilo @AyaMorisawa
/tslint.json @syuilo @AyaMorisawa
/webpack.config.ts @syuilo @AyaMorisawa

View File

@ -1,6 +1,67 @@
ChangeLog
=========
10.82.0
----------
* 自分の投稿情報をエクスポートできるように
* アニメーションする画像を再生しないで表示するオプションを実装
* 個別に投稿のウォッチ/ウォッチ解除をできるように
10.81.0
----------
* 動画のサムネイルを作成するように
* リモートの外部サービス認証情報を表示するように
* public の Renote/Reply/Quote先 が public以外 だったら、public => homeに
* ユーザーページから管理者/モデレーターがアカウントのサイレンス/凍結をできるように
* 凍結されたユーザーをタイムライン等に表示しないように
* おすすめのアンケートでミュートユーザーのものは表示しないように
* おすすめのアンケートで凍結済みユーザーのものは表示しないように
* 画像でないファイルのサムネイルとしてオリジナルファイルを返してしまうのを修正
* URLプレビューのサムネイルが表示されない場合がある問題を修正
* ダークモードで読みにくいボタンがあるのを修正
10.80.0
----------
* サイレンス機能の追加
* リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に
* MFMの解析を強化
* Misskey以外のインスタンスからMisskeyの投稿を見たときに改行が多い問題を修正
* Misskey以外のインスタンスからMisskeyの投稿を見たときにメンションのURLが展開されるのを修正
10.79.1
----------
* jump構文の追加
* MFMで左回転、往復回転を行えるように
* MFMに関する制限を若干緩和
* シンタックスハイライトに関するバグ修正
10.79.0
----------
* 返信するときにCWを維持するかどうか設定できるように
* 外部サービス認証情報の配信
* 管理画面のモデレーションのUIを強化
* 管理画面からリモートユーザーの情報を更新できるように
* 回転構文の追加
* 左右反転構文の追加
* 複数行の数式構文を追加
* シンタックスハイライトの強化
* 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正
* イタリック構文の判定の改善
* タイトル構文の判定の改善
* テーマが反映されないことがある問題を修正
* ホームにフォロワー限定投稿が表示されない問題を修正
* 返信一覧を取得すると非公開投稿も取得されてしまう問題を修正
* メンション一覧を取得すると非公開投稿も取得されてしまう問題を修正
* 通知に非公開投稿が表示される問題を修正
* ダイレクトで投稿すると100の確率で表示が二重になる問題を修正
* ウィジットの投稿フォームで投稿するとデフォルトの公開範囲が適用されない問題を修正
10.78.5
----------
* アンケートの選択肢にカスタム絵文字を使えるように
* 投稿の返信を取得したときにミュートが適用されていない問題を修正
* ユーザビリティの強化
10.78.4
----------
* フォロワー限定投稿がユーザータイムラインに含まれていない問題を修正

View File

@ -38,3 +38,9 @@ Stands for _**M**iss**k**ey_.
### SW
Stands for _**S**ervice**W**orker_.
### Nyaize
な を にゃ にすること
#### Denyaize
Nyaizeを解除すること

View File

@ -35,7 +35,9 @@ RUN node-gyp configure \
FROM base AS runner
RUN apk add --no-cache tini
RUN apk add --no-cache \
ffmpeg \
tini
ENTRYPOINT ["/sbin/tini", "--"]
COPY --from=builder /misskey/node_modules ./node_modules

View File

@ -13,7 +13,7 @@
<a href="https://misskey.xyz">Misskey</a> is a decentralized microblogging platform born on Earth.
Since it exists within the Fediverse (a universe where various social media platforms are organized),
it is mutually linked with other social media platforms.
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://joinmisskey.github.io/">Find instance!</a>
Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://joinmisskey.github.io/">Find an instance!</a>
</p>
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
@ -61,7 +61,7 @@ Organize and store your files! Want to post a picture you have already uploaded?
...and more! Experience Misskey with your own eyes at [misskey.xyz](https://misskey.xyz) or join one of the [other instances](https://joinmisskey.github.io/) that are available.
:package: Create Your Own Instance
:package: Create your own instance
----------------------------------------------------------------
Please see the [Setup and Installation Guide](./docs/setup.en.md).
@ -85,22 +85,22 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
</tr>
</table>
:heart: Backers & Sponsors
:heart: Backers
----------------------------------------------------------------
<!-- PATREON_START -->
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=WeuDzzz24cRXJogyIkU-mxARqkdyms-rcZKbO-GpGjw%3D" alt="weep" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/12059069" alt="naga_rus" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=prtYqPOiSHBulhM7NU0VzMaWx39-9ntdq25b6kafDNA%3D" alt="negao" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/3?token-time=2145916800&token-hash=c8HeVqLtmdgH-gSBJg8i10gmOcwllM87MDHeznl3el0%3D" alt="Melilot" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=LtV2lRi3L2jOWMLwccr9qWYfPrFlzIo2jYZHKzHEb6k%3D" alt="Xeltica" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=Ch3iF81ZGP0LMo894Y9ajpLisgtE91SnxtZE7fxsgrM%3D" alt="べすれい" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=1FlxS9MEgmNGH_RHUVHbO5hIXB5I1z0lvA33CTvYvjA%3D" alt="gutfuckllc" width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
<td><a href="https://www.patreon.com/user?u=12059069">naga_rus</a></td>
<td><a href="https://www.patreon.com/negao">negao</a></td>
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
<td><a href="https://www.patreon.com/user?u=16869916">見当かなみ</a></td>
<td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
<td><a href="https://www.patreon.com/user?u=3384329">べすれい</a></td>
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
@ -114,7 +114,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/3?token-time=2145916800&token-hash=gMq30aylxu5v3G8pRhWR5jeRBbYWEoRKjGbNeiCQz5g%3D" alt="Acid Chicken" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/2?token-time=2145916800&token-hash=zcwFxb2zopzWwksKVU1YpfAEjsl4yKT02aQ6yiAFRiQ%3D" alt="natalie" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=5T8XcaAf9Zyzfg3QubR06s_kJZkArVEM2dwObrBVAU4%3D" alt="Hiratake" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=ubVARikVOg3v7NW6LDhtG-ClE1LTU3I2TJ3js2-5xDs%3D" alt="Naoki Hirayama" width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
@ -124,7 +123,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
<td><a href="https://www.patreon.com/user?u=4389829">natalie</a></td>
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=Ksk_2l3gjPDbnzMUOCSW1E-hdPJsNs2tSR4_RAakRK8%3D" alt="dansup" width="100"></td>
@ -138,7 +136,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table>
**Last updated:** Mon, 21 Jan 2019 06:45:06 UTC
**Last updated:** Sun, 03 Feb 2019 10:13:06 UTC
<!-- PATREON_END -->
:four_leaf_clover: Copyright

View File

@ -29,15 +29,15 @@ Please install and setup these softwares:
* [Redis](https://redis.io/)
* Redis is optional, but we strongly recommended to install it
* [Elasticsearch](https://www.elastic.co/) - required to enable the search feature
* [FFmpeg](https://www.ffmpeg.org/)
*3.* Setup MongoDB
----------------------------------------------------------------
As root:
1. `mongo` Go to the mongo shell
2. `use misskey` Use the misskey database
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Create the misskey user.
5. `exit` You're done !
3. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Create the misskey user.
4. `exit` You're done!
*4.* Install Misskey
----------------------------------------------------------------
@ -55,6 +55,11 @@ As root:
*6.* Build Misskey
----------------------------------------------------------------
Before build, you need to set `NODE_ENV` to `production`. like this:
* Linux: `export NODE_ENV=production`
* Windows (PowerShell): `$env:NODE_ENV="production"`
* Windows (CMD): `set NODE_ENV=production`
Build misskey with the following:
`npm run build`

View File

@ -29,15 +29,15 @@ Installez les paquets suivants :
* [Redis](https://redis.io/)
* Redis est optionnel mais nous vous recommandons vivement de l'installer
* [Elasticsearch](https://www.elastic.co/) - requis pour pouvoir activer la fonctionnalité de recherche
* [FFmpeg](https://www.ffmpeg.org/)
*3.* Paramètrage de MongoDB
----------------------------------------------------------------
En root :
1. `mongo` Ouvrez le shell mongo
2. `use misskey` Utilisez la base de données misskey
3. `db.users.save( {dummy:"dummy"} )` Écrivez une donnée factice pour initialiser la base de données.
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
5. `exit` Vous avez terminé !
3. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
4. `exit` Vous avez terminé !
*4.* Installation de Misskey
----------------------------------------------------------------

View File

@ -32,18 +32,19 @@ adduser --disabled-password --disabled-login misskey
* 具体的には、Redisをインストールしないと、次の事が出来なくなります:
* Misskeyプロセスを複数起動しての負荷分散
* レートリミット
* ジョブキュー
* Twitter連携
* [Elasticsearch](https://www.elastic.co/)
* 検索機能を有効にするためにはインストールが必要です。
* [FFmpeg](https://www.ffmpeg.org/)
*3.* MongoDBの設定
----------------------------------------------------------------
ルートで:
1. `mongo` mongoシェルを起動
2. `use misskey` misskeyデータベースを使用
3. `db.users.save( {dummy:"dummy"} )` ダミーデータを書き込みDBを初期化
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
5. `exit` mongoシェルを終了
3. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` misskeyユーザーを作成
4. `exit` mongoシェルを終了
*4.* Misskeyのインストール
----------------------------------------------------------------
@ -61,6 +62,11 @@ adduser --disabled-password --disabled-login misskey
*6.* Misskeyのビルド
----------------------------------------------------------------
ビルドする前に、`NODE_ENV``production`にする必要があります。例:
* Linux: `export NODE_ENV=production`
* Windows (PowerShell): `$env:NODE_ENV="production"`
* Windows (CMD): `set NODE_ENV=production`
次のコマンドでMisskeyをビルドしてください:
`npm run build`

View File

@ -32,14 +32,6 @@ if (isDebug) {
console.warn(chalk.yellow.bold(' built script will not be compressed.'));
}
gulp.task('build', [
'build:ts',
'build:copy',
'build:client',
'locales',
'doc'
]);
gulp.task('build:ts', () => {
const tsProject = ts.createProject('./tsconfig.json');
@ -47,6 +39,7 @@ gulp.task('build:ts', () => {
.src()
.pipe(sourcemaps.init())
.pipe(tsProject())
.on('error', () => {})
.pipe(sourcemaps.write('.', { includeContent: false, sourceRoot: '../built' }))
.pipe(gulp.dest('./built/'));
});
@ -55,7 +48,7 @@ gulp.task('build:copy:views', () =>
gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views'))
);
gulp.task('build:copy', ['build:copy:views'], () =>
gulp.task('build:copy', gulp.parallel('build:copy:views', () =>
gulp.src([
'./build/Release/crypto_key.node',
'./src/const.json',
@ -63,9 +56,7 @@ gulp.task('build:copy', ['build:copy:views'], () =>
'./src/**/assets/**/*',
'!./src/client/app/**/assets/**/*'
]).pipe(gulp.dest('./built/'))
);
gulp.task('test', ['mocha']);
));
gulp.task('lint', () =>
gulp.src('./src/**/*.ts')
@ -92,22 +83,15 @@ gulp.task('mocha', () =>
} as any))
);
gulp.task('test', gulp.task('mocha'));
gulp.task('clean', cb =>
rimraf('./built', cb)
);
gulp.task('cleanall', ['clean'], cb =>
gulp.task('cleanall', gulp.parallel('clean', cb =>
rimraf('./node_modules', cb)
);
gulp.task('default', ['build']);
gulp.task('build:client', [
'build:ts',
'build:client:script',
'build:client:styles',
'copy:client'
]);
));
gulp.task('build:client:script', () => {
const client = require('./built/client/meta.json');
@ -129,9 +113,7 @@ gulp.task('build:client:styles', () =>
.pipe(gulp.dest('./built/client/assets/'))
);
gulp.task('copy:client', [
'build:client:script'
], () =>
gulp.task('copy:client', () =>
gulp.src([
'./assets/**/*',
'./src/client/assets/**/*',
@ -156,3 +138,19 @@ gulp.task('doc', () =>
.pipe((cssnano as any)())
.pipe(gulp.dest('./built/docs/assets/'))
);
gulp.task('build:client', gulp.parallel(
'build:client:script',
'build:client:styles',
'copy:client'
));
gulp.task('build', gulp.parallel(
'build:ts',
'build:copy',
'build:client',
'locales',
'doc'
));
gulp.task('default', gulp.task('build'));

1
index.js Normal file
View File

@ -0,0 +1 @@
require('./built');

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{}票"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "Verifizierter Benutzer"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "Diese Notiz favorisieren"
unfavorite: "Aus Favoriten entfernen"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "An die Profilseite pinnen"
unpin: "ピン留め解除"
delete: "Löschen"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "Stimme für '{}'"
vote-count: "{} Stimmen"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "Ein Verzeichnis erstellen"
upload: "Eine Datei hochladen"
url-upload: "Von einer URL hochladen"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Erscheinungsbild und Anzeige"
customize: "Startseite anpassen"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -8,10 +8,10 @@ common:
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
intro:
title: "What is Misskey?"
about: "Misskey is an open-source <b>decentralized microblogging service</b>. Sophisticated fully customizable UI, varieties of reactions for posts, free file storage providing an integrated management system and other advanced functions are available. In addition, Misskey connects to a network system called the “Fediverse” enables us to communicate with users on other SNSs. For example, when you post something it will be sent not only to Misskey but also Mastodon and Pleroma. Just imagine that the planet is sending a radio transmission to other planet to communicate."
about: "Misskey is an open-source, <b>decentralized microblogging service</b>. Sophisticated, fully customizable UI, varieties of reactions for posts, free file storage providing an integrated management system and other advanced features are available. In addition, Misskey connects to a network system called the “Fediverse”, that enables us to communicate with users on other SNSs. For example, when you post something, it will be sent not only to Misskey, but also to Mastodon, Osada and Pleroma. Just imagine that the planet is sending a radio transmission to another planet to communicate."
features: "Features"
rich-contents: "Post"
rich-contents-desc: "Just post your idea, hot topics and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files including movies and create a poll - those are the things you can do on Misskey!"
rich-contents-desc: "Just post your idea, hot topics, and anything you want to share. You may want to decorate your words, attach your favorite pictures, send files, including videos, or create a poll - those are some of the things you can do with Misskey!"
reaction: "Reactions"
reaction-desc: "Easiest way to tell your emotions. Misskey allows you to add various type of reactions to others post. The emotional experience on Misskey will never be on other SNSs which only able to push “likes”."
ui: "Interface"
@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "Use avatar as a stone in reversi"
verified-user: "Verified account"
disable-animated-mfm: "Disable animated texts in a post"
disable-showing-animated-images: "Do not play animated images"
suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area"
always-show-nsfw: "Always show NSFW contents"
always-mark-nsfw: "Always mark posts with media attachments as NSFW"
@ -129,7 +130,7 @@ common:
show-password: "Show Password"
do-not-use-in-production: "This is a development build. Do not use in production."
user-suspended: "This user has been suspended."
is-remote-user: "This user's information is mirrored."
is-remote-user: "The information about this user may not be entirely complete."
is-remote-post: "These post contents are mirrored."
view-on-remote: "For completion, view it remotely."
renoted-by: "Renoted by {user}"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "Copy link"
favorite: "Favorite this note"
unfavorite: "Unfavorite"
watch: "Watch"
unwatch: "Unwatch"
pin: "Pin to your profile"
unpin: "Unpin"
delete: "Delete"
@ -358,8 +361,12 @@ common/views/components/user-menu.vue:
push-to-list: "Add to list"
select-list: "Select a list"
report-abuse: "Report abuse"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
report-abuse-detail: "What kind of nuisance did you encounter?"
report-abuse-reported: "The issue has been reported to the administrator. Your cooperation is much appreciated."
silence: "Mute"
unsilence: "Unmute"
suspend: "Suspend"
unsuspend: "Unsuspend"
common/views/components/poll.vue:
vote-to: "Vote for '{}'"
vote-count: "{} votes"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "Account"
location: "Location"
description: "About me"
you-can-include-hashtags: "You can also include hashtags in your profile description."
language: "Language"
birthday: "Birthday"
avatar: "Icon"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "Create a folder"
upload: "Upload a file"
url-upload: "Upload from a URL"
desktop/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "Click to show"
desktop/views/components/media-video.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
@ -788,7 +793,9 @@ desktop/views/components/settings.vue:
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
deck-nav: "Transitionless deck navigation"
deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck."
deck-default: "Use Deck as default UI"
keep-cw: "Preserve content warning"
keep-cw-desc: "When replying to a post, the same content warning is set by default to the reply, as has been set by the original post."
deck-default: "Use Deck view as the default UI"
display: "Design and display"
customize: "Customize home layout"
wallpaper: "Wallpaper"
@ -805,8 +812,8 @@ desktop/views/components/settings.vue:
timeline: "Timeline"
show-my-renotes: "Show my renotes in the timeline"
show-renoted-my-notes: "Show renoted posts of mine in timelines"
show-local-renotes: "Show renoted local posts in timelines"
show-maps: "Display a map to show the location"
show-local-renotes: "Show renoted local posts in the timelines"
show-maps: "Display a map to show location"
remain-deleted-note: "Continue to show deleted posts"
deck-column-align: "Deck column alignment"
deck-column-align-center: "Center"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "Settings saved!"
failed: "Failed to setup. Please ensure that the token is correct."
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
common/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "Click to show"
common/views/components/api-settings.vue:
intro: "To access the API, set this token as the key 'i' of request parameters."
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
@ -1010,7 +1020,6 @@ admin/views/instance.vue:
instance-name: "Instance name"
instance-description: "Instance description"
host: "Host"
logo-url: "Logo image URL"
banner-url: "Banner image URL"
error-image-url: "Error image URL"
languages: "Language of this instance"
@ -1053,7 +1062,7 @@ admin/views/instance.vue:
disable-registration: "Disable new user registration"
disable-local-timeline: "Disable the Local Timeline"
disable-global-timeline: "Disable global timeline"
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
disabling-timelines-info: "Even if you disable these timelines, the administrator as well as moderators can use them continually."
invite: "Invite"
save: "Save"
saved: "Saved"
@ -1125,23 +1134,32 @@ admin/views/drive.vue:
deleted: "Deleted successfully"
mark-as-sensitive: "Mark as 'sensitive'"
unmark-as-sensitive: "Unmark as 'sensitive'"
marked-as-sensitive: "閲覧注意に設定しました"
unmarked-as-sensitive: "閲覧注意を解除しました"
marked-as-sensitive: "Set a sensitive content notice"
unmarked-as-sensitive: "Remove the sensitive content notice"
admin/views/users.vue:
operation: "Operations"
username-or-userid: "Username or user ID"
user-not-found: "User not found"
lookup: "Look up"
reset-password: "Reset password"
reset-password-confirm: "Do you want to reset your password?"
password-updated: "The password is now \"{password}\""
suspend: "Suspend"
suspend-confirm: "Do you want to suspend this account?"
suspended: "Successfully suspended."
unsuspend: "Unsuspend"
unsuspend-confirm: "Are you sure you want to unsuspend this account?"
unsuspended: "The user has successfully unsuspended."
make-silence: "Mute"
unmake-silence: "Unmute"
verify: "Verify account"
verify-confirm: "Do you want this to be a verified account?"
verified: "The account is now being verified"
unverify: "Unverify account"
unverify-confirm: "Do you want to remove the 'verified account' designation?"
unverified: "The account is now being unverified"
update-remote-user: "Update information about remote user"
remote-user-updated: "The information regarding the remote user has been updated."
users:
title: "Users"
sort:
@ -1321,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "NSFW"
mark-as-sensitive: "Mark as 'sensitive'"
unmark-as-sensitive: "Unmark as 'sensitive'"
mobile/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "Click to show"
mobile/views/components/media-video.vue:
sensitive: "The content is NSFW"
click-to-show: "Click to show"
@ -1468,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "Top"
behavior: "Behavior"
fetch-on-scroll: "Endless loading on scroll"
keep-cw: "Preserve content warning"
note-visibility: "Post visibility"
default-note-visibility: "Default visibility"
remember-note-visibility: "Remember post visibility"

View File

@ -5,18 +5,18 @@ meta:
common:
misskey: "Una ⭐️ del fediverso"
about-title: "Una ⭐️ del fediverso"
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?"
about: "Gracias por encontrar Misskey. Misskey es una <b>plataforma descentralizada de microblogging</b> nacida en la Tierra. Porque el servicio existe dentro del Fediverso (un universo donde se organizan varias plataformas sociales), se encuentra enlazado 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?"
intro:
title: "Misskeyって?"
about: "Misskeyはオープンソースの<b>分散型マイクロブログSNS</b>です。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。"
features: "特徴"
rich-contents: "投稿"
rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。"
reaction: "リアクション"
title: "¿Misskey?"
about: "Misskey es un <b>Servicio de red social descentralizada de microblogging</b> de código abierto. Contiene una interfaz de usuario altamente personalizable, reacciones a posts, almacenamiento para poder manejar archivos y otras funciones avanzadas. Además de conectarse con la red llamada Fediverso, puede intercambiar mensajes con otras redes sociales. Por ejemplo, si contribuyes con algo, esa contribución es transmitida no sólo a Misskey sino a otras redes sociales. Imagina que se parece a transmitir una onda de radio de un planeta a otro."
features: "Características"
rich-contents: "Posts"
rich-contents-desc: "Escribe sobre tus pensamientos, eventos, todo lo que quieras compartir. Si es necesario, puedes usar varias sintaxis, decorar tus posts y añadir tus imágenes favoritas, archivos de viddeo y encuestas."
reaction: "Reacciones"
reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。"
ui: "インターフェース"
ui: "Interfaz"
ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。"
drive: "ドライブ"
drive: "Drive"
drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんかもしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんかMisskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。"
outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!"
adblock:
@ -27,7 +27,7 @@ common:
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
load-more: "もっと読み込む"
enter-password: "パスワードを入力してください"
2fa: "二段階認証"
2fa: "Autenticación de dos factores"
got-it: "¡Listo!"
customization-tips:
title: "Consejos de personalización"
@ -54,8 +54,8 @@ common:
years_ago: "Hace {} año(s)"
month-and-day: "{day} de {month}"
trash: "Papelera"
drive: "ドライブ"
messaging: "トーク"
drive: "Drive"
messaging: "Conversación"
weekday-short:
sunday: "domingo"
monday: "lunes"
@ -84,16 +84,16 @@ common:
rip: "RIP"
pudding: "Chafado"
note-visibility:
public: "公開"
home: "ホーム"
home-desc: "ホームタイムラインにのみ公開"
followers: "フォロワー"
followers-desc: "自分のフォロワーにのみ公開"
specified: "ダイレクト"
specified-desc: "指定したユーザーにのみ公開"
local-public: "公開 (ローカルのみ)"
local-home: "ホーム (ローカルのみ)"
local-followers: "フォロワー (ローカルのみ)"
public: "Público"
home: "Inicio"
home-desc: "Sólo en el timeline de inicio"
followers: "Seguidores"
followers-desc: "Sólo para tus seguidores"
specified: "Mensaje directo"
specified-desc: "Sólo para ciertos usuarios"
local-public: "Público (sólo local)"
local-home: "Inicio (sólo local)"
local-followers: "Seguidores (sólo local)"
note-placeholders:
a: "¿Qué haces?"
b: "¿Qué está pasando?"
@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "Cuenta verificada"
disable-animated-mfm: "Desactivar texto animado en una publicación"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -122,14 +123,14 @@ common:
this-setting-is-this-device-only: "このデバイスのみ"
use-os-default-emojis: "OS標準の絵文字を使用"
line-width: "線の太さ"
line-width-thin: "細い"
line-width-thin: "Fino"
line-width-normal: "普通"
line-width-thick: "太い"
line-width-thick: "Grueso"
hide-password: "パスワードを隠す"
show-password: "パスワードを表示する"
do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -171,7 +172,7 @@ common:
hashtags: "Etiquetas"
dev: "アプリの作成に失敗しました。再度お試しください。"
ai-chan-kawaii: "藍ちゃかわいい"
you: "あなた"
you: ""
auth/views/form.vue:
share-access: "<i>{name}</i>があなたのアカウントにアクセスすることを許可しますか?"
permission-ask: "La aplicación requiere los siguientes permisos:"
@ -267,48 +268,48 @@ common/views/components/media-banner.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/theme.vue:
theme: "テーマ"
theme: "Tema"
light-theme: "非ダークモード時に使用するテーマ"
dark-theme: "ダークモード時に使用するテーマ"
light-themes: "明るいテーマ"
dark-themes: "暗いテーマ"
install-a-theme: "テーマのインストール"
theme-code: "テーマコード"
install: "インストール"
light-themes: "Tema claro"
dark-themes: "Tema oscuro"
install-a-theme: "Instalar tema"
theme-code: "Código del tema"
install: "Instalación"
installed: "「{}」をインストールしました"
create-a-theme: "テーマの作成"
save-created-theme: "テーマを保存"
primary-color: "プライマリ カラー"
secondary-color: "セカンダリ カラー"
primary-color: "Color primario"
secondary-color: "Color secundario"
text-color: "文字色"
base-theme: "ベーステーマ"
base-theme-light: "Light"
base-theme-dark: "Dark"
base-theme: "Tema base"
base-theme-light: "Claro"
base-theme-dark: "Oscuro"
find-more-theme: "その他のテーマを入手"
theme-name: "テーマ名"
preview-created-theme: "プレビュー"
theme-name: "Nombre del tema"
preview-created-theme: "Vista previa"
invalid-theme: "テーマが正しくありません。"
already-installed: "既にそのテーマはインストールされています。"
saved: "保存しました"
manage-themes: "テーマの管理"
builtin-themes: "標準テーマ"
my-themes: "マイテーマ"
installed-themes: "インストールされたテーマ"
my-themes: "Mis temas"
installed-themes: "Temas instalados"
select-theme: "テーマを選択してください"
uninstall: "アンインストール"
uninstall: "Desinstalar"
uninstalled: "「{}」をアンインストールしました"
author: "作者"
desc: "説明"
export: "エクスポート"
import: "インポート"
export: "Exportar"
import: "Importar"
import-by-code: "またはコードをペースト"
theme-name-required: "テーマ名は必須です。"
common/views/components/cw-button.vue:
hide: "隠す"
show: "もっと見る"
chars: "{count}文字"
files: "{count}ファイル"
poll: "アンケート"
show: "Mostrar"
chars: "{count} letras"
files: "{count} archivos"
poll: "Encuesta"
common/views/components/messaging.vue:
search-user: "Encuentra un usuario"
you: "Tu"
@ -338,28 +339,34 @@ common/views/components/nav.vue:
develop: "Desarrolladores"
feedback: "Opiniones"
common/views/components/note-menu.vue:
mention: "メンション"
mention: "Menciones"
detail: "Detalles"
copy-content: "内容をコピー"
copy-link: "Copiar enlace"
favorite: "Me gusta esta nota"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "Fijar en el perfil"
unpin: "ピン留め解除"
delete: "Borrar"
delete-confirm: "¿Seguro que quieres borrar la publicación?"
remote: "Ver el original"
common/views/components/user-menu.vue:
mention: "メンション"
mute: "ミュート"
mention: "Menciones"
mute: "Silenciar"
unmute: "ミュート解除"
block: "ブロック"
block: "Bloquear"
unblock: "ブロック解除"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "'{}' para votar"
vote-count: "{} votos"
@ -376,15 +383,15 @@ common/views/components/poll-editor.vue:
common/views/components/reaction-picker.vue:
choose-reaction: "Escoge una reacción"
common/views/components/emoji-picker.vue:
custom-emoji: "カスタム絵文字"
people: ""
animals-and-nature: "動物&自然"
food-and-drink: "食べ物&飲み物"
activity: "アクティビティ"
travel-and-places: "場所"
objects: ""
symbols: "記号"
flags: ""
custom-emoji: "Personalizados"
people: "Gente"
animals-and-nature: "Naturaleza"
food-and-drink: "Comida y bebida"
activity: "Actividad"
travel-and-places: "Viajes y lugares"
objects: "Objetos"
symbols: "Símbolos"
flags: "Países"
common/views/components/signin.vue:
username: "Usuario"
password: "Contraseña"
@ -393,8 +400,8 @@ common/views/components/signin.vue:
signin: "Entra"
or: "O"
signin-with-twitter: "Ingresar con Twitter"
signin-with-github: "GitHubでログイン"
signin-with-discord: "Discordでログイン"
signin-with-github: "Ingresar con Github"
signin-with-discord: "Ingresar con Discord"
login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos."
common/views/components/signup.vue:
invitation-code: "Código de invitación"
@ -477,17 +484,18 @@ common/views/components/language-settings.vue:
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue:
title: "プロフィール"
name: "名前"
account: "アカウント"
title: "Perfil"
name: "Nombre"
account: "Cuenta"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
banner: "バナー"
is-cat: "このアカウントはCatです"
is-bot: "このアカウントはBotです"
avatar: "Avatar"
banner: "Banner"
is-cat: "Esta cuenta es un gato"
is-bot: "Esta cuenta es un bot"
is-locked: "フォローを承認制にする"
careful-bot: "Botからのフォローだけ承認制にする"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
@ -498,11 +506,11 @@ common/views/components/profile-editor.vue:
uploading: "アップロード中"
upload-failed: "アップロードに失敗しました"
email: "メール設定"
email-address: "メールアドレス"
email-address: "Correo electrónico"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
users: "Usuarios"
rename: "リスト名を変更"
delete: "リストを削除"
remove-user: "このリストから削除"
@ -567,7 +575,7 @@ common/views/pages/follow.vue:
following: "Siguiendo"
follow: "Seguir"
request-pending: "Solicitud pendiente"
follow-processing: "フォロー処理中"
follow-processing: "Solicitud en proceso"
follow-request: "Solicitar suscripción"
desktop:
banner-crop-title: "Corta la parte que aparece como un banner"
@ -590,7 +598,7 @@ desktop/views/components/activity.vue:
title: "Actividad"
toggle: "Alternar vistas"
desktop/views/components/calendar.vue:
title: "{year} {month}"
title: "{year} / {month}"
prev: "Mes anterior"
next: "Próximo mes"
go: "Click para navegar"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "Crear una carpeta"
upload: "Subir fichero"
url-upload: "Subir desde una URL"
desktop/views/components/media-image.vue:
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
click-to-show: "Click para mostrar"
desktop/views/components/media-video.vue:
sensitive: "Este contenido no es apropiado para ver en el trabajo"
click-to-show: "Click para mostrar"
@ -701,7 +706,7 @@ desktop/views/components/note-detail.vue:
desktop/views/components/note.vue:
reply: "返信"
renote: "Renote"
add-reaction: "リアクション"
add-reaction: "Reacción"
undo-reaction: "リアクション解除"
detail: "詳細"
private: "この投稿は非公開です"
@ -759,23 +764,23 @@ desktop/views/components/renote-form.vue:
desktop/views/components/renote-form-window.vue:
title: "¿Seguro qué quieres volver a publicarlo?"
desktop/views/pages/user-following-or-followers.vue:
following: "{user}のフォロー"
followers: "{user}のフォロワー"
following: "{user} sigue a"
followers: "Seguidores de {user}"
desktop/views/components/settings-window.vue:
settings: "Configuración"
desktop/views/components/settings.vue:
profile: "Perfil"
notification: "Notificación"
apps: "Aplicaciones"
tags: "ハッシュタグ"
mute-and-block: "ミュート/ブロック"
blocking: "ブロック"
tags: "Hashtags"
mute-and-block: "Silenciar/Bloquear"
blocking: "Bloquear"
security: "Seguridad"
signin: "Historial de inicios de sesión"
password: "Contraseña"
other: "Otros"
license: "Licencia"
theme: "テーマ"
theme: "Tema"
behaviour: "Acciones"
fetch-on-scroll: "Desplazamiento infinito"
fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente."
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Diseño y pantalla"
customize: "Personaliza la página principal"
@ -810,30 +817,30 @@ desktop/views/components/settings.vue:
remain-deleted-note: "削除された投稿を表示し続ける"
deck-column-align: "デッキのカラムの配置"
deck-column-align-center: "中央"
deck-column-align-left: ""
deck-column-align-flexible: "フレキシブル"
deck-column-align-left: "Izquierda"
deck-column-align-flexible: "Flexible"
deck-column-width: "デッキのカラムの幅"
deck-column-width-narrow: "狭"
deck-column-width-narrower: "やや狭"
deck-column-width-normal: "普通"
deck-column-width-wider: "やや広"
deck-column-width-wide: "広"
sound: "サウンド"
sound: "Sonidos"
enable-sounds: "サウンドを有効にする"
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム"
test: "テスト"
cache: "キャッシュ"
clean-cache: "クリーンアップ"
volume: "Volúmen"
test: "Prueba"
cache: "Caché"
clean-cache: "Borrar caché"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
cache-cleared: "キャッシュを削除しました"
cache-cleared-desc: "ページを再度読み込みしてください。"
about: "Misskeyについて"
operator: "このサーバーの運営者"
update: "Misskey Update"
version: "バージョン:"
latest-version: "最新のバージョン:"
update-checking: "アップデートを確認中"
update: "Actualizar Misskey"
version: "Versión"
latest-version: "Última versión"
update-checking: "Chequeando actualización"
do-update: "Chequear por actualizaciones"
update-settings: "Configuración avanzada"
prevent-update: "Posponer actualizaciones (no recomendado)"
@ -851,9 +858,9 @@ desktop/views/components/settings.vue:
task-manager: "Navegador de tareas"
third-parties: "Servicios externos"
navbar-position: "ナビゲーションバーの位置"
navbar-position-top: ""
navbar-position-left: ""
navbar-position-right: ""
navbar-position-top: "Arriba"
navbar-position-left: "Izquierda"
navbar-position-right: "Derecha"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "Ver detalles..."
@ -866,13 +873,16 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Escribe una contraseña"
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
howtoinstall: "Cómo instalar"
token: "トークン"
token: "Token"
scan: "Luego, escanea el código QR:"
done: "Por favor ingresa el token mostrado en tu dispositivo:"
submit: "Enviar"
success: "¡Configuraciones guardadas!"
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -881,7 +891,7 @@ common/views/components/api-settings.vue:
token: "Token:"
enter-password: "パスワードを入力してください"
console:
title: "APIコンソール"
title: "Consola API"
endpoint: "エンドポイント"
parameter: "パラメータ"
credential-info: "「i」パラメータは自動で付与されます。"
@ -895,9 +905,9 @@ common/views/components/drive-settings.vue:
in-use: "使用中"
stats: "統計"
common/views/components/mute-and-block.vue:
mute-and-block: "ミュートとブロック"
mute: "ミュート"
block: "ブロック"
mute-and-block: "Silenciar y bloquear"
mute: "Silenciar"
block: "Bloquear"
no-muted-users: "ミュートしているユーザーはいません"
no-blocked-users: "ブロックしているユーザーはいません"
word-mute: "ワードミュート"
@ -916,26 +926,26 @@ desktop/views/components/sub-note-content.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
media-count: "{}つのメディア"
poll: "アンケート"
poll: "Encuesta"
desktop/views/components/settings.tags.vue:
title: "タグ"
title: "Etiqueta"
query: "クエリ (省略可)"
add: "追加"
save: "保存"
desktop/views/components/taskmanager.vue:
title: "タスクマネージャ"
desktop/views/components/timeline.vue:
home: "ホーム"
local: "ローカル"
hybrid: "ソーシャル"
global: "グローバル"
home: "Inicio"
local: "Local"
hybrid: "Social"
global: "Global"
mentions: "あなた宛て"
messages: "メッセージ"
list: "リスト"
hashtag: "ハッシュタグ"
list: "Listas"
hashtag: "Hashtags"
add-tag-timeline: "ハッシュタグを追加"
add-list: "リストを追加"
list-name: "リスト名"
list-name: "Nombre de lista"
desktop/views/components/ui.header.vue:
welcome-back: "Bienvenido/a de vuelta,"
adjective: "-san"
@ -969,35 +979,35 @@ desktop/views/components/user-lists-window.vue:
list-name: "Nombre de lista"
desktop/views/components/user-preview.vue:
notes: "Publicaciones"
following: "フォロー"
followers: "フォロワー"
following: "Sigue"
followers: "Seguidores"
desktop/views/components/users-list.vue:
all: "すべて"
all: "Todo"
iknow: "知り合い"
fetching: "読み込んでいます"
desktop/views/components/users-list-item.vue:
followed: "フォローされています"
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
close: "Cerrar"
admin/views/index.vue:
dashboard: "ダッシュボード"
instance: "インスタンス"
dashboard: "Panel de control"
instance: "Instancia"
emoji: "カスタム絵文字"
moderators: "モデレーター"
users: "ユーザー"
moderators: "Moderadores"
users: "Usuarios"
federation: "連合"
announcements: "お知らせ"
hashtags: "ハッシュタグ"
hashtags: "Hashtags"
abuse: "スパム報告"
back-to-misskey: "Misskeyに戻る"
back-to-misskey: "Volver a Misskey"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
accounts: "アカウント"
dashboard: "Panel de Control"
accounts: "Cuenta"
notes: "投稿"
drive: "ドライブ"
instances: "インスタンス"
this-instance: "このインスタンス"
drive: "Drive"
instances: "Instancias"
this-instance: "Esta instancia"
federated: "連合"
admin/views/abuse.vue:
title: "スパム報告"
@ -1006,10 +1016,10 @@ admin/views/abuse.vue:
details: "詳細"
remove-report: "削除"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
instance: "Instancia"
instance-name: "Nombre de la instancia"
instance-description: "インスタンスの紹介"
host: "ホスト"
host: "Host"
banner-url: "バナー画像URL"
error-image-url: "エラー画像URL"
languages: "インスタンスの対象言語"
@ -1027,7 +1037,7 @@ admin/views/instance.vue:
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
recaptcha-secret-key: "clave secreta reCAPTCHA"
twitter-integration-config: "Twitter連携の設定"
twitter-integration-info: "コールバックURLは {url} に設定します。"
enable-twitter-integration: "Twitter連携を有効にする"
@ -1060,7 +1070,7 @@ admin/views/instance.vue:
enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする"
external-user-recommendation-engine: "エンジン"
external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "タイムアウト"
external-user-recommendation-timeout: "Tiempo de espera"
external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)"
email-config: "メールサーバーの設定"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。"
@ -1068,10 +1078,10 @@ admin/views/instance.vue:
email: "メールアドレス"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する"
smtp-secure-info: "STARTTLS使用時はオフにします。"
smtp-host: "SMTPホスト"
smtp-port: "SMTPポート"
smtp-user: "SMTPユーザー"
smtp-pass: "SMTPパスワード"
smtp-host: "Host SMTP"
smtp-port: "Puerto SMTP"
smtp-user: "Usuario SMTP"
smtp-pass: "Contraseña SMTP"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "ServiceWorkerを有効にする"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
@ -1079,14 +1089,14 @@ admin/views/instance.vue:
vapid-privatekey: "VAPID秘密鍵"
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
admin/views/charts.vue:
title: "チャート"
per-day: "1日ごと"
per-hour: "1時間ごと"
federation: "フェデレーション"
title: "Gráficos"
per-day: "Por día"
per-hour: "Por hora"
federation: "Federación"
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
users: "Usuarios"
drive: "Drive"
network: "Red"
charts:
federation-instances: "インスタンスの増減"
federation-instances-total: "インスタンスの積算"
@ -1110,16 +1120,16 @@ admin/views/drive.vue:
file-not-found: "ファイルが見つかりません"
lookup: "照会"
sort:
title: "ソート"
title: "Ordenar"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
origin:
title: "オリジン"
combined: "ローカル+リモート"
local: "ローカル"
remote: "リモート"
combined: "Local+Remoto"
local: "Local"
remote: "Remoto"
delete: "削除"
deleted: "削除しました"
mark-as-sensitive: "閲覧注意に設定"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "Utiliser lavatar comme pion dans Reversi"
verified-user: "Compte vérifié"
disable-animated-mfm: "Désactiver les textes animés dans les publications"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "Suggérer les hashtags récemment utilisés dans le champs de saisie"
always-show-nsfw: "Toujours afficher les contenus sensibles"
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
@ -129,7 +130,7 @@ common:
show-password: "Afficher le mot de passe"
do-not-use-in-production: "Il sagit dune version de développement. Ne pas utiliser dans un environnement de production."
user-suspended: "Cet·te utilisateur·trice a été suspendu·e"
is-remote-user: "Ces informations appartiennent à un utilisateur distant."
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "Ceci est une publication distante."
view-on-remote: " Consulter le profil complet"
renoted-by: "Renoté par {user}"
@ -333,7 +334,7 @@ common/views/components/nav.vue:
stats: "Statistiques"
status: "Statut"
wiki: "Wiki"
donors: "Donateurs"
donors: "Donateur·rice·s"
repository: "Dépôt"
develop: "Développeurs"
feedback: "Suggestions"
@ -344,26 +345,32 @@ common/views/components/note-menu.vue:
copy-link: "Copier le lien"
favorite: "Mettre cette note en favoris"
unfavorite: "Retirer des favoris"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "Épingler sur votre profil"
unpin: "Désépingler"
delete: "Supprimer"
delete-confirm: "Supprimer cette publication ?"
remote: "Afficher la note originale"
common/views/components/user-menu.vue:
mention: "メンション"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
mention: "Mention"
mute: "Silencier"
unmute: "Enlever la sourdine"
block: "Bloquer"
unblock: "Débloquer"
push-to-list: "Ajouter à une liste"
select-list: "Sélectionnez une liste"
report-abuse: "Signaler un abus"
report-abuse-detail: "Détail du signalement"
report-abuse-reported: "Transmit à ladministrateur. Merci de votre collaboration."
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "Suspendre"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "Voter pour '{}'"
vote-count: "{} votes"
total-users: "{} utilisateurs ont voté"
total-users: "{} utilisateur·rice·s ont voté"
vote: "Vote"
show-result: "Montrer les résultats"
voted: "Voté"
@ -386,7 +393,7 @@ common/views/components/emoji-picker.vue:
symbols: "Symboles"
flags: "Drapeaux"
common/views/components/signin.vue:
username: "Nom d'utilisateur"
username: "Nom d'utilisateur·rice"
password: "Mot de passe"
token: "Jeton"
signing-in: "Connexion…"
@ -399,7 +406,7 @@ common/views/components/signin.vue:
common/views/components/signup.vue:
invitation-code: "Code dinvitation"
invitation-info: "Si vous navez pas de code dinvitation, contactez un <a href=\"{}\">administrateur</a>."
username: "Nom d'utilisateur"
username: "Nom d'utilisateur·rice"
checking: "Vérification…"
available: "Disponible"
unavailable: "Non disponible"
@ -432,7 +439,7 @@ common/views/components/notification-settings.vue:
mark-as-read-all-unread-notes: "Marquer toutes les notes comme lues"
mark-as-read-all-talk-messages: "Marquer toutes les conversations comme lues"
auto-watch: "投稿の自動ウォッチ"
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
auto-watch-desc: "Recevoir automatiquement des notifications à propos des publications auxquelles vous avez réagi ou répondu"
common/views/components/integration-settings.vue:
title: "Intégrations"
connect: "Connecter"
@ -458,8 +465,8 @@ common/views/components/visibility-chooser.vue:
public: "Public"
home: "Accueil"
home-desc: "Publier sur le fil dAccueil uniquement"
followers: "Abonnés"
followers-desc: "Publier à vos abonnés uniquement"
followers: "Abonné·e·s"
followers-desc: "Publier à vos abonné·e·s uniquement"
specified: "Direct"
specified-desc: "Publier uniquement aux utilisateurs mentionnés"
local-public: "Local (Public)"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "Compte"
location: "Lieu"
description: "À propos de moi"
you-can-include-hashtags: "Vous pouvez également inclure un hashtag sur votre description de profile."
language: "Langue"
birthday: "Date de naissance"
avatar: "Avatar"
@ -490,7 +498,7 @@ common/views/components/profile-editor.vue:
is-bot: "Ce compte est un Bot"
is-locked: "Demandes dabonnements requièrent lapprobation"
careful-bot: "Les demandes dabonnements venant de Bots requièrent lapprobation"
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
auto-accept-followed: "Accepter automatiquement les demandes dabonnement venant des gens que vous suivez"
advanced: "Avancé"
privacy: "Vie privée"
save: "Mettre à jour le profil"
@ -502,7 +510,7 @@ common/views/components/profile-editor.vue:
email-verified: "Ladresse du courrier électronique a été vérifiée."
email-not-verified: "Adresse de courriel nest pas confirmée. Veuillez vérifier votre boite de réception."
common/views/components/user-list-editor.vue:
users: "Utilisateur"
users: "Utilisateur·rice"
rename: "Renommer la liste"
delete: "Supprimer la liste"
remove-user: "Retirer de cette liste"
@ -658,23 +666,20 @@ desktop/views/components/drive.vue:
create-folder: "Créer un dossier"
upload: "Téléverser un fichier"
url-upload: "Téléverser à partir dune URL"
desktop/views/components/media-image.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
desktop/views/components/media-video.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
desktop/views/components/followers-window.vue:
followers: "{} abonnés"
followers: "{} abonné·e·s"
desktop/views/components/followers.vue:
empty: "Il semble que vous n'avez pas encore d'abonnés."
empty: "Il semble que vous navez pas encore dabonné·e·s."
desktop/views/components/following-window.vue:
following: "Suit {}"
desktop/views/components/following.vue:
empty: "Vous ne suivez aucun compte."
desktop/views/components/friends-maker.vue:
title: "Utilisateurs recommandés :"
empty: "Impossible de trouver des utilisateurs à recommander."
title: "Utilisateur·rice·s recommandé·e·s :"
empty: "Impossible de trouver des utilisateur·trice·s à recommander."
fetching: "Chargement"
refresh: "Plus"
close: "Fermer"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "Deck sans tansitions"
deck-nav-desc: "Vous obtenez une colonne temporaire sans transitions dans la page pendant la navigation, lors de lutilisation du Deck."
keep-cw: "Maintenir l'avertissement de contenu"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "Utiliser le Deck comme IU par défaut"
display: "Affichage et design"
customize: "Personnaliser l'Accueil"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "Sauvegarde des paramètres avec succès !"
failed: "Lopération a échoué. Veuillez vous assurer que le jeton a été saisi correctement."
info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil."
common/views/components/media-image.vue:
sensitive: "Contenu sensible"
click-to-show: "Cliquer pour afficher"
common/views/components/api-settings.vue:
intro: "Pour accéder à l'API, définissez ce jeton comme la clé de « i » dans les paramètres de requête."
caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte."
@ -970,7 +980,7 @@ desktop/views/components/user-lists-window.vue:
desktop/views/components/user-preview.vue:
notes: "Publications"
following: "Abonné à"
followers: "Abonnés"
followers: "Abonné·e·s"
desktop/views/components/users-list.vue:
all: "Tout"
iknow: "Vous connaissez"
@ -989,7 +999,7 @@ admin/views/index.vue:
federation: "Fédération"
announcements: "Annonces"
hashtags: "Hashtags"
abuse: "スパム報告"
abuse: "Abus"
back-to-misskey: "Retour vers Misskey"
admin/views/dashboard.vue:
dashboard: "Tableau de bord"
@ -1000,11 +1010,11 @@ admin/views/dashboard.vue:
this-instance: "Cette instance"
federated: "Fédérées"
admin/views/abuse.vue:
title: "スパム報告"
target: "対象"
reporter: "報告者"
details: "詳細"
remove-report: "削除"
title: "Abus"
target: "Cible"
reporter: "Signalé par"
details: "Détails"
remove-report: "Supprimer"
admin/views/instance.vue:
instance: "Instance"
instance-name: "Nom de linstance"
@ -1051,7 +1061,7 @@ admin/views/instance.vue:
max-note-text-length: "Nombre maximal de caractères pour les messages"
disable-registration: "Désactiver les inscriptions"
disable-local-timeline: "Désactiver le fil local"
disable-global-timeline: "グローバルタイムラインを無効にする"
disable-global-timeline: "Désactiver le fil global"
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
invite: "Inviter"
save: "Sauvegarder"
@ -1105,10 +1115,10 @@ admin/views/charts.vue:
network-time: "Temps de réponse"
network-usage: "Traffic"
admin/views/drive.vue:
operation: "操作"
fileid-or-url: "ファイルIDまたはファイルURL"
file-not-found: "ファイルが見つかりません"
lookup: "照会"
operation: "Actions"
fileid-or-url: "ID du fichier ou URL"
file-not-found: "Fichier non trouvé"
lookup: "Recherche"
sort:
title: "Tri"
createdAtAsc: "Âge - Du plus ancien"
@ -1124,23 +1134,32 @@ admin/views/drive.vue:
deleted: "Supprimé"
mark-as-sensitive: "Marquer comme sensible"
unmark-as-sensitive: "Ne pas marquer comme sensible"
marked-as-sensitive: "閲覧注意に設定しました"
unmarked-as-sensitive: "閲覧注意を解除しました"
marked-as-sensitive: "Marqué comme sensible"
unmarked-as-sensitive: "Marqué comme non sensible"
admin/views/users.vue:
operation: "Actions"
username-or-userid: "Nom dutilisateur·rice ou ID utilisateur"
user-not-found: "Utilisateur non trouvé"
lookup: "Recherche"
reset-password: "Réinitialiser mot de passe"
reset-password-confirm: "Souhaitez-vous réinitialiser votre mot de passe ?"
password-updated: "Le mot de passe est « {password} »"
suspend: "Suspendre"
suspend-confirm: "Désirez-vous suspendre ce compte ?"
suspended: "Suspendu avec succès."
unsuspend: "Suspension levée"
unsuspend-confirm: "Souhaiteriez-vous ne plus suspendre ce compte ?"
unsuspended: "La suspension de lutilisateur a été levée avec succès"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "Vérification du compte"
verify-confirm: "Souhaiteriez-vous rendre votre compte comme étant un compte vérifié ?"
verified: "Le compte a été vérifié"
unverify: "Enlever la vérification du compte"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "Ce compte n'est plus vérifié"
update-remote-user: "Mettre à jour les informations de lutilisateur·rice distant·e"
remote-user-updated: "Les informations de lutilisateur·rice distant·e ont étés mis à jour"
users:
title: "Utilisateurs"
sort:
@ -1235,11 +1254,11 @@ desktop/views/pages/share.vue:
desktop/views/pages/tag.vue:
no-posts-found: "Aucune publication contenant « {q} » na été trouvée."
desktop/views/pages/user-list.users.vue:
users: "Utilisateurs"
users: "Utilisateur·rice·s"
add-user: "Ajouter un utilisateur"
username: "Nom d'utilisateur"
desktop/views/pages/user/user.followers-you-know.vue:
title: "Abonnés que vous connaissez"
title: "Abonné·e·s que vous connaissez"
loading: "Chargement en cours"
no-users: "Aucun abonné connu"
desktop/views/pages/user/user.friends.vue:
@ -1252,11 +1271,11 @@ desktop/views/pages/user/user.photos.vue:
no-photos: "Pas de photos"
desktop/views/pages/user/user.profile.vue:
follows-you: "Vous suit"
menu: "メニュー"
menu: "Menu"
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Suit"
followers: "Abonnés"
followers: "Abonné·e·s"
is-bot: "Ce compte est un Bot"
years-old: "{age} ans"
year: "/"
@ -1288,7 +1307,7 @@ desktop/views/widgets/trends.vue:
refresh: "Afficher d'autres"
nothing: "Rien"
desktop/views/widgets/users.vue:
title: "Utilisateurs"
title: "Utilisateurs·rices"
refresh: "Afficher d'autres"
no-one: "Personne"
mobile/views/components/drive.vue:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "CW"
mark-as-sensitive: "Marquer comme sensible"
unmark-as-sensitive: "Ne pas marquer comme sensible"
mobile/views/components/media-image.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
mobile/views/components/media-video.vue:
sensitive: "Le contenu est NSFW"
click-to-show: "Cliquer pour afficher"
@ -1334,7 +1350,7 @@ common/views/components/follow-button.vue:
follow-request: "Demande dabonnement"
mobile/views/components/friends-maker.vue:
title: "Abonnez-vous à"
empty: "Impossible de trouver des utilisateurs à recommander."
empty: "Impossible de trouver des utilisateurs·trices à recommander."
fetching: "Chargement"
refresh: "Voir plus"
close: "Fermer"
@ -1448,7 +1464,7 @@ mobile/views/pages/search.vue:
mobile/views/pages/selectdrive.vue:
select-file: "Choisissez un fichier"
mobile/views/pages/settings.vue:
signed-in-as: "Connecté en tant que {}"
signed-in-as: "Connecté·e en tant que {}"
design: "Affichage et design"
dark-mode: "Mode nuit"
i-am-under-limited-internet: "J'ai un accès Internet limité"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "en haut"
behavior: "Comportement"
fetch-on-scroll: "Chargement lors du défilement"
keep-cw: "Garder l'avertissement de contenu"
note-visibility: "Visibilité de la publication"
default-note-visibility: "Visibilité par défaut"
remember-note-visibility: "Se souvenir du mode de visibilité de la publication"
@ -1492,7 +1509,7 @@ mobile/views/pages/settings.vue:
mobile/views/pages/user.vue:
follows-you: "Vous suit"
following: "Abonnements"
followers: "Abonnés"
followers: "Abonné·e·s"
notes: "Notes"
overview: "Aperçu"
timeline: "Fil dactualité"
@ -1505,10 +1522,10 @@ mobile/views/pages/user/home.vue:
keywords: "Mot clés"
domains: "Domaines"
frequently-replied-users: "Utilisateurs mentionnés souvent"
followers-you-know: "Abonnés que vous connaissez"
followers-you-know: "Abonné·e·s que vous connaissez"
last-used-at: "Dernière connexion il y a"
mobile/views/pages/user/home.followers-you-know.vue:
no-users: "Aucun utilisateur connu"
no-users: "Aucun utilisateur·rice connu·e"
mobile/views/pages/user/home.friends.vue:
no-users: "Aucun utilisateur connu"
mobile/views/pages/user/home.notes.vue:

5
locales/index.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
type Locale = { [key: string]: string };
declare const locales: { [lang: string]: Locale };
export default locales;

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{}票"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -121,6 +121,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -138,7 +139,7 @@ common:
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -374,6 +375,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -391,6 +394,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
@ -530,6 +537,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -549,6 +557,9 @@ common/views/components/profile-editor.vue:
email-address: "メールアドレス"
email-verified: "メールアドレスが確認されました"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
export: "エクスポート"
export-notes: "すべての投稿のエクスポート"
export-requested: "エクスポートをリクエストしました。これには時間がかかる場合があります。エクスポートが終わると、ドライブにファイルが追加されます。"
common/views/components/user-list-editor.vue:
users: "ユーザー"
@ -730,10 +741,6 @@ desktop/views/components/drive.vue:
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -884,6 +891,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
@ -978,6 +987,10 @@ desktop/views/components/settings.2fa.vue:
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1264,15 +1277,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1484,10 +1506,6 @@ mobile/views/components/drive.file-detail.vue:
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1664,6 +1682,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "アメちゃん付きアカウント"
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "閲覧注意?見せたらあかん?そんなん知らんわ、見せろや!"
always-mark-nsfw: "わからんからとりあえずメディアは見せたらあかん"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "ちゃんとした情報見せてや!"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入りやめる"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留めやめる"
delete: "ほかす"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票や!"
vote-count: "{}票"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダー作る"
upload: "ファイル上げる"
url-upload: "URLつこうて上げる"
desktop/views/components/media-image.vue:
sensitive: "ちょっと見せられへんわ"
click-to-show: "クリックして見せるで"
desktop/views/components/media-video.vue:
sensitive: "ちょっと見せられへんわ"
click-to-show: "クリックして見せるで"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使うとるとき、ナビゲーションが発生するときにページ移動せんで、一時的なカラムで受けれるようにするで"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "見た感じ"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了したで!"
failed: "なんか設定に失敗したで。トークンを間違えとらんか確認してや。"
info: "次のサインインからは、パスワードに加えてデバイスに出とるトークンを入力してな。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "API使うんやったらこのトークンを「i」っちゅうパラメータにくっつけてリクエストできるで。"
caution: "アカウント勝手にいじられるかも知れんから、このトークンは教えたらあかんし、アプリにも書いたらあかんで(これはフリちゃうで)"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つからへん!"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password} 」やで"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "ちょっと見せられへんわ"
mark-as-sensitive: "見たらあかん感じにしとく"
unmark-as-sensitive: "やっぱ見せたるわ"
mobile/views/components/media-image.vue:
sensitive: "見たらあかんで"
click-to-show: "押してみ、見せたるわ"
mobile/views/components/media-video.vue:
sensitive: "ちょっと見せられへんわ"
click-to-show: "押してみ、見せたるわ"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "キタの方"
behavior: "動き"
fetch-on-scroll: "スクロールしたらもっと見せてや"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "もとからの公開範囲"
remember-note-visibility: "投稿の公開範囲おぼえといて"

View File

@ -27,7 +27,7 @@ common:
do-not-copy-paste: "여기에 코드를 입력하거나 붙여넣지 마십시오. 계정이 무단으로 사용될 수 있습니다."
load-more: "더보기"
enter-password: "비밀번호를 입력하여 주십시오"
2fa: "二段階認証"
2fa: "2단계 인증"
got-it: "알겠습니다"
customization-tips:
title: "커스터마이징 도움말"
@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "리버시의 돌로 아바타를 사용"
verified-user: "공식 계정"
disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
always-show-nsfw: "항상 열람주의 미디어를 표시"
always-mark-nsfw: "항상 미디어를 열람주의로 설정하여 게시"
@ -129,7 +130,7 @@ common:
show-password: "비밀번호 표시"
do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오."
user-suspended: "이 사용자는 정지된 상태입니다."
is-remote-user: "이 유저 정보는 복사본입니다."
is-remote-user: "이 사용자 정보는 정확하지 않을 수 있습니다."
is-remote-post: "이 글 정보는 복사본입니다."
view-on-remote: "정확한 정보 보기"
renoted-by: "{user}이(가) 리노트"
@ -344,22 +345,28 @@ common/views/components/note-menu.vue:
copy-link: "링크 복사"
favorite: "이 노트 즐겨찾기"
unfavorite: "즐겨찾기에서 제거"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "프로필에 고정"
unpin: "프로필에서 고정 해제"
delete: "삭제"
delete-confirm: "이 글을 삭제하시겠습니까?"
remote: "글 원본 보기"
common/views/components/user-menu.vue:
mention: "メンション"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
mention: "멘션"
mute: "뮤트"
unmute: "뮤트 해제"
block: "차단"
unblock: "차단 해제"
push-to-list: "리스트에 추가"
select-list: "리스트를 선택하여 주십시오"
report-abuse: "스팸 신고"
report-abuse-detail: "어떤 스팸 행위를 하고 있습니까?"
report-abuse-reported: "관리자에게 보고되었습니다. 협조해주셔서 감사합니다."
silence: "침묵"
unsilence: "침묵 해제"
suspend: "정지"
unsuspend: "정지 해제"
common/views/components/poll.vue:
vote-to: "\"{}\"에 투표하기"
vote-count: "{}표"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "계정"
location: "장소"
description: "자기소개"
you-can-include-hashtags: "해시 태그를 포함할 수 있습니다."
language: "언어"
birthday: "생일"
avatar: "아바타"
@ -593,7 +601,7 @@ desktop/views/components/calendar.vue:
title: "{year}년 {month}월"
prev: "이전 달"
next: "다음 달"
go: "클릭여 시간 회귀"
go: "클릭여 시간역행"
desktop/views/components/choose-file-from-drive-window.vue:
chosen-files: "{count} 파일 선택중"
upload: "PC에서 드라이브에 파일을 업로드"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "폴더 만들기"
upload: "파일 업로드"
url-upload: "URL에서 업로드"
desktop/views/components/media-image.vue:
sensitive: "열람주의"
click-to-show: "클릭하여 표시"
desktop/views/components/media-video.vue:
sensitive: "열람주의"
click-to-show: "클릭하여 표시"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "창이 열릴 때 팝아웃 (브라우저 밖으로 분리) 이 가능한 경우 자동으로 팝아웃합니다. 이 설정은 브라우저에 저장됩니다."
deck-nav: "덱 내 탐색"
deck-nav-desc: "덱을 사용중일 때, 내비게이션이 발생하였을 경우 페이지를 이동하지 않고 일시적으로 임시 칼럼을 생성하도록 합니다."
keep-cw: "CW 유지"
keep-cw-desc: "글에 답글을 달 때, 답글할 글에 CW가 설정되어 있는 경우 기본값으로 동일한 CW를 설정하도록 합니다."
deck-default: "덱을 기본 UI로 설정"
display: "디자인 및 표시"
customize: "홈 커스터마이징"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "설정이 완료되었습니다!"
failed: "설정에 실패했습니다. 토큰이 잘못되었는지 확인해주십시오."
info: "다음 로그인부터는 이와 동일하게 비밀번호에 더해 장치에 표시된 토큰을 입력합니다."
common/views/components/media-image.vue:
sensitive: "열람주의"
click-to-show: "클릭하여 보기"
common/views/components/api-settings.vue:
intro: "API를 사용하려면 위의 토큰을 \"i\" 라는 키의 값으로 매개변수를 추가하여 요청합니다."
caution: "계정을 부정 사용할 가능성이 있으므로, 이 토큰은 제 3자에게 알려주지 마십시오 (앱 등에 붙여넣지 마십시오)."
@ -989,7 +999,7 @@ admin/views/index.vue:
federation: "연합"
announcements: "공지사항"
hashtags: "해시태그"
abuse: "スパム報告"
abuse: "스팸 신고"
back-to-misskey: "Misskey로 돌아가기"
admin/views/dashboard.vue:
dashboard: "대시보드"
@ -1000,11 +1010,11 @@ admin/views/dashboard.vue:
this-instance: "이 인스턴스"
federated: "연합"
admin/views/abuse.vue:
title: "スパム報告"
target: "対象"
reporter: "報告者"
details: "詳細"
remove-report: "削除"
title: "스팸 신고"
target: "대상"
reporter: "신고자"
details: "상세"
remove-report: "삭제"
admin/views/instance.vue:
instance: "인스턴스"
instance-name: "인스턴스 이름"
@ -1052,7 +1062,7 @@ admin/views/instance.vue:
disable-registration: "사용자 등록 비활성화"
disable-local-timeline: "로컬 타임라인 비활성화"
disable-global-timeline: "글로벌 타임라인 비활성화"
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
disabling-timelines-info: "이 타임라인들을 비활성화해도 관리자 및 모더레이터는 계속 사용할 수 있습니다."
invite: "초대"
save: "저장"
saved: "저장하였습니다"
@ -1063,7 +1073,7 @@ admin/views/instance.vue:
external-user-recommendation-timeout: "타임 아웃"
external-user-recommendation-timeout-desc: "밀리초 (예: 300000)"
email-config: "메일 서버 설정"
email-config-info: "메일 주소 확인 혹은 호 재설정에 사용 됩니다."
email-config-info: "메일 주소 확인 혹은 비밀번호 재설정에 사용 됩니다."
enable-email: "메일 발신 활성화"
email: "메일 주소"
smtp-secure: "SMTP 연결에 암시적으로 SSL/TLS를 사용"
@ -1096,7 +1106,7 @@ admin/views/charts.vue:
notes-total: "글 누적 수"
users: "사용자 증감"
users-total: "사용자 누적"
active-users: "アクティブユーザー数"
active-users: "활성 사용자 수"
drive: "드라이브 사용량 증감"
drive-total: "드라이브 사용량 누적"
drive-files: "드라이브 파일 수 증감"
@ -1105,10 +1115,10 @@ admin/views/charts.vue:
network-time: "응답시간"
network-usage: "통신량"
admin/views/drive.vue:
operation: "操作"
fileid-or-url: "ファイルIDまたはファイルURL"
file-not-found: "ファイルが見つかりません"
lookup: "照会"
operation: "작업"
fileid-or-url: "파일 ID 또는 파일 URL"
file-not-found: "파일을 찾을 수 없습니다"
lookup: "조회"
sort:
title: "정렬"
createdAtAsc: "업로드 날짜 오랜 순"
@ -1124,23 +1134,32 @@ admin/views/drive.vue:
deleted: "삭제하였습니다"
mark-as-sensitive: "열람주의로 설정"
unmark-as-sensitive: "열람주의 해제"
marked-as-sensitive: "閲覧注意に設定しました"
unmarked-as-sensitive: "閲覧注意を解除しました"
marked-as-sensitive: "열람주의로 설정하였습니다"
unmarked-as-sensitive: "열람주의를 제거하였습니다"
admin/views/users.vue:
operation: "작업"
username-or-userid: "사용자명 혹은 사용자 ID"
user-not-found: "사용자를 찾을 수 없습니다"
lookup: "조회"
reset-password: "호 재설정"
password-updated: "암호는 현재 \"{password}\" 입니다"
reset-password: "비밀번호 재설정"
reset-password-confirm: "비밀번호를 재설정하시겠습니까?"
password-updated: "비밀번호는 현재 \"{password}\" 입니다"
suspend: "정지"
suspend-confirm: "정지하시겠습니까?"
suspended: "정지하였습니다"
unsuspend: "정지 해제"
unsuspend-confirm: "정지를 해제하시겠습니까?"
unsuspended: "정지를 해제하였습니다"
make-silence: "침묵"
unmake-silence: "침묵 해제"
verify: "공식 계정으로 설정"
verify-confirm: "공식 계정으로 설정하시겠습니까?"
verified: "공식 계정으로 설정하였습니다"
unverify: "공식 계정 해제"
unverify-confirm: "공식 계정을 해제하시겠습니까?"
unverified: "공식 계정을 해제하였습니다"
update-remote-user: "원격 사용자 정보 갱신"
remote-user-updated: "원격 사용자 정보를 갱신하였습니다"
users:
title: "사용자"
sort:
@ -1252,7 +1271,7 @@ desktop/views/pages/user/user.photos.vue:
no-photos: "사진이 없습니다"
desktop/views/pages/user/user.profile.vue:
follows-you: "당신을 팔로우합니다"
menu: "メニュー"
menu: "메뉴"
desktop/views/pages/user/user.header.vue:
posts: "글"
following: "팔로잉"
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "열람주의"
mark-as-sensitive: "열람주의로 설정"
unmark-as-sensitive: "열람주의 해제"
mobile/views/components/media-image.vue:
sensitive: "열람주의"
click-to-show: "클릭하여 표시"
mobile/views/components/media-video.vue:
sensitive: "열람주의"
click-to-show: "클릭하여 표시"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "위"
behavior: "동작"
fetch-on-scroll: "스크롤하여 자동으로 불러오기"
keep-cw: "CW 유지"
note-visibility: "게시물의 공개 범위"
default-note-visibility: "기본 공개 범위"
remember-note-visibility: "글의 공개 범위를 기억하기"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "Deze notitie toevoegen aan favorieten"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "Vastmaken aan profielpagina"
unpin: "ピン留め解除"
delete: "削除"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "Stemmen op '{}'"
vote-count: "{} stemmen"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "Map creëren"
upload: "Bestand uploaden"
url-upload: "Uploaden via URL"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser."
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "Ontwerp en weergave"
customize: "Startpagina aanpassen"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "Instellen voltooid!"
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "Gedrag"
fetch-on-scroll: "Ophalen bij scrollen"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "Merket som favoritt"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "Fest til profilen din"
unpin: "ピン留め解除"
delete: "Slett"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{} stemmer"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "Innholdet er NSFW"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "NSFW"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "NSFW"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "Innholdet er NSFW"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "Topp"
behavior: "Oppførsel"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -27,7 +27,7 @@ common:
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
load-more: "Załaduj więcej"
enter-password: "Wprowadź Hasło"
2fa: "二段階認証"
2fa: "Uwierzytelnienie dwuetapowe"
got-it: "Rozumiem!"
customization-tips:
title: "Wskazówki o dostosowywaniu"
@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "Zweryfikowane konto"
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "Zawszę pokazuj zawartość NSFW"
always-mark-nsfw: "Zawsze oznaczaj posty z multimediami jako NSFW"
@ -129,7 +130,7 @@ common:
show-password: "Pokaż hasło"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "Informacje o użytkowniku są kopiowane."
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "Dla dopełnienia, zobacz to zdalnie."
renoted-by: "{user} udostępnił(a)"
@ -344,22 +345,28 @@ common/views/components/note-menu.vue:
copy-link: "Skopiuj adres"
favorite: "Dodaj do ulubionych"
unfavorite: "Usuń z ulubionych"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "Przypnij do profilu"
unpin: "Odepnij"
delete: "Usuń"
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
remote: "Pokaż oryginał"
common/views/components/user-menu.vue:
mention: "メンション"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
report-abuse: "スパムを報告"
mention: "Wspomnij"
mute: "Wycisz"
unmute: "Cofnij wyciszenie"
block: "Zablokuj"
unblock: "Odblokuj"
push-to-list: "Dodaj do listy"
select-list: "Wybierz listę"
report-abuse: "Zgłoś nadużycie"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "Zagłosuj na '{}'"
vote-count: "{} głosów"
@ -391,11 +398,11 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Logowanie…"
signin: "Zaloguj"
or: "または"
or: "lub"
signin-with-twitter: "Zaloguj się za pomocą Twittera"
signin-with-github: "Zaloguj się za pomocą GitHuba"
signin-with-discord: "Zaloguj się za pomocą Discorda"
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
login-failed: "Logowanie nie powiodło się. Upewnij się, że podałeś prawidłową nazwę użytkownika i hasło."
common/views/components/signup.vue:
invitation-code: "Kod zaproszenia"
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
@ -468,13 +475,13 @@ common/views/components/visibility-chooser.vue:
local-followers: "Dla śledzących (tylko lokalnie)"
common/views/components/trends.vue:
count: "{}人が投稿"
empty: "トレンドなし"
empty: "Brak popularnych hashtagów"
common/views/components/language-settings.vue:
title: "Język"
pick-language: "Wybierz język"
recommended: "Zalecane"
auto: "Automatyczny"
specify-language: "言語を指定"
specify-language: "Wybierz język"
info: "Musisz odświeżyć stronę, aby zmiany zostały uwzględnione."
common/views/components/profile-editor.vue:
title: "Twój profil"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "Konto"
location: "Lokalizacja"
description: "O mnie"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "Język"
birthday: "Data urodzenia"
avatar: "Awatar"
@ -499,15 +507,15 @@ common/views/components/profile-editor.vue:
upload-failed: "Wysyłanie nie powiodło się"
email: "Ustawienia e-mail"
email-address: "Adres e-mail"
email-verified: "メールアドレスが確認されました"
email-verified: "Twój adres e-mail został zweryfikowany."
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
common/views/components/user-list-editor.vue:
users: "Użytkownicy"
rename: "Zmień nazwę listy"
delete: "Usuń listę"
remove-user: "Usuń z tej listy"
delete-are-you-sure: "リスト「$1」を削除しますか"
deleted: "削除しました"
delete-are-you-sure: "Usunąć listę \"$1\"?"
deleted: "Usunięto"
common/views/widgets/broadcast.vue:
fetching: "Sprawdzanie"
no-broadcasts: "Brak transmisji"
@ -590,7 +598,7 @@ desktop/views/components/activity.vue:
title: "Aktywność"
toggle: "Przełącz widok"
desktop/views/components/calendar.vue:
title: "{year} {month}"
title: "{year} / {month}"
prev: "Poprzedni miesiąc"
next: "Następny miesiąc"
go: "Naciśnij, aby przejść"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "Utwórz katalog"
upload: "Wyślij plik"
url-upload: "Wyślij z adresu URL"
desktop/views/components/media-image.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
desktop/views/components/media-video.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
@ -704,7 +709,7 @@ desktop/views/components/note.vue:
add-reaction: "Dodaj reakcję"
undo-reaction: "リアクション解除"
detail: "Szczegóły"
private: "この投稿は非公開です"
private: "Ten wpis jest prywatny"
deleted: "この投稿は削除されました"
desktop/views/components/notes.vue:
error: "Ładowanie nie powiodło się."
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "Użyj Talię jako domyślne UI"
display: "Wygląd i wyświetlanie"
customize: "Dostosuj stronę główną"
@ -866,13 +873,16 @@ desktop/views/components/settings.2fa.vue:
enter-password: "Wprowadź hasło"
authenticator: "Na początek musisz zainstalować Google Authenticator na swoim urządzeniu:"
howtoinstall: "Jak zainstalować"
token: "トークン"
token: "Token"
scan: "Później, zeskanuje ten kod QR:"
done: "Wprowadź token wyświetlony na Twoim urządzeniu:"
submit: "Wyślij"
success: "Pomyślnie ukończono konfigurację!"
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
@ -1004,7 +1014,7 @@ admin/views/abuse.vue:
target: "対象"
reporter: "報告者"
details: "詳細"
remove-report: "削除"
remove-report: "Usuń"
admin/views/instance.vue:
instance: "インスタンス"
instance-name: "インスタンス名"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "Nie znaleziono użytkownika"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "Użytkownicy"
sort:
@ -1252,7 +1271,7 @@ desktop/views/pages/user/user.photos.vue:
no-photos: "Brak zdjęć"
desktop/views/pages/user/user.profile.vue:
follows-you: "Śledzi Cię"
menu: "メニュー"
menu: "Menu"
desktop/views/pages/user/user.header.vue:
posts: "Wpisy"
following: "Śledzeni"
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "NSFW"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
mobile/views/components/media-video.vue:
sensitive: "To jest zawartość NSFW"
click-to-show: "Naciśnij aby wyświetlić"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "Góra"
behavior: "Zachowanie"
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
keep-cw: "CW保持"
note-visibility: "Widoczność wpisów"
default-note-visibility: "Domyślna widoczność"
remember-note-visibility: "Zapamiętaj widoczność wpisów"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "Conta verificada"
disable-animated-mfm: "Desativar texto animado nas publicações"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{}票"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -113,6 +113,7 @@ common:
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
verified-user: "公式アカウント"
disable-animated-mfm: "Отключить анимированный текст в постах"
disable-showing-animated-images: "アニメーション画像を再生しない"
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
always-show-nsfw: "Всегда показывать NSFW контент"
always-mark-nsfw: "Всегда помечать посты с медиафайлами как NSFW"
@ -129,7 +130,7 @@ common:
show-password: "パスワードを表示する"
do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне."
user-suspended: "このユーザーは凍結されています。"
is-remote-user: "このユーザー情報はコピーです。"
is-remote-user: "このユーザー情報は不正確な可能性があります。"
is-remote-post: "この投稿情報はコピーです。"
view-on-remote: "正確な情報を見る"
renoted-by: "{user}がRenote"
@ -344,6 +345,8 @@ common/views/components/note-menu.vue:
copy-link: "リンクをコピー"
favorite: "お気に入り"
unfavorite: "お気に入り解除"
watch: "ウォッチ"
unwatch: "ウォッチ解除"
pin: "ピン留め"
unpin: "ピン留め解除"
delete: "削除"
@ -360,6 +363,10 @@ common/views/components/user-menu.vue:
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか?"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
silence: "サイレンス"
unsilence: "サイレンス解除"
suspend: "凍結"
unsuspend: "凍結解除"
common/views/components/poll.vue:
vote-to: "「{}」に投票する"
vote-count: "{}票"
@ -482,6 +489,7 @@ common/views/components/profile-editor.vue:
account: "アカウント"
location: "場所"
description: "自己紹介"
you-can-include-hashtags: "ハッシュタグを含めることができます。"
language: "言語"
birthday: "誕生日"
avatar: "アイコン"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "フォルダーを作成"
upload: "ファイルをアップロード"
url-upload: "URLからアップロード"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
deck-nav: "デッキ内ナビゲーション"
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
keep-cw: "CW保持"
keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。"
deck-default: "デッキをデフォルトのUIにする"
display: "デザインと表示"
customize: "ホームをカスタマイズ"
@ -873,6 +880,9 @@ desktop/views/components/settings.2fa.vue:
success: "設定が完了しました!"
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
common/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
common/views/components/api-settings.vue:
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
@ -1132,15 +1142,24 @@ admin/views/users.vue:
user-not-found: "ユーザーが見つかりません"
lookup: "照会"
reset-password: "パスワードをリセット"
reset-password-confirm: "パスワードをリセットしますか?"
password-updated: "パスワードは現在「{password}」です"
suspend: "凍結"
suspend-confirm: "凍結しますか?"
suspended: "凍結しました"
unsuspend: "凍結の解除"
unsuspend-confirm: "凍結を解除しますか?"
unsuspended: "凍結を解除しました"
make-silence: "サイレンス"
unmake-silence: "サイレンスの解除"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました"
users:
title: "ユーザー"
sort:
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "閲覧注意"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mobile/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
mobile/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "上"
behavior: "動作"
fetch-on-scroll: "スクロールで自動読み込み"
keep-cw: "CW保持"
note-visibility: "投稿の公開範囲"
default-note-visibility: "デフォルトの公開範囲"
remember-note-visibility: "投稿の公開範囲を記憶する"

View File

@ -3,48 +3,48 @@ meta:
lang: "中文(简体)"
divider: ""
common:
misskey: "A ⭐ of the fediverse"
about-title: "A ⭐ of the fediverse."
about: "感谢您找到Misskey. Misskey是一个开源的程序, 她可以同其他的社交网站进行联系. 为什么不从喧嚣的城市中休息一下, 来试一试这个新的程序呢?"
misskey: "Fediverse中的一颗⭐"
about-title: "Fediverse中的一颗⭐"
about: "非常感谢您找到Misskey Misskey是诞生于地球的<b>分布式微博SNS</b>。因为她处于Fediverse(由各种SNS组成的宇宙)中所以她与其他SNS相互连接。想要远离喧嚣的城市不如深入这个新的互联网来探索一下吧。"
intro:
title: "什么是 Misskey 呢?"
about: "Misskey是开源的<b>分散式微博服务</b>。复杂的完全可定制的Ui各种各样的帖子反应提供集成管理系统和其他先进功能的免费文件存储。此外网络系统称为“Fediverse”使我们能够与其他SNS的用户进行通信。比如如果你张贴一些东西那么你的帖子不仅会发送给Misskey还会发送到其他平台。想象一下行星正在向另一颗行星发送微波来进行通信。"
features: "特点"
about: "Misskey是开源的<b>分散式微博SNS</b>。复杂的完全可定制的Ui各种各样的帖子反应提供集成管理系统和其他先进功能的免费文件存储。此外称为“Fediverse”的网络系统使我们能够与其他SNS的用户进行通信。比如如果你张贴一些东西那么你的帖子不仅会发送给Misskey还会发送到其他SNS平台。想象一下,正如一颗行星和另一颗行星通过电磁波来进行通信一样。"
features: "功能"
rich-contents: "发布"
rich-contents-desc: "您只需要发布您的想法, 热门话题或者任何您想分享的好东西. 你可以装饰你的文字, 加上你最喜欢的图片, 发送文件或者电影, 甚至创造一个投票. 这些事情您都可以在 Misskey 上做。"
reaction: "情绪"
reaction-desc: "一个最简单的方式去告诉别人你的情绪. Misskey 允许您在别人的帖子中加入各种的情绪反应类型, 就像 Facebook 一样. 在 Misskey 上的情感体验永远不会出现在其他只能点赞的SNSs上。"
rich-contents-desc: "请分享您的想法热门话题,以及任何您想与大家分享的内容。如果有需要的话,您可以使用各种语法来修饰文章,发布问卷调查,或者添加各种您喜欢的图像和视频等文件。"
reaction: "回应"
reaction-desc: "这是表达情绪的最简单方法。 Misskey允许您向其他帖子添加各种类型的回应。 一旦体验过Misskey的回应功能就再也不会想回到那些只有点赞功能的其他SNS上。"
ui: "交互界面"
ui-desc: "世界上没有一个UI可以适合每一个人. 所以, Misskey 提供一个可以高度定制的UI交互界面. 您可以通过编辑, 调整布局, 放置可选择的小部件来轻松定制您的专属UI界面。"
drive: "Misskey 云盘"
drive-desc: "想要发布一张您已经上传过的照片吗? 想要组织,命名和为上传的文件创建文件夹吗? Misskey 云盘是一个最好的解决方案. "
outro: "进一步深挖 Misskey 的更多功能, 如果您感觉这个功能不适合我, 试试其他例子. 因为 Misskey 是一个分的 SNS, 这样您就可以很容易找到适合自己的一部分."
outro: "Misskey还有其他更多功能,请亲身体验一下吧。因为 Misskey 是一个分布式的 SNS,如果您感觉某个功能不适合自己,试试其他的吧。祝您玩得开心!"
adblock:
detected: "请关闭广告拦截器"
warning: "<strong>Misskey 不是广告网站</strong>如果您启用广告拦截器, 可能会导致某些功能无法正常使用。"
warning: "<strong>Misskey不会发布广告</strong>如果您启用广告拦截器, 可能会导致某些功能无法正常使用。"
application-authorization: "应用程序授权"
close: "关闭"
do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。"
load-more: "加载更多"
enter-password: "请输入您的密码"
2fa: "二段階認証"
2fa: "双重身份验证"
got-it: "没问题"
customization-tips:
title: "客制化提示"
title: "自定义提示"
paragraph: "<p>主页定制允许您添加或删除, 拖放和重新排列小组件.</p></p>您可以通过<strong><strong>右键</strong>点击</strong>某些小部件来更改显示</p><p>若要删除小部件, 请将其拖到标头为<strong>「垃圾箱」</strong>的区域</p><p>如果您完成了定制过程,单击右上角的「完成」</p>"
gotit: "没问题!"
gotit: "明白了!"
notification:
file-uploaded: "文件已上传"
message-from: "信息来源 {}:"
message-from: "来自{}的消息:"
reversi-invited: "您已被邀请加入一场游戏"
reversi-invited-by: "被邀请 {}:"
notified-by: "通知 {}:"
reply-from: "回复 {}:"
quoted-by: "引用 {}:"
reversi-invited-by: "来自{}的邀请"
notified-by: "来自{}的通知"
reply-from: "来自{}的回复:"
quoted-by: "来自{}的引用:"
time:
unknown: "这是个啥??? 不知道哎"
unknown: "未知"
future: "未来"
just_now: "现在"
just_now: "刚刚"
seconds_ago: "{}秒前"
minutes_ago: "{}分前"
hours_ago: "{}小时前"
@ -54,7 +54,7 @@ common:
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "垃圾箱"
drive: "Misskey 云盘"
drive: "盘"
messaging: "聊天"
weekday-short:
sunday: "日"
@ -87,7 +87,7 @@ common:
public: "公开"
home: "首页"
home-desc: "仅发送至首页的时间线"
followers: "关注者"
followers: "粉丝"
followers-desc: "仅发送至粉丝"
specified: "指定用户"
specified-desc: "仅发送至指定用户"
@ -95,24 +95,25 @@ common:
local-home: "首页(仅限本地)"
local-followers: "关注者(仅限本地)"
note-placeholders:
a: "你在干什么?"
a: "现在在做什么?"
b: "发生了什么?"
c: "你有什么想法?"
d: "你想要发布些什么吗?"
e: "写下来吧"
f: "等待你的书写..."
e: "写下来吧"
f: "等待您的发布..."
search: "搜索"
delete: "删除"
loading: "正在加载, 等着就好啦"
ok: "没问题"
loading: "正在加载"
ok: "OK"
update-available-title: "有可用更新"
update-available: "新的 Misskey 版本现已发布({newer}。目前版本{current}). 刷新页面以应用更新。"
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
use-avatar-reversi-stones: "用头像作为 Reversi 中的 “石头”"
use-avatar-reversi-stones: "用头像作为黑白棋的棋子"
verified-user: "认证用户"
disable-animated-mfm: "在帖子中禁用动画文本"
disable-showing-animated-images: "不播放动画"
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
always-show-nsfw: "总是显示 NSFW 的内容"
always-mark-nsfw: "总是用 NSFW 来标记附件"
@ -120,7 +121,7 @@ common:
show-via: "显示 via"
reduce-motion: "减弱UI中的动画效果"
this-setting-is-this-device-only: "设置仅在本设备中生效"
use-os-default-emojis: "使用设备系统默认的 emojis"
use-os-default-emojis: "使用设备系统默认的表情符号"
line-width: "线条宽度"
line-width-thin: "细"
line-width-normal: "正常"
@ -129,48 +130,48 @@ common:
show-password: "显示密码"
do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用."
user-suspended: "该用户已被冻结。"
is-remote-user: "用户信息已被复制."
is-remote-user: "用户信息可能不准确。"
is-remote-post: "该投稿已被复制."
view-on-remote: "查看准确的信息"
renoted-by: "由 {user} Renote"
error:
title: "哦不, 发生了一些问题! :("
title: "出现问题"
retry: "重试"
reversi:
drawn: "平局"
my-turn: "轮到你了"
opponent-turn: "轮到对手了"
turn-of: "{name}转折点"
turn-of: "{name}的回合"
past-turn-of: "轮到{name}的回合了"
won: "{name}获胜"
black: "黑"
white: "白"
total: "计"
this-turn: "Turn {count}"
total: "计"
this-turn: "{count}回合"
widgets:
analog-clock: "指针时钟"
profile: "简介"
analog-clock: "模拟时钟"
profile: "个人资料"
calendar: "日历"
timemachine: "时光机"
timemachine: "日历 (时间机器)"
activity: "动态"
rss: "RSS阅"
rss: "RSS阅读器"
memo: "便签"
trends: "趋势"
photo-stream: "图片轮播"
photo-stream: "照片流"
posts-monitor: "投稿图表"
slideshow: "幻灯片"
version: "版本"
broadcast: "广播"
notifications: "通知"
users: "推荐用户"
polls: "投票"
polls: "调查问卷"
post-form: "投稿形式"
server: "服务器信息"
nav: "导航"
tips: "提示"
hashtags: "标签"
dev: "构建应用程序失败,请再试一次。"
ai-chan-kawaii: "Ai-chan kawaii!"
ai-chan-kawaii: "小蓝真可爱"
you: "您"
auth/views/form.vue:
share-access: "您要允许<i>{name}</i>来访问您的账户吗?"
@ -178,8 +179,8 @@ auth/views/form.vue:
account-read: "查看账户信息"
account-write: "修改账户信息"
note-write: "投稿。"
like-write: "评价投稿。"
following-write: "关注和不关注。"
like-write: "点赞或取消赞。"
following-write: "关注或取消关注。"
drive-read: "查看您的云盘"
drive-write: "上传/删除您云盘中的文件。"
notification-read: "查看通知。"
@ -187,7 +188,7 @@ auth/views/form.vue:
cancel: "取消"
accept: "允许访问。"
auth/views/index.vue:
loading: "正在加载, 请耐心等待哦~"
loading: "正在加载"
denied: "已拒绝应用程序授权。"
denied-paragraph: "这个应用程序将不会访问您的账户"
already-authorized: "这个应用程序已授权。"
@ -201,17 +202,17 @@ common/views/components/games/reversi/reversi.vue:
waiting-for: "等待 {}"
cancel: "取消"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投降"
surrendered: "投降"
is-llotheo: "石头少的一方获胜"
looped-map: "环状地图"
can-put-everywhere: "可以意放置"
surrender: "认输"
surrendered: "已认输"
is-llotheo: "棋子较少一方获胜(LLoTheO规则)"
looped-map: "环形棋盘"
can-put-everywhere: "可以下在任意放置"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "和你的朋友一起玩 Reversi!"
title: "Misskey 黑白棋"
sub-title: "和其他人一起来玩Misskey黑白棋"
invite: "邀请"
rule: "游戏说明"
rule-desc: "Reversi是与对方交替地把石头放在板上把对方的石头夹在自己的颜色上最终留下的石头多的人获胜。"
rule-desc: "黑白棋是一种棋盘游戏。两人交替在棋盘上落子,并将该棋子和另一个己方棋子之间的对方棋子转换成自己的颜色。最终保留最多棋子的人获胜。"
mode-invite: "邀请"
mode-invite-desc: "邀请指定用户参加游戏"
invitations: "您收到了一则邀请!"
@ -219,28 +220,28 @@ common/views/components/games/reversi/reversi.index.vue:
all-games: "所有游戏"
enter-username: "输入用户名"
game-state:
ended: "完成"
playing: "进行中"
ended: "结束"
playing: "游戏进行中"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "游戏设置"
choose-map: "选择一个地图"
choose-map: "棋盘选择"
random: "随机"
black-or-white: "黑/白"
black-is: "{}是黑"
rules: "规则"
is-llotheo: "较少一方获胜"
looped-map: "环状地图"
can-put-everywhere: "可以意放置"
is-llotheo: "棋子较少一方获胜(LLoTheO规则)"
looped-map: "环形棋盘"
can-put-everywhere: "可以下在任意放置"
settings-of-the-bot: "机器人设定"
this-game-is-started-soon: "游戏即将在数秒后开始"
waiting-for-other: "等待对手准备"
waiting-for-me: "等待您的准备"
waiting-for-both: "准备中"
cancel: "取消"
ready: "准备好啦"
ready: "准备完成"
cancel-ready: "取消准备"
common/views/components/connect-failed.vue:
title: "无法连接服务器"
title: "无法连接服务器"
description: "您的网络连接可能出现了问题, 或是远程服务器暂时不可用. 请稍后{重试}."
thanks: "感谢您使用 Misskey"
troubleshoot: "故障排除"
@ -256,9 +257,9 @@ common/views/components/connect-failed.troubleshooter.vue:
no-network: "无网络连接"
no-network-desc: "请确保您已连接至互联网"
no-internet: "无网络连接"
no-internet-desc: "请确保您已连接至互联网"
no-internet-desc: "网络已连接但无法连接到Internet。 请确保您的PC的Internet连接正常。"
no-server: "无法连接到 Misskey 服务器"
no-server-desc: "您设备与互联网的网络连接正常, 但是无法连接至 Misskey 服务器. 这可能是服务器暂时不可用或正在维护. 请稍后再试."
no-server-desc: "您设备与互联网的网络连接正常但是无法连接至 Misskey 服务器这可能是服务器暂时不可用或正在维护请稍后再试"
success: "成功连接至 Misskey 服务器"
success-desc: "看起来我们连接正常. 请刷新网页."
flush: "清除缓存"
@ -268,18 +269,18 @@ common/views/components/media-banner.vue:
click-to-show: "点击以显示"
common/views/components/theme.vue:
theme: "主题"
light-theme: "主题"
dark-theme: "黑暗模式主题"
light-themes: "亮主题"
dark-themes: "暗主题"
light-theme: "亮色模式使用的主题"
dark-theme: "暗色模式使用的主题"
light-themes: "亮主题"
dark-themes: "暗主题"
install-a-theme: "安装一个主题"
theme-code: "主题代码"
install: "安装"
installed: "\"{}\" 已安装"
installed: "\"{}\" 已安装"
create-a-theme: "创建一个主题"
save-created-theme: "保存主题"
primary-color: "色"
secondary-color: "合成色"
primary-color: "主要颜色"
secondary-color: "次要颜色"
text-color: "文本颜色"
base-theme: "基础主题"
base-theme-light: "亮"
@ -289,7 +290,7 @@ common/views/components/theme.vue:
preview-created-theme: "预览"
invalid-theme: "无效主题"
already-installed: "这个主题已经被安装。"
saved: "保存"
saved: "保存"
manage-themes: "主题管理"
builtin-themes: "标准主题"
my-themes: "我的主题"
@ -299,14 +300,14 @@ common/views/components/theme.vue:
uninstalled: "\"{}\" 已被卸载"
author: "作者"
desc: "描述"
export: "出"
import: "入"
export: "出"
import: "入"
import-by-code: "或者粘贴代码"
theme-name-required: "必须填写主题名称"
common/views/components/cw-button.vue:
hide: "隐藏"
show: "查看更多"
chars: "{count}"
chars: "{count}个字符"
files: "{count} 个文件"
poll: "调查问卷"
common/views/components/messaging.vue:
@ -322,20 +323,20 @@ common/views/components/messaging-room.vue:
common/views/components/messaging-room.form.vue:
input-message-here: "在此键入信息"
send: "发送"
attach-from-local: "从设备中添加文件"
attach-from-local: "从电脑中添加文件"
attach-from-drive: "从云盘中添加文件"
only-one-file-attached: "在信息中只允许添加一个附件"
common/views/components/messaging-room.message.vue:
is-read: "已"
deleted: "这条信息已被删除"
is-read: "已"
deleted: "此消息已被删除"
common/views/components/nav.vue:
about: "关于"
about: "关于 Misskey"
stats: "统计"
status: "状态"
wiki: "百科 (Wiki)"
wiki: "维基百科"
donors: "捐赠者"
repository: ""
develop: "开发"
repository: "代码库"
develop: "开发人员"
feedback: "反馈"
common/views/components/note-menu.vue:
mention: "提到"
@ -344,22 +345,28 @@ common/views/components/note-menu.vue:
copy-link: "复制链接"
favorite: "收藏这个投稿"
unfavorite: "取消收藏"
watch: "关注"
unwatch: "取消关注"
pin: "固定个人资料"
unpin: "解除固定"
delete: "删除"
delete-confirm: "确定删除这个投稿吗?"
remote: "显示原始投稿"
common/views/components/user-menu.vue:
mention: "メンション"
mute: "ミュート"
unmute: "ミュート解除"
block: "ブロック"
unblock: "ブロック解除"
push-to-list: "リストに追加"
select-list: "リストを選択してください"
report-abuse: "スパムを報告"
report-abuse-detail: "どのような迷惑行為を行っていますか"
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
mention: "提到"
mute: "免打扰"
unmute: "解除免打扰"
block: "屏蔽"
unblock: "取消屏蔽"
push-to-list: "添加至列表"
select-list: "请选择一个列表"
report-abuse: "举报骚扰"
report-abuse-detail: "做了什么骚扰的行为"
report-abuse-reported: "已报告给管理员。 非常感谢你的合作。"
silence: "禁言"
unsilence: "解除禁言"
suspend: "冻结"
unsuspend: "解除冻结"
common/views/components/poll.vue:
vote-to: "为\"{}\"投票"
vote-count: "{}票"
@ -374,16 +381,16 @@ common/views/components/poll-editor.vue:
add: "+添加一个选项"
destroy: "放弃投票"
common/views/components/reaction-picker.vue:
choose-reaction: "选择应"
choose-reaction: "选择应"
common/views/components/emoji-picker.vue:
custom-emoji: "自定义 Emoji"
custom-emoji: "自定义表情符号"
people: "人"
animals-and-nature: "动物与自然"
food-and-drink: "食物与饮品"
activity: "活动"
travel-and-places: "旅行和地点"
travel-and-places: "位置"
objects: "物品"
symbols: "标志"
symbols: "符号"
flags: "旗帜"
common/views/components/signin.vue:
username: "用户名"
@ -395,7 +402,7 @@ common/views/components/signin.vue:
signin-with-twitter: "用 Twitter 登录"
signin-with-github: "用 GitHub 登录"
signin-with-discord: "用 Discord 登录"
login-failed: "登录失败。请确保您已输入恰当的用户名和密码。"
login-failed: "登录失败。请检查用户名和密码。"
common/views/components/signup.vue:
invitation-code: "邀请码"
invitation-info: "如果您没有邀请码,请联系<a href=\"{}\">管理员</a>。"
@ -404,24 +411,24 @@ common/views/components/signup.vue:
available: "可用"
unavailable: "不可用"
error: "网络错误"
invalid-format: "可以用字母数字和_。"
too-short: "不可以留空哦~"
too-long: "20字以内。"
invalid-format: "可使用大小写英文字母数字和下划线。"
too-short: "请至少输入1个字符"
too-long: "请不要超过20个字符"
password: "密码"
password-placeholder: "推荐使用8个字符以上的密码。"
weak-password: "弱强度密码"
normal-password: "适中强度的密码"
strong-password: "没问题"
weak-password: "密码强度:弱"
normal-password: "密码强度:中等"
strong-password: "密码强度:强"
retype: "重新输入"
retype-placeholder: "重新入您的密码"
retype-placeholder: "重新入您的密码"
password-matched: "确认"
password-not-matched: "密码不一致"
recaptcha: "证"
recaptcha: "证"
create: "创建一个账户"
some-error: "由于某种原因,创建帐户失败。请再试一次。"
common/views/components/special-message.vue:
new-year: "新年快乐哦~"
christmas: "Merry Christmas!"
christmas: "圣诞快乐!"
common/views/components/stream-indicator.vue:
connecting: "连接中"
reconnecting: "重新连接中"
@ -436,8 +443,8 @@ common/views/components/notification-settings.vue:
common/views/components/integration-settings.vue:
title: "服务合作"
connect: "连接"
disconnect: "连接"
connected-to: "您的账号已连接下社交账号"
disconnect: "断开连接"
connected-to: "您的账号已连接下社交账号"
common/views/components/github-setting.vue:
description: "当您用GitHub连接Misskey账户后您将能够看到有关您自己的信息并且您将能够使用GitHub登录。"
connected-to: "此账户已连接GitHub"
@ -451,7 +458,7 @@ common/views/components/discord-setting.vue:
detail: "详细信息..."
reconnect: "重新连接"
connect: "连接您的Discord账户"
disconnect: "连接"
disconnect: "断开连接"
common/views/components/uploader.vue:
waiting: "等待中"
common/views/components/visibility-chooser.vue:
@ -463,50 +470,51 @@ common/views/components/visibility-chooser.vue:
specified: "直接"
specified-desc: "仅发送至指定用户"
local-public: "公开(仅限本地)"
local-public-desc: "不要发布到公开"
local-public-desc: "不要公开发布"
local-home: "首页(仅限本地)"
local-followers: "关注者(仅限本地)"
common/views/components/trends.vue:
count: "{} 被提到"
empty: "没有流行的标签"
empty: "没有趋势"
common/views/components/language-settings.vue:
title: "显示语言"
pick-language: "选择一个语言"
pick-language: "选择语言"
recommended: "推荐"
auto: "自动"
specify-language: "指定语言"
info: "你需要刷新这个页面来应用更改。"
info: "更改将在刷新页面后生效。"
common/views/components/profile-editor.vue:
title: "简况"
title: "个人资料"
name: "名称"
account: "账户"
location: "位置"
description: "关于我"
description: "个人简介"
you-can-include-hashtags: "您可以包含一个哈希标签。"
language: "语言"
birthday: "生日"
avatar: "头像"
banner: "背景"
is-cat: "这个账户是 Cat"
is-bot: "个账户是机器人"
banner: "横幅背景"
is-cat: "这个账户是CAT"
is-bot: "个账户是BOT"
is-locked: "关注者请求需要批准"
careful-bot: "机器人的关注者请求需要批准"
careful-bot: "BOT的关注者请求需要批准"
auto-accept-followed: "自动同意来自您关注的人的关注申请"
advanced: "其他选项"
advanced: "其他"
privacy: "隐私"
save: "保存"
saved: "更新配置文件成功"
saved: "您的个人资料已保存"
uploading: "正在上传"
upload-failed: "上传失败"
email: "邮件设置"
email-address: "电子邮件地址"
email-verified: "电子邮件地址已验证"
email-not-verified: "电子邮件地址还没有验证哦, 请检查一下收信箱吧~"
email-not-verified: "邮件地址尚未验证。 请检查您的邮箱。"
common/views/components/user-list-editor.vue:
users: "用户"
rename: "重命名列表"
delete: "删除列表"
remove-user: "从此列表中删除"
delete-are-you-sure: "删除列表 \"$1\""
delete-are-you-sure: "删除列表“$1”"
deleted: "已删除"
common/views/widgets/broadcast.vue:
fetching: "确认中"
@ -517,9 +525,9 @@ common/views/widgets/calendar.vue:
year: "{}年"
month: "{}月"
day: "{}日"
today: "今天:"
this-month: "本月:"
this-year: "今年:"
today: "今天"
this-month: "本月"
this-year: "今年"
common/views/widgets/photo-stream.vue:
title: "图片轮播"
no-photos: "没有图片"
@ -557,11 +565,11 @@ common/views/widgets/tips.vue:
tips-line19: "可以在浏览器外部分离多个窗口。"
tips-line20: "日历小部件的百分比显示经过的时间百分比。"
tips-line21: "您也可以使用API开发机器人。"
tips-line23: "Ai-chan kawaii!"
tips-line23: "小蓝很可爱"
tips-line24: "Misskey自2014年开始运营。"
tips-line25: "在与通知功能兼容的浏览器中您可以在Misskey未打开的情况下接收通知"
common/views/pages/not-found.vue:
page-not-found: "啊喔, 页面走丢了..."
page-not-found: "您要找的网页不存在。"
common/views/pages/follow.vue:
signed-in-as: "用 {}登录"
following: "正在关注"
@ -583,7 +591,7 @@ desktop:
invalid-filetype: "不接受此文件类型"
desktop/views/components/activity.chart.vue:
total: "黑 ... 总计"
notes: "蓝 ... Notes"
notes: "蓝 ... 投稿"
replies: "红 ... 回复"
renotes: "绿 ... 转发"
desktop/views/components/activity.vue:
@ -591,9 +599,9 @@ desktop/views/components/activity.vue:
toggle: "切换显示"
desktop/views/components/calendar.vue:
title: "{year}年{month}月"
prev: "前一个月"
next: "下个月"
go: "点击已启用时间旅行"
prev: "个月"
next: "下个月"
go: "点击按时间浏览"
desktop/views/components/choose-file-from-drive-window.vue:
chosen-files: "{count}文件已被选择"
upload: "从设备中上传文件"
@ -658,9 +666,6 @@ desktop/views/components/drive.vue:
create-folder: "创建文件夹"
upload: "上传文件"
url-upload: "从URL上传"
desktop/views/components/media-image.vue:
sensitive: "阅读注意"
click-to-show: "点击以显示"
desktop/views/components/media-video.vue:
sensitive: "阅读注意"
click-to-show: "点击以显示"
@ -697,12 +702,12 @@ desktop/views/components/note-detail.vue:
location: "位置信息"
renote: "转发"
add-reaction: "添加一个反应"
undo-reaction: "リアクション解除"
undo-reaction: "取消反应"
desktop/views/components/note.vue:
reply: "回复"
renote: "Renote"
add-reaction: "添加一个反应"
undo-reaction: "リアクション解除"
undo-reaction: "取消反应"
detail: "详细信息"
private: "这个投稿是私密的"
deleted: "投稿已删除"
@ -764,7 +769,7 @@ desktop/views/pages/user-following-or-followers.vue:
desktop/views/components/settings-window.vue:
settings: "设置"
desktop/views/components/settings.vue:
profile: "个人简介"
profile: "个人资料"
notification: "通知"
apps: "应用程序"
tags: "标签"
@ -788,6 +793,8 @@ desktop/views/components/settings.vue:
auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。"
deck-nav: "Deck 内的导航"
deck-nav-desc: "在使用Deck时您会在导航期间获得一个没有页面过渡的临时列。"
keep-cw: "保留内容警告"
keep-cw-desc: "在回复帖子时,如果原帖设置了内容警告,默认情况下回帖也会设置相同的内容警告。"
deck-default: "将Deck界面设置为默认UI显示界面"
display: "设计与展示"
customize: "自定义首页摆放"
@ -806,18 +813,18 @@ desktop/views/components/settings.vue:
show-my-renotes: "在时间表中显示Renote"
show-renoted-my-notes: "在时间线上显示我的Renote"
show-local-renotes: "在时间线中显示Local Renote(s)"
show-maps: "显示地图以显示位置"
show-maps: "自动显示地图"
remain-deleted-note: "继续显示已删除的帖子"
deck-column-align: "デッキのカラムの配置"
deck-column-align: "列对齐设置"
deck-column-align-center: "中央"
deck-column-align-left: "左"
deck-column-align-flexible: "フレキシブル"
deck-column-width: "デッキのカラムの幅"
deck-column-width-narrow: ""
deck-column-width-narrower: "やや狭"
deck-column-align-flexible: "可变"
deck-column-width: "列宽度"
deck-column-width-narrow: ""
deck-column-width-narrower: "更窄"
deck-column-width-normal: "正常"
deck-column-width-wider: "やや広"
deck-column-width-wide: ""
deck-column-width-wider: "更宽"
deck-column-width-wide: ""
sound: "声音"
enable-sounds: "开启声音"
enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。"
@ -866,13 +873,16 @@ desktop/views/components/settings.2fa.vue:
enter-password: "请输入您的密码"
authenticator: "首先,您需要在设备上安装 Google Authenticator"
howtoinstall: "怎样安装"
token: "トークン"
token: "令牌"
scan: "然后,扫描二维码:"
done: "请输入显示在您设备上的密钥:"
submit: "提交"
success: "设置完成"
failed: "设置失败, 请确保您的密钥是正确的。"
info: "从下次登录Misskey时您的设备上显示的令牌以及密码也是必需的。"
common/views/components/media-image.vue:
sensitive: "阅读注意"
click-to-show: "点击查看"
common/views/components/api-settings.vue:
intro: "要访问API请将此标记设置为请求参数的关键字“i”。"
caution: "请勿将此令牌输入任何应用,也不要将此令牌告诉其他人,否则您的账户可能会受到损害。"
@ -940,7 +950,7 @@ desktop/views/components/ui.header.vue:
welcome-back: "欢迎回来!"
adjective: "先生"
desktop/views/components/ui.header.account.vue:
profile: "您的个人资料"
profile: "个人资料"
favorites: "最爱"
lists: "列表"
follow-requests: "关注申请"
@ -989,7 +999,7 @@ admin/views/index.vue:
federation: "联合"
announcements: "公告"
hashtags: "标签"
abuse: "スパム報告"
abuse: "举报垃圾信息"
back-to-misskey: "返回 Misskey"
admin/views/dashboard.vue:
dashboard: "Dashboard"
@ -1000,11 +1010,11 @@ admin/views/dashboard.vue:
this-instance: "此实例"
federated: "联合"
admin/views/abuse.vue:
title: "スパム報告"
target: "対象"
reporter: "告者"
details: "詳細"
remove-report: "除"
title: "举报垃圾信息"
target: "目标"
reporter: "告者"
details: "详情"
remove-report: "除"
admin/views/instance.vue:
instance: "例子"
instance-name: "实例名称"
@ -1051,8 +1061,8 @@ admin/views/instance.vue:
max-note-text-length: "最大帖子字符数"
disable-registration: "停用新用户注册功能"
disable-local-timeline: "停用本地时间线功能"
disable-global-timeline: "グローバルタイムラインを無効にする"
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
disable-global-timeline: "禁用全局时间线"
disabling-timelines-info: "即使禁用时间线,管理员和版主仍然可用。"
invite: "邀请"
save: "保存"
saved: "保存完毕"
@ -1074,7 +1084,7 @@ admin/views/instance.vue:
smtp-pass: "SMTP 密码"
serviceworker-config: "ServiceWorker"
enable-serviceworker: "启用ServiceWorker"
serviceworker-info: "プッシュ通知を行うには有効する必要があります。"
serviceworker-info: "您需要启用推送通知"
vapid-publickey: "VAPID公钥"
vapid-privatekey: "VAPID私钥"
vapid-info: "如果您想要启用ServiceWorker那么您需要生成VAPID秘钥。除非您已经在其他地方设置了全局node_modules位置否则您需要将其作为root用户运行"
@ -1096,7 +1106,7 @@ admin/views/charts.vue:
notes-total: "帖子总数"
users: "用户数量:增加/减少"
users-total: "用户总数"
active-users: "アクティブユーザー数"
active-users: "活跃用户数"
drive: "存储容量:增加/减少"
drive-total: "云盘总容量"
drive-files: "云盘上的文件数:增加/减少"
@ -1106,15 +1116,15 @@ admin/views/charts.vue:
network-usage: "网络流量"
admin/views/drive.vue:
operation: "操作"
fileid-or-url: "ファイルIDまたはファイルURL"
file-not-found: "ファイルが見つかりません"
lookup: "照会"
fileid-or-url: "文件ID或文件URL"
file-not-found: "找不到文件"
lookup: "查询"
sort:
title: "排序"
createdAtAsc: "アップロード日時が古い順"
createdAtDesc: "アップロード日時が新しい順"
sizeAsc: "サイズが小さい順"
sizeDesc: "サイズが大きい順"
createdAtAsc: "按上传时间(升序)"
createdAtDesc: "按上传时间(降序)"
sizeAsc: "按大小(升序)"
sizeDesc: "按大小(降序)"
origin:
title: "源自"
combined: "本地+远程"
@ -1124,23 +1134,32 @@ admin/views/drive.vue:
deleted: "已删除"
mark-as-sensitive: "标记为“敏感”"
unmark-as-sensitive: "取消标记为“敏感”"
marked-as-sensitive: "閲覧注意に設定しました"
unmarked-as-sensitive: "閲覧注意を解除しました"
marked-as-sensitive: "标记为“敏感”"
unmarked-as-sensitive: "取消标记为“敏感”"
admin/views/users.vue:
operation: "操作"
username-or-userid: "用户名或用户ID"
user-not-found: "用户不存在"
lookup: "订阅"
reset-password: "密码重置"
reset-password-confirm: "是否重置密码?"
password-updated: "密码为「{password}」"
suspend: "被冻结"
suspend-confirm: "是否冻结?"
suspended: "成功冻结用户"
unsuspend: "已解除冻结"
unsuspend-confirm: "是否解除冻结?"
unsuspended: "已成功解除用户冻结"
make-silence: "禁言"
unmake-silence: "解除禁言"
verify: "认证用户"
verify-confirm: "是否官方账号?"
verified: "此账户已被认证"
unverify: "解除账户认证"
unverify-confirm: "是否解除官方账号认证?"
unverified: "该帐户未经认证"
update-remote-user: "更新远程用户信息"
remote-user-updated: "远程用户信息已更新"
users:
title: "用户"
sort:
@ -1150,13 +1169,13 @@ admin/views/users.vue:
updatedAtAsc: "更新时间从旧到新"
updatedAtDesc: "更新时间从新到旧"
state:
title: "状"
all: "すべて"
admin: "管理"
moderator: "モデレーター"
adminOrModerator: "管理者+モデレーター"
verified: "公式アカウント"
suspended: "凍結済み"
title: "状"
all: "全部"
admin: "管理"
moderator: "版主"
adminOrModerator: "管理员+版主"
verified: "官方认证账户"
suspended: "已冻结"
origin:
title: "源自"
combined: "本地+远程"
@ -1169,8 +1188,8 @@ admin/views/moderators.vue:
title: "注册版主"
add: "注册"
added: "已注册版主。"
remove: "解除"
removed: "モデレーター登録を解除しました"
remove: "取消"
removed: "取消注册版主"
admin/views/emoji.vue:
add-emoji:
title: "添加emoji"
@ -1183,12 +1202,12 @@ admin/views/emoji.vue:
info: "我们建议使用50KB以下的PNG图像。"
added: "Emoji 已添加"
emojis:
title: "Emojis"
title: "表情符号列表"
update: "更新"
remove: "移除"
updated: "已更新"
remove-emoji:
are-you-sure: "删除 \"%1$s\"?"
are-you-sure: "删除「$1」?"
removed: "已删除"
admin/views/announcements.vue:
announcements: "公告"
@ -1199,7 +1218,7 @@ admin/views/announcements.vue:
text: "内容"
saved: "已保存"
_remove:
are-you-sure: "删除 \"%1$s\"?"
are-you-sure: "删除「$1」?"
removed: "已删除"
admin/views/hashtags.vue:
hided-tags: "隐藏标签"
@ -1240,19 +1259,19 @@ desktop/views/pages/user-list.users.vue:
username: "用户名"
desktop/views/pages/user/user.followers-you-know.vue:
title: "您可能认识的关注者"
loading: "正在加载, 请耐心等待哦~"
loading: "正在加载"
no-users: "没有你知道的关注者"
desktop/views/pages/user/user.friends.vue:
title: "活跃用户"
loading: "正在加载, 等着就好啦"
loading: "正在加载"
no-users: "没有活跃用户"
desktop/views/pages/user/user.photos.vue:
title: "照片"
loading: "正在加载, 请耐心等待哦~"
loading: "正在加载"
no-photos: "没有图片"
desktop/views/pages/user/user.profile.vue:
follows-you: "关注您"
menu: "メニュー"
menu: "菜单"
desktop/views/pages/user/user.header.vue:
posts: "帖子"
following: "关注中"
@ -1266,7 +1285,7 @@ desktop/views/pages/user/user.timeline.vue:
default: "帖子"
with-replies: "帖子与回复"
with-media: "媒体"
my-posts: "私の投稿"
my-posts: "我的帖子"
empty: "看起来这个用户还没有发布什么呢。"
desktop/views/widgets/messaging.vue:
title: "信息"
@ -1299,7 +1318,7 @@ mobile/views/components/drive.vue:
nothing-in-drive: "云盘上没有任何东西"
folder-is-empty: "这文件夹是空的"
prompt: "您想要干什么呢?(请输入数字):<1 → 上传文件 | 2 → 从URL上传文件 | 3 → 创建新文件夹 | 4 → 更改这个文件夹的名称 | 5 → 移动这个文件夹 | 6 → 删除这个文件夹>"
deletion-alert: "抱歉! 尚未删除文件夹。"
deletion-alert: "抱歉 删除文件夹功能尚未实现。"
folder-name: "文件夹名称"
root-rename-alert: "您目前在root模式; 它无法重命名,因为它不是文件夹。 导航到要重命名的文件夹,然后重试。"
root-move-alert: "您目前在root模式; 它无法移动,因为它不是文件夹。 导航到要移动的文件夹,然后重试。"
@ -1320,9 +1339,6 @@ mobile/views/components/drive.file-detail.vue:
nsfw: "阅读注意"
mark-as-sensitive: "标记为“敏感”"
unmark-as-sensitive: "取消标记为“敏感”"
mobile/views/components/media-image.vue:
sensitive: "阅读注意"
click-to-show: "点击以显示"
mobile/views/components/media-video.vue:
sensitive: "阅读注意"
click-to-show: "点击以显示"
@ -1467,6 +1483,7 @@ mobile/views/pages/settings.vue:
notification-position-top: "顶部"
behavior: "动作"
fetch-on-scroll: "滚动无限加载"
keep-cw: "保留内容警告"
note-visibility: "帖子可见性"
default-note-visibility: "默认可见性"
remember-note-visibility: "记住帖子可见性"

View File

@ -1,14 +1,18 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "10.78.4",
"clientVersion": "2.0.13678",
"version": "10.82.0",
"clientVersion": "2.0.14114",
"codename": "nighthike",
"main": "./built/index.js",
"repository": {
"type": "git",
"url": "https://github.com/syuilo/misskey.git"
},
"main": "./index.js",
"private": true,
"scripts": {
"start": "node ./built",
"debug": "DEBUG=misskey:* node ./built",
"start": "node ./index.js",
"debug": "DEBUG=misskey:* node ./index.js",
"build": "webpack && gulp build",
"webpack": "webpack",
"watch": "webpack --watch",
@ -19,10 +23,13 @@
"test": "gulp test",
"format": "gulp format"
},
"resolutions": {
"terser": "3.14.1"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "1.2.12",
"@fortawesome/fontawesome-svg-core": "1.2.14",
"@fortawesome/free-brands-svg-icons": "5.6.3",
"@fortawesome/free-regular-svg-icons": "5.5.0",
"@fortawesome/free-regular-svg-icons": "5.7.0",
"@fortawesome/free-solid-svg-icons": "5.6.3",
"@fortawesome/vue-fontawesome": "0.1.5",
"@koa/cors": "2.2.3",
@ -31,12 +38,11 @@
"@types/bcryptjs": "2.4.2",
"@types/chai-http": "3.0.5",
"@types/dateformat": "3.0.0",
"@types/debug": "0.0.31",
"@types/deep-equal": "1.0.1",
"@types/double-ended-queue": "2.1.0",
"@types/elasticsearch": "5.0.30",
"@types/file-type": "10.6.0",
"@types/gulp": "3.8.36",
"@types/gulp": "4.0.5",
"@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31",
@ -45,27 +51,30 @@
"@types/is-root": "1.0.0",
"@types/is-svg": "3.0.0",
"@types/is-url": "1.2.28",
"@types/js-yaml": "3.11.4",
"@types/js-yaml": "3.12.0",
"@types/jsdom": "12.2.1",
"@types/katex": "0.5.0",
"@types/koa": "2.0.48",
"@types/koa-bodyparser": "5.0.2",
"@types/koa-compress": "2.0.8",
"@types/koa-cors": "0.0.0",
"@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1",
"@types/koa-mount": "3.0.1",
"@types/koa-multer": "1.0.0",
"@types/koa-router": "7.0.35",
"@types/koa-router": "7.0.39",
"@types/koa-send": "4.1.1",
"@types/koa-views": "2.0.3",
"@types/koa__cors": "2.2.3",
"@types/minio": "7.0.1",
"@types/mkdirp": "0.5.2",
"@types/mocha": "5.2.5",
"@types/mongodb": "3.1.18",
"@types/ms": "0.7.30",
"@types/mongodb": "3.1.19",
"@types/node": "10.12.18",
"@types/nodemailer": "4.6.5",
"@types/nprogress": "0.0.29",
"@types/oauth": "0.9.1",
"@types/parse5": "5.0.0",
"@types/parsimmon": "1.10.0",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
@ -74,54 +83,54 @@
"@types/redis": "2.8.10",
"@types/request": "2.48.1",
"@types/request-promise-native": "1.0.15",
"@types/request-stats": "3.0.0",
"@types/rimraf": "2.0.2",
"@types/seedrandom": "2.4.27",
"@types/sharp": "0.21.0",
"@types/sharp": "0.21.1",
"@types/showdown": "1.9.2",
"@types/speakeasy": "2.0.3",
"@types/systeminformation": "3.23.1",
"@types/tinycolor2": "1.4.1",
"@types/tmp": "0.0.33",
"@types/uuid": "3.4.4",
"@types/webpack": "4.4.21",
"@types/web-push": "3.3.0",
"@types/webpack": "4.4.24",
"@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.40",
"@types/ws": "6.0.1",
"animejs": "3.0.1",
"apexcharts": "2.5.1",
"apexcharts": "3.2.1",
"autobind-decorator": "2.4.0",
"autosize": "4.0.2",
"autwh": "0.1.0",
"bcryptjs": "2.4.3",
"bee-queue": "1.2.2",
"bootstrap-vue": "2.0.0-rc.11",
"cafy": "12.0.0",
"cafy": "12.1.0",
"chai": "4.2.0",
"chalk": "2.4.2",
"chai-http": "4.2.1",
"chalk": "2.4.2",
"commander": "2.19.0",
"crc-32": "1.2.0",
"css-loader": "1.0.1",
"css-loader": "2.1.0",
"cssnano": "4.1.8",
"dateformat": "3.0.3",
"debug": "4.1.0",
"deep-equal": "1.0.1",
"deepcopy": "0.6.3",
"diskusage": "1.0.0",
"double-ended-queue": "2.1.0-0",
"elasticsearch": "15.3.0",
"elasticsearch": "15.3.1",
"emojilib": "2.4.0",
"escape-regexp": "0.0.1",
"eslint": "5.12.0",
"eslint-plugin-vue": "5.1.0",
"eventemitter3": "3.1.0",
"feed": "2.0.2",
"file-loader": "2.0.0",
"file-type": "10.7.0",
"file-type": "10.7.1",
"fuckadblock": "3.2.1",
"gulp": "3.9.1",
"gulp": "4.0.0",
"gulp-cssnano": "2.1.3",
"gulp-imagemin": "4.1.0",
"gulp-imagemin": "5.0.3",
"gulp-mocha": "6.0.0",
"gulp-rename": "1.4.0",
"gulp-replace": "1.0.0",
@ -131,7 +140,7 @@
"gulp-typescript": "5.0.0",
"gulp-uglify": "3.0.1",
"gulp-util": "3.0.8",
"gulp-yaml": "2.0.2",
"gulp-yaml": "2.0.3",
"hard-source-webpack-plugin": "0.13.1",
"html-minifier": "3.5.21",
"http-signature": "1.2.0",
@ -144,7 +153,7 @@
"json5": "2.1.0",
"json5-loader": "1.0.1",
"katex": "0.10.0",
"koa": "2.6.2",
"koa": "2.7.0",
"koa-bodyparser": "4.2.1",
"koa-compress": "3.0.0",
"koa-favicon": "2.0.1",
@ -155,21 +164,21 @@
"koa-router": "7.4.0",
"koa-send": "5.0.0",
"koa-slow": "2.1.0",
"koa-views": "6.1.4",
"koa-views": "6.1.5",
"langmap": "0.0.16",
"loader-utils": "1.2.3",
"lookup-dns-cache": "2.1.0",
"minio": "7.0.3",
"minio": "7.0.5",
"mkdirp": "0.5.1",
"mocha": "5.2.0",
"moji": "0.5.1",
"moment": "2.23.0",
"mongodb": "3.1.10",
"moment": "2.24.0",
"mongodb": "3.1.13",
"monk": "6.0.6",
"ms": "2.1.1",
"nan": "2.12.1",
"nested-property": "0.0.7",
"nodemailer": "5.0.0",
"nodemailer": "5.1.1",
"nprogress": "0.2.0",
"object-assign-deep": "0.4.0",
"on-build-webpack": "0.1.0",
@ -178,13 +187,14 @@
"parsimmon": "1.12.0",
"portscanner": "2.2.0",
"postcss-loader": "3.0.0",
"progress-bar-webpack-plugin": "1.11.0",
"prismjs": "1.15.0",
"progress-bar-webpack-plugin": "1.12.1",
"promise-any": "0.2.0",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "2.0.3",
"punycode": "2.1.1",
"qrcode": "1.3.2",
"qrcode": "1.3.3",
"randomcolor": "0.5.3",
"ratelimiter": "3.2.0",
"recaptcha-promise": "0.1.3",
@ -197,7 +207,7 @@
"rndstr": "1.0.0",
"s-age": "1.1.2",
"seedrandom": "2.4.4",
"sharp": "0.21.1",
"sharp": "0.21.3",
"showdown": "1.9.0",
"showdown-highlightjs-extension": "0.1.2",
"speakeasy": "2.0.0",
@ -206,45 +216,47 @@
"stylus": "0.54.5",
"stylus-loader": "3.0.2",
"summaly": "2.2.0",
"systeminformation": "3.52.2",
"systeminformation": "3.54.0",
"syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "1.2.1",
"terser-webpack-plugin": "1.2.2",
"textarea-caret": "3.1.0",
"tinycolor2": "1.4.1",
"tmp": "0.0.33",
"ts-loader": "5.3.3",
"ts-node": "7.0.1",
"tslint": "5.12.0",
"tslint-sonarts": "1.8.0",
"typescript": "3.2.2",
"tslint-sonarts": "1.9.0",
"typescript": "3.2.4",
"typescript-eslint-parser": "21.0.2",
"uglify-es": "3.3.9",
"url-loader": "1.1.2",
"uuid": "3.3.2",
"v-animate-css": "0.0.3",
"vue": "2.5.17",
"video-thumbnail-generator": "1.1.3",
"vue": "2.6.2",
"vue-color": "2.7.0",
"vue-content-loading": "1.5.3",
"vue-cropperjs": "3.0.0",
"vue-i18n": "8.7.0",
"vue-i18n": "8.8.0",
"vue-js-modal": "1.3.28",
"vue-loader": "15.4.2",
"vue-loader": "15.6.2",
"vue-marquee-text-component": "1.1.1",
"vue-prism-component": "1.1.1",
"vue-router": "3.0.2",
"vue-sequential-entrance": "1.1.3",
"vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.2.7",
"vue-template-compiler": "2.5.17",
"vue-svg-inline-loader": "1.2.10",
"vue-template-compiler": "2.6.2",
"vuedraggable": "2.17.0",
"vuewordcloud": "18.7.11",
"vuex": "3.0.1",
"vuex": "3.1.0",
"vuex-persistedstate": "2.5.4",
"web-push": "3.3.3",
"webfinger.js": "2.7.0",
"webpack": "4.28.4",
"webpack-cli": "3.2.1",
"websocket": "1.0.28",
"ws": "6.1.2",
"ws": "6.1.3",
"xev": "2.0.1"
}
}

3
src/@types/const.json.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
declare module '*/const.json' {
const copyright: string;
}

17
src/@types/deepcopy.d.ts vendored Normal file
View File

@ -0,0 +1,17 @@
declare module 'deepcopy';
declare namespace deepcopy {
type DeepcopyCustomizerValueType = 'Object';
type DeepcopyCustomizer<T> = (
value: T,
valueType: DeepcopyCustomizerValueType) => T;
interface DeepcopyOptions<T> {
customizer: DeepcopyCustomizer<T>;
}
export function deepcopy<T>(
value: T,
options?: DeepcopyOptions<T> | DeepcopyCustomizer<T>): T;
}

7
src/@types/escape-regexp.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
declare module 'escape-regexp' {
function escapeRegExp(str: string): string;
namespace escapeRegExp {} // Hack
export = escapeRegExp;
}

75
src/@types/http-signature.d.ts vendored Normal file
View File

@ -0,0 +1,75 @@
declare module 'http-signature' {
import { IncomingMessage, ClientRequest } from 'http';
interface ISignature {
keyId: string;
algorithm: string;
headers: string[];
signature: string;
}
interface IOptions {
headers?: string[];
algorithm?: string;
strict?: boolean;
authorizationHeaderName?: string;
}
interface IParseRequestOptions extends IOptions {
clockSkew?: number;
}
interface IParsedSignature {
scheme: string;
params: ISignature;
signingString: string;
}
type RequestSignerConstructorOptions =
IRequestSignerConstructorOptionsFromProperties |
IRequestSignerConstructorOptionsFromFunction;
interface IRequestSignerConstructorOptionsFromProperties {
keyId: string;
key: string | Buffer;
algorithm?: string;
}
interface IRequestSignerConstructorOptionsFromFunction {
sign?: (data: string, cb: (err: any, sig: ISignature) => void) => void;
}
class RequestSigner {
constructor(options: RequestSignerConstructorOptions);
public writeHeader(header: string, value: string): string;
public writeDateHeader(): string;
public writeTarget(method: string, path: string): void;
public sign(cb: (err: any, authz: string) => void): void;
}
interface ISignRequestOptions extends IOptions {
keyId: string;
key: string;
httpVersion?: string;
}
export function parse(request: IncomingMessage, options?: IParseRequestOptions): IParsedSignature;
export function parseRequest(request: IncomingMessage, options?: IParseRequestOptions): IParsedSignature;
export function sign(request: ClientRequest, options: ISignRequestOptions): boolean;
export function signRequest(request: ClientRequest, options: ISignRequestOptions): boolean;
export function createSigner(): RequestSigner;
export function isSigner(obj: any): obj is RequestSigner;
export function sshKeyToPEM(key: string): string;
export function sshKeyFingerprint(key: string): string;
export function pemToRsaSSHKey(pem: string, comment: string): string;
export function verify(parsedSignature: IParsedSignature, pubkey: string | Buffer): boolean;
export function verifySignature(parsedSignature: IParsedSignature, pubkey: string | Buffer): boolean;
export function verifyHMAC(parsedSignature: IParsedSignature, secret: string): boolean;
}

7
src/@types/is-root.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
declare module 'is-root' {
function isRoot(): boolean;
namespace isRoot {} // Hack
export = isRoot;
}

15
src/@types/koa-json-body.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
declare module 'koa-json-body' {
import { Middleware } from 'koa';
interface IKoaJsonBodyOptions {
strict: boolean;
limit: string;
fallback: boolean;
}
function koaJsonBody(opt?: IKoaJsonBodyOptions): Middleware;
namespace koaJsonBody {} // Hack
export = koaJsonBody;
}

14
src/@types/koa-slow.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
declare module 'koa-slow' {
import { Middleware } from 'koa';
interface ISlowOptions {
url?: RegExp;
delay?: number;
}
function slow(options?: ISlowOptions): Middleware;
namespace slow { } // Hack
export = slow;
}

10
src/@types/langmap.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
declare module 'langmap' {
type Lang = {
nativeName: string;
englishName: string;
};
const langmap: { [lang: string]: Lang };
export = langmap;
}

17
src/@types/lookup-dns-cache.d.ts vendored Normal file
View File

@ -0,0 +1,17 @@
declare module 'lookup-dns-cache' {
type IPv4 = 4;
type IPv6 = 6;
type Family = IPv4 | IPv6 | undefined;
interface IRunOptions {
family?: Family;
all?: boolean;
}
type RunCallback = (error: Error | null, address?: string | string[], family?: Family) => void;
export function lookup(hostname: string, options: IRunOptions | Family, callback: RunCallback): {} | undefined;
export function lookup(hostname: string, callback: RunCallback): {} | undefined;
}

3
src/@types/meta.json.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
declare module '*/meta.json' {
const version: string;
}

12
src/@types/ms.d.ts vendored Normal file
View File

@ -0,0 +1,12 @@
declare module 'ms' {
interface IMSOptions {
long: boolean;
}
function ms(value: string): number;
function ms(value: number, options?: IMSOptions): string;
namespace ms {} // Hack
export = ms;
}

21
src/@types/nested-property.d.ts vendored Normal file
View File

@ -0,0 +1,21 @@
type Obj = { [key: string]: any };
declare module 'nested-property' {
interface IHasNestedPropertyOptions {
own?: boolean;
}
interface IIsInNestedPropertyOptions {
validPath?: boolean;
}
export function set<T>(object: T, property: string, value: any): T;
export function get(object: Obj, property: string): any;
export function has(object: Obj, property: string, options?: IHasNestedPropertyOptions): boolean;
export function hasOwn(object: Obj, property: string, options?: IHasNestedPropertyOptions): boolean;
export function isIn(object: Obj, property: string, objectInPath: Obj, options?: IIsInNestedPropertyOptions): boolean;
}

30
src/@types/os-utils.d.ts vendored Normal file
View File

@ -0,0 +1,30 @@
declare module 'os-utils' {
type FreeCommandCallback = (usedmem: number) => void;
type HarddriveCallback = (total: number, free: number, used: number) => void;
type GetProcessesCallback = (result: string) => void;
type CPUCallback = (perc: number) => void;
export function platform(): NodeJS.Platform;
export function cpuCount(): number;
export function sysUptime(): number;
export function processUptime(): number;
export function freemem(): number;
export function totalmem(): number;
export function freememPercentage(): number;
export function freeCommand(callback: FreeCommandCallback): void;
export function harddrive(callback: HarddriveCallback): void;
export function getProcesses(callback: GetProcessesCallback): void;
export function getProcesses(nProcess: number, callback: GetProcessesCallback): void;
export function allLoadavg(): string;
export function loadavg(_time?: number): number;
export function cpuFree(callback: CPUCallback): void;
export function cpuUsage(callback: CPUCallback): void;
}

10
src/@types/package.json.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
declare module '*/package.json' {
interface IRepository {
type: string;
url: string;
}
export const name: string;
export const version: string;
export const repository: IRepository;
}

7
src/@types/promise-any.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
declare module 'promise-any' {
function promiseAny<T>(iterable: Iterable<T | PromiseLike<T>>): Promise<T>;
namespace promiseAny {} // Hack
export = promiseAny;
}

16
src/@types/recaptcha-promise.d.ts vendored Normal file
View File

@ -0,0 +1,16 @@
declare module 'recaptcha-promise' {
interface IVerifyOptions {
secret_key?: string;
}
interface IVerify {
(response: string, remoteAddress?: string): Promise<boolean>;
init(options: IVerifyOptions): IVerify;
}
namespace recaptchaPromise {} // Hack
const verify: IVerify;
export = verify;
}

65
src/@types/webfinger.js.d.ts vendored Normal file
View File

@ -0,0 +1,65 @@
declare module 'webfinger.js' {
interface IWebFingerConstructorConfig {
tls_only?: boolean;
webfist_fallback?: boolean;
uri_fallback?: boolean;
request_timeout?: number;
}
type JRDProperties = { [type: string]: string };
interface IJRDLink {
rel: string;
type?: string;
href?: string;
template?: string;
titles?: { [lang: string]: string };
properties?: JRDProperties;
}
interface IJRD {
subject?: string;
expires?: Date;
aliases?: string[];
properties?: JRDProperties;
links?: IJRDLink[];
}
interface IIDXLinks {
'avatar': IJRDLink[];
'remotestorage': IJRDLink[];
'blog': IJRDLink[];
'vcard': IJRDLink[];
'updates': IJRDLink[];
'share': IJRDLink[];
'profile': IJRDLink[];
'webfist': IJRDLink[];
'camlistore': IJRDLink[];
[type: string]: IJRDLink[];
}
interface IIDXProperties {
'name': string;
[type: string]: string;
}
interface IIDX {
links: IIDXLinks;
properties: IIDXProperties;
}
interface ILookupCallbackResult {
object: IJRD;
json: string;
idx: IIDX;
}
type LookupCallback = (err: Error | string, result?: ILookupCallbackResult) => void;
export class WebFinger {
constructor(config?: IWebFingerConstructorConfig);
public lookup(address: string, cb: LookupCallback): NodeJS.Timeout;
public lookupLink(address: string, rel: string, cb: IJRDLink): void;
}
}

15
src/argv.ts Normal file
View File

@ -0,0 +1,15 @@
import * as program from 'commander';
import * as pkg from '../package.json';
program
.version(pkg.version)
.option('--no-daemons', 'Disable daemon processes (for debbuging)')
.option('--disable-clustering', 'Disable clustering')
.option('--disable-queue', 'Disable job queue')
.option('--quiet', 'Suppress all logs')
.option('--verbose', 'Enable all logs')
.option('--slow', 'Delay all requests (for debbuging)')
.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.')
.parse(process.argv);
export { program };

View File

@ -3,11 +3,14 @@
*/
import * as moment from 'moment';
const nestedProperty = require('nested-property');
import * as nestedProperty from 'nested-property';
import autobind from 'autobind-decorator';
import * as mongo from 'mongodb';
import db from '../db/mongodb';
import { ICollection } from 'monk';
import Logger from '../misc/logger';
const logger = new Logger('chart');
const utc = moment.utc;
@ -18,7 +21,7 @@ export type Partial<T> = {
};
type ArrayValue<T> = {
[P in keyof T]: T[P] extends number ? Array<T[P]> : ArrayValue<T[P]>;
[P in keyof T]: T[P] extends number ? T[P][] : ArrayValue<T[P]>;
};
type Span = 'day' | 'hour';
@ -55,17 +58,21 @@ type Log<T extends Obj> = {
/**
* 様々なチャートの管理を司るクラス
*/
export default abstract class Chart<T> {
export default abstract class Chart<T extends Obj> {
protected collection: ICollection<Log<T>>;
protected abstract async getTemplate(init: boolean, latest?: T, group?: any): Promise<T>;
private name: string;
constructor(name: string, grouped = false) {
this.name = name;
this.collection = db.get<Log<T>>(`chart.${name}`);
const keys = {
span: -1,
date: -1
} as { [key: string]: 1 | -1; };
if (grouped) keys.group = -1;
this.collection.createIndex(keys, { unique: true });
}
@ -155,6 +162,8 @@ export default abstract class Chart<T> {
// 初期ログデータを作成
data = await this.getTemplate(true, null, group);
logger.info(`${this.name}: Initial commit created`);
}
try {
@ -172,7 +181,7 @@ export default abstract class Chart<T> {
if (e.code === 11000) {
log = await this.getLatestLog(span, group);
} else {
console.error(e);
logger.error(e);
throw e;
}
}

View File

@ -6,10 +6,10 @@
<sequential-entrance animation="entranceFromTop" delay="25">
<div v-for="report in userReports" :key="report.id" class="haexwsjc">
<ui-horizon-group inputs>
<ui-input :value="report.user | acct" type="text">
<ui-input :value="report.user | acct" type="text" readonly>
<span>{{ $t('target') }}</span>
</ui-input>
<ui-input :value="report.reporter | acct" type="text">
<ui-input :value="report.reporter | acct" type="text" readonly>
<span>{{ $t('reporter') }}</span>
</ui-input>
</ui-horizon-group>

View File

@ -42,7 +42,7 @@
import Vue from 'vue';
import i18n from '../../i18n';
import * as tinycolor from 'tinycolor2';
import * as ApexCharts from 'apexcharts';
import ApexCharts from 'apexcharts';
const limit = 90;

View File

@ -19,7 +19,7 @@
<script lang="ts">
import Vue from 'vue';
import * as ApexCharts from 'apexcharts';
import ApexCharts from 'apexcharts';
export default Vue.extend({
props: ['connection'],

View File

@ -0,0 +1,85 @@
<template>
<div class="kofvwchc">
<div>
<a :href="user | userPage(null, true)">
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
</a>
</div>
<div>
<header>
<b><mk-user-name :user="user"/></b>
<span class="username">@{{ user | acct }}</span>
<span class="is-admin" v-if="user.isAdmin">admin</span>
<span class="is-moderator" v-if="user.isModerator">moderator</span>
<span class="is-verified" v-if="user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
<span class="is-silenced" v-if="user.isSilenced" :title="$t('@.silenced-user')"><fa :icon="faMicrophoneSlash"/></span>
<span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span>
</header>
<div>
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
</div>
<div>
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../i18n';
import { faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('admin/views/users.vue'),
props: ['user'],
data() {
return {
faSnowflake, faMicrophoneSlash
};
},
});
</script>
<style lang="stylus" scoped>
.kofvwchc
display flex
padding 16px 0
border-top solid 1px var(--faceDivider)
> div:first-child
> a
> .avatar
width 64px
height 64px
> div:last-child
flex 1
padding-left 16px
@media (max-width 500px)
font-size 14px
> header
> .username
margin-left 8px
opacity 0.7
> .is-admin
> .is-moderator
flex-shrink 0
align-self center
margin 0 0 0 .5em
padding 1px 6px
font-size 80%
border-radius 3px
background var(--noteHeaderAdminBg)
color var(--noteHeaderAdminFg)
> .is-verified
> .is-silenced
> .is-suspended
margin 0 0 0 .5em
color #4dabf7
</style>

View File

@ -3,20 +3,31 @@
<ui-card>
<div slot="title"><fa :icon="faTerminal"/> {{ $t('operation') }}</div>
<section class="fit-top">
<ui-input v-model="target" type="text">
<ui-input class="target" v-model="target" type="text" @enter="showUser">
<span>{{ $t('username-or-userid') }}</span>
</ui-input>
<ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button>
<ui-horizon-group>
<ui-button @click="verifyUser" :disabled="verifying"><fa :icon="faCertificate"/> {{ $t('verify') }}</ui-button>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
</ui-horizon-group>
<ui-horizon-group>
<ui-button @click="suspendUser" :disabled="suspending"><fa :icon="faSnowflake"/> {{ $t('suspend') }}</ui-button>
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
</ui-horizon-group>
<ui-button @click="showUser"><fa :icon="faSearch"/> {{ $t('lookup') }}</ui-button>
<ui-textarea v-if="user" :value="user | json5" readonly tall style="margin-top:16px;"></ui-textarea>
<div class="user" v-if="user">
<x-user :user='user'/>
<div class="actions">
<ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button>
<ui-horizon-group>
<ui-button @click="verifyUser" :disabled="verifying"><fa :icon="faCertificate"/> {{ $t('verify') }}</ui-button>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
</ui-horizon-group>
<ui-horizon-group>
<ui-button @click="silenceUser"><fa :icon="faMicrophoneSlash"/> {{ $t('make-silence') }}</ui-button>
<ui-button @click="unsilenceUser">{{ $t('unmake-silence') }}</ui-button>
</ui-horizon-group>
<ui-horizon-group>
<ui-button @click="suspendUser" :disabled="suspending"><fa :icon="faSnowflake"/> {{ $t('suspend') }}</ui-button>
<ui-button @click="unsuspendUser" :disabled="unsuspending">{{ $t('unsuspend') }}</ui-button>
</ui-horizon-group>
<ui-button v-if="user.host != null" @click="updateRemoteUser"><fa :icon="faSync"/> {{ $t('update-remote-user') }}</ui-button>
<ui-textarea v-if="user" :value="user | json5" readonly tall style="margin-top:16px;"></ui-textarea>
</div>
</div>
</section>
</ui-card>
@ -47,29 +58,7 @@
</ui-select>
</ui-horizon-group>
<sequential-entrance animation="entranceFromTop" delay="25">
<div class="kofvwchc" v-for="user in users" :key="user.id">
<div>
<a :href="user | userPage(null, true)">
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
</a>
</div>
<div>
<header>
<b><mk-user-name :user="user"/></b>
<span class="username">@{{ user | acct }}</span>
<span class="is-admin" v-if="user.isAdmin">admin</span>
<span class="is-moderator" v-if="user.isModerator">moderator</span>
<span class="is-verified" v-if="user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
<span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span>
</header>
<div>
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
</div>
<div>
<span>{{ $t('users.createdAt') }}: <mk-time :time="user.createdAt" mode="detail"/></span>
</div>
</div>
</div>
<x-user v-for="user in users" :user='user' :key="user.id"/>
</sequential-entrance>
<ui-button v-if="existMore" @click="fetchUsers">{{ $t('@.load-more') }}</ui-button>
</section>
@ -81,12 +70,15 @@
import Vue from 'vue';
import i18n from '../../i18n';
import parseAcct from "../../../../misc/acct/parse";
import { faCertificate, faUsers, faTerminal, faSearch, faKey } from '@fortawesome/free-solid-svg-icons';
import { faCertificate, faUsers, faTerminal, faSearch, faKey, faSync, faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
import XUser from './users.user.vue';
export default Vue.extend({
i18n: i18n('admin/views/users.vue'),
components: {
XUser
},
data() {
return {
user: null,
@ -102,7 +94,7 @@ export default Vue.extend({
offset: 0,
users: [],
existMore: false,
faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey
faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey, faSync, faMicrophoneSlash
};
},
@ -131,34 +123,47 @@ export default Vue.extend({
},
methods: {
async fetchUser() {
try {
return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target });
} catch (e) {
if (e == 'user not found') {
this.$root.dialog({
type: 'error',
text: this.$t('user-not-found')
});
} else {
this.$root.dialog({
type: 'error',
text: e.toString()
});
}
}
/** テキストエリアのユーザーを解決する */
fetchUser() {
return new Promise((res) => {
const usernamePromise = this.$root.api('users/show', parseAcct(this.target));
const idPromise = this.$root.api('users/show', { userId: this.target });
usernamePromise.then(res);
idPromise.then(res);
idPromise.catch(e => {
if (e == 'user not found') {
this.$root.dialog({
type: 'error',
text: this.$t('user-not-found')
});
}
});
});
},
/** テキストエリアから処理対象ユーザーを設定する */
async showUser() {
this.user = null;
const user = await this.fetchUser();
this.$root.api('admin/show-user', { userId: user.id }).then(info => {
this.user = info;
});
this.target = '';
},
/** 処理対象ユーザーの情報を更新する */
async refreshUser() {
this.$root.api('admin/show-user', { userId: this.user._id }).then(info => {
this.user = info;
});
},
async resetPassword() {
const user = await this.fetchUser();
this.$root.api('admin/reset-password', { userId: user.id }).then(res => {
if (!await this.getConfirmed(this.$t('reset-password-confirm'))) return;
this.$root.api('admin/reset-password', { userId: this.user._id }).then(res => {
this.$root.dialog({
type: 'success',
text: this.$t('password-updated', { password: res.password })
@ -167,11 +172,12 @@ export default Vue.extend({
},
async verifyUser() {
if (!await this.getConfirmed(this.$t('verify-confirm'))) return;
this.verifying = true;
const process = async () => {
const user = await this.fetchUser();
await this.$root.api('admin/verify-user', { userId: user.id });
await this.$root.api('admin/verify-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
text: this.$t('verified')
@ -186,14 +192,17 @@ export default Vue.extend({
});
this.verifying = false;
this.refreshUser();
},
async unverifyUser() {
if (!await this.getConfirmed(this.$t('unverify-confirm'))) return;
this.unverifying = true;
const process = async () => {
const user = await this.fetchUser();
await this.$root.api('admin/unverify-user', { userId: user.id });
await this.$root.api('admin/unverify-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
text: this.$t('unverified')
@ -208,14 +217,55 @@ export default Vue.extend({
});
this.unverifying = false;
this.refreshUser();
},
async silenceUser() {
const process = async () => {
await this.$root.api('admin/silence-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
splash: true
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
this.refreshUser();
},
async unsilenceUser() {
const process = async () => {
await this.$root.api('admin/unsilence-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
splash: true
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
this.refreshUser();
},
async suspendUser() {
if (!await this.getConfirmed(this.$t('suspend-confirm'))) return;
this.suspending = true;
const process = async () => {
const user = await this.fetchUser();
await this.$root.api('admin/suspend-user', { userId: user.id });
await this.$root.api('admin/suspend-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
text: this.$t('suspended')
@ -230,14 +280,17 @@ export default Vue.extend({
});
this.suspending = false;
this.refreshUser();
},
async unsuspendUser() {
if (!await this.getConfirmed(this.$t('unsuspend-confirm'))) return;
this.unsuspending = true;
const process = async () => {
const user = await this.fetchUser();
await this.$root.api('admin/unsuspend-user', { userId: user.id });
await this.$root.api('admin/unsuspend-user', { userId: this.user._id });
this.$root.dialog({
type: 'success',
text: this.$t('unsuspended')
@ -252,8 +305,32 @@ export default Vue.extend({
});
this.unsuspending = false;
this.refreshUser();
},
async updateRemoteUser() {
this.$root.api('admin/update-remote-user', { userId: this.user._id }).then(res => {
this.$root.dialog({
type: 'success',
text: this.$t('remote-user-updated')
});
});
this.refreshUser();
},
async getConfirmed(text: string): Promise<Boolean> {
const confirm = await this.$root.dialog({
type: 'warning',
showCancelButton: true,
title: 'confirm',
text,
});
return !confirm.canceled;
}
fetchUsers() {
this.$root.api('admin/show-users', {
state: this.state,
@ -277,42 +354,12 @@ export default Vue.extend({
</script>
<style lang="stylus" scoped>
.kofvwchc
display flex
padding 16px 0
border-top solid 1px var(--faceDivider)
.target
margin-bottom 16px !important
> div:first-child
> a
> .avatar
width 64px
height 64px
.user
margin-top 32px
> div:last-child
flex 1
padding-left 16px
@media (max-width 500px)
font-size 14px
> header
> .username
margin-left 8px
opacity 0.7
> .is-admin
> .is-moderator
flex-shrink 0
align-self center
margin 0 0 0 .5em
padding 1px 6px
font-size 80%
border-radius 3px
background var(--noteHeaderAdminBg)
color var(--noteHeaderAdminFg)
> .is-verified
> .is-suspended
margin 0 0 0 .5em
color #4dabf7
> .actions
margin-left 80px
</style>

View File

@ -26,3 +26,16 @@
transform: translateY(0);
}
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes jump {
0% { transform: translateY(0); }
25% { transform: translateY(-16px); }
50% { transform: translateY(0); }
75% { transform: translateY(-8px); }
100% { transform: translateY(0); }
}

View File

@ -72,47 +72,6 @@ body
code
font-family Consolas, 'Courier New', Courier, Monaco, monospace
.comment
opacity 0.5
.string
color #e96900
.regexp
color #e9003f
.keyword
color #2973b7
&.true
&.false
&.null
&.nil
&.undefined
color #ae81ff
.symbol
color #42b983
.number
.nan
color #ae81ff
.var:not(.keyword)
font-weight bold
font-style italic
//text-decoration underline
.method
font-style italic
color #8964c1
.property
color #a71d5d
.label
color #e9003f
pre
display block

View File

@ -62,23 +62,26 @@
}
if (settings && settings.device.lang &&
langs.includes(settings.device.lang)) {
langs.includes(settings.device.lang))
{
lang = settings.device.lang;
}
window.lang = lang;
localStorage.setItem('lang', lang);
//#endregion
let locale = localStorage.getItem('locale');
//#region Fetch locale data
const cachedLocale = localStorage.getItem('locale');
const localeKey = localStorage.getItem('localeKey');
if (locale == null || localeKey != `${ver}.${lang}`) {
if (cachedLocale == null || localeKey != `${ver}.${lang}`) {
const locale = await fetch(`/assets/locales/${lang}.json?ver=${ver}`)
.then(response => response.json());
localStorage.setItem('locale', JSON.stringify(locale));
localStorage.setItem('localeKey', `${ver}.${lang}`);
localStorage.setItem('locale', JSON.stringify(locale));
localStorage.setItem('localeKey', `${ver}.${lang}`);
}
//#endregion
// Detect the user agent
const ua = navigator.userAgent.toLowerCase();

View File

@ -2,12 +2,32 @@
* Clipboardに値をコピー(TODO: 文字列以外も対応)
*/
export default val => {
const form = document.createElement('textarea');
form.textContent = val;
document.body.appendChild(form);
form.select();
// 空div 生成
const tmp = document.createElement('div');
// 選択用のタグ生成
const pre = document.createElement('pre');
// 親要素のCSSで user-select: none だとコピーできないので書き換える
pre.style.webkitUserSelect = 'auto';
pre.style.userSelect = 'auto';
tmp.appendChild(pre).textContent = val;
// 要素を画面外へ
const s = tmp.style;
s.position = 'fixed';
s.right = '200%';
// body に追加
document.body.appendChild(tmp);
// 要素を選択
document.getSelection().selectAllChildren(tmp);
// クリップボードにコピー
const result = document.execCommand('copy');
document.body.removeChild(form);
// 要素削除
document.body.removeChild(tmp);
return result;
};

View File

@ -1,5 +1,5 @@
// スクリプトサイズがデカい
//const crypto = require('crypto');
//import * as crypto from 'crypto';
export default (data: ArrayBuffer) => {
//const buf = new Buffer(data);

View File

@ -0,0 +1,9 @@
import { url as instanceUrl } from '../../config';
export function getStaticImageUrl(url: string): string {
const u = new URL(url);
const dummy = `${u.host}${u.pathname}`; // 拡張子がないとキャッシュしてくれないCDNがあるので
let result = `${instanceUrl}/proxy/${dummy}?url=${encodeURIComponent(u.href)}`;
result += '&static=1';
return result;
}

View File

@ -1,4 +1,4 @@
const NProgress = require('nprogress');
import * as NProgress from 'nprogress';
NProgress.configure({
trickleSpeed: 500,
showSpinner: false

View File

@ -1,4 +1,4 @@
import parse from '../../../../mfm/parse';
import { parse } from '../../../../mfm/parse';
import { sum, unique } from '../../../../prelude/array';
import shouldMuteNote from './should-mute-note';
import MkNoteMenu from '../views/components/note-menu.vue';

View File

@ -133,6 +133,7 @@ export default prop => ({
case 'deleted': {
Vue.set(this.$_ns_target, 'deletedAt', body.deletedAt);
Vue.set(this.$_ns_target, 'renote', null);
this.$_ns_target.text = null;
this.$_ns_target.tags = [];
this.$_ns_target.fileIds = [];

View File

@ -15,6 +15,7 @@
<script lang="ts">
import Vue from 'vue';
import { getStaticImageUrl } from '../../../common/scripts/get-static-image-url';
export default Vue.extend({
props: {
@ -47,6 +48,11 @@ export default Vue.extend({
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
};
},
url(): string {
return this.$store.state.device.disableShowingAnimatedImages
? getStaticImageUrl(this.user.avatarUrl)
: this.user.avatarUrl;
},
icon(): any {
return {
backgroundColor: this.lightmode
@ -54,7 +60,7 @@ export default Vue.extend({
: this.user.avatarColor && this.user.avatarColor.length == 3
? `rgb(${this.user.avatarColor.join(',')})`
: null,
backgroundImage: this.lightmode ? null : `url(${this.user.avatarUrl})`,
backgroundImage: this.lightmode ? null : `url(${this.url})`,
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
};
}

View File

@ -0,0 +1,30 @@
<template>
<prism :inline="inline" :language="lang || 'js'">{{ code }}</prism>
</template>
<script lang="ts">
import Vue from 'vue';
import 'prismjs';
import 'prismjs/themes/prism-okaidia.css';
import Prism from 'vue-prism-component';
export default Vue.extend({
components: {
Prism
},
props: {
code: {
type: String,
required: true
},
lang: {
type: String,
required: false
},
inline: {
type: Boolean,
required: false
}
}
});
</script>

View File

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

View File

@ -18,7 +18,7 @@
import Vue from 'vue';
import i18n from '../../../i18n';
import * as tinycolor from 'tinycolor2';
import * as ApexCharts from 'apexcharts';
import ApexCharts from 'apexcharts';
export default Vue.extend({
i18n: i18n('common/views/components/drive-settings.vue'),

View File

@ -9,6 +9,7 @@
import Vue from 'vue';
// スクリプトサイズがデカい
//import { lib } from 'emojilib';
import { getStaticImageUrl } from '../../../common/scripts/get-static-image-url';
export default Vue.extend({
props: {
@ -54,7 +55,9 @@ export default Vue.extend({
const customEmoji = this.customEmojis.find(x => x.name == this.name);
if (customEmoji) {
this.customEmoji = customEmoji;
this.url = customEmoji.url;
this.url = this.$store.state.device.disableShowingAnimatedImages
? getStaticImageUrl(customEmoji.url)
: customEmoji.url;
} else {
//const emoji = lib[this.name];
//if (emoji) {

View File

@ -1,5 +1,6 @@
<template>
<span v-html="compiledFormula"></span>
<div v-if="block" v-html="compiledFormula"></div>
<span v-else v-html="compiledFormula"></span>
</template>
<script lang="ts">
@ -11,6 +12,10 @@ export default Vue.extend({
formula: {
type: String,
required: true
},
block: {
type: Boolean,
required: true
}
},
computed: {

View File

@ -1,5 +1,5 @@
<template>
<x-formula :formula="formula"/>
<x-formula :formula="formula" :block="block" />
</template>
<script lang="ts">
@ -14,6 +14,10 @@ export default Vue.extend({
formula: {
type: String,
required: true
},
block: {
type: Boolean,
required: true
}
}
});

View File

@ -11,6 +11,7 @@
:title="media.name"
controls
ref="audio"
@volumechange="volumechange"
preload="metadata" />
</div>
<a class="download" v-else
@ -40,7 +41,17 @@ export default Vue.extend({
return {
hide: true
};
}
},
mounted() {
const audioTag = this.$refs.audio as HTMLAudioElement;
audioTag.volume = this.$store.state.device.mediaVolume;
},
methods: {
volumechange() {
const audioTag = this.$refs.audio as HTMLAudioElement;
this.$store.commit('device/set', { key: 'mediaVolume', value: audioTag.volume });
},
},
})
</script>

View File

@ -5,16 +5,22 @@
<span>{{ $t('click-to-show') }}</span>
</div>
</div>
<a class="gqnyydlzavusgskkfvwvjiattxdzsqlf" v-else :href="image.url" target="_blank" :style="style" :title="image.name" @click.prevent="onClick"></a>
<a class="gqnyydlzavusgskkfvwvjiattxdzsqlf" v-else
:href="image.url"
:style="style"
:title="image.name"
@click.prevent="onClick"
></a>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import ImageViewer from '../../../common/views/components/image-viewer.vue';
import ImageViewer from './image-viewer.vue';
import { getStaticImageUrl } from '../../../common/scripts/get-static-image-url';
export default Vue.extend({
i18n: i18n('mobile/views/components/media-image.vue'),
i18n: i18n('common/views/components/media-image.vue'),
props: {
image: {
type: Object,
@ -31,7 +37,11 @@ export default Vue.extend({
}
computed: {
style(): any {
let url = `url(${this.image.thumbnailUrl})`;
let url = `url(${
this.$store.state.device.disableShowingAnimatedImages
? getStaticImageUrl(this.image.thumbnailUrl)
: this.image.thumbnailUrl
})`;
if (this.$store.state.device.loadRemoteMedia || this.$store.state.device.lightmode) {
url = null;
@ -58,6 +68,7 @@ export default Vue.extend({
<style lang="stylus" scoped>
.gqnyydlzavusgskkfvwvjiattxdzsqlf
display block
cursor zoom-in
overflow hidden
width 100%
height 100%

View File

@ -7,7 +7,7 @@
<div :data-count="mediaList.filter(media => previewable(media)).length" ref="grid">
<template v-for="media in mediaList">
<mk-media-video :video="media" :key="media.id" v-if="media.type.startsWith('video')"/>
<mk-media-image :image="media" :key="media.id" v-else-if="media.type.startsWith('image')" :raw="raw"/>
<x-image :image="media" :key="media.id" v-else-if="media.type.startsWith('image')" :raw="raw"/>
</template>
</div>
</div>
@ -17,10 +17,12 @@
<script lang="ts">
import Vue from 'vue';
import XBanner from './media-banner.vue';
import XImage from './media-image.vue';
export default Vue.extend({
components: {
XBanner
XBanner,
XImage
},
props: {
mediaList: {

View File

@ -34,7 +34,7 @@
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import parse from '../../../../../mfm/parse';
import { parse } from '../../../../../mfm/parse';
import { unique } from '../../../../../prelude/array';
export default Vue.extend({

View File

@ -1,13 +1,13 @@
import Vue, { VNode } from 'vue';
import { length } from 'stringz';
import { MfmForest } from '../../../../../mfm/parser';
import parse from '../../../../../mfm/parse';
import { MfmForest } from '../../../../../mfm/types';
import { parse, parsePlain } from '../../../../../mfm/parse';
import MkUrl from './url.vue';
import MkMention from './mention.vue';
import { concat, sum } from '../../../../../prelude/array';
import MkFormula from './formula.vue';
import MkCode from './code.vue';
import MkGoogle from './google.vue';
import syntaxHighlight from '../../../../../mfm/syntax-highlight';
import { host } from '../../../config';
import { preorderF, countNodesF } from '../../../../../prelude/tree';
@ -46,7 +46,7 @@ export default Vue.component('misskey-flavored-markdown', {
render(createElement) {
if (this.text == null || this.text == '') return;
const ast = parse(this.text, this.plainText);
const ast = (this.plainText ? parsePlain : parse)(this.text);
let bigCount = 0;
let motionCount = 0;
@ -84,7 +84,7 @@ export default Vue.component('misskey-flavored-markdown', {
case 'big': {
bigCount++;
const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
const isLong = sumTextsLength(token.children) > 15 || countNodesF(token.children) > 5;
const isMany = bigCount > 3;
return (createElement as any)('strong', {
attrs: {
@ -98,7 +98,11 @@ export default Vue.component('misskey-flavored-markdown', {
}
case 'small': {
return [createElement('small', genEl(token.children))];
return [createElement('small', {
attrs: {
style: 'opacity: 0.7;'
},
}, genEl(token.children))];
}
case 'center': {
@ -111,8 +115,8 @@ export default Vue.component('misskey-flavored-markdown', {
case 'motion': {
motionCount++;
const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
const isMany = motionCount > 3;
const isLong = sumTextsLength(token.children) > 15 || countNodesF(token.children) > 5;
const isMany = motionCount > 5;
return (createElement as any)('span', {
attrs: {
style: 'display: inline-block;'
@ -124,6 +128,43 @@ export default Vue.component('misskey-flavored-markdown', {
}, genEl(token.children));
}
case 'spin': {
motionCount++;
const isLong = sumTextsLength(token.children) > 10 || countNodesF(token.children) > 5;
const isMany = motionCount > 5;
const direction =
token.node.props.attr == 'left' ? 'reverse' :
token.node.props.attr == 'alternate' ? 'alternate' :
'normal';
const style = (this.$store.state.settings.disableAnimatedMfm || isLong || isMany)
? ''
: `animation: spin 1.5s linear infinite; animation-direction: ${direction};`;
return (createElement as any)('span', {
attrs: {
style: 'display: inline-block;' + style
},
}, genEl(token.children));
}
case 'jump': {
motionCount++;
const isLong = sumTextsLength(token.children) > 30 || countNodesF(token.children) > 5;
const isMany = motionCount > 5;
return (createElement as any)('span', {
attrs: {
style: (this.$store.state.settings.disableAnimatedMfm || isLong || isMany) ? 'display: inline-block;' : 'display: inline-block; animation: jump 0.75s linear infinite;'
},
}, genEl(token.children));
}
case 'flip': {
return (createElement as any)('span', {
attrs: {
style: 'display: inline-block; transform: scaleX(-1);'
},
}, genEl(token.children));
}
case 'url': {
return [createElement(MkUrl, {
key: Math.random(),
@ -170,21 +211,22 @@ export default Vue.component('misskey-flavored-markdown', {
}
case 'blockCode': {
return [createElement('pre', {
class: 'code'
}, [
createElement('code', {
domProps: {
innerHTML: syntaxHighlight(token.node.props.code)
}
})
])];
return [createElement(MkCode, {
key: Math.random(),
props: {
code: token.node.props.code,
lang: token.node.props.lang,
}
})];
}
case 'inlineCode': {
return [createElement('code', {
domProps: {
innerHTML: syntaxHighlight(token.node.props.code)
return [createElement(MkCode, {
key: Math.random(),
props: {
code: token.node.props.code,
lang: token.node.props.lang,
inline: true
}
})];
}
@ -228,12 +270,24 @@ export default Vue.component('misskey-flavored-markdown', {
})];
}
case 'math': {
case 'mathInline': {
//const MkFormula = () => import('./formula.vue').then(m => m.default);
return [createElement(MkFormula, {
key: Math.random(),
props: {
formula: token.node.props.formula
formula: token.node.props.formula,
block: false
}
})];
}
case 'mathBlock': {
//const MkFormula = () => import('./formula.vue').then(m => m.default);
return [createElement(MkFormula, {
key: Math.random(),
props: {
formula: token.node.props.formula,
block: true
}
})];
}

View File

@ -24,34 +24,13 @@ export default Vue.extend({
background var(--mfmTitleBg)
border-radius 4px
>>> .code
margin 8px 0
>>> .quote
margin 8px
padding 6px 0 6px 12px
color var(--mfmQuote)
border-left solid 3px var(--mfmQuoteLine)
>>> code
padding 4px 8px
margin 0 0.5em
>>> pre code
font-size 80%
color #525252
background rgba(0, 0, 0, 0.05)
border-radius 2px
>>> pre > code
padding 16px
margin 0
>>> [data-is-me]:after
content "you"
padding 0 4px
margin-left 4px
font-size 80%
color var(--primaryForeground)
background var(--primary)
border-radius 4px
</style>

View File

@ -10,72 +10,91 @@ import i18n from '../../../i18n';
import { url } from '../../../config';
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
import { concat, intersperse } from '../../../../../prelude/array';
import { faCopy, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('common/views/components/note-menu.vue'),
props: ['note', 'source'],
data() {
return {
isFavorited: false,
isWatching: false
};
},
computed: {
items(): any[] {
return concat(intersperse([null], [
[
[{
icon: 'at',
text: this.$t('mention'),
action: this.mention
}]
],
[
[{
icon: 'info-circle',
text: this.$t('detail'),
action: this.detail
}], [{
icon: 'align-left',
text: this.$t('copy-content'),
action: this.copyContent
}], [{
icon: 'link',
text: this.$t('copy-link'),
action: this.copyLink
}], this.note.uri ? [{
icon: 'external-link-square-alt',
text: this.$t('remote'),
action: () => {
window.open(this.note.uri, '_blank');
}
}] : []
],
[
this.note.isFavorited ? [{
icon: 'star',
text: this.$t('unfavorite'),
action: this.unfavorite
}] : [{
icon: 'star',
text: this.$t('favorite'),
action: this.favorite
}], this.note.userId == this.$store.state.i.id ? [
(this.$store.state.i.pinnedNoteIds || []).includes(this.note.id) ? {
icon: 'thumbtack',
text: this.$t('unpin'),
action: this.unpin
} : {
icon: 'thumbtack',
text: this.$t('pin'),
action: this.pin
}
] : []
], [
this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin || this.$store.state.i.isModerator ? [{
icon: ['far', 'trash-alt'],
text: this.$t('delete'),
action: this.del
}] : []
]
].map(concat).filter(x => x.length > 0)));
return [{
icon: 'at',
text: this.$t('mention'),
action: this.mention
}, null, {
icon: 'info-circle',
text: this.$t('detail'),
action: this.detail
}, {
icon: faCopy,
text: this.$t('copy-content'),
action: this.copyContent
}, {
icon: 'link',
text: this.$t('copy-link'),
action: this.copyLink
}, this.note.uri ? {
icon: 'external-link-square-alt',
text: this.$t('remote'),
action: () => {
window.open(this.note.uri, '_blank');
}
} : undefined,
null,
this.isFavorited ? {
icon: 'star',
text: this.$t('unfavorite'),
action: () => this.toggleFavorite(false)
} : {
icon: 'star',
text: this.$t('favorite'),
action: () => this.toggleFavorite(true)
},
this.note.userId != this.$store.state.i.id ? this.isWatching ? {
icon: faEyeSlash,
text: this.$t('unwatch'),
action: () => this.toggleWatch(false)
} : {
icon: faEye,
text: this.$t('watch'),
action: () => this.toggleWatch(true)
} : undefined,
this.note.userId == this.$store.state.i.id ? (this.$store.state.i.pinnedNoteIds || []).includes(this.note.id) ? {
icon: 'thumbtack',
text: this.$t('unpin'),
action: () => this.togglePin(false)
} : {
icon: 'thumbtack',
text: this.$t('pin'),
action: () => this.togglePin(true)
} : undefined,
...(this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin || this.$store.state.i.isModerator ? [
null, {
icon: ['far', 'trash-alt'],
text: this.$t('delete'),
action: this.del
}]
: []
)]
.filter(x => x !== undefined)
}
},
created() {
this.$root.api('notes/state', {
noteId: this.note.id
}).then(state => {
this.isFavorited = state.isFavorited;
this.isWatching = state.isWatching;
});
},
methods: {
mention() {
this.$post({ mention: this.note.user });
@ -87,14 +106,22 @@ export default Vue.extend({
copyContent() {
copyToClipboard(this.note.text);
this.$root.dialog({
type: 'success',
splash: true
});
},
copyLink() {
copyToClipboard(`${url}/notes/${this.note.id}`);
this.$root.dialog({
type: 'success',
splash: true
});
},
pin() {
this.$root.api('i/pin', {
togglePin(pin: boolean) {
this.$root.api(pin ? 'i/pin' : 'i/unpin', {
noteId: this.note.id
}).then(() => {
this.$root.dialog({
@ -105,14 +132,6 @@ export default Vue.extend({
});
},
unpin() {
this.$root.api('i/unpin', {
noteId: this.note.id
}).then(() => {
this.destroyDom();
});
},
del() {
this.$root.dialog({
type: 'warning',
@ -129,8 +148,8 @@ export default Vue.extend({
});
},
favorite() {
this.$root.api('notes/favorites/create', {
toggleFavorite(favorite: boolean) {
this.$root.api(favorite ? 'notes/favorites/create' : 'notes/favorites/delete', {
noteId: this.note.id
}).then(() => {
this.$root.dialog({
@ -141,8 +160,8 @@ export default Vue.extend({
});
},
unfavorite() {
this.$root.api('notes/favorites/delete', {
toggleWatch(watch: boolean) {
this.$root.api(watch ? 'notes/watching/create' : 'notes/watching/delete', {
noteId: this.note.id
}).then(() => {
this.$root.dialog({

View File

@ -5,7 +5,7 @@
<div class="backdrop" :style="{ 'width': (showResult ? (choice.votes / total * 100) : 0) + '%' }"></div>
<span>
<template v-if="choice.isVoted"><fa icon="check"/></template>
<span>{{ choice.text }}</span>
<mfm :text="choice.text" :should-break="false" :plain-text="true" :custom-emojis="note.emojis"/>
<span class="votes" v-if="showResult">({{ $t('vote-count').replace('{}', choice.votes) }})</span>
</span>
</li>

View File

@ -30,6 +30,7 @@
<ui-textarea v-model="description" :max="500">
<span>{{ $t('description') }}</span>
<span slot="desc">{{ $t('you-can-include-hashtags') }}</span>
</ui-textarea>
<ui-select v-model="lang">
@ -86,6 +87,14 @@
<ui-button @click="updateEmail()">{{ $t('save') }}</ui-button>
</div>
</section>
<section>
<header>{{ $t('export') }}</header>
<div>
<ui-button @click="exportNotes()">{{ $t('export-notes') }}</ui-button>
</div>
</section>
</ui-card>
</template>
@ -251,6 +260,15 @@ export default Vue.extend({
email: this.email == '' ? null : this.email
});
});
},
exportNotes() {
this.$root.api('i/export-notes', {});
this.$root.dialog({
type: 'info',
text: this.$t('export-requested')
});
}
}
});

View File

@ -184,6 +184,12 @@ export default Vue.extend({
}
}
});
this.$on('keydown', (e: KeyboardEvent) => {
if (e.code == 'Enter') {
this.$emit('enter');
}
});
},
methods: {
focus() {

View File

@ -69,6 +69,7 @@ export default Vue.extend({
const data = new FormData();
data.append('i', this.$store.state.i.token);
data.append('force', 'true');
data.append('file', file);
if (folder) data.append('folderId', folder);

View File

@ -9,7 +9,7 @@
</div>
<div v-else class="mk-url-preview">
<a :class="{ mini, compact }" :href="url" target="_blank" :title="url" v-if="!fetching">
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url('${thumbnail}')`"></div>
<article>
<header>
<h1 :title="title">{{ title }}</h1>

View File

@ -8,7 +8,8 @@
import Vue from 'vue';
import i18n from '../../../i18n';
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import { faExclamationCircle, faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
export default Vue.extend({
i18n: i18n('common/views/components/user-menu.vue'),
@ -40,6 +41,18 @@ export default Vue.extend({
action: this.reportAbuse
}];
if (this.$store.getters.isSignedIn && (this.$store.state.i.isAdmin || this.$store.state.i.isModerator)) {
menu = menu.concat([null, {
icon: faMicrophoneSlash,
text: this.user.isSilenced ? this.$t('unsilence') : this.$t('silence'),
action: this.toggleSilence
}, {
icon: faSnowflake,
text: this.user.isSuspended ? this.$t('unsuspend') : this.$t('suspend'),
action: this.toggleSuspend
}]);
}
return {
items: menu
};
@ -148,6 +161,40 @@ export default Vue.extend({
text: e
});
});
},
toggleSilence() {
this.$root.api(this.user.isSilenced ? 'admin/unsilence-user' : 'admin/silence-user', {
userId: this.user.id
}).then(() => {
this.user.isSilenced = !this.user.isSilenced;
this.$root.dialog({
type: 'success',
splash: true
});
}, e => {
this.$root.dialog({
type: 'error',
text: e
});
});
},
toggleSuspend() {
this.$root.api(this.user.isSuspended ? 'admin/unsuspend-user' : 'admin/suspend-user', {
userId: this.user.id
}).then(() => {
this.user.isSuspended = !this.user.isSuspended;
this.$root.dialog({
type: 'success',
splash: true
});
}, e => {
this.$root.dialog({
type: 'error',
text: e
});
});
}
}
});

View File

@ -5,9 +5,9 @@
<p :class="$style.fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
<div :class="$style.stream" v-if="!fetching && images.length > 0">
<div v-for="image in images"
<div v-for="(image, i) in images" :key="i"
:class="$style.img"
:style="`background-image: url(${image.thumbnailUrl || image.url})`"
:style="`background-image: url(${thumbnail(image)})`"
draggable="true"
@dragstart="onDragstart(image, $event)"
></div>
@ -20,6 +20,7 @@
<script lang="ts">
import define from '../../../common/define-widget';
import i18n from '../../../i18n';
import { getStaticImageUrl } from '../../scripts/get-static-image-url';
export default define({
name: 'photo-stream',
@ -77,6 +78,12 @@ export default define({
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('mk_drive_file', JSON.stringify(file));
},
thumbnail(image: any): string {
return this.$store.state.device.disableShowingAnimatedImages
? getStaticImageUrl(image.thumbnailUrl)
: image.thumbnailUrl;
},
}
});
</script>

View File

@ -1,5 +1,4 @@
declare const _LANGS_: string[];
declare const _THEME_COLOR_: string;
declare const _COPYRIGHT_: string;
declare const _VERSION_: string;
declare const _CLIENT_VERSION_: string;
@ -13,7 +12,7 @@ export const hostname = address.hostname;
export const url = address.origin;
export const apiUrl = url + '/api';
export const wsUrl = url.replace('http://', 'ws://').replace('https://', 'wss://') + '/streaming';
export const lang = window.lang;
export const lang = localStorage.getItem('lang');
export const langs = _LANGS_;
export const locale = JSON.parse(localStorage.getItem('locale'));
export const copyright = _COPYRIGHT_;

View File

@ -1,21 +1,23 @@
<template>
<mk-window ref="window" is-modal width="800px" height="500px" @closed="destroyDom">
<span slot="header">
<span :class="$style.title">{{ $t('choose-prompt') }}</span>
<span :class="$style.count" v-if="multiple && files.length > 0">({{ $t('chosen-files', { count: files.length }) }})</span>
<span slot="header" class="jqiaciqv">
<span class="title">{{ $t('choose-prompt') }}</span>
<span class="count" v-if="multiple && files.length > 0">({{ $t('chosen-files', { count: files.length }) }})</span>
</span>
<x-drive
ref="browser"
:class="$style.browser"
:multiple="multiple"
@selected="onSelected"
@change-selection="onChangeSelection"
/>
<div :class="$style.footer">
<button :class="$style.upload" :title="$t('title')" @click="upload"><fa icon="upload"/></button>
<button :class="$style.cancel" @click="cancel">{{ $t('cancel') }}</button>
<button :class="$style.ok" :disabled="multiple && files.length == 0" @click="ok">{{ $t('ok') }}</button>
<div class="rqsvbumu">
<x-drive
ref="browser"
class="browser"
:multiple="multiple"
@selected="onSelected"
@change-selection="onChangeSelection"
/>
<div class="footer">
<button class="upload" :title="$t('title')" @click="upload"><fa icon="upload"/></button>
<ui-button inline @click="cancel" style="margin-right:16px;">{{ $t('cancel') }}</ui-button>
<ui-button inline primary :disabled="multiple && files.length == 0" @click="ok">{{ $t('ok') }}</ui-button>
</div>
</div>
</mk-window>
</template>
@ -60,120 +62,67 @@ export default Vue.extend({
});
</script>
<style lang="stylus" module>
.title
> [data-icon]
margin-right 4px
<style lang="stylus" scoped>
.jqiaciqv
.title
> [data-icon]
margin-right 4px
.count
margin-left 8px
opacity 0.7
.browser
height calc(100% - 72px)
.footer
height 72px
background var(--primaryLighten95)
.upload
display inline-block
position absolute
top 8px
left 16px
cursor pointer
padding 0
margin 8px 4px 0 0
width 40px
height 40px
font-size 1em
color var(--primaryAlpha05)
background transparent
outline none
border solid 1px transparent
border-radius 4px
&:hover
background transparent
border-color var(--primaryAlpha03)
&:active
color var(--primaryAlpha06)
background transparent
border-color var(--primaryAlpha05)
//box-shadow 0 2px 4px rgba(var(--primaryDarken50), 0.15) inset
&:focus
&:after
content ""
pointer-events none
position absolute
top -5px
right -5px
bottom -5px
left -5px
border 2px solid var(--primaryAlpha03)
border-radius 8px
.ok
.cancel
display block
position absolute
bottom 16px
cursor pointer
padding 0
margin 0
width 120px
height 40px
font-size 1em
outline none
border-radius 4px
&:focus
&:after
content ""
pointer-events none
position absolute
top -5px
right -5px
bottom -5px
left -5px
border 2px solid var(--primaryAlpha03)
border-radius 8px
&:disabled
.count
margin-left 8px
opacity 0.7
cursor default
.ok
right 16px
color var(--primaryForeground)
background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%)
border solid 1px var(--primaryLighten15)
.rqsvbumu
display flex
flex-direction column
height 100%
&:not(:disabled)
font-weight bold
.browser
flex 1
overflow auto
&:hover:not(:disabled)
background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%)
border-color var(--primary)
.footer
padding 16px
background var(--desktopPostFormBg)
text-align right
&:active:not(:disabled)
background var(--primary)
border-color var(--primary)
.upload
display inline-block
position absolute
top 8px
left 16px
cursor pointer
padding 0
margin 8px 4px 0 0
width 40px
height 40px
font-size 1em
color var(--primaryAlpha05)
background transparent
outline none
border solid 1px transparent
border-radius 4px
.cancel
right 148px
color #888
background linear-gradient(to bottom, #ffffff 0%, #f5f5f5 100%)
border solid 1px #e2e2e2
&:hover
background transparent
border-color var(--primaryAlpha03)
&:hover
background linear-gradient(to bottom, #f9f9f9 0%, #ececec 100%)
border-color #dcdcdc
&:active
color var(--primaryAlpha06)
background transparent
border-color var(--primaryAlpha05)
//box-shadow 0 2px 4px rgba(var(--primaryDarken50), 0.15) inset
&:active
background #ececec
border-color #dcdcdc
&:focus
&:after
content ""
pointer-events none
position absolute
top -5px
right -5px
bottom -5px
left -5px
border 2px solid var(--primaryAlpha03)
border-radius 8px
</style>

View File

@ -1,17 +1,19 @@
<template>
<mk-window ref="window" is-modal width="800px" height="500px" @closed="destroyDom">
<span slot="header">
<span :class="$style.title">{{ $t('choose-prompt') }}</span>
<span>{{ $t('choose-prompt') }}</span>
</span>
<x-drive
ref="browser"
:class="$style.browser"
:multiple="false"
/>
<div :class="$style.footer">
<button :class="$style.cancel" @click="cancel">{{ $t('cancel') }}</button>
<button :class="$style.ok" @click="ok">{{ $t('ok') }}</button>
<div class="hllkpxxu">
<x-drive
ref="browser"
class="browser"
:multiple="false"
/>
<div class="footer">
<ui-button inline @click="cancel" style="margin-right:16px;">{{ $t('cancel') }}</ui-button>
<ui-button inline @click="ok" primary>{{ $t('ok') }}</ui-button>
</div>
</div>
</mk-window>
</template>
@ -36,79 +38,19 @@ export default Vue.extend({
});
</script>
<style lang="stylus" module>
<style lang="stylus" scoped>
.hllkpxxu
display flex
flex-direction column
height 100%
.browser
flex 1
overflow auto
.title
> [data-icon]
margin-right 4px
.browser
height calc(100% - 72px)
.footer
height 72px
background var(--primaryLighten95)
.ok
.cancel
display block
position absolute
bottom 16px
cursor pointer
padding 0
margin 0
width 120px
height 40px
font-size 1em
outline none
border-radius 4px
&:focus
&:after
content ""
pointer-events none
position absolute
top -5px
right -5px
bottom -5px
left -5px
border 2px solid var(--primaryAlpha03)
border-radius 8px
&:disabled
opacity 0.7
cursor default
.ok
right 16px
color var(--primaryForeground)
background linear-gradient(to bottom, var(--primaryLighten25) 0%, var(--primaryLighten10) 100%)
border solid 1px var(--primaryLighten15)
&:not(:disabled)
font-weight bold
&:hover:not(:disabled)
background linear-gradient(to bottom, var(--primaryLighten8) 0%, var(--primaryDarken8) 100%)
border-color var(--primary)
&:active:not(:disabled)
background var(--primary)
border-color var(--primary)
.cancel
right 148px
color #888
background linear-gradient(to bottom, #ffffff 0%, #f5f5f5 100%)
border solid 1px #e2e2e2
&:hover
background linear-gradient(to bottom, #f9f9f9 0%, #ececec 100%)
border-color #dcdcdc
&:active
background #ececec
border-color #dcdcdc
.footer
padding 16px
background var(--desktopPostFormBg)
text-align right
</style>

View File

@ -30,13 +30,13 @@
<x-folder v-for="folder in folders" :key="folder.id" class="folder" :folder="folder"/>
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
<div class="padding" v-for="n in 16"></div>
<button v-if="moreFolders">{{ $t('@.load-more') }}</button>
<ui-button v-if="moreFolders">{{ $t('@.load-more') }}</ui-button>
</div>
<div class="files" ref="filesContainer" v-if="files.length > 0">
<x-file v-for="file in files" :key="file.id" class="file" :file="file"/>
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
<div class="padding" v-for="n in 16"></div>
<button v-if="moreFiles" @click="fetchMoreFiles">{{ $t('@.load-more') }}</button>
<ui-button v-if="moreFiles" @click="fetchMoreFiles">{{ $t('@.load-more') }}</ui-button>
</div>
<div class="empty" v-if="files.length == 0 && folders.length == 0 && !fetching">
<p v-if="draghover">{{ $t('empty-draghover') }}</p>
@ -66,6 +66,7 @@ import XFolder from './drive.folder.vue';
import XFile from './drive.file.vue';
import contains from '../../../common/scripts/contains';
import { url } from '../../../config';
import { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons';
export default Vue.extend({
i18n: i18n('desktop/views/components/drive.vue'),
@ -149,7 +150,7 @@ export default Vue.extend({
}, {
type: 'item',
text: this.$t('contextmenu.url-upload'),
icon: 'cloud-upload-alt',
icon: faCloudUploadAlt,
action: this.urlUpload
}]);
},

View File

@ -9,7 +9,6 @@ import subNoteContent from './sub-note-content.vue';
import window from './window.vue';
import noteFormWindow from './post-form-window.vue';
import renoteFormWindow from './renote-form-window.vue';
import mediaImage from './media-image.vue';
import mediaVideo from './media-video.vue';
import notifications from './notifications.vue';
import noteForm from './post-form.vue';
@ -32,7 +31,6 @@ Vue.component('mk-sub-note-content', subNoteContent);
Vue.component('mk-window', window);
Vue.component('mk-post-form-window', noteFormWindow);
Vue.component('mk-renote-form-window', renoteFormWindow);
Vue.component('mk-media-image', mediaImage);
Vue.component('mk-media-video', mediaVideo);
Vue.component('mk-notifications', notifications);
Vue.component('mk-post-form', noteForm);

View File

@ -1,81 +0,0 @@
<template>
<div class="ldwbgwstjsdgcjruamauqdrffetqudry" v-if="image.isSensitive && hide && !$store.state.device.alwaysShowNsfw" @click="hide = false">
<div>
<b><fa icon="exclamation-triangle"/> {{ $t('sensitive') }}</b>
<span>{{ $t('click-to-show') }}</span>
</div>
</div>
<a class="lcjomzwbohoelkxsnuqjiaccdbdfiazy" v-else
:href="image.url"
@click.prevent="onClick"
:style="style"
:title="image.name"
></a>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import ImageViewer from '../../../common/views/components/image-viewer.vue';
export default Vue.extend({
i18n: i18n('desktop/views/components/media-image.vue'),
props: {
image: {
type: Object,
required: true
},
raw: {
default: false
}
},
data() {
return {
hide: true
};
},
computed: {
style(): any {
return {
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.thumbnailUrl})`
};
}
},
methods: {
onClick() {
this.$root.new(ImageViewer, {
image: this.image
});
}
}
});
</script>
<style lang="stylus" scoped>
.lcjomzwbohoelkxsnuqjiaccdbdfiazy
display block
cursor zoom-in
overflow hidden
width 100%
height 100%
background-position center
background-size contain
background-repeat no-repeat
.ldwbgwstjsdgcjruamauqdrffetqudry
display flex
justify-content center
align-items center
background #111
color #fff
> div
display table-cell
text-align center
font-size 12px
> *
display block
</style>

View File

@ -1,7 +1,7 @@
<template>
<div class="mk-media-video-dialog">
<div class="bg" @click="close"></div>
<video :src="video.url" :title="video.name" controls autoplay ref="video"/>
<video :src="video.url" :title="video.name" controls autoplay ref="video" @volumechange="volumechange"/>
</div>
</template>
@ -18,8 +18,9 @@ export default Vue.extend({
duration: 100,
easing: 'linear'
});
const videoTag = this.$refs.video as HTMLVideoElement
const videoTag = this.$refs.video as HTMLVideoElement;
if (this.start) videoTag.currentTime = this.start
videoTag.volume = this.$store.state.device.mediaVolume;
},
methods: {
close() {
@ -30,7 +31,11 @@ export default Vue.extend({
easing: 'linear',
complete: () => this.destroyDom()
});
}
},
volumechange() {
const videoTag = this.$refs.video as HTMLVideoElement;
this.$store.commit('device/set', { key: 'mediaVolume', value: videoTag.volume });
},
}
});
</script>

View File

@ -41,7 +41,7 @@ export default Vue.extend({
computed: {
imageStyle(): any {
return {
'background-image': null // TODO `url(${this.video.thumbnailUrl})`
'background-image': `url(${this.video.thumbnailUrl})`
};
}
},

View File

@ -49,6 +49,7 @@ export default Vue.extend({
<style lang="stylus" scoped>
.qiziqtywpuaucsgarwajitwaakggnisj
display flex
overflow hidden
font-size 0.9em
> .avatar

View File

@ -144,11 +144,12 @@ export default Vue.extend({
.note
margin 0
padding 0
overflow hidden
background var(--face)
border-bottom solid var(--lineWidth) var(--faceDivider)
&.mini
font-size 13px
font-size 14px
> .renote
padding 8px 16px 0 16px

View File

@ -68,7 +68,7 @@ import insertTextAtCursor from 'insert-text-at-cursor';
import * as XDraggable from 'vuedraggable';
import getFace from '../../../common/scripts/get-face';
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
import parse from '../../../../../mfm/parse';
import { parse } from '../../../../../mfm/parse';
import { host } from '../../../config';
import { erase, unique } from '../../../../../prelude/array';
import { length } from 'stringz';
@ -222,6 +222,12 @@ export default Vue.extend({
});
}
// keep cw when reply
if (this.$store.state.settings.keepCw && this.reply && this.reply.cw) {
this.useCw = true;
this.cw = this.reply.cw;
}
this.$nextTick(() => {
// 書きかけの投稿を復元
if (!this.instant && !this.mention) {

View File

@ -31,7 +31,12 @@
<ui-switch v-model="autoPopout">{{ $t('auto-popout') }}
<span slot="desc">{{ $t('auto-popout-desc') }}</span>
</ui-switch>
<ui-switch v-model="deckNav">{{ $t('deck-nav') }}<span slot="desc">{{ $t('deck-nav-desc') }}</span></ui-switch>
<ui-switch v-model="deckNav">{{ $t('deck-nav') }}
<span slot="desc">{{ $t('deck-nav-desc') }}</span>
</ui-switch>
<ui-switch v-model="keepCw">{{ $t('keep-cw') }}
<span slot="desc">{{ $t('keep-cw-desc') }}</span>
</ui-switch>
</section>
<section>
@ -112,6 +117,7 @@
<ui-switch v-model="showReplyTarget">{{ $t('show-reply-target') }}</ui-switch>
<ui-switch v-model="showMaps">{{ $t('show-maps') }}</ui-switch>
<ui-switch v-model="disableAnimatedMfm">{{ $t('@.disable-animated-mfm') }}</ui-switch>
<ui-switch v-model="disableShowingAnimatedImages">{{ $t('@.disable-showing-animated-images') }}</ui-switch>
<ui-switch v-model="remainDeletedNote">{{ $t('remain-deleted-note') }}</ui-switch>
</section>
<section>
@ -336,6 +342,11 @@ export default Vue.extend({
set(value) { this.$store.commit('settings/set', { key: 'deckNav', value }); }
},
keepCw: {
get() { return this.$store.state.settings.keepCw; },
set(value) { this.$store.commit('settings/set', { key: 'keepCw', value }); }
},
darkmode: {
get() { return this.$store.state.device.darkmode; },
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
@ -506,6 +517,11 @@ export default Vue.extend({
set(value) { this.$store.dispatch('settings/set', { key: 'disableAnimatedMfm', value }); }
},
disableShowingAnimatedImages: {
get() { return this.$store.state.device.disableShowingAnimatedImages; },
set(value) { this.$store.commit('device/set', { key: 'disableShowingAnimatedImages', value }); }
},
remainDeletedNote: {
get() { return this.$store.state.settings.remainDeletedNote; },
set(value) { this.$store.dispatch('settings/set', { key: 'remainDeletedNote', value }); }

View File

@ -15,7 +15,7 @@
import Vue from 'vue';
import XColumn from './deck.column.vue';
import XHashtagTl from './deck.hashtag-tl.vue';
import * as ApexCharts from 'apexcharts';
import ApexCharts from 'apexcharts';
export default Vue.extend({
components: {

View File

@ -99,7 +99,7 @@ import XNotes from './deck.notes.vue';
import XNote from '../../components/note.vue';
import XUserMenu from '../../../../common/views/components/user-menu.vue';
import { concat } from '../../../../../../prelude/array';
import * as ApexCharts from 'apexcharts';
import ApexCharts from 'apexcharts';
const fetchLimit = 10;

View File

@ -3,8 +3,8 @@
<p class="title"><fa icon="camera"/>{{ $t('title') }}</p>
<p class="initializing" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('loading') }}<mk-ellipsis/></p>
<div class="stream" v-if="!fetching && images.length > 0">
<div v-for="image in images" class="img"
:style="`background-image: url(${image.thumbnailUrl})`"
<div v-for="(image, i) in images" :key="i" class="img"
:style="`background-image: url(${thumbnail(image)})`"
></div>
</div>
<p class="empty" v-if="!fetching && images.length == 0">{{ $t('no-photos') }}</p>
@ -14,6 +14,8 @@
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../../i18n';
import { getStaticImageUrl } from '../../../../common/scripts/get-static-image-url';
export default Vue.extend({
i18n: i18n('desktop/views/pages/user/user.photos.vue'),
props: ['user'],
@ -44,7 +46,14 @@ export default Vue.extend({
}
this.fetching = false;
});
}
},
methods: {
thumbnail(image: any): string {
return this.$store.state.device.disableShowingAnimatedImages
? getStaticImageUrl(image.thumbnailUrl)
: image.thumbnailUrl;
},
},
});
</script>

View File

@ -12,7 +12,7 @@
<div class="side">
<div class="instance" v-if="!$store.getters.isSignedIn"><mk-instance/></div>
<x-profile :user="user"/>
<x-integrations :user="user" v-if="!user.host"/>
<x-integrations :user="user"/>
<mk-calendar @chosen="warp" :start="new Date(user.createdAt)"/>
<mk-activity :user="user"/>
<x-photos :user="user"/>

View File

@ -179,6 +179,7 @@ export default define({
this.$root.api('notes/create', {
text: this.text == '' ? undefined : this.text,
fileIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
visibility: this.$store.state.settings.defaultNoteVisibility
}).then(data => {
this.clear();
}).catch(err => {

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