Compare commits

..

165 Commits

Author SHA1 Message Date
baa49271df 12.38.1 2020-05-24 18:15:56 +09:00
e2cbe70966 New Crowdin translations (#6379)
* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Uyghur)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (French)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Uyghur)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

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

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

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

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

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

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

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Arabic)

* New translations ja-JP.yml (French)

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

* New translations ja-JP.yml (French)

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

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

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

* New translations ja-JP.yml (Kannada)

* New translations ja-JP.yml (English)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2020-05-24 18:15:00 +09:00
6a98301cc9 chore(deps): Update dependencies 🚀 2020-05-24 17:48:24 +09:00
81f1df7472 Resolve #6405 (#6406) 2020-05-24 13:53:31 +09:00
abc296cdcc refactor: use Object.fromEntries() instead of in-house implementation (#6401)
* refactor: use Object.fromEntries()
instead of in-house implementation

* Remove extra type assertions
2020-05-23 23:21:09 +09:00
4df5ec82ce Drop support for Node v11, v13 (#6402) 2020-05-23 23:19:16 +09:00
3963ed8ff7 feat(client): 翻訳をIndexedDBに保存・プッシュ通知を翻訳 (#6396)
* wip

* tabun ok

* better msg

* oops

* fix lint

* Update gulpfile.ts

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* Update src/client/scripts/set-i18n-contexts.ts

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* refactor

Co-authored-by: acid-chicken <root@acid-chicken.com>

* 

* wip

* fix lint

* たぶんおk

* fix flush

* Translate Notification

* remove console.log

* fix

* add notifications

* remove san

* wip

* ok

* ✌️

* Update src/prelude/array.ts

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* wip

* i18n refactor

* Update init.ts

* ✌️

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2020-05-23 13:19:31 +09:00
11141c878c fix(i18n): Fix missing translation 2020-05-20 11:16:10 +09:00
b1a2046a7f Update CHANGELOG.md 2020-05-18 14:26:55 +09:00
e44322c9bf Update CHANGELOG.md 2020-05-18 14:25:36 +09:00
2e6462bf1b Update CHANGELOG.md 2020-05-18 14:21:07 +09:00
667d9c2be3 12.38.0 2020-05-17 14:50:33 +09:00
34a86229db chore(deps): Update dependencies 🚀 2020-05-17 14:50:00 +09:00
7dd8dbeb5b feat(client): 💴 2020-05-17 14:43:25 +09:00
b5fb98f01a New Crowdin translations (#6342)
* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)
2020-05-17 14:02:10 +09:00
DW
f6cfa5cbb4 Fix CASCADE-related problems (#6374)
* Fix renotes remaining on remote when CASCADE is invoked

* Fix CASCADE-invoked deletion not being federated to relays

Co-authored-by: DW <chocological00@gitlab.com>
2020-05-17 00:49:46 +09:00
c1b95838f6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-05-16 23:51:32 +09:00
6cee608c91 chore(locale): Add doll-ai translation 2020-05-16 23:51:28 +09:00
d979fb6dc0 Add Ai3Dstatic model for Room. (#6350)
* Add Ai3Dstatic model for Room.

* Update src/client/scripts/room/furnitures.json5

Co-authored-by: rinsuki <428rinsuki+git@gmail.com>

* Update src/client/scripts/room/furnitures.json5

Co-authored-by: rinsuki <428rinsuki+git@gmail.com>

* doll-Aiの大文字を小文字へ変更

* Update furnitures.json5

* マテリアルをBackgroundからPrincipled BSDFに変更

* a

* なんかファイルが二重にでてくるので削除

* テクスチャーファイルと3Dデータを再コミット

* Remove noodle

* Update doll-ai.glb

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Co-authored-by: rinsuki <428rinsuki+git@gmail.com>
2020-05-16 23:50:25 +09:00
ca2a33edc9 fix(client): Use router-link instead of a to avoid page refresh 2020-05-16 22:08:21 +09:00
DW
ea80d5eac2 Local only indicator (#6291)
* Add Local only & public indicator

* Add local only & public indicator on renotes


remove visibility conditional

* Cleaner Style

* ✌️

* Update note-header.vue

* Update note.vue

Co-authored-by: DW <chocological00@gitlab.com>
Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2020-05-16 22:06:39 +09:00
51cf0970b3 feat(client): ローカルのみボタンを公開範囲ボタンの横に移動 2020-05-16 21:50:16 +09:00
DW
9c8eb93446 Only show ellipsis if the button's interactable (#6373)
* Add an indicator to make the undo renote button look more interactable

* Use faEllipsisH :art

* Only show elipsis if it's interactable

* Update note.vue

Co-authored-by: DW <chocological00@gitlab.com>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2020-05-16 12:15:59 +09:00
3ac3a45aa5 nyaizeが適用されるとMFMのオプションが失われるのを修正 Fix #6370 (#6371) 2020-05-16 08:40:17 +09:00
36fcc0d5f6 Cache extra AP objects (#6349)
* Cache extra AP objects

* Cache nodeinfo
2020-05-15 21:37:09 +09:00
6667b86650 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-05-15 20:53:29 +09:00
9244efe351 fix(client): Mk:api関数にトークンを渡せない問題 2020-05-15 20:53:24 +09:00
538ca2a7c7 リレーに不正なURLは追加できないように (#6351)
* リレーに不正なURLは追加できないように

* lint
2020-05-15 20:51:16 +09:00
c5dd9439d5 Apply blocked instance to LD-Signature host (#6355) 2020-05-15 20:50:28 +09:00
2170c27b62 リレーのHTTP-Signatureは投稿者の鍵でするように (#6357) 2020-05-15 20:50:04 +09:00
61582a0a33 Supports Unicode 13.0 emoji (#6365)
* Supports Unicode 13.0 emoji

* fix
2020-05-15 20:49:01 +09:00
DW
65efe1f42c Add an indicator to make the undo renote button look more interactable (#6366)
* Add an indicator to make the undo renote button look more interactable

* Use faEllipsisH :art

Co-authored-by: DW <chocological00@gitlab.com>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2020-05-15 20:39:11 +09:00
b2d3d43c97 reCAPTCHAが動かなくなっているのを修正 (#6367) 2020-05-15 20:37:05 +09:00
4ce330c59e refactor(client): Add note 2020-05-11 22:43:50 +09:00
4ea60d36e5 12.37.0 2020-05-10 19:31:23 +09:00
95111ef8a1 New Crowdin translations (#6312)
* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (French)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

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

* New translations ja-JP.yml (English)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

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

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

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

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

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

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

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

* New translations ja-JP.yml (German)
2020-05-10 19:22:33 +09:00
145389768d pub-relay (#6341)
* pub-relay

* relay actorをApplicationにする

* Disable koa-compress

* Homeはリレーに送らない

* Disable debug

* UI

* cleanupなど
2020-05-10 18:42:31 +09:00
be183206e6 fix(server): Remove koa-compress 2020-05-10 17:41:16 +09:00
8b853b7970 fix(client): Fix reply style 2020-05-10 17:37:11 +09:00
5450b78f71 chore(lint): Add missing semicolon 2020-05-10 17:34:22 +09:00
a3283c71ef chore(lint): Add missing semicolons 2020-05-10 17:25:16 +09:00
7231f5ff0b chore(client): 🎨 2020-05-10 17:19:53 +09:00
38a68ea946 fix(client): Fix poll vote notification
Fix #5998
2020-05-10 17:19:41 +09:00
bf9486edc2 refactor(client): Use unique class name 2020-05-10 17:12:19 +09:00
aadfafaef9 fix(client): Fix style of poll viewer 2020-05-10 17:06:53 +09:00
c102978dd5 refactor(client): Use unique class name 2020-05-10 17:06:20 +09:00
9784ade84f fix(client): Do not expand each notes in my/messages 2020-05-10 16:52:05 +09:00
677f06961a fix(client): Do not expand each notes in my/mentions
Related #6336
2020-05-10 16:51:11 +09:00
57c3ea3dbe chore(lint): Add missing semicolon 2020-05-10 16:31:00 +09:00
c01210d4fe chore(lint): Add semicolon rule 2020-05-10 16:30:33 +09:00
64bbfed432 feat(client): Implement threaded replies
Resolve #2113
Resolve #5819
2020-05-10 16:22:39 +09:00
a482d9b078 refactor(client): Clean up component 2020-05-10 16:05:01 +09:00
08456dbb89 refactor(client): Use === 2020-05-10 15:36:42 +09:00
ea662b5c49 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-05-10 15:20:25 +09:00
58a8fff895 refactor(server): Improve readability 2020-05-10 15:20:21 +09:00
bb302a90a6 Fix #6337 (#6338) 2020-05-10 08:10:41 +09:00
99e34e9ee2 Fix inbox bug (#6334) 2020-05-09 17:08:54 +09:00
f1417c6bb1 chore(lint): Update rule 2020-05-09 16:19:09 +09:00
729db347a2 refactor(client): Remove deprecated property 2020-05-09 16:05:31 +09:00
f2465ca11f fix(client): Fix bug that cannot set custom texture 2020-05-09 15:55:00 +09:00
0294061c00 feat(client): Reimplement Misskey Rooms 2020-05-09 15:47:20 +09:00
71e5892308 refactor(client): Use getters to avoid watch vuex 2020-05-09 15:22:50 +09:00
a1597047b4 chore: Update deps 🚀 2020-05-09 08:44:45 +09:00
d6a8889d84 Receive Flag (#6331) 2020-05-09 08:25:23 +09:00
070f1f3c6e APリファクタとLD-Signatureの検証に対応 (#6300)
* DbResolver

* inbox types

* 認証順を変更

* User/Keyあたりをまとめる

* LD-Signatue

* Validate contexts url

* LD-Signature DocumentLoaderにProxyとTimeout
2020-05-09 08:21:42 +09:00
234294d564 WebAuthnでログインできないのを修正 (#6327)
Resolve #6319
2020-05-09 08:20:22 +09:00
d1be8b43f6 brotli圧縮の無効化など Resolve #6325 (#6326)
* disable brotli

* disable compress between nginx and app
2020-05-09 08:18:21 +09:00
0ed94ee52e chore: Use actions/checkout@v2 (#6328) 2020-05-08 17:46:58 +09:00
f07564a452 docker buildでyarn.lockを考慮してなかったのを修正 (#6330) 2020-05-08 17:45:59 +09:00
37419886a1 Merge pull request #6316 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-08 06:42:00 +09:00
b9f0a9ed88 Update README.md [AUTOGEN] 2020-05-08 03:00:08 +09:00
d0f68bb5d1 chore: Use node 14.2 2020-05-07 08:45:52 +09:00
11a350a114 chore: Update typescript to 3.9 2020-05-07 08:45:41 +09:00
778ac79c44 Fix using Buffer on window scope (#6324)
* Update 2fa.vue

* Import 'core-js/es/typed-array/from'

* Bye polyfill
2020-05-06 18:59:58 +09:00
766c00c305 fix(client): Add missing icon 2020-05-06 14:46:45 +09:00
97cdfa662e fix(client): Fix default reaction setting 2020-05-06 14:43:25 +09:00
4a08d5295e feat(client): Make possible to customize sidebar
Resolve #6285
2020-05-06 11:41:44 +09:00
b77788b947 refactor(client): Reorder property 2020-05-06 09:40:49 +09:00
729116c9e5 refactor(client): Export default reaction setting and use it 2020-05-06 09:40:07 +09:00
d57d55a226 chore: Update deps 🚀 2020-05-06 08:17:38 +09:00
4cccdb8a98 Merge pull request #6303 from syuilo/features/hcaptcha
Add support for hCaptcha
2020-05-05 10:22:49 +09:00
54045f95ca chore: Update dependencies 🚀 2020-05-04 12:56:02 +09:00
ee6c7cbc59 Merge pull request #6314 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-02 14:28:48 +09:00
00508dc778 Update README.md [AUTOGEN] 2020-05-02 13:00:09 +09:00
a3ff1bfda7 Update hcaptcha.d.ts 2020-05-02 10:51:12 +09:00
f57888eb4b Update src/@types/hcaptcha.d.ts 2020-05-02 10:50:29 +09:00
b2c703c173 Update src/server/api/private/signup.ts 2020-05-02 10:31:37 +09:00
9053b9635e refactor 2020-05-02 10:28:45 +09:00
b5e87a46b0 アップロードプログレスバーが動かないのを修正 Fix #6306 (#6307) 2020-05-02 10:00:43 +09:00
ddbdb94ba6 Merge pull request #6311 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-02 06:51:18 +09:00
304e3d58ea Update README.md [AUTOGEN] 2020-05-02 06:00:13 +09:00
ca6a70e555 Update signup.vue 2020-04-29 09:54:21 +09:00
9a611b24f3 Fix bug 2020-04-29 09:35:37 +09:00
77adf26236 Factorize *captcha component 2020-04-29 09:15:18 +09:00
805472482e Refactor code 2020-04-29 06:09:17 +09:00
01411327b8 Add *captcha settings guide 2020-04-29 06:04:05 +09:00
9daa900793 Refactor codes 2020-04-29 05:30:58 +09:00
b862c055ae Fix bug 2020-04-28 14:55:12 +09:00
7860839220 Add support for hCaptcha 2020-04-28 14:29:33 +09:00
e17e8bbb6f Merge pull request #6302 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-28 10:52:48 +09:00
136d0683b0 Update README.md [AUTOGEN] 2020-04-28 10:49:08 +09:00
0eded8f5a9 Update mfm.ts
Fix typo
2020-04-26 14:58:36 +09:00
f62eb0fee9 Update mfm.ts
Fix missed file name change
2020-04-26 14:55:04 +09:00
077bf11e45 Update CHANGELOG.md 2020-04-26 14:51:12 +09:00
ebdbd6a84a enhance(server): Resolve #6286 2020-04-26 11:54:51 +09:00
69975c2fdd chore: Use kebab-case for file names 2020-04-26 11:48:09 +09:00
9aac6a65c6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-04-26 11:46:58 +09:00
7d7c206f24 fix(server): Fix #6284 2020-04-26 11:46:47 +09:00
15690d853c New translations ja-JP.yml (German) (#6299) 2020-04-26 11:40:08 +09:00
14ddca3875 feat(server): Improve boot process 2020-04-26 11:39:15 +09:00
a8b4df6eae feat(server): Log postgresql version when boot 2020-04-26 11:24:31 +09:00
0683fa6b97 chore(server): Add TODO 2020-04-26 11:19:57 +09:00
808c680184 chore(docker): Use node 14 2020-04-26 11:15:53 +09:00
2bb0a61a89 chore(docker): Use postgresql 12 2020-04-26 11:13:02 +09:00
dfa129febf New translations ja-JP.yml (French) (#6295) 2020-04-26 10:36:45 +09:00
3b49d233f8 nginxサンプルでTLSv1.2以外をdropなど (#6298) 2020-04-26 10:36:25 +09:00
f08d7df419 Update dependencies 🚀 (#6297)
* chore: Update dependencies 🚀

Make everything is up-to-date

* chore: Update dependencies 🚀

Good Bye, core-js@2 !

* packaging

* Fix test

* fix build

* fix test

* use default reporter

* fix mocha is keep running after test

* Revert back is-promise 

https://github.com/then/is-promise/issues/12

* Refresh
2020-04-26 10:35:47 +09:00
cd94d79cbb Supports Node v14 (#6294)
* Add Node v13, v14 CI

* pg v8.0.3
2020-04-24 23:48:50 +09:00
2314133112 12.36.1 2020-04-23 18:25:51 +09:00
06a47a7bd3 New translations ja-JP.yml (Chinese Simplified) (#6292) 2020-04-23 18:24:50 +09:00
05a785ebd0 chore: Update dep 2020-04-23 18:23:54 +09:00
2ee5835186 fix(client): Fix a bug that if block of pages not working 2020-04-23 08:57:10 +09:00
19e1abe110 12.36.0 2020-04-22 21:43:54 +09:00
d19441f3ae fix(client): Fix lint 2020-04-22 19:51:09 +09:00
6e3ee05cb6 refactor(client): 2020-04-22 19:36:28 +09:00
51476ad06f New Crowdin translations (#6281)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)
2020-04-22 10:10:43 +09:00
1f998168e2 feat(client): Implement default upload folder setting
Resolve #5985
2020-04-22 00:34:56 +09:00
e72011f1da chore: Update deps 2020-04-22 00:08:29 +09:00
0df3e22e51 Fix #6289 2020-04-21 20:26:54 +09:00
5a9530ccd4 Fix #6229 2020-04-21 20:16:37 +09:00
0a4d119d86 fix(lint): Use const 2020-04-20 21:36:58 +09:00
2ee0e07bb6 refactor(client): 2020-04-20 21:35:27 +09:00
533c9a4fe1 Merge pull request #6282 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-20 01:02:14 +09:00
30c000116f Update README.md [AUTOGEN] 2020-04-19 20:51:06 +09:00
dc649fe420 12.35.2 2020-04-19 18:43:24 +09:00
4a8ec173ae Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-04-19 18:41:16 +09:00
26d6fe9a4e chore: Update dep 2020-04-19 18:41:02 +09:00
46f5175a0d New Crowdin translations (#6278)
* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

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

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)
2020-04-19 18:39:22 +09:00
f704e7a602 enhance(pages): Improve hcart 2020-04-19 17:41:01 +09:00
8cefcaa55f fix(client): Fix bug that cannot post when image only 2020-04-19 17:40:46 +09:00
164c6505f2 enhance(client): Use icon instead of text 2020-04-19 17:39:54 +09:00
0a1b83c70f feat(aiscript): Better env vars 2020-04-19 16:28:19 +09:00
e60048eb96 12.35.1 2020-04-19 16:19:01 +09:00
8957eec475 fix(client): Fix canvas overflow 2020-04-19 16:15:24 +09:00
e790af566c chore: 🎨 2020-04-19 16:09:57 +09:00
43fe0cd62e feat(pages): Improve chart 2020-04-19 15:48:05 +09:00
e22a296dc7 12.35.0 2020-04-19 09:44:20 +09:00
ac19ebc850 New Crowdin translations (#6277)
* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)
2020-04-19 09:41:03 +09:00
1e0060193a chore: Update deps 2020-04-19 09:40:19 +09:00
72271d905d fix(pages): Fix chart type detection 2020-04-19 09:09:38 +09:00
8d39283d46 Resolve #6276 2020-04-19 09:05:20 +09:00
4364122804 feat(pages): Improve chart 2020-04-19 08:25:22 +09:00
3b6dbd6dc3 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-04-18 18:33:50 +09:00
7c61fc37c5 Resolve #6274 2020-04-18 18:33:45 +09:00
f530b5237d TLにNote追加時にdeepcopyする (#6275) 2020-04-18 16:05:39 +09:00
9b9b6ade64 New Crowdin translations (#6271)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2020-04-18 12:07:01 +09:00
e184c1cdfb カスタム絵文字リアクションがプレビューされない不具合を修正 fix #6272 (#6273)
* カスタム絵文字リアクションがプレビューされない不具合を修正

* add comments
2020-04-18 12:06:44 +09:00
e0e4b43707 chore: Update dep 2020-04-18 12:02:33 +09:00
1d70b33894 12.34.0 2020-04-17 22:31:21 +09:00
44ea1be930 chore(client): 🎨 2020-04-17 20:36:51 +09:00
a1bf54fe16 chore(client): 🎨 2020-04-17 20:30:12 +09:00
88c57359b3 New Crowdin translations (#6268)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2020-04-17 20:26:16 +09:00
050564f717 chore: Update dep 2020-04-17 20:25:26 +09:00
75d59a9c9b feat(pages): Add rect method 2020-04-17 15:51:36 +09:00
9139c863bf feat(pages): Disable AiScript step limitation to improve usability 2020-04-17 15:51:25 +09:00
431 changed files with 7408 additions and 3440 deletions

13
.babelrc Normal file
View File

@ -0,0 +1,13 @@
{
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": {
"version": 3,
"proposals": true
}
}
]
]
}

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Pull previous build result (for cache)
run: docker pull misskey/misskey:latest
- name: Build docker container

View File

@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
node-version: [11.10.x, 12.x]
node-version: [12.x, 14.x]
services:
postgres:
@ -28,7 +28,7 @@ jobs:
- 6379:6379
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:

View File

@ -1,4 +1,7 @@
{
"extension": ["ts","js","cjs","mjs"],
"require": "ts-node/register",
"slow": 1000,
"timeout": 30000,
"slow": 1000
"exit": true
}

View File

@ -1,6 +1,100 @@
ChangeLog
=========
12.38.0 (2020/5/17)
-------------------
### ✨Improvements
* Renoteの削除をわかりやすく [#6366](https://github.com/syuilo/misskey/pull/6366), [#6373](https://github.com/syuilo/misskey/pull/6373)
* Unicode 13.0の絵文字に対応 [#6365](https://github.com/syuilo/misskey/pull/6365)
* リレーのHTTP-Signatureは投稿者の鍵でするように [#6357](https://github.com/syuilo/misskey/pull/6357)
* 追加のAPオブジェクトをキャッシュ出来るように [#6349](https://github.com/syuilo/misskey/pull/6349)
* ローカルのみボタンを公開範囲ボタンの横に移動 [51cf097](https://github.com/syuilo/misskey/commit/51cf0970b3b990cd67c94c5fcc5d7c1c3f7f13df)
* 公開範囲がローカルのみであることを表示するように [#6291](https://github.com/syuilo/misskey/pull/6291)
* Roomに藍ちゃん人形と札束を追加 [#6350](https://github.com/syuilo/misskey/pull/6350), [6cee608](https://github.com/syuilo/misskey/commit/6cee608c91850c035c35f605296410e72d1ef793), [7dd8dbe](https://github.com/syuilo/misskey/commit/7dd8dbeb5b2f33b679248ecc2138f556b72d9a06)
* ユーザーページの画像欄の画像をクリックしたとき、UIが再読み込みされないように [ca2a33e](https://github.com/syuilo/misskey/commit/ca2a33edc928c0dfe59f50502d3eedb9e97e88db)
### 🐛Fixes
* reCAPTCHAが動かなくなっているのを修正 [#6367](https://github.com/syuilo/misskey/pull/6367)
* インスタンスブロックがリレーに適用されない問題を修正 [#6355](https://github.com/syuilo/misskey/pull/6355)
* リレーに不正なURLを追加できてしまう問題を修正 [#6351](https://github.com/syuilo/misskey/pull/6351)
* Pages: Mk:api関数にトークンを渡せない問題を修正 [9244efe](https://github.com/syuilo/misskey/commit/9244efe3513dd72be04d7588dea8ec27509e96d1)
* nyaizeが適用されるとMFMのオプションが失われるのを修正 [#6371](https://github.com/syuilo/misskey/pull/6371)
* 上流ノートの削除に伴うノートの削除が連合リレーに伝達されない問題を修正 [#6374](https://github.com/syuilo/misskey/pull/6374)
* 引用元の削除に伴う引用RNの削除がリモートに伝達されない問題を修正 [#6374](https://github.com/syuilo/misskey/pull/6374)
12.37.0 (2020/5/10)
-------------------
### ✨Improvements
* Node.js v14をサポート [#6294](https://github.com/syuilo/misskey/pull/6294)
* 依存パッケージを最新に [#6297](https://github.com/syuilo/misskey/pull/6297)
* nginxサンプルのSSL/TLS設定の変更 [#6298](https://github.com/syuilo/misskey/pull/6298)
* DockerイメージでPostgreSQL v12・Node.js v14を使用するように [2bb0a61](https://github.com/syuilo/misskey/commit/2bb0a61a891445df4d78bfc0d4a64551ac9b7a39), [808c680](https://github.com/syuilo/misskey/commit/808c6801843b9e10fa575f5f7fbd3a4a3a80252a)
* hCaptchaサポート
* サイドバーカスタマイズ機能
* LD-Signatureの検証に対応 [#6300](https://github.com/syuilo/misskey/pull/6300)
* リモートからの通報の受信に対応 [#6331](https://github.com/syuilo/misskey/pull/6331)
* Misskey Rooms復活
* ノートへの返信を再帰的に表示するように(threaded replies)
* pub-relay [#6341](https://github.com/syuilo/misskey/pull/6341)
### 🐛Fixes
* CatだとMFMでURLプレビューを隠しても表示される問題を修正 [7d7c206](https://github.com/syuilo/misskey/commit/7d7c206f245387d32283fbb4e82bd9d526427936)
* アップロードプログレスバーが動かないのを修正 [#6307](https://github.com/syuilo/misskey/pull/6307)
* WebAuthnでログインできないのを修正 [#6327](https://github.com/syuilo/misskey/pull/6327)
* あなた宛て/メッセージで個々のノートが展開されるのを修正
* アンケートへの投票通知が正しく表示されない問題を修正
12.36.1 (2020/4/23)
-------------------
### 🐛Fixes
* Pagesのifブロックが機能しない [2ee5835](https://github.com/syuilo/misskey/commit/2ee583518608333312caa4c4303a74835b087069)
* AiScriptのアップデート
12.36.0 (2020/4/22)
-------------------
### ✨Improvements
* ドライブの画面を広く [1f99816](https://github.com/syuilo/misskey/commit/1f998168e2f6ff94d0119fe5f95ad03b47d19d60)
* ドライブのデフォルトのアップロード先フォルダを設定できるように [1f99816](https://github.com/syuilo/misskey/commit/1f998168e2f6ff94d0119fe5f95ad03b47d19d60)
* AiScriptのアップデート
* Webpackを5に [e72011f](https://github.com/syuilo/misskey/commit/e72011f1dafc11ea70dd60b653d25b0e48832cce)
### 🐛Fixes
* WebUIでアンテナを保存するとexcludeKeywordsに空文字列が入るせいで動かない [5a9530c](https://github.com/syuilo/misskey/commit/5a9530ccd4249cf37d50769015adbffba34014ab)
* 管理画面のカスタム絵文字でカテゴリが空だと更新できない [0df3e22](https://github.com/syuilo/misskey/commit/0df3e22e519d854c88ae8f5eabdc8eee4b18aeed)
12.35.2 (2020/4/19)
-------------------
### ✨Improvements
* Pagesの環境変数を調整 [0a1b83c](https://github.com/syuilo/misskey/commit/0a1b83c70fc546d7514176a220e1381ecc0b13ec)
* Pagesのチャートを調整 [f704e7a](https://github.com/syuilo/misskey/commit/f704e7a6025cb3f8ec7e474df70de1b171722bde)
* AiScriptのアップデート
* デザインの調整
### 🐛Fixes
* 画像のみのノートができない問題を修正 [8cefcaa](https://github.com/syuilo/misskey/commit/8cefcaa55f86e03f3965c5cb419787778681c269)
12.35.1 (2020/4/19)
-------------------
### 🐛Fixes
* Pagesのチャート描画を調整
12.35.0 (2020/4/19)
-------------------
### ✨Improvements
* Pagesでチャートを描画できるように
* Pagesでキャンバスの画像を投稿フォームで添付できるように
* AiScriptのバージョンアップ
### 🐛Fixes
* タイムラインウィジェットの数が多ければ多いほど、リアクションが多く付いて見える問題を修正
* カスタム絵文字リアクションがプレビューされない不具合を修正
12.34.0 (2020/4/17)
-------------------
### ✨Improvements
* Pagesでrectメソッドを追加
* AiScriptのバージョンアップ
12.33.0 (2020/4/16)
-------------------
### ✨Improvements

View File

@ -13,3 +13,7 @@ https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md
Emoji keywords for Unicode 11 and below by Mu-An Chiou
License: MIT
https://github.com/muan/emojilib/blob/master/LICENSE
RsaSignature2017 implementation by Transmute Industries Inc
License: MIT
https://github.com/transmute-industries/RsaSignature2017/blob/master/LICENSE

View File

@ -1,4 +1,4 @@
FROM node:12.11.1-alpine AS base
FROM node:14.2.0-alpine AS base
ENV NODE_ENV=production
@ -22,7 +22,7 @@ RUN apk add --no-cache \
python \
zlib-dev
COPY package.json ./
COPY package.json yarn.lock ./
RUN yarn install
COPY . ./
RUN yarn build

View File

@ -115,7 +115,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/605366/c9dc408fdcbf412fb183ca5b06235f8d/1.jpeg?token-time=2145916800&token-hash=oaqsjLqOFjWN5I9hm2epOaTXaEtKwQUy5OW-EpAz6-g%3D" alt="Jon Leibowitz" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24430516/b1964ac5b9f746d2a12ff53dbc9aa40a/1.jpg?token-time=2145916800&token-hash=bmEiMGYpp3bS7hCCbymjGGsHBZM3AXuBOFO3Kro37PU%3D" alt="Eduardo Quiros" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/14215107/1cbe1912c26143919fa0faca16f12ce1/3.png?token-time=2145916800&token-hash=Zq1TCK2tdY7xudEm_aV70bc_wxmol6pNj3ZWbpFUNbI%3D" alt="Nesakko " width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/user?u=20832595">Roujo </a></td>
<td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td>
@ -123,7 +122,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/jonleibowitz">Jon Leibowitz</a></td>
<td><a href="https://www.patreon.com/user?u=19045173">kiritan </a></td>
<td><a href="https://www.patreon.com/user?u=24430516">Eduardo Quiros</a></td>
<td><a href="https://www.patreon.com/Nesakko">Nesakko </a></td>
</tr></table>
<table><tr>
<td><img src="https://c8.patreon.com/2/200/776209" alt="Denshi " width="100"></td>
@ -152,7 +150,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28779508/3cd4cb7f017f4ee0864341e3464d42f9/1.png?token-time=2145916800&token-hash=eGQtR15be44kgvh8fw2Jx8Db4Bv15YBp2ldxh0EKRxA%3D" alt="S Y" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26340354/08834cf767b3449e93098ef73a434e2f/2.png?token-time=2145916800&token-hash=nyM8DnKRL8hR47HQ619mUzsqVRpkWZjgtgBU9RY15Uc%3D" alt="totokoro " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5827393/59893c191dda408f9cabd0f20a3a5627/1.jpeg?token-time=2145916800&token-hash=i9N05vOph-eP1LTLb9_npATjYOpntL0ZsHNaZFSsPmE%3D" alt="motcha " width="100"></td>
@ -162,7 +160,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td>
<td><a href="https://www.patreon.com/user?u=16542964">Takumi Sugita</a></td>
<td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin </a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI </a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
<td><a href="https://www.patreon.com/user?u=26340354">totokoro </a></td>
<td><a href="https://www.patreon.com/user?u=19356899">sheeta.s </a></td>
<td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td>
@ -176,6 +174,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9109588/e3cffc48d20a4e43afe04123e696781d/3.png?token-time=2145916800&token-hash=T_VIUA0IFIbleZv4pIjiszZGnQonwn34sLCYFIhakBo%3D" alt="nafuchoco " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/619ab87cc08448439222631ebb26802f/1.gif?token-time=2145916800&token-hash=o27K7M02s1z-LkDUEO5Oa7cu-GviRXeOXxryi4o_6VU%3D" alt="Atsuko Tominaga" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/3.png?token-time=2145916800&token-hash=FTm3WVom4dJ9NwWMU4OpCL_8Yc13WiwEbKrDPyTZTPs%3D" alt="natalie " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26144593/9514b10a5c1b42a3af58621aee213d1d/1.png?token-time=2145916800&token-hash=v1PYRsjzu4c_mndN4Hvi_dlispZJsuGRCQeNS82pUSM%3D" alt="EBISUME" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic " width="100"></td>
@ -187,6 +186,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/nijimiss">nafuchoco </a></td>
<td><a href="https://www.patreon.com/user?u=16900731">Atsuko Tominaga</a></td>
<td><a href="https://www.patreon.com/user?u=4389829">natalie </a></td>
<td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td>
<td><a href="https://www.patreon.com/noellabo">noellabo </a></td>
<td><a href="https://www.patreon.com/Corset">CG </a></td>
<td><a href="https://www.patreon.com/hekovic">Hekovic </a></td>
@ -204,7 +204,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:** Fri, 03 Apr 2020 11:52:08 UTC
**Last updated:** Thu, 07 May 2020 18:00:08 UTC
<!-- PATREON_END -->
[backer-url]: #backers

View File

@ -24,7 +24,7 @@ services:
db:
restart: always
image: postgres:11.2-alpine
image: postgres:12.2-alpine
networks:
- internal_network
env_file:

View File

@ -39,8 +39,8 @@ server {
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
ssl_protocols TLSv1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
ssl_prefer_server_ciphers on;
# Change to your upload limit
@ -53,6 +53,7 @@ server {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_http_version 1.1;
proxy_redirect off;

View File

@ -22,8 +22,8 @@ adduser --disabled-password --disabled-login misskey
Please install and setup these softwares:
#### Dependencies :package:
* **[Node.js](https://nodejs.org/en/)** >= 11.10.1
* **[PostgreSQL](https://www.postgresql.org/)** >= 10
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
* **[Redis](https://redis.io/)**
##### Optional

View File

@ -22,8 +22,8 @@ adduser --disabled-password --disabled-login misskey
Installez les paquets suivants :
#### Dépendences :package:
* **[Node.js](https://nodejs.org/en/)** >= 11.10.1
* **[PostgreSQL](https://www.postgresql.org/)** >= 10
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
* **[Redis](https://redis.io/)**
##### Optionnels

View File

@ -22,7 +22,7 @@ adduser --disabled-password --disabled-login misskey
これらのソフトウェアをインストール・設定してください:
#### 依存関係 :package:
* **[Node.js](https://nodejs.org/en/)** (11.10.1以上)
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
* **[PostgreSQL](https://www.postgresql.org/)** (10以上)
* **[Redis](https://redis.io/)**

View File

@ -5,14 +5,13 @@
import * as fs from 'fs';
import * as gulp from 'gulp';
import * as ts from 'gulp-typescript';
import * as mocha from 'gulp-mocha';
import * as rimraf from 'rimraf';
import * as rename from 'gulp-rename';
const cleanCSS = require('gulp-clean-css');
const sass = require('gulp-dart-sass');
const fiber = require('fibers');
const locales = require('./locales');
const locales: { [x: string]: any } = require('./locales');
const meta = require('./package.json');
gulp.task('build:ts', () => {
@ -32,14 +31,20 @@ gulp.task('build:copy:views', () =>
gulp.task('build:copy:locales', cb => {
fs.mkdirSync('./built/client/assets/locales', { recursive: true });
const v = { '_version_': meta.version };
for (const [lang, locale] of Object.entries(locales)) {
fs.writeFileSync(`./built/client/assets/locales/${lang}.${meta.version}.json`, JSON.stringify(locale), 'utf-8');
fs.writeFileSync(`./built/client/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
}
cb();
});
gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:locales', () =>
gulp.task('build:copy:fonts', () =>
gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/client/assets/fonts/'))
);
gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:locales', 'build:copy:fonts', () =>
gulp.src([
'./src/emojilist.json',
'./src/server/web/views/**/*',
@ -93,14 +98,4 @@ gulp.task('build', gulp.parallel(
'build:client',
));
gulp.task('mocha', () =>
gulp.src('./test/**/*.ts')
.pipe(mocha({
exit: true,
require: 'ts-node/register'
} as any))
);
gulp.task('test', gulp.task('mocha'));
gulp.task('default', gulp.task('build'));

112
locales/ar-SA.yml Normal file
View File

@ -0,0 +1,112 @@
---
_lang_: "العربية"
monthAndDay: "{day}/{month}"
search: "البحث"
notifications: "الإشعارات"
username: "اسم المستخدم"
password: "الكلمة السرية"
fetchingAsApObject: "جارٍ جلبه مِن الفديفرس…"
ok: " حسناً"
gotIt: "فهِمت"
cancel: " إلغاء"
enterUsername: "أدخِل إسم مسخدم"
noNotes: "لم يتم العثور على أية ملاحظات"
noNotifications: "ليس هناك أية اشعارات"
instance: "مثيل الخادم"
settings: "الاعدادات"
profile: "الملف التعريفي"
timeline: "الخيط الزمني"
login: "لِج"
loggingIn: "جارٍ تسجيل الدخول"
logout: "الخروج"
signup: "أنشئ حسابًا"
uploading: "عملية الإرسال جارية"
save: "حفظ"
users: "المستخدمون"
addUser: "اضافة مستخدم"
favorite: "إضافة إلى المفضلة"
favorites: "المفضلات"
unfavorite: "إزالة من المفضلة"
pin: "دبّسها على الصفحة الشخصية"
delete: "حذف"
deleteAndEdit: "إزالة وإعادة الصياغة"
addToList: "أضفه إلى قائمة"
reply: "رد"
loadMore: "عرض المزيد"
youGotNewFollower: "يتابعك"
note: "ملاحظة"
notes: "الملاحظات"
following: "المتابَعون"
followers: "المتابِعين"
followsYou: "يتابعك"
makeFollowManuallyApprove: "القبول يدويا طلبات الإشتراك"
follow: "تابِع"
followRequest: "طلب اشتراك"
followRequests: "طلبات الإشتراك"
unfollow: "إلغاء الاشتراك"
followRequestPending: "طلبات الإشتراك المعلّقة"
add: "إضافة"
addEmoji: "إضافة إيموجي"
addAcount: "إضافة حساب"
searchWith: "البحث: {q}"
annotation: "التعليقات"
instances: "مثيل الخادم"
noUsers: "ليس هناك مستخدمون"
more: "المزيد!"
announcements: "الإعلانات"
remove: "حذف"
explore: "استكشاف"
home: "الرئيسي"
activity: "النشاط"
images: "الصور"
addFile: "إضافة ملف"
maintainerName: "المدير"
maintainerEmail: "عنوان بريد المدير الإلكتروني"
disconnectSerice: "قطع الاتصال"
enableGlobalTimeline: "تفعيل الخيط الزمني الشامل"
exploreFediverse: "استكشف الفديفرس"
uiLanguage: "لغة واجهة المستخدم"
local: "المحلي"
clinetSettings: "إعدادات التطبيق"
accountSettings: "إعدادات الحساب"
addRelay: "إضافة مُرحّل"
addedRelays: "المرحلات التي تم إضافتها"
_theme:
explore: "استكشف قوالب المظهر"
_sfx:
note: "الملاحظات"
notification: "الإشعارات"
chat: "الدردشة"
_permissions:
"write:account": "تعديل معلومات حسابك"
_widgets:
notifications: "الإشعارات"
timeline: "الخيط الزمني"
trends: "المتداوَلة"
activity: "النشاط"
_cw:
show: "عرض المزيد"
_visibility:
home: "الرئيسي"
followers: "المتابِعين"
localOnly: "المحلي فقط"
_profile:
username: "اسم المستخدم"
_exportOrImport:
followingList: "المتابَعون"
_timelines:
home: "الرئيسي"
local: "المحلي"
social: "الاجتماعي"
global: "الشامل"
_pages:
blocks:
image: "الصور"
script:
blocks:
_join:
arg1: "القوائم"
arg2: "فاصل"
add: "إضافة"
_notification:
youWereFollowed: "يتابعك"

View File

@ -27,7 +27,7 @@ uploading: "Upload läuft"
save: "Speichern"
users: "Benutzer"
addUser: "Benutzer hinzufügen"
favorite: "Favorit"
favorite: "Zu Favoriten hinzufügen"
favorites: "Favoriten"
unfavorite: "Aus Favoriten entfernen"
pin: "Anheften"
@ -37,13 +37,13 @@ copyLink: "Link kopieren"
delete: "Löschen"
deleteAndEdit: "Löschen und Bearbeiten"
deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen."
addToList: "Zur Liste hinzufügen"
addToList: "Zu Liste hinzufügen"
sendMessage: "Nachricht senden"
copyUsername: "Benutzernamen kopieren"
reply: "Antworten"
loadMore: "Mehr anzeigen"
youGotNewFollower: "Du hast einen neuen Follower"
receiveFollowRequest: "Follow-Anfrage erhalten."
receiveFollowRequest: "Follow-Anfrage erhalten"
followRequestAccepted: "Follow-Anfrage akzeptiert"
mentions: "Erwähnungen"
directNotes: "Direktnachrichten"
@ -51,7 +51,7 @@ importAndExport: "Importieren und Exportieren"
import: "Importieren"
export: "Exportieren"
files: "Dateien"
download: "Download"
download: "Herunterladen"
driveFileDeleteConfirm: "Möchtest du die Datei \"{name}\" löschen? Die zugehörige Notiz wird ebenso verschwinden."
unfollowConfirm: "Möchtest du {name} nicht mehr folgen?"
exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt."
@ -60,8 +60,8 @@ lists: "Listen"
noLists: "Du hast keine Listen"
note: "Notiz"
notes: "Notizen"
following: "Folgen"
followers: "Folgende"
following: "Folgt"
followers: "Gefolgt von"
followsYou: "Folgt dir"
createList: "Liste erstellen"
manageLists: "Listen verwalten"
@ -73,7 +73,7 @@ makeFollowManuallyApprove: "Follow-Anfragen benötigen Bestätigung"
defaultNoteVisibility: "Standardsichtbarkeit"
follow: "Folgen"
followRequest: "Follow-Anfrage"
followRequests: "Follower-Anfragen"
followRequests: "Follow-Anfragen"
unfollow: "Nicht mehr folgen"
followRequestPending: "Ausstehende Follow-Anfrage"
enterEmoji: "Gib ein Emoji ein"
@ -82,13 +82,13 @@ unrenote: "Renote zurücknehmen"
quote: "Zitieren"
pinnedNote: "Angepinnte Notiz"
you: "Du"
clickToShow: "Klicke um diesen Inhalt anzusehen"
clickToShow: "Klicke, um diesen Inhalt anzusehen"
sensitive: "Dieser Inhalt ist NSFW"
add: "Hinzufügen"
reaction: "Reaktionen"
reactionSettingDescription: "Gib deine Lieblingsreaktionen ein, um sie der Reaktionsauswahl hinzuzufügen."
rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhängen abbrechen"
attachCancel: "Anhang entfernen"
markAsSensitive: "Als sensitiv markieren"
unmarkAsSensitive: "Markierung als sensitiv zurücknehmen"
enterFileName: "Dateinamen eingeben"
@ -107,6 +107,7 @@ customEmojis: "Benutzerdefinierte Emojis"
emojiName: "Emojiname"
emojiUrl: "Emoji-URL"
addEmoji: "Emoji hinzufügen"
settingGuide: "Empfohlene Einstellung"
cacheRemoteFiles: "Dateien von anderen Instanzen im Cache speichern"
cacheRemoteFilesDescription: "Wenn diese Einstellung deaktiviert ist, werden Dateien anderer Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz gespart, aber mehr Bandbreite verbraucht, da keine Vorschaubilder generiert werden."
flagAsBot: "Als Bot markieren"
@ -192,7 +193,7 @@ newPassword: "Neues Passwort"
newPasswordRetype: "Neues Passwort (wiederholen)"
attachFile: "Datei anhängen"
more: "Mehr!"
featured: "Hervorgehoben"
featured: "Beliebt"
usernameOrUserId: "Benutzername oder Benutzer-ID"
noSuchUser: "Benutzer nicht gefunden"
lookup: "Abfragen"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Dateiname"
selectFile: "Datei auswählen"
selectFiles: "Dateien auswählen"
selectFolder: "Wähle einen Ordner"
selectFolders: "Wähle Ordner"
renameFile: "Datei umbenennen"
folderName: "Ordnername"
createFolder: "Ordner erstellen"
@ -297,10 +300,15 @@ bannerUrl: "Banner-URL"
basicInfo: "Basisdaten"
pinnedUsers: "Angepinnte Benutzer"
pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha aktivieren"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA aktivieren"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen führen. Möchtest du die anderen Systeme deaktivieren? Du kannst mehrere aktiviert lassen, in dem du auf Abbrechen drückst."
antennas: "Antennen"
manageAntennas: "Antennen verwalten"
name: "Name"
@ -317,7 +325,7 @@ caseSensitive: "Groß-/Kleinschreibung unterscheiden"
withReplies: "Antworten beinhalten"
connectedTo: "Mit folgenden Benutzerkonten verknüpft"
notesAndReplies: "Notizen und Antworten"
withFiles: "Dateien beinhalten"
withFiles: "Notizen mit Dateien"
silence: "Instanzweit stummschalten"
silenceConfirm: "Möchtest du diesen Benutzer wirklich instanzweit stummschalten?"
unsilence: "Instanzweite Stummschaltung aufheben"
@ -343,7 +351,7 @@ administrator: "Administrator"
token: "Token"
twoStepAuthentication: "Zwei-Faktor-Authentifizierung"
moderator: "Moderator"
nUsersMentioned: "{n} Benutzer erwähnt"
nUsersMentioned: "{n} Benutzer reden darüber"
securityKey: "Sicherheitsschlüssel"
securityKeyName: "Schlüsselname"
registerSecurityKey: "Sicherheitsschlüssel registrieren"
@ -352,8 +360,6 @@ unregister: "Deaktivieren"
passwordLessLogin: "Passwortloses Anmelden einrichten"
resetPassword: "Passwort zurücksetzen"
newPasswordIs: "Das neue Passwort ist \"{password}\""
post: "Beitrag"
posted: "Gesendet"
autoReloadWhenDisconnected: "Automatisch aktualisieren wenn die Serververbindung getrennt wird"
autoNoteWatch: "Notizen automatisch beobachten"
autoNoteWatchDescription: "Werde über Notizen, auf die du reagiert oder geantwortet hast, informiert"
@ -374,7 +380,7 @@ groups: "Gruppen"
createGroup: "Gruppe erstellen"
ownedGroups: "Eigene Gruppen"
joinedGroups: "Beigetretene Gruppen"
invites: "Einladen"
invites: "Einladungen"
groupName: "Gruppenname"
members: "Mitglieder"
transfer: "Übertragen"
@ -461,7 +467,7 @@ objectStorageUseProxyDesc: "Deaktiviere dies falls du keinen Proxy für den Obje
serverLogs: "Serverprotokolle"
deleteAll: "Alle löschen"
showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik anzeigen"
newNoteRecived: "Du hast eine neue Notiz empfangen"
newNoteRecived: "Es gibt neue Notizen"
sounds: "Töne"
listen: "Anhören"
none: "Keine"
@ -492,6 +498,17 @@ removeAllFollowing: "Allen gefolgten Benutzern entfolgen"
removeAllFollowingDescription: "Allen Benutzerkonten von {host} entfolgen. Bitte führe dies durch, falls diese Instanz nicht mehr existiert."
userSuspended: "Dieser Benutzer wurde gesperrt."
userSilenced: "Dieser Benutzer wurde instanzweit stummgeschaltet."
sidebar: "Seitenleiste"
divider: "Trenner"
addItem: "Element hinzufügen"
rooms: "Raum"
relays: "Relays"
addRelay: "Relay hinzufügen"
inboxUrl: "inbox-URL"
addedRelays: "Hinzugefügte Relays"
serviceworkerInfo: "Muss für Push-Benachrichtigungen aktiviert sein."
deletedNote: "Gelöschte Notiz"
invisibleNote: "Private Notiz"
_theme:
explore: "Themen erforschen"
install: "Thema installieren"
@ -519,10 +536,10 @@ _ago:
monthsAgo: "vor {n} Monat(en)"
yearsAgo: "vor {n} Jahr(en)"
_time:
second: "Sekunde"
minute: "Minute"
hour: "Stunde"
day: "t"
second: "Sekunde(n)"
minute: "Minute(n)"
hour: "Stunde(n)"
day: "Tag(en)"
_tutorial:
title: "Wie du Misskey verwendest"
step1_1: "Willkommen!"
@ -629,7 +646,7 @@ _poll:
at: "Beenden am..."
after: "Beenden nach..."
deadlineDate: "Abstimmungsende"
deadlineTime: "Stunde"
deadlineTime: "Zeit"
duration: "Laufzeit"
votesCount: "{n} Stimmen"
totalVotes: "Insgesamt {n} Stimmen"
@ -683,7 +700,7 @@ _charts:
activeUsers: "Aktive Benutzer"
notesIncDec: "Unterschied in der Anzahl von Notizen"
localNotesIncDec: "Unterschied in der Anzahl von lokalen Notizen"
remoteNotesIncDec: "Differenz in Anzahl der Notizen von anderen Instanzen"
remoteNotesIncDec: "Unterschied in Anzahl der Notizen von anderen Instanzen"
notesTotal: "Anzahl aller Notizen"
filesIncDec: "Unterschied in der Anzahl von Dateien"
filesTotal: "Anzahl aller Dateien"
@ -706,6 +723,68 @@ _timelines:
local: "Lokal"
social: "Sozial"
global: "Global"
_rooms:
roomOf: "{user}'s Raum"
addFurniture: "Möbel hinzufügen"
translate: "Bewegen"
rotate: "Drehen"
exit: "Zurück"
remove: "Entfernen"
clear: "Aufräumen"
clearConfirm: "Möchtest du wirklich alle Möbel entfernen?"
leaveConfirm: "Es gibt ungespeicherte Änderungen. Möchtest du wirklich gehen?"
chooseImage: "Bild auswählen"
roomType: "Raumtyp"
carpetColor: "Teppichfarbe"
_roomType:
default: "Standard"
washitsu: "Japanischer Stil"
_furnitures:
milk: "Milchkarton"
bed: "Bett"
low-table: "Niedrigtisch"
desk: "Schreibtisch"
chair: "Stuhl"
chair2: "Stuhl 2"
fan: "Ventilator"
pc: "Computer"
plant: "Deko-Pflanze"
plant2: "Deko-Pflanze 2"
eraser: "Radiergummi"
pencil: "Bleistift"
pudding: "Pudding"
cardboard-box: "Pappkarton"
cardboard-box2: "Pappkarton 2"
cardboard-box3: "Pappkarton 3"
book: "Buch"
book2: "Buch 2"
piano: "Piano"
facial-tissue: "Taschentücher"
server: "Server"
moon: "Mond"
corkboard: "Pinnwand"
mousepad: "Mauspad"
monitor: "Monitor"
keyboard: "Tastatur"
carpet-stripe: "Gestreifter Teppich"
mat: "Matte"
color-box: "Regal"
wall-clock: "Wanduhr"
photoframe: "Bilderrahmen"
cube: "Würfel"
tv: "Fernseher"
pinguin: "Pinguin"
rubik-cube: "Zauberwürfel"
poster-h: "Poster (Horizontal)"
poster-v: "Poster (Vertikal)"
sofa: "Sofa"
spiral: "Spiraltreppe"
bin: "Papierkorb"
cup-noodle: "Instantnudeln"
holo-display: "Holographischer Bildschirm"
energy-drink: "Energy Drink"
doll-ai: "Ai-Puppe"
banknote: "Geldscheine"
_pages:
newPage: "Seite erstellen"
editPage: "Diese Seite bearbeiten"
@ -755,6 +834,8 @@ _pages:
post: "Neue Notiz anfertigen"
_post:
text: "Inhalt"
attachCanvasImage: "Leinwand als Bild anfügen"
canvasId: "Leinwand-ID"
textInput: "Texteingabe"
_textInput:
name: "Variablenname"
@ -770,6 +851,11 @@ _pages:
name: "Variablenname"
text: "Titel"
default: "Standardwert"
canvas: "Leinwand"
_canvas:
id: "Leinwand-ID"
width: "Breite"
height: "Höhe"
switch: "Fallunterscheidung"
_switch:
name: "Variablenname"
@ -980,3 +1066,20 @@ _pages:
enviromentVariables: "Umgebungsvariable"
pageVariables: "Seitenelement"
argVariables: "Eingabe-Slot"
_relayStatus:
requesting: "Ausstehend"
accepted: "Akzeptiert"
rejected: "Abgelehnt"
_notification:
fileUploaded: "Datei erfolgreich hochgeladen"
youGotMention: "{name} hat dich erwähnt"
youGotReply: "{name} hat dir geantwortet"
youGotQuote: "{name} hat dich zitiert"
youRenoted: "Renote deiner Notiz von {name}"
youGotPoll: "{name} hat auf deiner Umfrage abgestimmt"
youGotMessagingMessageFromUser: "{name} hat dir eine Privatnachricht gesendet"
youGotMessagingMessageFromGroup: "In die Gruppe {name} wurde eine Privatnachricht gesendet"
youWereFollowed: "Du hast einen neuen Follower"
youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten"
yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert"
youWereInvitedToGroup: "Du wurdest in eine Gruppe eingeladen"

View File

@ -107,6 +107,7 @@ customEmojis: "Custom Emoji"
emojiName: "Emoji name"
emojiUrl: "Emoji URL"
addEmoji: "Add an emoji"
settingGuide: "Suggested Configuration"
cacheRemoteFiles: "Cache remote files"
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded directly from the remote instance. Disabling this will decrease storage usage, but will increase traffic, because thumbnails will not be generated."
flagAsBot: "This account is a bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Filename"
selectFile: "Select a file"
selectFiles: "Select files"
selectFolder: "Select a folder"
selectFolders: "Select folders"
renameFile: "Rename file"
folderName: "Folder name"
createFolder: "Create a folder"
@ -297,10 +300,15 @@ bannerUrl: "Banner image URL"
basicInfo: "Basic info"
pinnedUsers: "Pinned user"
pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab."
hcaptcha: "hCaptcha"
enableHcaptcha: "Enable hCaptcha"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Enable reCAPTCHA"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Using multiple Captchas may cause interference. Would you like to disable the other Captcha? You can leave multiple Captchas enabled by press cancel."
antennas: "Antennas"
manageAntennas: "Manage Antennas"
name: "Name"
@ -352,8 +360,6 @@ unregister: "Unregister"
passwordLessLogin: "Set up password-less login"
resetPassword: "Reset password"
newPasswordIs: "The new password is \"{password}\""
post: "Post"
posted: "Posted!"
autoReloadWhenDisconnected: "Auto refresh when disconnected from server"
autoNoteWatch: "Watch note automatically"
autoNoteWatchDescription: "Get notified about the notes which you reactioned or replied."
@ -492,6 +498,15 @@ removeAllFollowing: "Withhold All Followings"
removeAllFollowingDescription: "Unfollow all accounts from {host}. Please run this if the instance no longer exists."
userSuspended: "This user has been suspended."
userSilenced: "This user has been silenced."
sidebar: "Sidebar"
divider: "Divider"
addItem: "Add Item"
rooms: "Room"
relays: "Relays"
addRelay: "Add Relay"
inboxUrl: "Inbox URL"
addedRelays: "Added Relays"
serviceworkerInfo: "Must be enabled for push notifications."
_theme:
explore: "Explore Themes"
install: "Install theme"
@ -706,6 +721,68 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "{user}'s room"
addFurniture: "Place furniture"
translate: "Move"
rotate: "Rotate"
exit: "Back"
remove: "Remove"
clear: "Remove All"
clearConfirm: "Are you sure to remove all furnitures in your room?"
leaveConfirm: "There are unsaved changes. Do you really want to leave?"
chooseImage: "Select an image"
roomType: "Room type"
carpetColor: "Color of carpet"
_roomType:
default: "Default"
washitsu: "Japanese-style"
_furnitures:
milk: "Milk carton"
bed: "Bed"
low-table: "Low Table"
desk: "Desk"
chair: "Chair"
chair2: "Chair 2"
fan: "Fan"
pc: "Computer"
plant: "Houseplant"
plant2: "Houseplant 2"
eraser: "Eraser"
pencil: "Pencil"
pudding: "Pudding"
cardboard-box: "Cardboard Box"
cardboard-box2: "Cardboard Box 2"
cardboard-box3: "Cardboard Box 3"
book: "Book"
book2: "Book 2"
piano: "Piano"
facial-tissue: "Facial tissue"
server: "Servers"
moon: "Moon"
corkboard: "Cork board"
mousepad: "Mousepad"
monitor: "Monitor"
keyboard: "Keyboard"
carpet-stripe: "Carpet (stripe)"
mat: "Mat"
color-box: "Bookshelf"
wall-clock: "Wall clock"
photoframe: "Picture frame"
cube: "Cube"
tv: "TV"
pinguin: "Penguin"
rubik-cube: "Rubik's Cube"
poster-h: "Poster (Horizontal)"
poster-v: "Poster (Vertical)"
sofa: "Sofa"
spiral: "Spiral Staircase"
bin: "Waste bin"
cup-noodle: "Cup noodle"
holo-display: "Holographic display"
energy-drink: "Energy drink"
doll-ai: "Ai doll"
banknote: "Pile of money"
_pages:
newPage: "Create a page"
editPage: "Edit this page"
@ -755,6 +832,8 @@ _pages:
post: "Compose a note"
_post:
text: "Content"
attachCanvasImage: "Post with Canvas as Image"
canvasId: "Canvas ID"
textInput: "Text input"
_textInput:
name: "Variable name"
@ -985,3 +1064,10 @@ _pages:
enviromentVariables: "Environment variable"
pageVariables: "Page element"
argVariables: "Input slot"
_relayStatus:
requesting: "Pending"
accepted: "Accepted"
rejected: "Rejected"
_notification:
youWereFollowed: "Followed you"
youWereInvitedToGroup: "Invited to group"

View File

@ -107,6 +107,7 @@ customEmojis: "Emojis personalizados"
emojiName: "Nombre del emoji"
emojiUrl: "URL de la imágen del emoji"
addEmoji: "Añadir emoji"
settingGuide: "Configuración sugerida"
cacheRemoteFiles: "Mantener en cache los archivos remotos"
cacheRemoteFilesDescription: "Si desactiva esta configuración, Los archivos remotos se cargarán desde el link directo sin usar la caché. Con eso se puede ahorrar almacenamiento del servidor, pero eso aumentará el tráfico al no crear miniaturas."
flagAsBot: "Esta cuenta es un bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Nombre de archivo"
selectFile: "Elegir archivo"
selectFiles: "Elegir archivos"
selectFolder: "Seleccione una carpeta"
selectFolders: "Seleccione carpetas"
renameFile: "Renombrar archivo"
folderName: "Nombre de la carpeta"
createFolder: "Crear carpeta"
@ -297,10 +300,15 @@ bannerUrl: "URL de la imagen del banner"
basicInfo: "Información básica"
pinnedUsers: "Usuarios fijados"
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva"
hcaptcha: "hCaptcha"
enableHcaptcha: "Habilitar hCaptcha"
hcaptchaSiteKey: "Clave del sitio"
hcaptchaSecretKey: "Clave secreta"
recaptcha: "reCAPTCHA"
enableRecaptcha: "activar reCAPTCHA"
recaptchaSiteKey: "Clave del sitio"
recaptchaSecretKey: "Clave secreta"
avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia. ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas presionando cancelar."
antennas: "Antenas"
manageAntennas: "Administrar antenas"
name: "Nombre"
@ -352,8 +360,6 @@ unregister: "Cancelar registro"
passwordLessLogin: "Iniciar sesión sin contraseña"
resetPassword: "Resetear contraseña"
newPasswordIs: "La nueva contraseña es \"{password}\""
post: "Nota"
posted: "Posteado"
autoReloadWhenDisconnected: "Recargar automáticamente cuando el servidor está desconectado"
autoNoteWatch: "Ver nota automáticamente"
autoNoteWatchDescription: "Recibe notificaciones sobre las notas de otros usuarios que a los que respondiste y reaccionaste"
@ -492,6 +498,14 @@ removeAllFollowing: "Retener todos los siguientes"
removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. Ejecutar en caso de que esta instancia haya dejado de existir"
userSuspended: "Este usuario ha sido suspendido."
userSilenced: "Este usuario ha sido silenciado."
sidebar: "Barra lateral"
divider: "Divisor"
addItem: "Agregar elemento"
rooms: "Cuartos"
relays: "Relés"
addRelay: "Agregar relé"
inboxUrl: "Inbox URL"
addedRelays: "Relés añadidos"
_theme:
explore: "Explorar temas"
install: "Instalar tema"
@ -706,6 +720,66 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "Cuarto de {user}"
addFurniture: "Colocar muebles"
translate: "Mover"
rotate: "Rotar"
exit: "Deseleccionar"
remove: "Quitar"
clear: "Quitar todo"
clearConfirm: "¿Quiere quitar todos los muebles?"
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea irse?"
chooseImage: "Escoger una imagen"
roomType: "Estilo de cuarto"
carpetColor: "Color de piso"
_roomType:
default: "Predeterminado"
washitsu: "Estilo japonés"
_furnitures:
milk: "Cartón de leche"
bed: "Cama"
low-table: "Mesa chica"
desk: "Escritorio"
chair: "Silla"
chair2: "Silla 2"
fan: "Ventilador"
pc: "Computadora"
plant: "Planta decorativa"
plant2: "Planta decorativa 2"
eraser: "Goma de borrar"
pencil: "lápiz"
pudding: "Pudín"
cardboard-box: "Caja de cartón"
cardboard-box2: "Caja de cartón 2"
cardboard-box3: "Caja de cartón 3"
book: "Libro"
book2: "Libro 2"
piano: "Piano"
facial-tissue: "Caja de pañuelos"
server: "Servidor"
moon: "Luna"
corkboard: "Pizarra de corcho"
mousepad: "Alfombrilla de ratón"
monitor: "Monitor"
keyboard: "Teclado"
carpet-stripe: "Alfombra (a rayas)"
mat: "Tapete"
color-box: "Caja de colores"
wall-clock: "Reloj de pared"
photoframe: "Fotograma"
cube: "Cubo"
tv: "Televisor"
pinguin: "Pinguino"
rubik-cube: "Cubo rubik"
poster-h: "Poster (horizontal)"
poster-v: "Poster (vertical)"
sofa: "Sillón"
spiral: "Escalera en espiral"
bin: "Papelera"
cup-noodle: "Taza de sopa de fideos"
holo-display: "Poster holográfico"
energy-drink: "Bebida energética"
_pages:
newPage: "Crear página"
editPage: "Editar página"
@ -755,6 +829,8 @@ _pages:
post: "Formulario"
_post:
text: "Contenido"
attachCanvasImage: "Nota con lienzo como imagen"
canvasId: "Lienzo ID"
textInput: "Entrada de texto"
_textInput:
name: "Nombre de variable"
@ -985,3 +1061,10 @@ _pages:
enviromentVariables: "Variables de entorno"
pageVariables: "Items de la página"
argVariables: "Slot de entrada"
_relayStatus:
requesting: "Pendiente"
accepted: "Aceptar"
rejected: "Rechazada"
_notification:
youWereFollowed: "te ha seguido"
youWereInvitedToGroup: "Invitado al grupo"

View File

@ -1,28 +1,28 @@
---
_lang_: "Français"
introMisskey: "Bienvenue! Misskey est un service de microblogage décentralisé open source.\nÉcrivez des «notes» pour partager ce qui vous arrive maintenant ou pour parler de vous à tout le monde 📡\nAvec la fonction «réactions», vous pouvez également ajouter une réaction rapide aux notes de chacun 👍\nExplorez un nouveau monde 🚀"
introMisskey: "Bienvenue ! Misskey est un service de microblogage décentralisé, libre et ouvert.\nÉcrivez des « notes » et partagez ce qui se passe à linstant présent, autour de vous avec les autres 📡\nLa fonction « réactions », vous permet également dajouter une réaction rapide aux notes des autres utilisateur·rice·s 👍\nExplorons un nouveau monde 🚀"
monthAndDay: "{day}/{month}"
search: "Rechercher"
notifications: "Notifications"
username: "Nom d'utilisateur·rice"
username: "Nom dutilisateur·rice"
password: "Mot de passe"
fetchingAsApObject: "Récupération depuis le fédiverse"
ok: "D'accord"
gotIt: "J'ai compris !"
fetchingAsApObject: "Récupération depuis le fédiverse"
ok: "OK"
gotIt: "Jai compris !"
cancel: "Annuler"
enterUsername: "Entrer un nom d'utilisateur·rice"
enterUsername: "Entrer un nom dutilisateur·rice"
renotedBy: "Renoté par {user}"
noNotes: "Pas de notes"
noNotifications: "Pas de notifications"
noNotes: "Aucune note"
noNotifications: "Aucune notification"
instance: "Instance"
settings: "Paramètres"
profile: "Profil"
timeline: "Fil d'actualité"
noAccountDescription: "L'utilisateur·rice n'a pas renseigné de présentation sur son profil"
timeline: "Fil"
noAccountDescription: "Lutilisateur·rice na pas encore renseigné de biographie de présentation sur son profil."
login: "Se connecter"
loggingIn: "Connexion en cours"
logout: "Se déconnecter"
signup: "S'enregistrer"
signup: "Sinscrire"
uploading: "Envoi en cours"
save: "Enregistrer"
users: "Utilisateur·rice·s"
@ -36,29 +36,29 @@ copyContent: "Copier le contenu"
copyLink: "Copier le lien"
delete: "Supprimer"
deleteAndEdit: "Supprimer et réécrire"
deleteAndEditConfirm: "Êtes-vous sûr de vouloir effacer cette note et la modifier ? Vous perdrez toutes les réactions, renotes et réponses."
deleteAndEditConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note et la reformuler ? Vous perdrez toutes les réactions, renotes et réponses y afférentes."
addToList: "Ajouter à une liste"
sendMessage: "Envoyer un message"
copyUsername: "Copier le nom d'utilisateur"
copyUsername: "Copier le nom dutilisateur·rice"
reply: "Répondre"
loadMore: "Voir plus"
loadMore: "Afficher plus"
youGotNewFollower: "Vous suit"
receiveFollowRequest: "Demande de suivi reçue"
followRequestAccepted: "L'abonne la demande acceptée"
receiveFollowRequest: "Demande dabonnement reçue"
followRequestAccepted: "La demande dabonnement a été acceptée"
mentions: "Mentions"
directNotes: "Messages directs"
directNotes: "Notes directes"
importAndExport: "Import et export"
import: "Importer"
export: "Exporter"
files: "Fichier·s"
files: "Fichiers"
download: "Télécharger"
driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes avec ce fichier joint seront aussi supprimées."
unfollowConfirm: "Se désabonner de {name} ?"
exportRequested: "Vous avez demandé une exportation. Cela pourrait prendre un peu de temps. Une fois l'exportation terminée, le fichier résultant sera ajouté dans le Drive."
unfollowConfirm: "Désirez-vous vous désabonner de {name} ?"
exportRequested: "Vous avez demandé une exportation. Lopération pourrait prendre un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive."
importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps."
lists: "Listes"
noLists: "Aucune liste"
note: "Note"
noLists: "Vous navez aucune liste"
note: "Notes"
notes: "Notes"
following: "Abonnements"
followers: "Abonné·e·s"
@ -68,27 +68,27 @@ manageLists: "Gérer les listes"
error: "Une erreur est survenue"
retry: "Réessayer"
enterListName: "Nom de la liste"
privacy: "Vie privée"
makeFollowManuallyApprove: "Demandes dsuivi requiert l'approbation"
privacy: "Confidentialité"
makeFollowManuallyApprove: "Accepter manuellement les demandes dabonnement"
defaultNoteVisibility: "Visibilité par défaut"
follow: "Suivre"
followRequest: "Demande dsuivre"
follow: "Sabonner"
followRequest: "Demande dabonnement"
followRequests: "Demandes dabonnement"
unfollow: "Se désabonner"
followRequestPending: "En attente dapprobation"
enterEmoji: "ou entrez un émoji"
renote: "Renote"
unrenote: "Annuler Renote"
quote: "Citation"
quote: "Citer"
pinnedNote: "Note épinglée"
you: "Vous"
clickToShow: "Cliquer pour afficher"
sensitive: "Contenu sensible"
add: "Ajouter"
reaction: "Réactions"
reactionSettingDescription: "Attribuez vos réactions préférées qui souhaitent épingler le sélecteur de réaction."
reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réactions."
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Enlever le fichier attaché"
attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible"
enterFileName: "Entrer le nom du fichier"
@ -98,32 +98,33 @@ block: "Bloquer"
unblock: "Débloquer"
suspend: "Suspendre"
unsuspend: "Annuler la suspension"
blockConfirm: "Désirez-vous bloquer ce compte ?"
unblockConfirm: "Désirez-vous débloquer ce compte ?"
suspendConfirm: "Désirez-vous suspendre ce compte ?"
unsuspendConfirm: "Désirez-vous annuler la suspension de ce compte ?"
blockConfirm: "Êtes-vous sûr·e de vouloir bloquer ce compte ?"
unblockConfirm: "Êtes-vous sûr·e de vouloir débloquer ce compte ?"
suspendConfirm: "Êtes-vous sûr·e de vouloir suspendre ce compte ?"
unsuspendConfirm: "Êtes-vous sûr·e de vouloir annuler la suspension de ce compte ?"
selectList: "Sélectionner une liste"
customEmojis: "Émojis personnalisés"
emojiName: "Nom de lémoji"
emojiUrl: "URL de lémoji"
addEmoji: "Ajouter un émoji"
cacheRemoteFiles: "Mettre en cache des fichiers distants"
cacheRemoteFilesDescription: "Quand ce paramètre est désactivé, les fichiers distants sont chargés directement de l'instance distante. Désactiver cela diminuera l'utilisation du stockage mais augmentera le trafic parce les miniatures ne seront pas générées."
settingGuide: "Configuration proposée"
cacheRemoteFiles: "Mise en cache des fichiers distants"
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis linstance distante. La désactiver diminuera certes lutilisation de lespace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées."
flagAsBot: "Ce compte est un robot"
flagAsCat: "Ce compte est un chat"
autoAcceptFollowed: "Approuver automatiquement les abonnements des utilisateurs abonné·e·s"
autoAcceptFollowed: "Accepter automatiquement les demandes dabonnement venant dutilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur l'instance distante"
showOnRemote: "Voir sur linstance distante"
general: "Général"
wallpaper: "Arrière plan"
setWallpaper: "Définir le fond d'écran"
removeWallpaper: "Supprimer l'arrière plan"
wallpaper: "Fond décran"
setWallpaper: "Définir le fond décran"
removeWallpaper: "Supprimer le fond décran"
searchWith: "Recherche : {q}"
youHaveNoLists: "Vous n'avez aucune liste"
followConfirm: "Désirez-vous suivre {name} ?"
followConfirm: "Êtes-vous sûr·e de vouloir suivre {name} ?"
proxyAccount: "Compte proxy"
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant pour les utilisateurs d'autres instances.\nExemple : quand un·e utilisateur·rice distant·e est ajouté·e à une liste, ses notes ne serait pas visibles sur l'instance si personne ne le·la abonné. Le compte proxy va donc le·la abonne pour que ses notes soient acheminées."
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Correspondant·e"
@ -133,13 +134,13 @@ instances: "Instance"
registeredAt: "Premier contact le"
latestRequestSentAt: "Dernière requête envoyée"
latestRequestReceivedAt: "Dernière requête reçue"
latestStatus: "Dernière statut"
latestStatus: "Dernier statut"
storageUsage: "Stockage utilisé"
charts: "Graphiques"
perHour: "par heure"
perDay: "par jour"
stopActivityDelivery: "Arrêter l'envoi d'activités"
blockThisInstance: "Bloquer cette instnce"
stopActivityDelivery: "Arrêter lenvoi de lactivité"
blockThisInstance: "Bloquer cette instance"
operations: "Opérations"
software: "Logiciel"
version: "Version"
@ -150,7 +151,7 @@ jobQueue: "File dattente"
cpuAndMemory: "Processeur et mémoire"
network: "Réseau"
disk: "Disque"
instanceInfo: "Informations sur l'instance"
instanceInfo: "Informations sur linstance"
statistics: "Statistiques"
clearQueue: "Vider la file d'attente"
clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file d'attente ?"
@ -158,43 +159,43 @@ clearQueueConfirmText: "Les notes non distribuées ne seront pas livrées. Norma
clearCachedFiles: "Vider le cache"
clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?"
blockedInstances: "Instances bloquées"
blockedInstancesDescription: "Listez les instance que vous désirez bloquer, une par ligne. Ces instances bloquées ne seront pas capable d'interagir avec cette instance."
muteAndBlock: "Masqués / Bloqués"
blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance."
muteAndBlock: "Masqué·e·s / Bloqué·e·s"
mutedUsers: "Utilisateur·rice·s en sourdine"
blockedUsers: "Utilisateur·rice·s bloqué·e·s"
noUsers: "Il n'y a aucun utilisateur·rice"
noUsers: "Il ny a pas dutilisateur·rice·s"
editProfile: "Modifier votre profil"
noteDeleteConfirm: "Confirmez-vous la suppression de cette note ?"
pinLimitExceeded: "Je ne peux plus épingler"
intro: "L'installation de Misskey est terminée! Créons le compte administrateur."
noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note ?"
pinLimitExceeded: "Vous ne pouvez plus épingler d'autres notes."
intro: "Linstallation de Misskey est terminée ! Veuillez créer un compte administrateur."
done: "Terminé"
processing: "Traitement en cours"
preview: "Prévisualisation"
default: "Par défaut"
noCustomEmojis: "Il a pas démoji"
customEmojisOfRemote: "Émojis l'instance distante"
noCustomEmojis: "Il n'y a pas démoji"
customEmojisOfRemote: "Émojis venant des autres instances"
noJobs: "Il n'y a aucune tâche planifiée"
federating: "En cours de fédération"
blocked: "Bloqué"
suspended: "Suspendu"
blocked: "Bloqué·e"
suspended: "Suspendu·e"
all: "Tous"
subscribing: "Abonné"
publishing: "Publié"
notResponding: "Ne répond pas"
instanceFollowing: "Abonnements une instance"
instanceFollowers: "Abonné·e·s de l'instance"
instanceUsers: "Utilisateur·e·s de l'instance"
instanceFollowers: "Abonné·e·s de linstance"
instanceUsers: "Utilisateur·rice·s de cette linstance"
changePassword: "Modifier votre mot de passe"
security: "Sécurité"
retypedNotMatch: "Les saisies ne correspondent pas."
currentPassword: "Mot de passe actuel"
newPassword: "Nouveau mot de passe"
newPasswordRetype: "Nouveau mot de passe (répéter)"
newPasswordRetype: "Répéter le nouveau mot de passe"
attachFile: "Joindre un fichier"
more: "Plus !"
featured: "Tendances"
usernameOrUserId: "Nom d'utilisateur ou ID utilisateur"
noSuchUser: "Utilisateur non trouvé"
noSuchUser: "Utilisateur·rice non trouvé"
lookup: "Recherche"
announcements: "Annonces"
imageUrl: "URL de limage"
@ -203,9 +204,9 @@ removed: "Supprimé"
removeAreYouSure: "Supprimer «{x}» ?"
saved: "Enregistré"
messaging: "Discuter"
upload: "Téléchargez"
upload: "Téléverser"
fromDrive: "Depuis le Drive"
fromUrl: "De l'URL"
fromUrl: "Depuis une URL"
uploadFromUrl: "Téléverser via une URL"
uploadFromUrlDescription: "URL du fichier que vous souhaitez téléverser"
uploadFromUrlRequested: "Téléversement demandé"
@ -213,32 +214,34 @@ uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un c
explore: "Découvrir"
games: "Jeux de Misskey"
messageRead: "Lus"
noMoreHistory: "Plus d'histoire passée"
noMoreHistory: "Il n'y a plus d'historique"
startMessaging: "Commencer à discuter"
nUsersRead: "{n} personnes ont lu"
agreeTo: "D'accord {0}"
tos: "Conditions d'utilisation"
nUsersRead: "Lu par {n} personnes"
agreeTo: "J'accepte {0}"
tos: "les conditions dutilisation"
start: "Commencer"
home: "Principal"
remoteUserCaution: "Les informations sont incomplètes en raison de l'utilisateur distant."
activity: "Activités"
remoteUserCaution: "Les informations peuvent être incomplètes, parce que lutilisateur·rice vient dune instance distante."
activity: "Activité"
images: "Images"
birthday: "Date de naissance"
yearsOld: "{age} ans"
registeredDate: "Date de création"
registeredDate: "Inscrit le"
location: "Localisation"
theme: "Thème"
themeForLightMode: "Thème à utiliser en Mode Lumière"
themeForLightMode: "Thème à utiliser en Mode Clair"
themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Lumière"
light: "Clair"
dark: "Sombre"
lightThemes: "Thème lumineux"
lightThemes: "Thème clair"
darkThemes: "Thème sombre"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
drive: "Drive"
fileName: "Nom du fichier"
selectFile: "Choisir le fichier"
selectFiles: "Choisir le fichiers"
selectFiles: "Choisir les fichiers"
selectFolder: "Sélectionnez un dossier"
selectFolders: "Sélectionnez des dossiers"
renameFile: "Renommer le ficher"
folderName: "Nom du dossier"
createFolder: "Créer un dossier"
@ -251,16 +254,16 @@ unableToDelete: "Ne peut pas être supprimé"
inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut pas être supprimé"
hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut donc pas être supprimé"
copyUrl: "Copier lURL"
rename: "Renommer"
avatar: "Avatar"
banner: "Bannière"
nsfw: "Contenu sensible"
disconnectedFromServer: "Déconnecté du serveur"
disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir"
doNothing: "Ignorer"
reloadConfirm: "Voulez-vous recharger?"
reloadConfirm: "Voulez-vous recharger le fil ?"
watch: "Surveiller"
unwatch: "Ne plus surveiller"
accept: "Autoriser"
@ -268,74 +271,79 @@ reject: "Refuser"
normal: "Normal"
instanceName: "Nom de linstance"
instanceDescription: "Description de linstance"
maintainerName: "Nom d'administrateur"
maintainerEmail: "Email de l'administrateur"
tosUrl: "URL des conditions d'utilisation"
maintainerName: "Ladministrateur·rice"
maintainerEmail: "Email de ladministrateur·rice"
tosUrl: "URL des conditions dutilisation"
thisYear: "Cette année"
thisMonth: "Ce mois-ci"
today: "Aujourd'hui"
dayX: "{day} jour"
monthX: "{month} mois"
yearX: "{year} année"
today: "Aujourdhui"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Pages"
integration: "Intégrations"
connectSerice: "Connecter"
disconnectSerice: "Déconnecter"
enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline: "Activer le fil global"
disablingTimelinesInfo: "Si vous désactivez ces le fils, les administrateurs et les modérateurs pourront toujours y accéder pour plus de commodité."
disablingTimelinesInfo: "Si vous désactivez ces fils, les administrateurs et les modérateurs pourront toujours y accéder."
registration: "S'inscrire"
enableRegistration: "Autoriser nimporte qui à senregistrés"
enableRegistration: "Autoriser les nouvelles inscriptions"
invite: "Inviter"
proxyRemoteFiles: "Proxy fichiers distants"
proxyRemoteFilesDescription: "Si vous activez ce paramètre, les fichiers distants non stockés ou supprimés en raison d'une capacité excédentaire seront affichés via un proxy local et généreront une miniature. Cela n'affectera pas le stockage du serveur."
driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local"
driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant"
inMb: "en mégaoctets"
iconUrl: "URL de l'image de l'icône"
bannerUrl: "URL de l'image de la bannière"
iconUrl: "URL de limage de lavatar"
bannerUrl: "URL de limage de la bannière"
basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e"
pinnedUsersDescription: "Décrivez les utilisateurs que vous souhaitez définir sur la page \"Découvrir\" séparés par une nouvelle ligne"
pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne."
hcaptcha: "hCaptcha"
enableHcaptcha: "Activer hCaptcha"
hcaptchaSiteKey: "Clé du site"
hcaptchaSecretKey: "Clé secrète"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Activation de reCAPTCHA"
enableRecaptcha: "Activer reCAPTCHA"
recaptchaSiteKey: "Clé du site"
recaptchaSecretKey: "Clé secrète"
antennas: "Antenne"
manageAntennas: "Gestion d'antenne"
avoidMultiCaptchaConfirm: "Lutilisation de plusieurs Captchas peut provoquer des interférences. Souhaitez-vous désactiver lautre Captcha ? Vous pouvez laisser plusieurs Captcha activés en appuyant sur Annuler."
antennas: "Antennes"
manageAntennas: "Gestion des antennes"
name: "Nom"
antennaSource: "Recevoir la source"
antennaSource: "Source de lantenne"
antennaKeywords: "Mots clés à recevoir"
antennaExcludeKeywords: "Mots clés à exclure"
antennaKeywordsDescription: "Lorsqu'il est séparé par un espace, il devient une spécification ET, et lorsqu'il est séparé par un saut de ligne, il devient une spécification OU."
notifyAntenna: "Notifier les nouvelles notes"
withFileAntenna: "Notes uniquement avec fichiers joints"
antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
notifyAntenna: "Me notifier pour les nouvelles notes"
withFileAntenna: "Notes ayant des attachements uniquement"
serviceworker: "ServiceWorker"
enableServiceworker: "Activer ServiceWorker"
antennaUsersDescription: "Spécifiez les noms d'utilisateurs séparés par des sauts de ligne"
antennaUsersDescription: "Saisissez un seul nom dutilisateur·rice par ligne"
caseSensitive: "Sensible à la casse"
withReplies: "Y compris répondres"
withReplies: "Inclure les réponses"
connectedTo: "Vous êtes connectés aux services suivants"
notesAndReplies: "Notes et Répondres"
notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints"
silence: "Mettre en masquer"
silenceConfirm: "Mettre l'utilisateur sous masquer ?"
unsilence: "Annuler la masquer"
unsilenceConfirm: "Voulez-vous annuler le masquer ?"
silence: "Mettre en sourdine"
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre lutilisateur·rice en sourdine ?"
unsilence: "Annuler la mise en sourdine"
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
recentlyRegisteredUsers: "Utilisateur·rice·s récemment enregistrés"
recentlyRegisteredUsers: "Utilisateur·rice·s récemment inscrit·e·s"
recentlyDiscoveredUsers: "Utilisateur·rice·s récemment découverts"
exploreUsersCount: "Il y a {count} utilisateur·rice·s"
exploreFediverse: "Explorer le Fédiverse"
exploreFediverse: "Explorer le Fediverse"
popularTags: "Mots-clés populaires"
userList: "Listes"
about: "Informations"
aboutMisskey: "À propos de Misskey"
aboutMisskeyText: "Misskey est un logiciel open source, développé par syuilo depuis 2014."
aboutMisskeyText: "Misskey est un logiciel libre et ouvert, développé par syuilo depuis 2014."
misskeyMembers: "Il est développé et maintenu par les membres listés ci-dessous :"
misskeySource: "Le code source est disponible ici:"
misskeyTranslation: "Aidez-nous avec votre contribution à traduire Misskey:"
misskeyTranslation: "Aidez-nous en contribuant à traduire Misskey :"
misskeyDonate: "Vous pouvez contribuer au développement de Misskey en faisant un don ici:"
morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰"
patrons: "Supporteurs"
@ -352,20 +360,18 @@ unregister: "Se désinscrire"
passwordLessLogin: "Connectez-vous sans mot de passe"
resetPassword: "Réinitialiser mot de passe"
newPasswordIs: "Votre nouveau mot de passe est \"{password}\""
post: "Publier"
posted: "Publié !"
autoReloadWhenDisconnected: "Rechargement automatique lorsque le serveur se déconnecte"
autoNoteWatch: "Surveiller automatique pour les notes"
autoNoteWatch: "Surveiller les notes automatiquement"
autoNoteWatchDescription: "Soyez informé des notes auxquelles vous avez réagi ou répondu."
reduceUiAnimation: "Réduire l'animation de l'interface"
reduceUiAnimation: "Réduire les animations dans linterface"
share: "Partager"
notFound: "Non trouvé"
notFoundDescription: "Aucune page ne correspond à l'URL spécifiée."
notFoundDescription: "Aucune page ne correspond à lURL spécifiée."
uploadFolder: "Emplacement de téléversement par défaut"
cacheClear: "Vider le cache"
markAsReadAllNotifications: "Marquer toutes les notifications comme lues"
markAsReadAllUnreadNotes: "Marquer toutes les notes comme lues"
markAsReadAllTalkMessages: "Marquer toutes les discutez comme lues"
markAsReadAllTalkMessages: "Marquer toutes les discussions comme lues"
help: "Aide"
inputMessageHere: "Tapez ici votre message"
close: "Fermer"
@ -404,20 +410,20 @@ tooLong: "Est trop long"
weakPassword: "Faible mot de passe"
normalPassword: "Bon mot de passe"
strongPassword: "Fort mot de passe"
passwordMatched: "Correcte"
passwordMatched: "Combinaison correcte !"
passwordNotMatched: "Ne correspond pas"
signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
tapSecurityKey: "Touchez la clé de sécurité"
or: "OU"
uiLanguage: "Langue d'affichage de l'interface"
uiLanguage: "Langue daffichage de linterface"
groupInvited: "Invité au groupe"
aboutX: "À propos de {x}"
useOsNativeEmojis: "Utilisez les emojis natifs de la plateforme"
useOsNativeEmojis: "Utiliser les émojis natifs du système"
youHaveNoGroups: "Vous n'avez aucune groupe"
joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe."
noHistory: "Pas d'historique"
disableAnimatedMfm: "Désactiver MFM qui a des animations"
disableAnimatedMfm: "Désactiver MFM ayant des animations"
doing: "Attends une seconde"
category: "Catégories"
tags: "Étiquettes"
@ -427,7 +433,7 @@ existingAcount: "Comptes existants"
regenerate: "Régénérer"
fontSize: "Taille de la police"
noFollowRequests: "Vous navez aucune demande dabonnement en attente"
openImageInNewTab: "Ouvrir l'image dans un nouvel onglet"
openImageInNewTab: "Ouvrir les images dans un nouvel onglet"
dashboard: "Tableau de bord"
local: "Local"
remote: "Distant"
@ -445,7 +451,7 @@ showFeaturedNotesInTimeline: "Afficher les notes en vedette dans fil d'actualit
objectStorage: "Stockage d'objets"
useObjectStorage: "Utiliser le stockage d'objets"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "Préfixe d'URL utilisé pour construire l'URL vers le référencement d'objet (média). Spécifiez son URL si vous utilisez un CDN ou un proxy, sinon spécifiez l'adresse accessible au public selon le guide de service que vous allez utiliser. i.g 'https://<bucket>.s3.amazonaws.com' pour AWS S3 et 'https://storage.googleapis.com/<bucket>' pour GCS."
objectStorageBaseUrlDesc: "Préfixe dURL utilisé pour construire lURL vers le référencement dobjet (média). Spécifiez son URL si vous utilisez un CDN ou un proxy, sinon spécifiez ladresse accessible au public selon le guide de service que vous allez utiliser. P.ex. 'https://<bucket>.s3.amazonaws.com' pour AWS S3 et 'https://storage.googleapis.com/<bucket>' pour GCS."
objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Veuillez spécifier le nom du compartiment utilisé sur le service configuré."
objectStoragePrefix: "Prefix"
@ -467,8 +473,8 @@ listen: "Écouter"
none: "Rien"
volume: "Volume"
details: "Détails"
chooseEmoji: "Choisissez des emojis"
unableToProcess: "L'opération n'a pas pu être complétée"
chooseEmoji: "Choisissez un émoji"
unableToProcess: "Lopération na pas pu être complétée."
recentUsed: "Récemment utilisé"
install: "Installation"
uninstall: "Désinstaller"
@ -489,9 +495,18 @@ updateRemoteUser: "Mettre à jour les informations de lutilisateur·rice dist
deleteAllFiles: "Supprimer tous les fichiers"
deleteAllFilesConfirm: "Êtes vous surs de vouloir supprimer tous les fichiers ?"
removeAllFollowing: "Retenir tous les abonnements"
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Exécutez cette commande si l'instance n'existe plus."
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si linstance nexiste plus."
userSuspended: "Cette utilisateur·trice a été suspendue."
userSilenced: "Cette utilisateur·trice a été masquer."
sidebar: "Barre latérale"
divider: "Séparateur"
addItem: "Ajouter élément"
rooms: "Chambre"
relays: "Relais"
addRelay: "Ajouter un relais"
inboxUrl: "Inbox URL"
addedRelays: "Relais ajoutés"
serviceworkerInfo: "Devrait être activé pour les notifications push."
_theme:
explore: "Explorer les thèmes"
install: "Installer un thème"
@ -506,7 +521,7 @@ _sfx:
notification: "Notifications"
chat: "Discuter"
chatBg: "Discuter (De fond)"
antenna: "Réception d'antenne"
antenna: "Réception de lantenne"
_ago:
unknown: "Inconnu"
future: "Futur"
@ -526,33 +541,33 @@ _time:
_tutorial:
title: "Comment utiliser Misskey"
step1_1: "Bienvenue,"
step1_2: "Cette page est appelée \"fil d'actualité\". Elle montre les \"notes\" des personnes que vous \"abonne\" dans l'ordre chronologique."
step1_3: "Vous n'avez pas encore publier de notes et personne n'est encore abonnements, vous ne devriez donc rien voir dans fil d'actualité."
step2_1: "Finissons de créer votre profil avant d'écrire une note ou de abonne quelqu'un."
step2_2: "En fournissant quelques informations sur vous, il sera plus facile pour les autres de vous abonne."
step1_2: "Cette page est appelée « un fil ». Elle affiche les « notes » des personnes auxquelles vous êtes abonné dans un ordre chronologique."
step1_3: "Votre fil est actuellement vide vu que vous ne suivez aucun compte et que vous navez publié aucune note, pour linstant."
step2_1: "Procédons dabord à la préparation de votre profil avant décrire une note et/ou de vous abonner à un compte."
step2_2: "En fournissant quelques informations sur vous, il sera plus facile pour les autres de sabonner à votre compte."
step3_1: "Vous avez fini de créer votre profil ?"
step3_2: "Létape suivante consiste à créer une note. Vous pouvez commencer en cliquant sur licône crayon sur lécran."
step3_3: "Remplissez le cadran et cliquez sur le bouton en haut à droite pour envoyer."
step3_4: "Vous n'avez rien à dire ? Essayez de dire \"J'ai commencé à utiliser Misskey\"."
step4_1: "Avez-vous posté votre première notes ?"
step4_2: "Votre première note est maintenant affiché sur votre fil d'actualité."
step5_1: "Ensuite, abonnons-nous d'autres personnes et rendre la fil d'actualité en savoir plus vivante."
step5_2: "{featured} affiche les notes en tendance sur cette instance. {explore} vous permet de trouver les utilisateur·rice·s en tendance. Essayez de vous abonner aux gens que vous aimez !"
step5_3: "Pour abonne un utilisateur, cliquez sur l'icône de l'utilisateur pour afficher la page de l'utilisateur et appuyez sur le bouton \"Abonnement\"."
step5_4: "Selon l'utilisateur, il peut s'écouler un certain temps avant que la abonner ne soit approuvé."
step6_1: "Si vous voyez la notes d'un autre utilisateur sur fil d'actualité, c'était réussi."
step6_2: "Vous pouvez ajouter des \"réactions\" aux notes des autres afin de pouvoir facilement dire votre émotion."
step6_3: "Pour ajouter une réaction, cliquez sur la marque \"+\" sur la note et sélectionnez la réaction souhaitée."
step7_1: "Tu as bien travaillé ! Ceci conclut l'explication de l'utilisation de base de Misskey."
step7_2: "Pour plus d'informations sur Misskey, voir {help}."
step7_3: "Alors, profitez de Misskey 🚀"
step3_4: "Vous navez rien à dire ? Essayez décrire « Jai commencé à utiliser Misskey »."
step4_1: "Avez-vous publié votre première note ?"
step4_2: "Youpi ! Celle-ci est maintenant affiché sur votre fil dactualité."
step5_1: "Maintenant, essayons de nous abonner à dautres personnes afin de rendre votre fil plus vivant."
step5_2: "La page {featured} affiche les notes en tendance sur la présente instance et {explore} vous permet de trouver des utilisateur·rice·s en tendance. Essayez de vous abonner aux gens que vous aimez !"
step5_3: "Pour pouvoir suivre dautres utilisateur·rice, cliquez sur leur avatar afin dafficher la page du profil utilisateur ensuite appuyez sur le bouton « Sabonner »."
step5_4: "Si lautre utilisateur possède une icône sous forme dun cadenas à côté de son nom, il devra accepter votre demande dabonnement manuellement."
step6_1: "Maintenant, vous êtes en mesure de voir safficher les notes des autres utilisateur·rice·s sur votre propre fil."
step6_2: "Vous avez également la possibilité dintéragir rapidement avec les notes des autres utilisateur·rice·s en ajoutant des « réactions »."
step6_3: "Pour ajouter une réaction à une note, cliquez sur le signe « + » de celle-ci et sélectionnez lémoji souhaité."
step7_1: "Félicitations ! Vous avez atteint la fin du tutoriel de base pour lutilisation de Misskey."
step7_2: "Si vous désirez en savoir plus sur Misskey, jetez un œil sur la section {help}."
step7_3: "Bon courage et amusez-vous bien sur Misskey 🚀"
_2fa:
alreadyRegistered: "Cette étape à déjà été complétée"
registerDevice: "Ajouter un appareil"
registerDevice: "Ajouter un nouvel appareil"
registerKey: "Sinscrire la clé"
step1: "Tout d'abord, installez une application d'authentification, telle que {a} ou {b}, sur votre appareil."
step2: "Ensuite, scannez le code QR affiché avec l'application."
step3: "Entrez le jeton affiché sur l'application et vous avez terminé."
step2: "Ensuite, scannez le code QR affiché sur lécran."
step3: "Entrez le jeton affiché sur votre application pour compléter la configuration."
step4: "Lorsque vous vous connectez, entrez le jeton de la même manière."
securityKeyInfo: "Vous pouvez configurer l'authentification WebAuthN pour sécuriser davantage le processus de connexion avec non seulement la clé de sécurité matérielle qui prend en charge FIDO2, mais également l'authentification par empreinte digitale ou PIN sur votre appareil."
_permissions:
@ -564,7 +579,7 @@ _permissions:
"write:drive": "Écrire sur le Drive"
"read:favorites": "Afficher les favoris"
"write:favorites": "Écrire des favoris"
"read:following": "Voir les informations de l'abonné"
"read:following": "Voir les informations de vos abonnements"
"write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter"
@ -578,23 +593,23 @@ _permissions:
"write:votes": "Voter"
"read:pages": "Afficher la page"
"write:pages": "Mettre à jour les Pages"
"read:page-likes": "Lire les favoris sur les Pages"
"read:page-likes": "Voir les favoris sur les Pages"
"write:page-likes": "Mettre à jour les favoris sur les Pages"
"read:user-groups": "Voir les groupes d'utilisateur·rice·s"
"write:user-groups": "Éditer les groupes des utilisateur·rice·s"
_auth:
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?"
permissionAsk: "Cette application nécessite les autorisations suivantes "
pleaseGoBack: "Veillez retourner à l'application"
permissionAsk: "Cette application nécessite les autorisations suivantes :"
pleaseGoBack: "Veuillez retourner à lapplication"
callback: "Retour vers lapplication"
denied: "Accès refusé"
_antennaSources:
all: "Toutes les notes"
homeTimeline: "Notes de l'utilisateur auquel je m'abonne"
users: "Notes des un ou plusieurs utilisateurs spécifiés"
userList: "Notes pour les utilisateurs de la liste spécifiée"
userGroup: "Notes pour les utilisateurs de la groupe spécifiée"
homeTimeline: "Notes venant des utilisateur·rice·s auxquel·les je suis abonné"
users: "Notes venant de la part dutilisateur·rice·s précis"
userList: "Notes venant dune liste spécifique"
userGroup: "Notes venant dutilisateur·rice·s du groupe spécifié"
_weekday:
sunday: "Dimanche"
monday: "Lundi"
@ -606,16 +621,16 @@ _weekday:
_widgets:
memo: "Note collante"
notifications: "Notifications"
timeline: "Fil d'actualité"
timeline: "Fil"
calendar: "Calendrier"
trends: "Tendances"
clock: "Horloge"
rss: "Lecteur de flux RSS"
activity: "Activités"
activity: "Activité"
photos: "Photos"
_cw:
hide: "Masquer"
show: "Voir plus"
show: "Afficher plus"
chars: "{count} caractères"
files: "{count} fichiers"
poll: "Sondage"
@ -663,7 +678,7 @@ _postForm:
f: "En attente de vos écrits ..."
_profile:
name: "Nom"
username: "Nom d'utilisateur·rice"
username: "Nom dutilisateur·rice"
description: "À propos de moi"
youCanIncludeHashtags: "Vous pouvez également inclure des hashtags."
metadata: "Informations complémentaires"
@ -706,6 +721,68 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "Chambre de {user}"
addFurniture: "Placer des meubles"
translate: "Déplacer"
rotate: "Pivoter"
exit: "Retour"
remove: "Enlever"
clear: "Tout enlever"
clearConfirm: "Désirez-vous enlever tout les meubles de votre chambre ?"
leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous vraiment quitter ?"
chooseImage: "Sélectionnez une image"
roomType: "Type de chambre"
carpetColor: "Couleur du tapis"
_roomType:
default: "Par défaut"
washitsu: "Style japonnais"
_furnitures:
milk: "Lait en carton"
bed: "Lit"
low-table: "Table basse"
desk: "Bureau"
chair: "Chaise"
chair2: "Chaise 2"
fan: "Ventilateur"
pc: "Ordinateur"
plant: "Plante dintérieur"
plant2: "Plante dintérieur 2"
eraser: "Gomme"
pencil: "Crayon"
pudding: "Pudding"
cardboard-box: "Boîte en carton"
cardboard-box2: "Boîte en carton 2"
cardboard-box3: "Boîte en carton 3"
book: "Livre"
book2: "Livre 2"
piano: "Piano"
facial-tissue: "Mouchoirs en papier"
server: "Serveurs"
moon: "Lune"
corkboard: "Tableau en liège"
mousepad: "Tapis de souris"
monitor: "Écran de contrôle"
keyboard: "Clavier"
carpet-stripe: "Tapis (zébré)"
mat: "Tapis"
color-box: "Étagère"
wall-clock: "Horloge murale"
photoframe: "Cadre photo"
cube: "Cube"
tv: "Téléviseur"
pinguin: "Pingouin"
rubik-cube: "Cube de Rubik"
poster-h: "Affiche (horizontale)"
poster-v: "Affiche (verticale)"
sofa: "Canapé"
spiral: "Escaliers en spirale"
bin: "Corbeille"
cup-noodle: "Bol de nouilles"
holo-display: "Affichage holographique"
energy-drink: "Boisson énergétique"
doll-ai: "Poupée Ai"
banknote: "Billets de banque"
_pages:
newPage: "Créer une page"
editPage: "Modifier une page"
@ -720,9 +797,9 @@ _pages:
viewSource: "Afficher la source"
viewPage: "Afficher la page"
like: "Favori"
unlike: "Je nfavoris pas"
unlike: "Je naime pas"
my: "Mes pages"
liked: "Pages favoris"
liked: "Pages favorites"
inspector: "Inspecteur"
content: "Bloc de page"
variables: "Variables"
@ -738,7 +815,7 @@ _pages:
eyeCatchingImageRemove: "Supprimer une image attirante"
chooseBlock: "Ajouter un bloc"
selectType: "Choisir un type"
enterVariableName: "Veuillez entrer un nom de variable"
enterVariableName: "Veuillez entrer un nom pour votre variable"
variableNameIsAlreadyUsed: "Cette variable est déjà utilisée"
contentBlocks: "Contenu"
inputBlocks: "Entrée"
@ -755,6 +832,8 @@ _pages:
post: "Formulaire à publier"
_post:
text: "Contenu"
attachCanvasImage: "Publier avec Toile comme image"
canvasId: "Toile ID"
textInput: "Entrée de textuelle"
_textInput:
name: "Nom de la variable"
@ -796,7 +875,7 @@ _pages:
resetRandom: "Réinitialiser le nombre aléatoire"
pushEvent: "Envoyer un évènement"
_pushEvent:
event: "Nom de l'évènement"
event: "Nom de lévènement"
message: "Message à afficher lorsque appuyé"
variable: "Variable à envoyer"
no-variable: "Rien"
@ -826,7 +905,7 @@ _pages:
multiLineText: "Texte (Multi-lignes)"
textList: "Liste de texte"
_textList:
info: "Veuillez séparer chacun avec une nouvelle ligne"
info: "Veuillez séparer chaque entrée avec un saut de ligne"
strLen: "Longueur d'un texte"
_strLen:
arg1: "Texte"
@ -985,3 +1064,10 @@ _pages:
enviromentVariables: "Variables d'environnement"
pageVariables: "Élément de page"
argVariables: "Entrée slot"
_relayStatus:
requesting: "En attente"
accepted: "Accepté"
rejected: "Refusée"
_notification:
youWereFollowed: "Vous suit"
youWereInvitedToGroup: "Invité au groupe"

View File

@ -107,6 +107,7 @@ customEmojis: "カスタム絵文字"
emojiName: "絵文字名"
emojiUrl: "絵文字画像URL"
addEmoji: "絵文字を追加"
settingGuide: "おすすめ設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
flagAsBot: "Botとして設定"
@ -239,6 +240,8 @@ drive: "ドライブ"
fileName: "ファイル名"
selectFile: "ファイルを選択"
selectFiles: "ファイルを選択"
selectFolder: "フォルダーを選択"
selectFolders: "フォルダーを選択"
renameFile: "ファイル名を変更"
folderName: "フォルダー名"
createFolder: "フォルダーを作成"
@ -297,10 +300,15 @@ bannerUrl: "バナー画像のURL"
basicInfo: "基本情報"
pinnedUsers: "ピン留めユーザー"
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptchaを有効にする"
hcaptchaSiteKey: "サイトキー"
hcaptchaSecretKey: "シークレットキー"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHAを有効にする"
recaptchaSiteKey: "サイトキー"
recaptchaSecretKey: "シークレットキー"
avoidMultiCaptchaConfirm: "複数のCaptchaを使用すると干渉を起こす可能性があります。他のCaptchaを無効にしますかキャンセルして複数のCaptchaを有効化したままにすることも可能です。"
antennas: "アンテナ"
manageAntennas: "アンテナの管理"
name: "名前"
@ -352,8 +360,6 @@ unregister: "登録を解除"
passwordLessLogin: "パスワード無しログイン"
resetPassword: "パスワードをリセット"
newPasswordIs: "新しいパスワードは「{password}」です"
post: "投稿"
posted: "投稿しました"
autoReloadWhenDisconnected: "サーバー切断時に自動リロード"
autoNoteWatch: "ノートの自動ウォッチ"
autoNoteWatchDescription: "あなたがリアクションしたり返信したりした他のユーザーのノートに関する通知を受け取るようにします。"
@ -408,7 +414,7 @@ passwordMatched: "一致しました"
passwordNotMatched: "一致していません"
signinWith: "{x}でログイン"
signinFailed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
tapSecurityKey: "セキュリティキーにタッチ"
tapSecurityKey: "セキュリティキーにタッチ"
or: "もしくは"
uiLanguage: "UIの表示言語"
groupInvited: "グループに招待されました"
@ -492,6 +498,17 @@ removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
userSuspended: "このユーザーは凍結されています。"
userSilenced: "このユーザーはサイレンスされています。"
sidebar: "サイドバー"
divider: "分割線"
addItem: "項目を追加"
rooms: "ルーム"
relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
serviceworkerInfo: "プッシュ通知を行うには有効する必要があります。"
deletedNote: "削除された投稿"
invisibleNote: "非公開の投稿"
_theme:
explore: "テーマを探す"
@ -727,6 +744,69 @@ _timelines:
social: "ソーシャル"
global: "グローバル"
_rooms:
roomOf: "{user}のルーム"
addFurniture: "家具を置く"
translate: "移動"
rotate: "回転"
exit: "戻る"
remove: "しまう"
clear: "片付け"
clearConfirm: "全ての家具をしまいますか?"
leaveConfirm: "未保存の変更があります、移動しますか?"
chooseImage: "画像を選択"
roomType: "部屋のタイプ"
carpetColor: "床の色"
_roomType:
default: "デフォルト"
washitsu: "和室"
_furnitures:
milk: "牛乳パック"
bed: "ベッド"
low-table: "ローテーブル"
desk: "デスク"
chair: "チェア"
chair2: "チェア2"
fan: "換気扇"
pc: "パソコン"
plant: "観葉植物"
plant2: "観葉植物2"
eraser: "消しゴム"
pencil: "鉛筆"
pudding: "プリン"
cardboard-box: "段ボール箱"
cardboard-box2: "段ボール箱2"
cardboard-box3: "段ボール箱3"
book: "本"
book2: "本2"
piano: "ピアノ"
facial-tissue: "ティッシュボックス"
server: "サーバー"
moon: "月"
corkboard: "コルクボード"
mousepad: "マウスパッド"
monitor: "モニター"
keyboard: "キーボード"
carpet-stripe: "カーペット(縞)"
mat: "マット"
color-box: "カラーボックス"
wall-clock: "壁掛け時計"
photoframe: "額縁"
cube: "キューブ"
tv: "テレビ"
pinguin: "ピンギン"
rubik-cube: "ルービックキューブ"
poster-h: "ポスター(横長)"
poster-v: "ポスター(縦長)"
sofa: "ソファ"
spiral: "螺旋階段"
bin: "ゴミ箱"
cup-noodle: "カップ麺"
holo-display: "ホログラフィックディスプレイ"
energy-drink: "エナジードリンク"
doll-ai: "藍ちゃん人形"
banknote: "札束"
_pages:
newPage: "ページの作成"
editPage: "ページの編集"
@ -778,6 +858,8 @@ _pages:
post: "投稿フォーム"
_post:
text: "内容"
attachCanvasImage: "キャンバスの画像を添付する"
canvasId: "キャンバスID"
textInput: "テキスト入力"
_textInput:
@ -1017,3 +1099,22 @@ _pages:
enviromentVariables: "環境変数"
pageVariables: "ページ要素"
argVariables: "入力スロット"
_relayStatus:
requesting: "承認待ち"
accepted: "承認済み"
rejected: "拒否済み"
_notification:
fileUploaded: "ファイルがアップロードされました"
youGotMention: "{name}からのメンション"
youGotReply: "{name}からのリプライ"
youGotQuote: "{name}による引用"
youRenoted: "{name}がRenoteしました"
youGotPoll: "{name}が投票しました"
youGotMessagingMessageFromUser: "{name}からのチャットがあります"
youGotMessagingMessageFromGroup: "{name}のチャットがあります"
youWereFollowed: "フォローされました"
youReceivedFollowRequest: "フォローリクエストが来ました"
yourFollowRequestAccepted: "フォローリクエストが承認されました"
youWereInvitedToGroup: "グループに招待されました"

View File

@ -35,19 +35,38 @@ unpin: "ピン留めやめる"
copyContent: "内容をコピー"
copyLink: "リンクをコピー"
delete: "ほかす"
deleteAndEdit: "ほかして直す"
deleteAndEditConfirm: "このートをほかしてもっかい直すこのートへのリアクション、Remote、返信も全部消えんで"
addToList: "リストに入れたる"
sendMessage: "メッセージを送る"
copyUsername: "ユーザー名をコピー"
reply: "返す"
loadMore: "もっとあるやろ!"
youGotNewFollower: "フォローされたで"
receiveFollowRequest: "フォローリクエストされたで"
followRequestAccepted: "フォローが承認されたで"
mentions: "あんた宛て"
directNotes: "ダイレクト投稿"
importAndExport: "インポートとエクスポート"
import: "インポート"
export: "エクスポート"
files: "ファイル"
download: "ダウンロード"
driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付したノートも消えてまうで。"
unfollowConfirm: "{name}のフォローを解除してもええんか?"
exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。"
importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。"
lists: "リスト"
noLists: "リストはあらへん"
note: "ノート"
notes: "ノート"
following: "フォロー"
followers: "フォロワー"
followsYou: "フォローされとるで"
createList: "リスト作る"
manageLists: "リストの管理"
error: "問題が発生してん"
retry: "もっぺんやってみる"
enterListName: "リスト名を入れてや"
privacy: "プライバシーってなんや?オカンの年齢か?"
makeFollowManuallyApprove: "他人のフォローは許可してからや!"
@ -55,13 +74,20 @@ defaultNoteVisibility: "もとからの公開範囲"
follow: "フォロー"
followRequest: "フォロー許してくれや!言うてみる"
followRequests: "フォロー許してくれや!"
unfollow: "フォローやめる"
followRequestPending: "フォロー許してくれるん待っとる"
enterEmoji: "絵文字を入れてや"
renote: "Renote"
unrenote: "Renoteやめる"
quote: "引用"
pinnedNote: "ピン留めされたノート"
you: "あんた"
clickToShow: "押してみ、見せたるわ"
sensitive: "見たらあかんで"
add: "増やす"
reaction: "リアクション"
reactionSettingDescription: "リアクションピッカーに出しとくリアクションを選んでや。"
rememberNoteVisibility: "公開範囲覚えといて"
attachCancel: "くっつけるのやめよか"
markAsSensitive: "ちょっと見せられへんわ"
unmarkAsSensitive: "別にええんじゃね?"
@ -72,45 +98,264 @@ block: "ブロック"
unblock: "ブロックやめたる"
suspend: "凍結"
unsuspend: "溶かす"
blockConfirm: "ブロックしてしもうてええか?"
unblockConfirm: "ブロックすんのやめるけどええか?"
suspendConfirm: "凍結してしもうてええか?"
unsuspendConfirm: "解凍するけどええか?"
selectList: "リストを選ぶ"
customEmojis: "カスタム絵文字"
emojiName: "絵文字名"
emojiUrl: "絵文字画像URL"
addEmoji: "絵文字を追加"
settingGuide: "ええ感じの設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定をチャラにすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されへんので通信量が増加します。"
flagAsBot: "Botやでと言っとく"
flagAsCat: "Catやでと言っとく"
autoAcceptFollowed: "フォローしとるユーザーからのフォロリクは全部勝手にええでって言うで"
addAcount: "アカウント追加"
loginFailed: "ログインに失敗してん"
showOnRemote: "リモートで見る"
general: "全般"
wallpaper: "壁紙"
setWallpaper: "壁紙を設定"
removeWallpaper: "壁紙ほかす"
searchWith: "検索: {q}"
youHaveNoLists: "リストはあらへん"
followConfirm: "{name}をフォローしてええか?"
proxyAccount: "プロキシアカウント"
proxyAccountDescription: "プロキシアカウントは、代わりにフォローしてくれるアカウントや。例えば、551に豚まんが無いときやったり、ユーザーがリモートユーザーをアカウントに入れたとき、リストに入れられたユーザーが誰からもフォローされてないと寂しいやん。寂しいし、アクティビティも配達されへんから、プロキシアカウントがフォローしてくれるで。ええやつやん…"
host: "ホスト"
selectUser: "ユーザーを選ぶ"
recipient: "宛先"
annotation: "注釈"
federation: "連合"
instances: "インスタンス"
registeredAt: "一見さんになった日"
latestRequestSentAt: "ちょっと前のリクエスト送信"
latestRequestReceivedAt: "ちょっと前のリクエスト受信"
latestStatus: "ちょっと前のステータス"
storageUsage: "ストレージ使うた量"
charts: "チャート"
perHour: "1時間ごと"
perDay: "1日ごと"
stopActivityDelivery: "アクティビティの配送をやめる"
blockThisInstance: "このインスタンスをブロック"
operations: "操作"
software: "ソフトウェア"
version: "バージョン"
metadata: "メタデータ"
withNFiles: "{n}個のファイル"
monitor: "モニター"
jobQueue: "ジョブキュー"
cpuAndMemory: "CPUとメモリ"
network: "ネットワーク"
disk: "ディスク"
instanceInfo: "インスタンス情報"
statistics: "統計"
clearQueue: "キューにさいなら"
clearQueueConfirmTitle: "キューをクリアしまっか?"
clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。"
clearCachedFiles: "キャッシュにさいなら"
clearCachedFilesConfirm: "キャッシュされとるリモートファイルを全部削除しまっか?"
blockedInstances: "インスタンスブロック"
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。"
muteAndBlock: "ミュートとブロック"
mutedUsers: "ミュートしたユーザー"
blockedUsers: "ブロックしたユーザー"
noUsers: "ユーザーはおらへん"
editProfile: "プロフィールをいじる"
noteDeleteConfirm: "このノートを削除しまっか?"
pinLimitExceeded: "これ以上ピン留めできひん"
intro: "Misskeyのインストールが完了してん管理者アカウントを作ってや。"
done: "でけた"
processing: "処理しとる"
preview: "プレビュー"
default: "デフォルト"
noCustomEmojis: "絵文字はあらへん"
customEmojisOfRemote: "リモートの絵文字"
noJobs: "ジョブはあらへん"
federating: "連合しとる"
blocked: "ブロックしとる"
suspended: "配信せぇへん"
all: "みな"
subscribing: "購読しとる"
publishing: "配信しとる"
notResponding: "応答してへんで"
instanceFollowing: "インスタンスのフォロー"
instanceFollowers: "インスタンスのフォロワー\n"
instanceUsers: "インスタンスのユーザー"
changePassword: "パスワード変える"
security: "セキュリティ"
retypedNotMatch: "そやないねん。"
currentPassword: "今のパスワード"
newPassword: "今度のパスワード"
newPasswordRetype: "今度のパスワード(もっぺん入れて)"
attachFile: "ファイルくっつけて"
more: "他ないんか!"
featured: "ハイライト"
usernameOrUserId: "ユーザー名かユーザーID"
noSuchUser: "ユーザーが見つからへんで"
lookup: "見てきて"
announcements: "これ知っといてな"
imageUrl: "画像URL"
remove: "ほかす"
removed: "削除したで!"
removeAreYouSure: "「{x}」はなおしてしもてええか?"
saved: "保存したで!"
messaging: "チャット"
upload: "アップロード"
fromDrive: "ドライブから"
fromUrl: "URLから"
uploadFromUrl: "URLアップロード"
uploadFromUrlDescription: "このURLのファイルをアップロードしたいねん"
uploadFromUrlRequested: "アップロードしたい言うといたで"
uploadFromUrlMayTakeTime: "アップロード終わるんにちょい時間かかるかもしれへんわ。"
explore: "みつける"
games: "Misskey Games"
messageRead: "もう読んだ"
noMoreHistory: "これより過去の履歴はあらへんで"
startMessaging: "チャットやるで"
nUsersRead: "{n}人が読んでもうた"
agreeTo: "{0}はええで"
tos: "利用規約"
start: "始める"
home: "ホーム"
remoteUserCaution: "リモートユーザーやから、ちゃんとした情報とちゃうで。"
activity: "アクティビティ"
images: "画像"
birthday: "生まれた日"
yearsOld: "{age}歳"
registeredDate: "始めた日"
location: "場所"
theme: "テーマ"
themeForLightMode: "ライトモードではこのテーマつこて"
themeForDarkMode: "ダークモードではこのテーマつこて"
light: "ライト"
dark: "ダーク"
lightThemes: "デイゲーム"
darkThemes: "ナイトゲーム"
syncDeviceDarkMode: "試合開始時間はデバイスのダークモードと一緒や"
drive: "ドライブ"
fileName: "ファイル名"
selectFile: "ファイル選んでや"
selectFiles: "ファイル選んでや"
selectFolder: "フォルダ選んでや"
selectFolders: "フォルダ選んでや"
renameFile: "ファイル名をいらう"
folderName: "フォルダー名"
createFolder: "フォルダー作る"
renameFolder: "フォルダー名を変える"
deleteFolder: "フォルダーを消してまう"
addFile: "ファイルを追加"
emptyDrive: "ドライブにはなんも残っとらん"
emptyFolder: "ふぉろだーにはなんも残っとらん"
unableToDelete: "消そうおもってんけどな、あかんかったわ"
inputNewFileName: "今度のファイル名は何にするん?"
inputNewFolderName: "今度のフォルダ名は何にするん?"
circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
hasChildFilesOrFolders: "このフォルダ、まだなんか入っとるから消されへん"
copyUrl: "URLをコピー"
rename: "名前を変えるで"
avatar: "アイコン"
banner: "バナー"
nsfw: "見たらあかんで"
disconnectedFromServer: "サーバーが機嫌悪いねん"
reload: "リロード"
doNothing: "何もせんとく"
reloadConfirm: "リロードしてええか?"
watch: "ウォッチ"
unwatch: "ウォッチやめる"
accept: "ええで"
reject: "あかん"
normal: "ええ感じ"
instanceName: "インスタンス名"
instanceDescription: "インスタンスの紹介"
maintainerName: "管理者の名前"
maintainerEmail: "管理者のメールアドレス"
tosUrl: "利用規約のURL"
thisYear: "今年"
thisMonth: "今月"
today: "今日"
dayX: "{day}日"
monthX: "{month}月"
yearX: "{year}年"
pages: "ページ"
integration: "つないで"
connectSerice: "つなげる"
disconnectSerice: "切ってまう"
enableLocalTimeline: "ローカルタイムラインを使えるようにする"
enableGlobalTimeline: "グローバルタイムラインを使えるようにする"
disablingTimelinesInfo: "ここらへんのタイムラインを使えんようにしてしもても、管理者とモデレーターは使えるままになってるで、そうやなかったら不便やからな。"
registration: "登録"
enableRegistration: "一見さんでも誰でもいらっしゃ~い"
invite: "来てや"
proxyRemoteFiles: "リモートのファイルをプロキシする"
proxyRemoteFilesDescription: "この設定を入れると、保存しとらんかったり、お腹いっぱいになってしもたせいで保存できんかったリモートファイルをローカルでプロキシして、サムネイル作ってもらうことができるで。サーバーの腹具合には影響せんけどな。"
driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量"
driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量"
inMb: "メガバイト単位"
avoidMultiCaptchaConfirm: "ぎょうさんのCaptchaをつこてしまうと、仲良うせんことがあるんや。他のCaptchaをなおしとこか別にキャンセルしてもろうたらCaptchaは消されへんで済むけど知らんで。"
antennas: "アンテナ"
manageAntennas: "アンテナいじる"
name: "名前"
antennaSource: "受信ソース(このソースは食われへん)"
antennaKeywords: "受信キーワード"
antennaExcludeKeywords: "除外キーワード"
antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や"
notifyAntenna: "新しいノートを追加すんで"
withFileAntenna: "なんか添付されたノートだけ"
serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorkerをつこて"
antennaUsersDescription: "ユーザー名を改行で区切ったってな"
caseSensitive: "大文字と小文字は別もんや"
withReplies: "返信も入れたって"
connectedTo: "次のアカウントに繋がっとるで"
notesAndReplies: "投稿と返信"
withFiles: "ファイル付いとる"
silence: "サイレンス"
silenceConfirm: "サイレンスしよか?"
unsilence: "サイレンスやめるで"
unsilenceConfirm: "サイレンスやめよか?"
popularUsers: "人気のユーザー"
recentlyUpdatedUsers: "ちょっと前に投稿したばっかりのユーザー"
recentlyRegisteredUsers: "ちょっと前に始めたばっかりのユーザー"
recentlyDiscoveredUsers: "最近見っけたユーザー"
exploreUsersCount: "{count}もユーザーおるで"
exploreFediverse: "Fediverseを探ってみる"
popularTags: "人気のタグ"
userList: "リスト"
about: "情報"
aboutMisskey: "Misskeyってなんや"
aboutMisskeyText: "Misskeyはsyuiloいう人が2014年からずっと作ってはる、オープンソースなソフトウェアや。"
misskeyMembers: "今んとここんだけのメンバーが作って、メンテナンスしてはる:"
misskeySource: "ソースコードはこっから見てな:"
misskeyTranslation: "Misskeyの翻訳手伝うてくれへん:"
misskeyDonate: "Misskeyにお金あげたら開発のサポートになるで:"
morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰"
patrons: "支援者"
administrator: "管理者"
token: "トークン"
twoStepAuthentication: "二段階認証"
moderator: "モデレーター"
nUsersMentioned: "{n}人が投稿"
securityKey: "セキュリティキー"
securityKeyName: "キーの名前"
registerSecurityKey: "セキュリティキーを登録するで"
lastUsed: "最後につこうた日"
unregister: "登録やめる"
passwordLessLogin: "パスワード無くてもログインできるようにする"
resetPassword: "パスワードをリセット"
newPasswordIs: "今度のパスワードは「{password}」や"
autoReloadWhenDisconnected: "サーバーが調子悪いときには自動でリロードしたる"
notFoundDescription: "指定されたURLに該当するページはあらへんやった。"
close: "さいなら"
joinedGroups: "参加しとるグループ"
invites: "来てや"
_sfx:
note: "ノート"
notification: "通知"
chat: "チャット"
_ago:
unknown: "謎"
future: "未来"
@ -137,6 +382,7 @@ _antennaSources:
_widgets:
notifications: "通知"
timeline: "タイムライン"
activity: "アクティビティ"
_cw:
show: "もっとあるやろ!"
_poll:
@ -144,14 +390,27 @@ _poll:
deadlineTime: "時間"
_visibility:
publicDescription: "みなのユーザーに公開"
home: "ホーム"
followers: "フォロワー"
_profile:
name: "名前"
username: "ユーザー名"
_exportOrImport:
allNotes: "全てのノート"
followingList: "フォロー"
muteList: "ミュート"
blockingList: "ブロック"
userLists: "リスト"
_timelines:
home: "ホーム"
_rooms:
_roomType:
default: "デフォルト"
_furnitures:
monitor: "モニター"
_pages:
blocks:
image: "画像"
script:
categories:
list: "リスト"
@ -170,3 +429,5 @@ _pages:
arg1: "リスト"
types:
array: "リスト"
_notification:
youWereFollowed: "フォローされたで"

View File

@ -63,3 +63,5 @@ _cw:
show: "ಇನ್ನಷ್ಟು ನೋಡು"
_profile:
username: "ಬಳಕೆಹೆಸರು"
_notification:
youWereFollowed: "ಹಿಂಬಾಲಿಸಿದರು"

View File

@ -107,6 +107,7 @@ customEmojis: "커스텀 이모지"
emojiName: "이모지 이름"
emojiUrl: "이모지 URL"
addEmoji: "이모지 추가"
settingGuide: "추천 설정"
cacheRemoteFiles: "리모트 파일을 캐시"
cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다."
flagAsBot: "나는 봇입니다"
@ -239,6 +240,8 @@ drive: "드라이브"
fileName: "파일명"
selectFile: "파일 선택"
selectFiles: "파일 선택"
selectFolder: "폴더 선택"
selectFolders: "폴더 선택"
renameFile: "파일 이름 변경"
folderName: "폴더명"
createFolder: "폴더 만들기"
@ -297,10 +300,15 @@ bannerUrl: "배너 이미지 URL"
basicInfo: "기본 정보"
pinnedUsers: "고정된 유저"
pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha 활성화"
hcaptchaSiteKey: "사이트 키"
hcaptchaSecretKey: "시크릿 키"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA 활성화"
recaptchaSiteKey: "사이트 키"
recaptchaSecretKey: "시크릿 키"
avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다."
antennas: "안테나"
manageAntennas: "안테나 관리"
name: "이름"
@ -352,8 +360,6 @@ unregister: "등록 해제"
passwordLessLogin: "비밀번호 없이 로그인"
resetPassword: "비밀번호 재설정"
newPasswordIs: "새로운 비밀번호는 \"{password}\" 입니다"
post: "작성"
posted: "게시하였습니다"
autoReloadWhenDisconnected: "서버와의 연결이 끊기면 자동 새로고침"
autoNoteWatch: "노트를 자동으로 지켜보기"
autoNoteWatchDescription: "리액션하거나 답글을 남긴 다른 유저의 노트에 대한 알림을 받습니다."
@ -492,6 +498,14 @@ removeAllFollowing: "모든 팔로잉 해제"
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
userSuspended: "이 계정은 정지된 상태입니다."
userSilenced: "이 계정은 사일런스된 상태입니다."
sidebar: "사이드바"
divider: "구분선"
addItem: "항목 추가"
rooms: "방"
relays: "릴레이"
addRelay: "릴레이 추가"
inboxUrl: "Inbox 주소"
addedRelays: "추가된 릴레이"
_theme:
explore: "테마 찾아보기"
install: "테마 설치"
@ -706,6 +720,68 @@ _timelines:
local: "로컬"
social: "소셜"
global: "글로벌"
_rooms:
roomOf: "{user}의 방"
addFurniture: "가구를 배치"
translate: "이동"
rotate: "회전"
exit: "뒤로"
remove: "치우기"
clear: "모두 치우기"
clearConfirm: "정말 방 안의 모든 가구를 치우시겠습니까?"
leaveConfirm: "저장되지 않은 변경 사항이 있습니다. 정말 나가시겠습니까?"
chooseImage: "이미지 선택"
roomType: "방 스타일"
carpetColor: "바닥 색상"
_roomType:
default: "기본값"
washitsu: "일본식"
_furnitures:
milk: "우유 팩"
bed: "침대"
low-table: "낮은 테이블"
desk: "책상"
chair: "의자"
chair2: "의자 2"
fan: "환기구"
pc: "컴퓨터"
plant: "관엽식물"
plant2: "관엽식물 2"
eraser: "지우개"
pencil: "연필"
pudding: "푸딩"
cardboard-box: "골판지 상자"
cardboard-box2: "골판지 상자 2"
cardboard-box3: "골판지 상자 3"
book: "책"
book2: "책 2"
piano: "피아노"
facial-tissue: "휴지 상자"
server: "서버"
moon: "달"
corkboard: "게시판"
mousepad: "마우스 패드"
monitor: "모니터"
keyboard: "키보드"
carpet-stripe: "카페트 (줄무늬)"
mat: "매트"
color-box: "책장"
wall-clock: "벽걸이 시계"
photoframe: "액자"
cube: "큐브"
tv: "TV"
pinguin: "펭귄"
rubik-cube: "루빅스 큐브"
poster-h: "포스터 (가로)"
poster-v: "포스터 (세로)"
sofa: "소파"
spiral: "나선형 계단"
bin: "휴지통"
cup-noodle: "컵라면"
holo-display: "홀로그램"
energy-drink: "에너지 드링크"
doll-ai: "아이쨩 인형"
banknote: "지폐뭉치"
_pages:
newPage: "페이지 만들기"
editPage: "페이지 수정"
@ -755,6 +831,8 @@ _pages:
post: "글 입력란"
_post:
text: "내용"
attachCanvasImage: "캔버스의 이미지와 함께 게시하기"
canvasId: "캔버스 ID"
textInput: "텍스트 입력"
_textInput:
name: "변수명"
@ -985,3 +1063,10 @@ _pages:
enviromentVariables: "환경 변수"
pageVariables: "페이지 요소"
argVariables: "입력 슬롯"
_relayStatus:
requesting: "대기 중"
accepted: "승인됨"
rejected: "거절됨"
_notification:
youWereFollowed: "새로운 팔로워가 있습니다"
youWereInvitedToGroup: "그룹에 초대되었습니다"

3
locales/ug-CN.yml Normal file
View File

@ -0,0 +1,3 @@
---
_lang_: "ياپونچە"
search: "ئىزدەش"

View File

@ -36,7 +36,7 @@ copyContent: "复制内容"
copyLink: "复制链接"
delete: "删除"
deleteAndEdit: "删除和编辑"
deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应,转和回复也将被删除。"
deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应,转和回复也将被删除。"
addToList: "添加至列表"
sendMessage: "发送"
copyUsername: "复制用户名"
@ -107,6 +107,7 @@ customEmojis: "自定义Emoji"
emojiName: "Emoji 名称"
emojiUrl: "emoji 地址"
addEmoji: "添加Emoji"
settingGuide: "推荐配置"
cacheRemoteFiles: "远程文件缓存"
cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。"
flagAsBot: "这个账户是Bot"
@ -209,7 +210,7 @@ fromUrl: "从 URL"
uploadFromUrl: "从网址上传"
uploadFromUrlDescription: "要上传的文件的URL"
uploadFromUrlRequested: "请求上传"
uploadFromUrlMayTakeTime: "上传完成可能需要一些时间。"
uploadFromUrlMayTakeTime: "上传可能需要一些时间完成。"
explore: "发现"
games: "Misskey游戏"
messageRead: "已读"
@ -228,17 +229,19 @@ yearsOld: "{age}岁"
registeredDate: "注册于"
location: "位置"
theme: "主题"
themeForLightMode: "在轻便模式下使用的主题"
themeForDarkMode: "在黑暗模式下使用的主题"
themeForLightMode: "在浅色模式下使用的主题"
themeForDarkMode: "在深色模式下使用的主题"
light: "浅色"
dark: "深色"
lightThemes: "亮色主题"
darkThemes: "暗色主题"
syncDeviceDarkMode: "将黑暗模式与设备设置同步"
syncDeviceDarkMode: "将深色模式与设备设置同步"
drive: "网盘"
fileName: "文件名称"
selectFile: "选择文件"
selectFiles: "选择文件"
selectFolder: "选择文件夹"
selectFolders: "选择多个文件夹"
renameFile: "重命名文件"
folderName: "文件夹名称"
createFolder: "创建文件夹"
@ -265,6 +268,7 @@ watch: "关注"
unwatch: "取消关注"
accept: "允许"
reject: "拒绝"
normal: "正常"
instanceName: "实例名称"
instanceDescription: "实例介绍"
maintainerName: "管理员名称"
@ -296,10 +300,15 @@ bannerUrl: "Banner URL"
basicInfo: "基本信息"
pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
hcaptcha: "hCaptcha"
enableHcaptcha: "启用 hCaptcha"
hcaptchaSiteKey: "网站密钥"
hcaptchaSecretKey: "密钥"
recaptcha: "reCAPTCHA"
enableRecaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)"
recaptchaSiteKey: "网站密钥"
recaptchaSecretKey: "reCAPTCHA 密钥"
avoidMultiCaptchaConfirm: "使用多种验证方式可能会造成干扰,您要禁用其他验证方式吗?您可以按“取消”按钮,仍然保持启用多种验证方式。"
antennas: "天线"
manageAntennas: "天线管理"
name: "名称"
@ -319,6 +328,7 @@ notesAndReplies: "帖子与回复"
withFiles: "附件"
silence: "禁言"
silenceConfirm: "确认要禁言吗?"
unsilence: "解除禁言"
unsilenceConfirm: "要解除禁言吗?"
popularUsers: "热门用户"
recentlyUpdatedUsers: "最近投稿用户"
@ -350,8 +360,6 @@ unregister: "删除账户"
passwordLessLogin: "无密码登录"
resetPassword: "重置密码"
newPasswordIs: "新的密码是「{password}」"
post: "投稿"
posted: "已投稿"
autoReloadWhenDisconnected: "断开连接时自动重新加载"
autoNoteWatch: "自动关注帖子"
autoNoteWatchDescription: "让您能够收到关于「反应」和回复其他用户的帖子的通知。"
@ -405,15 +413,15 @@ strongPassword: "密码强度:强"
passwordMatched: "密码一致"
passwordNotMatched: "密码不一致"
signinWith: "以{x}登录"
signinFailed: "无法登录请检查您的用户名和密码。"
tapSecurityKey: "点击安全密钥"
signinFailed: "无法登录请检查您的用户名和密码。"
tapSecurityKey: "轻触硬件安全密钥"
or: "或者"
uiLanguage: "显示语言"
groupInvited: "群组招待"
aboutX: "关于 {x}"
useOsNativeEmojis: "使用OS原生Emoji"
youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入或者创建群组"
youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入一个现有的群组,或者创建群组"
noHistory: "没有历史记录"
disableAnimatedMfm: "禁用MFM动画"
doing: "正在进行"
@ -447,13 +455,15 @@ objectStorageBaseUrlDesc: "供参考的URL。如果使用CDN或Proxy则其URL
objectStorageBucket: "存储桶"
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
objectStoragePrefix: "前缀"
objectStoragePrefixDesc: "将存储在此前缀的目录下。"
objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
objectStorageEndpoint: "端点"
objectStorageEndpointDesc: "S3默认情况下为空否则请为每个服务指定端点。 指定为“<host>”或“<host>:<port>”。"
objectStorageRegion: "可用区"
objectStorageRegionDesc: "指定一个可用区例如“xx-east-1”。 如果您的对象存储服务没有可用区概念请将其留空或填写“us-east-1”。"
objectStorageUseSSL: "使用SSL"
objectStorageUseSSLDesc: "如果不使用https进行API连接请关闭。"
objectStorageUseProxy: "使用代理"
objectStorageUseProxyDesc: "如果您不使用代理进行API连接请将其关闭。"
serverLogs: "服务器日志"
deleteAll: "删除全部"
showFixedPostForm: "在时间线顶部显示帖子表单"
@ -476,7 +486,29 @@ state: "状态"
sort: "排序"
ascendingOrder: "升序"
descendingOrder: "降序"
scratchpad: "暂存器"
scratchpadDescription: "暂存器为AiScript提供了实验环境。您可以编写代码以与Misskey交互运行它并查看结果。"
output: "输出"
script: "脚本"
disablePagesScript: "禁用页面脚本"
updateRemoteUser: "更新远程用户信息"
deleteAllFiles: "删除所有文件"
deleteAllFilesConfirm: "要删除所有文件吗?"
removeAllFollowing: "取消所有关注"
removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存在时执行。"
userSuspended: "该用户已被冻结。"
userSilenced: "该用户已被禁言。"
sidebar: "侧边栏"
divider: "分割线"
addItem: "添加项"
rooms: "房间"
relays: "中继"
addRelay: "添加中继"
inboxUrl: "Inbox URL"
addedRelays: "已添加的中继"
serviceworkerInfo: "您需要启用推送通知"
deletedNote: "已删除的帖子"
invisibleNote: "隐藏的帖子"
_theme:
explore: "寻找主题"
install: "安装主题"
@ -691,6 +723,68 @@ _timelines:
local: "本地"
social: "社交"
global: "全局"
_rooms:
roomOf: "{user}的房间"
addFurniture: "放置家具"
translate: "移动"
rotate: "旋转"
exit: "返回"
remove: "移除"
clear: "清理"
clearConfirm: "是否清除所有家具?"
leaveConfirm: "有尚未保存的修改。是否离开?"
chooseImage: "选择图片"
roomType: "房间类型"
carpetColor: "地板颜色"
_roomType:
default: "默认"
washitsu: "和式房间"
_furnitures:
milk: "牛奶纸箱"
bed: "床"
low-table: "矮桌"
desk: "书桌"
chair: "椅子"
chair2: "椅子2"
fan: "换气扇"
pc: "电脑"
plant: "观叶植物"
plant2: "观叶植物2"
eraser: "橡皮擦"
pencil: "铅笔"
pudding: "布丁"
cardboard-box: "纸箱"
cardboard-box2: "纸箱2"
cardboard-box3: "纸箱3"
book: "书"
book2: "书2"
piano: "钢琴"
facial-tissue: "纸巾盒"
server: "服务器"
moon: "月亮"
corkboard: "软木板"
mousepad: "鼠标垫"
monitor: "显示器"
keyboard: "键盘"
carpet-stripe: "地毯(条纹)"
mat: "垫子"
color-box: "收纳柜"
wall-clock: "挂钟"
photoframe: "相框"
cube: "立方体"
tv: "电视"
pinguin: "企鹅君"
rubik-cube: "魔方"
poster-h: "海报(横向)"
poster-v: "海报(纵向)"
sofa: "沙发"
spiral: "螺旋楼梯"
bin: "垃圾箱"
cup-noodle: "杯面"
holo-display: "全息显示器"
energy-drink: "能量饮料"
doll-ai: "小蓝的玩偶"
banknote: "钞票"
_pages:
newPage: "创建页面"
editPage: "编辑页面"
@ -740,6 +834,8 @@ _pages:
post: "投稿窗口"
_post:
text: "内容"
attachCanvasImage: "附加画布图像"
canvasId: "画布ID"
textInput: "文本输入"
_textInput:
name: "变量名"
@ -755,6 +851,11 @@ _pages:
name: "变量名"
text: "标题"
default: "默认值"
canvas: "画布"
_canvas:
id: "画布ID"
width: "宽度"
height: "高度"
switch: "开关"
_switch:
name: "变量名"
@ -780,6 +881,9 @@ _pages:
message: "按下时显示的消息"
variable: "发送的变量"
no-variable: "空"
callAiScript: "调用AiScript"
_callAiScript:
functionName: "函数名"
radioButton: "选择项"
_radioButton:
name: "变量名"
@ -940,6 +1044,7 @@ _pages:
_splitStrByLine:
arg1: "文本"
ref: "变量"
aiScriptVar: "AiScript变量"
fn: "函数"
_fn:
slots: "槽函数"
@ -961,3 +1066,20 @@ _pages:
enviromentVariables: "环境变量"
pageVariables: "页面元素"
argVariables: "输入变量"
_relayStatus:
requesting: "待批准"
accepted: "已批准"
rejected: "已拒绝"
_notification:
fileUploaded: "文件已上传"
youGotMention: "来自{name}的提及"
youGotReply: "来自{name}的回复"
youGotQuote: "来自{name}的引用"
youRenoted: "来自{name}的转发"
youGotPoll: "来自{name}的投票"
youGotMessagingMessageFromUser: "来自{name}的聊天"
youGotMessagingMessageFromGroup: "来自{name}的群聊"
youWereFollowed: "您有新的关注者"
youReceivedFollowRequest: "您有新的关注请求"
yourFollowRequestAccepted: "您的关注请求已通过"
youWereInvitedToGroup: "您有新的群组邀请"

View File

@ -235,6 +235,8 @@ iconUrl: "圖像URL"
bannerUrl: "橫幅圖片URL"
basicInfo: "基本資訊"
pinnedUsers: "置頂用戶"
hcaptchaSiteKey: "網站金鑰"
hcaptchaSecretKey: "金鑰"
recaptcha: "reCAPTCHA"
enableRecaptcha: "啟用 reCAPTCHA"
recaptchaSiteKey: "網站金鑰"
@ -256,8 +258,6 @@ userList: "清單"
passwordLessLogin: "設置無密碼登入"
resetPassword: "重置密碼"
newPasswordIs: "新密碼為「{password}」"
post: "投稿"
posted: "投稿完成"
autoReloadWhenDisconnected: "和伺服器斷線時自動重新載入"
autoNoteWatch: "自動關注筆記"
autoNoteWatchDescription: "收到反應或回覆過的筆記的通知"
@ -369,6 +369,9 @@ _exportOrImport:
userLists: "清單"
_timelines:
home: "首頁"
_rooms:
_furnitures:
monitor: "監視器"
_pages:
script:
categories:
@ -388,3 +391,5 @@ _pages:
arg1: "清單"
types:
array: "清單"
_notification:
youWereFollowed: "您有新的追隨者"

View File

@ -0,0 +1,18 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class hCaptcha1588044505511 implements MigrationInterface {
name = 'hCaptcha1588044505511'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "enableHcaptcha" boolean NOT NULL DEFAULT false`, undefined);
await queryRunner.query(`ALTER TABLE "meta" ADD "hcaptchaSiteKey" character varying(64)`, undefined);
await queryRunner.query(`ALTER TABLE "meta" ADD "hcaptchaSecretKey" character varying(64)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hcaptchaSecretKey"`, undefined);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hcaptchaSiteKey"`, undefined);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableHcaptcha"`, undefined);
}
}

View File

@ -0,0 +1,18 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class pubRelay1589023282116 implements MigrationInterface {
name = 'pubRelay1589023282116'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TYPE "relay_status_enum" AS ENUM('requesting', 'accepted', 'rejected')`, undefined);
await queryRunner.query(`CREATE TABLE "relay" ("id" character varying(32) NOT NULL, "inbox" character varying(512) NOT NULL, "status" "relay_status_enum" NOT NULL, CONSTRAINT "PK_78ebc9cfddf4292633b7ba57aee" PRIMARY KEY ("id"))`, undefined);
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0d9a1738f2cf7f3b1c3334dfab" ON "relay" ("inbox") `, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_0d9a1738f2cf7f3b1c3334dfab"`, undefined);
await queryRunner.query(`DROP TABLE "relay"`, undefined);
await queryRunner.query(`DROP TYPE "relay_status_enum"`, undefined);
}
}

View File

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.33.0",
"version": "12.38.1",
"codename": "indigo",
"repository": {
"type": "git",
@ -24,42 +24,47 @@
"clean": "gulp clean",
"cleanall": "gulp cleanall",
"lint": "tslint 'src/**/*.ts'",
"test": "cross-env TS_NODE_FILES=true gulp test",
"test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_COMPILER_OPTIONS=\"{\\\"target\\\":\\\"es2017\\\",\\\"module\\\":\\\"commonjs\\\",\\\"typeRoots\\\":[\\\"node_modules/@types\\\",\\\"src/@types\\\"]}\" mocha",
"format": "gulp format"
},
"resolutions": {
"https-proxy-agent": "^3.0.0",
"lodash": "^4.17.13"
"chokidar": "^3.3.1",
"constantinople": "^4.0.1",
"core-js": "^3.6.5",
"lodash": "^4.17.15",
"mocha": "^7.1.1"
},
"dependencies": {
"@elastic/elasticsearch": "7.6.1",
"@babel/plugin-transform-runtime": "7.9.6",
"@elastic/elasticsearch": "7.7.1",
"@fortawesome/fontawesome-svg-core": "1.2.28",
"@fortawesome/free-brands-svg-icons": "5.13.0",
"@fortawesome/free-regular-svg-icons": "5.13.0",
"@fortawesome/free-solid-svg-icons": "5.13.0",
"@fortawesome/vue-fontawesome": "0.1.9",
"@juggle/resize-observer": "3.1.3",
"@koa/cors": "3.0.0",
"@koa/cors": "3.1.0",
"@koa/multer": "2.0.2",
"@koa/router": "8.0.8",
"@syuilo/aiscript": "0.3.1",
"@sinonjs/fake-timers": "6.0.1",
"@syuilo/aiscript": "0.6.1",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.12.1",
"@types/bull": "3.13.0",
"@types/cbor": "5.0.0",
"@types/dateformat": "3.0.1",
"@types/double-ended-queue": "2.1.1",
"@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.1",
"@types/gulp": "4.0.6",
"@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31",
"@types/is-url": "1.2.28",
"@types/js-yaml": "3.12.3",
"@types/jsdom": "16.2.0",
"@types/js-yaml": "3.12.4",
"@types/jsdom": "16.2.3",
"@types/jsonld": "1.5.1",
"@types/katex": "0.11.0",
"@types/koa": "2.11.3",
"@types/koa-bodyparser": "4.3.0",
"@types/koa-compress": "2.0.9",
"@types/koa-cors": "0.0.0",
"@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1",
@ -69,128 +74,126 @@
"@types/koa__cors": "3.0.1",
"@types/koa__multer": "2.0.1",
"@types/koa__router": "8.0.2",
"@types/lolex": "5.1.0",
"@types/markdown-it": "0.0.9",
"@types/markdown-it": "10.0.1",
"@types/mocha": "7.0.2",
"@types/node": "13.11.0",
"@types/node-fetch": "2.5.5",
"@types/node": "14.0.5",
"@types/node-fetch": "2.5.7",
"@types/nodemailer": "6.4.0",
"@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1",
"@types/parse5": "5.0.2",
"@types/parsimmon": "1.10.1",
"@types/parse5": "5.0.3",
"@types/parsimmon": "1.10.2",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/qrcode": "1.3.4",
"@types/random-seed": "0.3.3",
"@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.17",
"@types/redis": "2.8.21",
"@types/rename": "1.0.1",
"@types/request-stats": "3.0.0",
"@types/rimraf": "2.0.3",
"@types/rimraf": "3.0.0",
"@types/seedrandom": "2.4.28",
"@types/sharp": "0.24.0",
"@types/showdown": "1.9.3",
"@types/sharp": "0.25.0",
"@types/sinonjs__fake-timers": "6.0.1",
"@types/speakeasy": "2.0.5",
"@types/systeminformation": "3.54.1",
"@types/tinycolor2": "1.4.2",
"@types/tmp": "0.1.0",
"@types/uuid": "7.0.2",
"@types/tmp": "0.2.0",
"@types/uuid": "8.0.0",
"@types/web-push": "3.3.0",
"@types/webpack": "4.41.10",
"@types/webpack-stream": "3.2.10",
"@types/webpack": "4.41.13",
"@types/webpack-stream": "3.2.11",
"@types/websocket": "1.0.0",
"@types/ws": "7.2.3",
"@typescript-eslint/parser": "2.26.0",
"@types/ws": "7.2.4",
"@typescript-eslint/parser": "2.33.0",
"abort-controller": "3.0.0",
"animejs": "3.1.0",
"apexcharts": "3.17.1",
"apexcharts": "3.19.2",
"autobind-decorator": "2.4.0",
"autosize": "4.0.2",
"autwh": "0.1.0",
"aws-sdk": "2.653.0",
"aws-sdk": "2.683.0",
"bcryptjs": "2.4.3",
"bull": "3.13.0",
"bull": "3.14.0",
"cafy": "15.2.1",
"cbor": "5.0.1",
"chai": "4.2.0",
"cbor": "5.0.2",
"chalk": "4.0.0",
"chart.js": "2.9.3",
"cli-highlight": "2.1.4",
"commander": "4.1.1",
"content-disposition": "0.5.3",
"core-js": "3.6.5",
"crc-32": "1.2.0",
"css-loader": "3.4.2",
"css-loader": "3.5.3",
"cssnano": "4.1.10",
"dateformat": "3.0.3",
"deep-entries": "3.1.0",
"diskusage": "1.1.3",
"double-ended-queue": "2.1.0-0",
"escape-regexp": "0.0.1",
"eslint": "6.8.0",
"eslint-plugin-vue": "6.2.2",
"eventemitter3": "4.0.0",
"eventemitter3": "4.0.4",
"feed": "4.1.0",
"fibers": "4.0.2",
"file-type": "14.1.4",
"fibers": "5.0.0",
"file-type": "14.5.0",
"fluent-ffmpeg": "2.1.2",
"glob": "7.1.6",
"gulp": "4.0.2",
"gulp-clean-css": "4.3.0",
"gulp-dart-sass": "1.0.0",
"gulp-mocha": "7.0.2",
"gulp-dart-sass": "1.0.2",
"gulp-rename": "2.0.0",
"gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.5",
"gulp-terser": "1.2.0",
"gulp-tslint": "8.1.4",
"gulp-typescript": "5.0.1",
"gulp-typescript": "6.0.0-alpha.1",
"hard-source-webpack-plugin": "0.13.1",
"hcaptcha": "0.0.1",
"html-minifier": "4.0.0",
"http-proxy-agent": "4.0.1",
"http-signature": "1.3.4",
"https-proxy-agent": "5.0.0",
"idb-keyval": "3.2.0",
"insert-text-at-cursor": "0.3.0",
"is-root": "2.1.0",
"is-svg": "4.2.1",
"js-yaml": "3.13.1",
"js-yaml": "3.14.0",
"jsdom": "16.2.2",
"json5": "2.1.2",
"json5-loader": "3.0.0",
"jsrsasign": "8.0.13",
"json5": "2.1.3",
"json5-loader": "4.0.0",
"jsonld": "3.1.1",
"jsrsasign": "8.0.15",
"katex": "0.11.1",
"koa": "2.11.0",
"koa": "2.12.0",
"koa-bodyparser": "4.3.0",
"koa-compress": "3.0.0",
"koa-favicon": "2.1.0",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.1",
"koa-mount": "4.0.0",
"koa-send": "5.0.0",
"koa-slow": "2.1.0",
"koa-views": "6.2.1",
"koa-views": "6.2.2",
"langmap": "0.0.16",
"lolex": "5.1.2",
"lookup-dns-cache": "2.1.0",
"markdown-it": "10.0.0",
"markdown-it-anchor": "5.2.7",
"mocha": "7.1.1",
"markdown-it": "11.0.0",
"markdown-it-anchor": "5.3.0",
"mocha": "7.2.0",
"moji": "0.5.1",
"ms": "2.1.2",
"multer": "1.4.2",
"nested-property": "1.0.4",
"nested-property": "2.0.0",
"node-fetch": "2.6.0",
"nodemailer": "6.4.6",
"nprogress": "0.2.0",
"object-assign-deep": "0.4.0",
"os-utils": "0.0.14",
"parse5": "5.1.1",
"parse5": "6.0.0",
"parsimmon": "1.13.0",
"pg": "8.0.0",
"pg": "8.2.1",
"portal-vue": "2.1.7",
"portscanner": "2.2.0",
"postcss-loader": "3.0.0",
"prismjs": "1.19.0",
"prismjs": "1.20.0",
"probe-image-size": "5.0.0",
"progress-bar-webpack-plugin": "2.1.0",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "2.0.4",
@ -205,68 +208,68 @@
"redis": "3.0.2",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"regenerator-runtime": "0.13.5",
"rename": "1.0.4",
"request-stats": "3.0.0",
"require-all": "3.0.0",
"rimraf": "3.0.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass": "1.26.3",
"sass": "1.26.5",
"sass-loader": "8.0.2",
"seedrandom": "3.0.5",
"sharp": "0.25.2",
"showdown": "1.9.1",
"showdown-highlightjs-extension": "0.1.2",
"sharp": "0.25.3",
"speakeasy": "2.0.0",
"stringz": "2.1.0",
"style-loader": "1.1.3",
"style-loader": "1.2.1",
"summaly": "2.3.1",
"syslog-pro": "1.0.0",
"systeminformation": "4.23.1",
"systeminformation": "4.26.4",
"syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "2.3.5",
"textarea-caret": "3.1.0",
"three": "0.115.0",
"three": "0.116.1",
"tinycolor2": "1.4.1",
"tmp": "0.1.0",
"ts-loader": "6.2.2",
"ts-node": "8.8.1",
"tslint": "6.1.1",
"tmp": "0.2.1",
"ts-loader": "7.0.4",
"ts-node": "8.10.1",
"tslint": "6.1.2",
"tslint-sonarts": "1.9.0",
"typeorm": "0.2.24",
"typescript": "3.8.3",
"typeorm": "0.2.25",
"typescript": "3.9.3",
"ulid": "2.3.0",
"url-loader": "3.0.0",
"uuid": "7.0.3",
"url-loader": "4.1.0",
"uuid": "8.1.0",
"v-animate-css": "0.0.3",
"v-debounce": "0.1.2",
"vue": "2.6.11",
"vue-color": "2.7.1",
"vue-content-loading": "1.6.0",
"vue-cropperjs": "4.0.1",
"vue-i18n": "8.16.0",
"vue-cropperjs": "4.1.0",
"vue-i18n": "8.17.7",
"vue-json-pretty": "1.6.3",
"vue-loader": "15.9.1",
"vue-loader": "15.9.2",
"vue-marquee-text-component": "1.1.1",
"vue-meta": "2.3.3",
"vue-prism-component": "1.1.1",
"vue-prism-editor": "0.5.1",
"vue-router": "3.1.6",
"vue-prism-component": "1.2.0",
"vue-prism-editor": "0.6.1",
"vue-router": "3.2.0",
"vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.5.0",
"vue-svg-inline-loader-corejs3": "1.5.0",
"vue-template-compiler": "2.6.11",
"vuedraggable": "2.23.2",
"vuex": "3.1.3",
"vuex": "3.4.0",
"vuex-persistedstate": "3.0.1",
"web-push": "3.4.3",
"webpack": "4.42.1",
"web-push": "3.4.4",
"webpack": "5.0.0-beta.16",
"webpack-cli": "3.3.11",
"websocket": "1.0.31",
"ws": "7.2.3",
"ws": "7.3.0",
"xev": "2.0.1"
},
"devDependencies": {
"@types/fluent-ffmpeg": "2.1.12",
"cross-env": "6.0.3"
"@types/chai": "4.2.11",
"@types/fluent-ffmpeg": "2.1.14",
"chai": "4.2.0",
"cross-env": "7.0.2"
}
}

11
src/@types/hcaptcha.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
declare module 'hcaptcha' {
interface IVerifyResponse {
success: boolean;
challenge_ts: string;
hostname: string;
credit?: boolean;
'error-codes'?: unknown[];
}
export function verify(secret: string, token: string): Promise<IVerifyResponse>;
}

View File

@ -19,10 +19,12 @@ declare module 'http-signature' {
clockSkew?: number;
}
interface IParsedSignature {
interface IParsedSignature {
scheme: string;
params: ISignature;
signingString: string;
algorithm: string;
keyId: string;
}
type RequestSignerConstructorOptions =

View File

@ -3,6 +3,7 @@ import * as cluster from 'cluster';
import * as chalk from 'chalk';
import * as portscanner from 'portscanner';
import * as isRoot from 'is-root';
import { getConnection } from 'typeorm';
import Logger from '../services/logger';
import loadConfig from '../config/load';
@ -31,7 +32,7 @@ function greet() {
console.log(chalk.keyword('orange')(' If you like Misskey, please donate to support development. https://www.patreon.com/syuilo'));
console.log('');
console.log(chalk`< ${os.hostname()} {gray (PID: ${process.pid.toString()})} >`);
console.log(chalk`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
}
bootLogger.info('Welcome to Misskey!');
@ -75,13 +76,13 @@ export async function masterMain() {
await spawnWorkers(config.clusterLimit);
}
bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true);
if (!program.noDaemons) {
require('../daemons/server-stats').default();
require('../daemons/queue-stats').default();
require('../daemons/janitor').default();
}
bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true);
}
const runningNodejsVersion = process.version.slice(1).split('.').map(x => parseInt(x, 10));
@ -115,6 +116,8 @@ function showEnvironment(): void {
async function init(): Promise<Config> {
showEnvironment();
await showMachineInfo(bootLogger);
const nodejsLogger = bootLogger.createSubLogger('nodejs');
nodejsLogger.info(`Version ${runningNodejsVersion.join('.')}`);
@ -124,8 +127,6 @@ async function init(): Promise<Config> {
process.exit(1);
}
await showMachineInfo(bootLogger);
const configLogger = bootLogger.createSubLogger('config');
let config;
@ -145,13 +146,17 @@ async function init(): Promise<Config> {
configLogger.succ('Loaded');
const dbLogger = bootLogger.createSubLogger('db');
// Try to connect to DB
try {
bootLogger.info('Connecting database...');
dbLogger.info('Connecting...');
await initDb();
const v = await getConnection().query('SHOW server_version').then(x => x[0].server_version);
dbLogger.succ(`Connected: v${v}`);
} catch (e) {
bootLogger.error('Cannot connect to database', null, true);
bootLogger.error(e);
dbLogger.error('Cannot connect', null, true);
dbLogger.error(e);
process.exit(1);
}

View File

@ -49,44 +49,20 @@
<router-link class="item index" active-class="active" to="/" exact v-else>
<fa :icon="faHome" fixed-width/><span class="text">{{ $store.getters.isSignedIn ? $t('timeline') : $t('home') }}</span>
</router-link>
<template v-if="$store.getters.isSignedIn">
<router-link class="item notifications" active-class="active" to="/my/notifications" ref="notificationButton">
<fa :icon="faBell" fixed-width/><span class="text">{{ $t('notifications') }}</span>
<i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i>
</router-link>
<router-link class="item" active-class="active" to="/my/messaging">
<fa :icon="faComments" fixed-width/><span class="text">{{ $t('messaging') }}</span>
<i v-if="$store.state.i.hasUnreadMessagingMessage"><fa :icon="faCircle"/></i>
</router-link>
<router-link class="item" active-class="active" to="/my/drive">
<fa :icon="faCloud" fixed-width/><span class="text">{{ $t('drive') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/my/follow-requests" v-if="$store.state.i.isLocked">
<fa :icon="faUserClock" fixed-width/><span class="text">{{ $t('followRequests') }}</span>
<i v-if="$store.state.i.hasPendingReceivedFollowRequest"><fa :icon="faCircle"/></i>
</router-link>
<template v-for="item in menu">
<div v-if="item === '-'" class="divider"></div>
<component v-else-if="menuDef[item].show !== false" :is="menuDef[item].to ? 'router-link' : 'button'" class="item _button" :class="item" active-class="active" @click="() => { if (menuDef[item].action) menuDef[item].action() }" :to="menuDef[item].to">
<fa :icon="menuDef[item].icon" fixed-width/><span class="text">{{ $t(menuDef[item].title) }}</span>
<i v-if="menuDef[item].indicated"><fa :icon="faCircle"/></i>
</component>
</template>
<div class="divider"></div>
<router-link class="item" active-class="active" to="/featured">
<fa :icon="faFireAlt" fixed-width/><span class="text">{{ $t('featured') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/explore">
<fa :icon="faHashtag" fixed-width/><span class="text">{{ $t('explore') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/announcements">
<fa :icon="faBroadcastTower" fixed-width/><span class="text">{{ $t('announcements') }}</span>
<i v-if="$store.getters.isSignedIn && $store.state.i.hasUnreadAnnouncement"><fa :icon="faCircle"/></i>
</router-link>
<button class="item _button" @click="search()">
<fa :icon="faSearch" fixed-width/><span class="text">{{ $t('search') }}</span>
</button>
<div class="divider"></div>
<button class="item _button" :class="{ active: $route.path === '/instance' || $route.path.startsWith('/instance/') }" v-if="$store.getters.isSignedIn && ($store.state.i.isAdmin || $store.state.i.isModerator)" @click="oepnInstanceMenu">
<fa :icon="faServer" fixed-width/><span class="text">{{ $t('instance') }}</span>
</button>
<button class="item _button" @click="more">
<fa :icon="faEllipsisH" fixed-width/><span class="text">{{ $t('more') }}</span>
<i v-if="$store.getters.isSignedIn && ($store.state.i.hasUnreadMentions || $store.state.i.hasUnreadSpecifiedNotes)"><fa :icon="faCircle"/></i>
<i v-if="otherNavItemIndicated"><fa :icon="faCircle"/></i>
</button>
<router-link class="item" active-class="active" to="/preferences">
<fa :icon="faCog" fixed-width/><span class="text">{{ $t('settings') }}</span>
@ -141,10 +117,10 @@
</div>
<div class="buttons">
<button class="button nav _button" @click="showNav = true" ref="navButton"><fa :icon="faBars"/><i v-if="$store.getters.isSignedIn && ($store.state.i.hasUnreadSpecifiedNotes || $store.state.i.hasPendingReceivedFollowRequest || $store.state.i.hasUnreadMessagingMessage || $store.state.i.hasUnreadAnnouncement)"><fa :icon="faCircle"/></i></button>
<button class="button nav _button" @click="showNav = true" ref="navButton"><fa :icon="faBars"/><i v-if="navIndicated"><fa :icon="faCircle"/></i></button>
<button v-if="$route.name === 'index'" class="button home _button" @click="top()"><fa :icon="faHome"/></button>
<button v-else class="button home _button" @click="$router.push('/')"><fa :icon="faHome"/></button>
<button v-if="$store.getters.isSignedIn" class="button notifications _button" @click="$router.push('/my/notifications')" ref="notificationButton2"><fa :icon="faBell"/><i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i></button>
<button v-if="$store.getters.isSignedIn" class="button notifications _button" @click="$router.push('/my/notifications')"><fa :icon="faBell"/><i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i></button>
<button v-if="$store.getters.isSignedIn" class="button post _buttonPrimary" @click="post()"><fa :icon="faPencilAlt"/></button>
</div>
@ -156,20 +132,16 @@
<script lang="ts">
import Vue from 'vue';
import { faTerminal, faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faGamepad, faServer, faFileAlt, faSatellite, faInfoCircle, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
import { faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faInfoCircle, faQuestionCircle, faProjectDiagram } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope, faLaugh, faComments } from '@fortawesome/free-regular-svg-icons';
import { ResizeObserver } from '@juggle/resize-observer';
import { v4 as uuid } from 'uuid';
import i18n from './i18n';
import { host, instanceName } from './config';
import { search } from './scripts/search';
import MkToast from './components/toast.vue';
const DESKTOP_THRESHOLD = 1100;
export default Vue.extend({
i18n,
components: {
XClock: () => import('./components/header-clock.vue').then(m => m.default),
MkButton: () => import('./components/ui/button.vue').then(m => m.default),
@ -188,10 +160,13 @@ export default Vue.extend({
searchQuery: '',
searchWait: false,
widgetsEditMode: false,
menuDef: this.$store.getters.nav({
search: this.search
}),
isDesktop: window.innerWidth >= DESKTOP_THRESHOLD,
canBack: false,
wallpaper: localStorage.getItem('wallpaper') != null,
faGripVertical, faChevronLeft, faComments, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faBell, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faEnvelope, faListUl, faPlus, faUserClock, faLaugh, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer
faGripVertical, faChevronLeft, faComments, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faBell, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faEnvelope, faListUl, faPlus, faUserClock, faLaugh, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faProjectDiagram
};
},
@ -207,6 +182,29 @@ export default Vue.extend({
widgets(): any[] {
return this.$store.state.deviceUser.widgets;
},
menu(): string[] {
return this.$store.state.deviceUser.menu;
},
otherNavItemIndicated(): boolean {
if (!this.$store.getters.isSignedIn) return false;
for (const def in this.menuDef) {
if (this.menu.includes(def)) continue;
if (this.menuDef[def].indicated) return true;
}
return false;
},
navIndicated(): boolean {
if (!this.$store.getters.isSignedIn) return false;
for (const def in this.menuDef) {
if (def === 'timeline') continue;
if (def === 'notifications') continue;
if (this.menuDef[def].indicated) return true;
}
return false;
}
},
@ -412,6 +410,11 @@ export default Vue.extend({
text: this.$t('federation'),
to: '/instance/federation',
icon: faGlobe,
}, {
type: 'link',
text: this.$t('relays'),
to: '/instance/relays',
icon: faProjectDiagram,
}, {
type: 'link',
text: this.$t('announcements'),
@ -426,55 +429,16 @@ export default Vue.extend({
},
more(ev) {
const items = Object.keys(this.menuDef).filter(k => !this.menu.includes(k)).map(k => this.menuDef[k]).filter(def => def.show == null ? true : def.show).map(def => ({
type: def.to ? 'link' : 'button',
text: this.$t(def.title),
icon: def.icon,
to: def.to,
action: def.action,
indicate: def.indicated,
}));
this.$root.menu({
items: [...(this.$store.getters.isSignedIn ? [{
type: 'link',
text: this.$t('lists'),
to: '/my/lists',
icon: faListUl,
}, {
type: 'link',
text: this.$t('groups'),
to: '/my/groups',
icon: faUsers,
}, {
type: 'link',
text: this.$t('antennas'),
to: '/my/antennas',
icon: faSatellite,
}, {
type: 'link',
text: this.$t('mentions'),
to: '/my/mentions',
icon: faAt,
indicate: this.$store.state.i.hasUnreadMentions
}, {
type: 'link',
text: this.$t('directNotes'),
to: '/my/messages',
icon: faEnvelope,
indicate: this.$store.state.i.hasUnreadSpecifiedNotes
}, {
type: 'link',
text: this.$t('favorites'),
to: '/my/favorites',
icon: faStar,
}, {
type: 'link',
text: this.$t('pages'),
to: '/my/pages',
icon: faFileAlt,
}, {
type: 'link',
text: this.$t('games'),
to: '/games',
icon: faGamepad,
}, null] : []), {
type: 'link',
text: this.$t('scratchpad'),
to: '/scratchpad',
icon: faTerminal,
}, null, {
items: [...items, null, {
type: 'link',
text: this.$t('help'),
to: '/docs',
@ -535,14 +499,13 @@ export default Vue.extend({
});
},
onNotification(notification) {
// TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない
if (true) {
async onNotification(notification) {
if (document.visibilityState === 'visible') {
this.$root.stream.send('readNotification', {
id: notification.id
});
this.$root.new(MkToast, {
this.$root.new(await import('./components/toast.vue').then(m => m.default), {
notification
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

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