Compare commits

..

240 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
84a1ec01bc 12.33.0 2020-04-16 23:23:07 +09:00
36e59c5b5f chore: update deps 2020-04-16 23:20:34 +09:00
5389b16c59 chore(client): 🎨 2020-04-16 23:13:33 +09:00
da3008af1c fix(pages): AiScript変数があると型チェックができない問題を修正 2020-04-16 23:04:49 +09:00
6637766554 feat(pages): Add arc method 2020-04-16 18:11:13 +09:00
2bc63631a4 12.32.0 2020-04-16 01:09:28 +09:00
5215721942 New Crowdin translations (#6255)
* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* 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-16 01:05:32 +09:00
d02e14cb94 Fix Media List in CW Content (#6099) 2020-04-16 01:04:21 +09:00
fa75b40dfd リアクションの修正 (#6260) 2020-04-16 00:47:17 +09:00
f32d8b7069 0以下のリアクションは送らないように Resolve #6263 (#6264) 2020-04-16 00:45:43 +09:00
90e8527556 Resolve #6256 2020-04-16 00:39:21 +09:00
66377d3f27 Update CHANGELOG.md 2020-04-14 01:49:52 +09:00
c6ae93df80 Update CHANGELOG.md 2020-04-14 01:45:55 +09:00
55e9099091 Update CHANGELOG.md 2020-04-14 01:37:24 +09:00
c6ace29446 Update CHANGELOG.md 2020-04-14 01:35:33 +09:00
b0b885aacd lint 2020-04-14 01:13:01 +09:00
3615b5d353 12.31.0 2020-04-14 00:54:39 +09:00
74c71e6283 New Crowdin translations (#6240)
* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)
2020-04-14 00:49:43 +09:00
9b07c5af05 リモートのカスタム絵文字リアクションを表示できるように (#6239)
* リモートのカスタム絵文字リアクションを表示できるように

* AP

* DBマイグレーション

* ローカルのリアクションの.

* fix

* fix

* fix

* space
2020-04-14 00:42:59 +09:00
cda1803e59 chore(client): 🎨 2020-04-14 00:13:49 +09:00
96eab7e12b 投稿のURLプレビューポップアップを改良 (#6226)
* URLプレビューポップアップを改良

- タッチデバイスでは表示しないように
- 幅をレスポンシブに

* Use maxTouchPoints to detect touch device

* fix
2020-04-14 00:00:52 +09:00
916512fd47 同じリアクション削除を同時に行うとリアクションカウントがおかしくなることがあるのを修正 (#6253)
* Fix #6252

* quote

* Use IdentifiableError
2020-04-13 23:58:38 +09:00
58d3a37908 sensitiveではないメディアも非表示にできるように (#6248)
* sensitiveではないメディアも非表示にできるように

* mounted -> created

* remove unnecessary v-if
2020-04-13 23:55:36 +09:00
a19e252c9e feat(client): Improve pages aiscript 2020-04-13 23:46:53 +09:00
63225ed0fd モデレーション周りのv11の機能復元 (#6249)
* モデレーション周りのv11の機能復元

* i18n

* wip

* wip

Co-authored-by: syuilo <syuilotan@yahoo.co.jp>
2020-04-13 23:27:12 +09:00
11cc9cbc7c Resolve #5755 2020-04-13 03:23:23 +09:00
36b9a0d42f プロキシの除外ホスト (#6244)
* プロキシの除外ホスト

* オブジェクトストレージとの通信にProxyを使うかを選択できるように

* fix lint

* コメント

Co-authored-by: rinsuki <428rinsuki+git@gmail.com>
2020-04-12 20:32:34 +09:00
e7da10ae58 Resolve #6242 2020-04-12 19:57:18 +09:00
f07047d1e8 AiScript関連 2020-04-12 19:38:19 +09:00
c62aff76af 12.30.0 2020-04-11 23:14:23 +09:00
1c20de4e9c Add yarn.lock (#6241) 2020-04-11 23:01:29 +09:00
4903eb4a4a Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-04-11 22:44:36 +09:00
b5981ab544 feat(client): Implement AiScript scratchpad 2020-04-11 22:44:32 +09:00
00e1dbfdfb Fix typo (#6238) 2020-04-11 19:49:25 +09:00
df69ca4d56 New Crowdin translations (#6227)
* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

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

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2020-04-11 18:34:26 +09:00
cb631d4abb Option to hide revealed sensitive media (#6209)
* Option to hide revealed sensitive media

This PR commit adds a button on sensitive images and videos
to to hide them without refreshing the page.

* fix position with multiple images

* Fixing some lint problems

Not related to this PR, but "Node.js CI / lint" failed on it.
2020-04-11 18:32:55 +09:00
3c351d8300 ドイツ語と中国語(繁体)を有効に (#6223) 2020-04-11 18:30:39 +09:00
ca66acac2b ファイルのダウンロードがタイムアウトしなくなっているのを修正など (#6233)
* Refactor download / file-info

* body read timeout on download Fix syuilo#6232
2020-04-11 18:28:40 +09:00
9fcf94b197 Fix url type of AP object #6231 (#6234) 2020-04-11 18:27:58 +09:00
aa34000f0b Update package 2020-04-11 18:25:36 +09:00
d3c0f3c251 Use node-fetch instead of request (#6228)
* requestをnode-fetchになど

* format

* fix error

* t

* Fix test
2020-04-09 23:42:23 +09:00
bb7edfee04 Create aiscript.ja-JP.md 2020-04-05 18:02:39 +09:00
caa14c70ef 12.29.0 2020-04-05 18:00:23 +09:00
3a0f72867f New Crowdin translations (#6198)
* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Spanish)

* 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 Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)
2020-04-05 17:56:43 +09:00
10d72742f5 Ability to set header image for a Page (#6210)
* Ability to set header image for a Page

 - Add header image to Page
 - Show it on Page view
 - Show correctly it on Page list view
 - On the Page list view, pages have a light border
   to make it easier to see an image belongs to a page

* Maybe it looks better

* Use <img> instead if <x-image>

* src -> :src; set width

* Update page.vue

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2020-04-05 17:55:51 +09:00
1b9f8a87d3 chore: Update dependencies 🚀 2020-04-04 11:08:10 +09:00
d4a630902d refactor: Use === 2020-04-04 08:46:54 +09:00
fef5ec874b enhance(server): Log error message when internal error occured 2020-04-04 08:27:16 +09:00
f2e347fec1 perf(client): Lazy load themes 2020-04-04 08:25:28 +09:00
cd3c2484ee Update CHANGELOG.md 2020-04-03 23:57:57 +09:00
6a396ef5e3 APIリファレンスでレスポンスのスキーマを見るのにいちいち2回クリックさせられるのを修正 (#6217) 2020-04-03 23:36:13 +09:00
eec1af1f52 Revert 2020-04-03 23:35:14 +09:00
99fc77b678 APメンションはaudienceじゃなくてtagを参照するなど (#6128)
* APメンションはaudienceじゃなくてtagを参照するなど

* AP/tag/Mentionではurlじゃなくてuriを提示する

* createPersonでaliasが入力された場合に対応

* AP HTMLパースでMention/Hashtag判定にtagを使うように

* fix

* indent

* use hashtag name

* fix

* URLエンコード不要だったら<>を使わないの条件が消えたたのを修正
2020-04-03 22:51:38 +09:00
8bb311df51 APIリファレンスのカテゴリ処理の修正 (#6218)
* APIリファレンスのカテゴリ処理の修正

* tune
2020-04-03 22:42:29 +09:00
a77df249c2 i18n (#6219) 2020-04-03 22:41:18 +09:00
2883bca257 Merge pull request #6211 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-03 21:43:09 +09:00
dd3af6886b Update README.md [AUTOGEN] 2020-04-03 20:52:08 +09:00
33bcf2d1ea Fix lint 2020-04-03 17:17:46 +09:00
795fb0eb60 Pre-render ReDoc
redoc-cliはexpandResponsesは200のみとすると数値と認識されてしまい設定できないため202,204という指定にしています
2020-04-03 17:13:41 +09:00
9e9d378bf1 feat(streaming): Add emoji added event 2020-04-02 22:17:17 +09:00
4a6b0edce6 Update api.ja-JP.md 2020-04-02 22:09:25 +09:00
356225af14 Use url if available (#6214)
* Fix #6213

* other link

* fix
2020-04-02 21:59:14 +09:00
331305e6c7 lint 2020-04-02 05:41:03 +09:00
917b9475a5 Merge pull request #6208 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-01 03:46:30 +09:00
e895fc954b Update README.md [AUTOGEN] 2020-04-01 01:58:08 +09:00
6d3e18a6a1 Merge pull request #6191 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-01 01:41:53 +09:00
79354f4faf Refactoring 2020-03-31 09:15:04 +09:00
28f8933c3c Refactoring 2020-03-31 09:11:43 +09:00
10356b4041 Merge branch 'master' into develop 2020-03-31 08:08:22 +09:00
6a732ab1cd Fix #6203 2020-03-31 08:07:10 +09:00
47322b35ff APIの権限設定漏れを修正 (#6202)
* Fix: 権限設定漏れ

* requireAdmin
2020-03-30 11:45:57 +09:00
4c6d0386b9 admin/accounts/createで一般ユーザーがアカウントを作成し放題なのを修正 (#6205) 2020-03-30 09:27:39 +09:00
a448172952 Fix #6199 (#6201) 2020-03-29 23:18:03 +09:00
244ef0cb8f トークン系の乱数ソースではcryptoを使うように (#6200) 2020-03-29 23:16:36 +09:00
4bf1c23b3c Update README.md [AUTOGEN] 2020-03-28 04:55:08 +09:00
529 changed files with 10659 additions and 4904 deletions

13
.babelrc Normal file
View File

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

View File

@ -142,6 +142,11 @@ id: 'aid'
# Proxy for HTTP/HTTPS # Proxy for HTTP/HTTPS
#proxy: http://127.0.0.1:3128 #proxy: http://127.0.0.1:3128
#proxyBypassHosts: [
# 'example.com',
# '192.0.2.8'
#]
# Proxy for SMTP/SMTPS # Proxy for SMTP/SMTPS
#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT #proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 #proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4

View File

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

View File

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

View File

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

View File

@ -1,6 +1,172 @@
ChangeLog 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
* Pagesで円を書くメソッドを追加
* AiScriptのバージョンアップ
### 🐛Fixes
* PagesでAiScript変数があると編集が機能しなくなる問題を修正
12.32.0 (2020/4/16)
-------------------
### ✨Improvements
* Pagesで画像を描画できるように
* AiScriptのバージョンアップ
* 0以下のリアクションは送らないように
### 🐛Fixes
* リアクションの修正
* Fix Media List in CW Content
12.31.0 (2020/4/14)
-------------------
### ✨Improvements
* プロキシの除外ホスト指定とオブジェクトストレージへの適用を除外するオプション
* AiScript
* モデレーション関連機能
* sensitiveではないメディアも非表示にできるように
* 投稿のURLプレビューポップアップを改良
* リモートのカスタム絵文字リアクションを表示できるように
### 🐛Fixes
* リアクションカウントがおかしくなることがあるのを修正
12.30.0 (2020/4/11)
-------------------
### ✨Improvements
* リクエストライブラリをrequestからnode-fetchに変更
* オブジェクトストレージのhttpスキーマリクエストでもProxyが適用されるように
* DNSキャッシュとKeep-Alive適用箇所を増やす
* ドイツ語と中国語(繁体)を有効に
* NSFWを再度隠せるように
* Implement AiScript scratchpad (/scratchpad)
### 🐛Fixes
* APのurl処理の修正
12.29.0 (2020/4/5)
-------------------
### ✨Improvements
* トークン系の乱数ソースではcryptoを使うように
* broadcast stream が追加され emojiAdded イベントをサポート
* APIリファレンスの高速化等
* Ability to set header image for a Page
* ログの改善
### 🐛Fixes
* アプリ一覧に1回も使用していないアプリが表示されないのを修正
* admin/accounts/createで一般ユーザーがアカウントを作成し放題なのを修正
* 翻訳の未適用箇所を修正
* APIの権限設定漏れを修正
* インストール直後にアクティビティが飛んで来たりするともう初期管理者セットアップがができなくなるのを修正
* リモート投稿でurlがあればそちらをリンクするように修正
12.28.0 (2020/3/29)
-------------------
### ✨Improvements
* インストールされたアプリのページでアプリの権限を確認できるように
* API: api/meta.features.miauthを追加
MiAuthに対応しているかどうかを確認するために利用できます。
値はつねにtrueを取ります。
* インスタンス一覧でソートできるように
12.27.1 (2020/03/28) 12.27.1 (2020/03/28)
------------------- -------------------
@ -13,7 +179,8 @@ ChangeLog
### ✨Improvements ### ✨Improvements
* サードパーティーアプリケーションの認証方法にMiAuthを追加 ([Misskey API ドキュメント](https://github.com/syuilo/misskey/blob/b8088dc01a0c53b264c0697082ff5b16b06c4cda/src/docs/api.ja-JP.md#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%81%97%E3%81%A6%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)) * サードパーティーアプリケーションの認証方法にMiAuthを追加 ([Misskey API ドキュメント](https://github.com/syuilo/misskey/blob/b8088dc01a0c53b264c0697082ff5b16b06c4cda/src/docs/api.ja-JP.md#%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%81%97%E3%81%A6%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B))
従来の、API `app/create` => `auth/session/generate` => `auth/session/userkey` を使用する方法は依然として使用可能です。 従来の、API `app/create` => `auth/session/generate` => `auth/session/userkey` を使用する方法は依然として使用可能です。
UIからアプリを作成する画面 (`/dev/apps`) は廃止されました、同等の操作を行いたい場合は API `app/create` で可能です。 UIからアプリを作成する画面 (`/dev/apps`) は廃止されました、同等の操作を行いたい場合は API `app/create` で可能です。
MiAuthに対応しているかどうかは`api/meta.features.miauth`で確認できます12.28.0~)。
* テーマをインポートする前にプレビューできるように * テーマをインポートする前にプレビューできるように
* アプリから通知を作成できるように * アプリから通知を作成できるように
* インストールしたアプリを見たり削除したりできるように * インストールしたアプリを見たり削除したりできるように

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 Emoji keywords for Unicode 11 and below by Mu-An Chiou
License: MIT License: MIT
https://github.com/muan/emojilib/blob/master/LICENSE 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 ENV NODE_ENV=production
@ -22,7 +22,7 @@ RUN apk add --no-cache \
python \ python \
zlib-dev zlib-dev
COPY package.json ./ COPY package.json yarn.lock ./
RUN yarn install RUN yarn install
COPY . ./ COPY . ./
RUN yarn build RUN yarn build

104
README.md
View File

@ -109,100 +109,102 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
---------------------------------------------------------------- ----------------------------------------------------------------
<!-- PATREON_START --> <!-- PATREON_START -->
<table><tr> <table><tr>
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo" width="100"></td> <td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
<td><img src="https://c8.patreon.com/2/200/27956229" alt="Oliver Maximilian Seidel" width="100"></td> <td><img src="https://c8.patreon.com/2/200/27956229" alt="Oliver Maximilian Seidel" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp " width="100"></td>
<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/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/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/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> </tr><tr>
<td><a href="https://www.patreon.com/user?u=20832595">Roujo</a></td> <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> <td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td>
<td><a href="https://www.patreon.com/weepjp">weepjp</a></td> <td><a href="https://www.patreon.com/weepjp">weepjp </a></td>
<td><a href="https://www.patreon.com/jonleibowitz">Jon Leibowitz</a></td> <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=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/user?u=24430516">Eduardo Quiros</a></td>
<td><a href="https://www.patreon.com/Nesakko">Nesakko</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c8.patreon.com/2/200/776209" alt="Denshi" width="100"></td> <td><img src="https://c8.patreon.com/2/200/776209" alt="Denshi " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3075183/c2ae575c604e420297f000ccc396e395/1.jpeg?token-time=2145916800&token-hash=O9qmPtpo6wWb0OuvnkEekhk_1WO2MTdytLr7ZgsAr80%3D" alt="Liaizon Wakest" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3075183/c2ae575c604e420297f000ccc396e395/1.jpeg?token-time=2145916800&token-hash=O9qmPtpo6wWb0OuvnkEekhk_1WO2MTdytLr7ZgsAr80%3D" alt="Liaizon Wakest" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze" width="100"></td> <td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/23915207/25428766ecd745478e600b3d7f871eb2/1.png?token-time=2145916800&token-hash=urCLLA4KjJZX92Y1CxcBP4d8bVTHGkiaPnQZp-Tqz68%3D" alt="kabo2468y" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/23915207/25428766ecd745478e600b3d7f871eb2/1.png?token-time=2145916800&token-hash=urCLLA4KjJZX92Y1CxcBP4d8bVTHGkiaPnQZp-Tqz68%3D" alt="kabo2468y " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8249688/4aacf36b6b244ab1bc6653591b6640df/2.png?token-time=2145916800&token-hash=1ZEf2w6L34253cZXS_HlVevLEENWS9QqrnxGUAYblPo%3D" alt="AureoleArk" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8249688/4aacf36b6b244ab1bc6653591b6640df/2.png?token-time=2145916800&token-hash=1ZEf2w6L34253cZXS_HlVevLEENWS9QqrnxGUAYblPo%3D" alt="AureoleArk " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon" width="100"></td> <td><img src="https://c8.patreon.com/2/200/21285325" alt="Nie(sha) " width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61" width="100"></td> <td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61 " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5788159/af42076ab3354bb49803cfba65f94bee/1.jpg?token-time=2145916800&token-hash=iSaxp_Yr2-ZiU2YVi9rcpZZj9mj3UvNSMrZr4CU4qtA%3D" alt="mewl hayabusa" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5788159/af42076ab3354bb49803cfba65f94bee/1.jpg?token-time=2145916800&token-hash=iSaxp_Yr2-ZiU2YVi9rcpZZj9mj3UvNSMrZr4CU4qtA%3D" alt="mewl hayabusa" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/user?u=776209">Denshi</a></td> <td><a href="https://www.patreon.com/user?u=776209">Denshi </a></td>
<td><a href="https://www.patreon.com/wakest">Liaizon Wakest</a></td> <td><a href="https://www.patreon.com/wakest">Liaizon Wakest</a></td>
<td><a href="https://www.patreon.com/user?u=557245">mkatze</a></td> <td><a href="https://www.patreon.com/user?u=557245">mkatze </a></td>
<td><a href="https://www.patreon.com/user?u=23915207">kabo2468y</a></td> <td><a href="https://www.patreon.com/user?u=23915207">kabo2468y </a></td>
<td><a href="https://www.patreon.com/AureoleArk">AureoleArk</a></td> <td><a href="https://www.patreon.com/AureoleArk">AureoleArk </a></td>
<td><a href="https://www.patreon.com/osapon">osapon</a></td> <td><a href="https://www.patreon.com/user?u=21285325">Nie(sha) </a></td>
<td><a href="https://www.patreon.com/user?u=16869916">見当かなみ</a></td> <td><a href="https://www.patreon.com/osapon">osapon </a></td>
<td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61</a></td> <td><a href="https://www.patreon.com/user?u=16869916">見当かなみ </a></td>
<td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61 </a></td>
<td><a href="https://www.patreon.com/hs_sh_net">mewl hayabusa</a></td> <td><a href="https://www.patreon.com/hs_sh_net">mewl hayabusa</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<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://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/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://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/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/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> <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>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/20494440/540beaf2445f408ea6597bc61e077bb3/1.png?token-time=2145916800&token-hash=UJ0JQge64Bx9XmN_qYA1inMQhrWf4U91fqz7VAKJeSg%3D" alt="axtuki1" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/20494440/540beaf2445f408ea6597bc61e077bb3/1.png?token-time=2145916800&token-hash=UJ0JQge64Bx9XmN_qYA1inMQhrWf4U91fqz7VAKJeSg%3D" alt="axtuki1 " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13737140/1adf7835017d479280d90fe8d30aade2/1.png?token-time=2145916800&token-hash=0pdle8h5pDZrww0BDOjdz6zO-HudeGTh36a3qi1biVU%3D" alt="Satsuki Yanagi" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13737140/1adf7835017d479280d90fe8d30aade2/1.png?token-time=2145916800&token-hash=0pdle8h5pDZrww0BDOjdz6zO-HudeGTh36a3qi1biVU%3D" alt="Satsuki Yanagi" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpg?token-time=2145916800&token-hash=nVAntpybQrznE0rg05keLrSE6ogPKJXB13rmrJng42c%3D" alt="takimura" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td> <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=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/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=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=19356899">sheeta.s </a></td>
<td><a href="https://www.patreon.com/user?u=5827393">motcha</a></td> <td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td>
<td><a href="https://www.patreon.com/user?u=20494440">axtuki1</a></td> <td><a href="https://www.patreon.com/user?u=20494440">axtuki1 </a></td>
<td><a href="https://www.patreon.com/user?u=13737140">Satsuki Yanagi</a></td> <td><a href="https://www.patreon.com/user?u=13737140">Satsuki Yanagi</a></td>
<td><a href="https://www.patreon.com/takimura">takimura</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpg?token-time=2145916800&token-hash=nVAntpybQrznE0rg05keLrSE6ogPKJXB13rmrJng42c%3D" alt="takimura " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13100201/fc5be4fa90444f09a9c8a06f72385272/1.png?token-time=2145916800&token-hash=i8PjlgfOB2LPEdbtWyx8ZPsBKhGcNZqcw_FQmH71UGU%3D" alt="aqz tamaina" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13100201/fc5be4fa90444f09a9c8a06f72385272/1.png?token-time=2145916800&token-hash=i8PjlgfOB2LPEdbtWyx8ZPsBKhGcNZqcw_FQmH71UGU%3D" alt="aqz tamaina" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28295158/cd2451bfb94a449dbf705ef4718cd355/2.jpeg?token-time=2145916800&token-hash=MRv3BxufHPuCyiBSxU5UYmLGvD6YZlhtSFRfMWg2k4U%3D" alt="012" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28295158/cd2451bfb94a449dbf705ef4718cd355/2.jpeg?token-time=2145916800&token-hash=MRv3BxufHPuCyiBSxU5UYmLGvD6YZlhtSFRfMWg2k4U%3D" alt="012 " width="100"></td>
<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/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/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/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/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/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/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/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/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic" 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>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24641572/b4fd175424814f15b0ca9178d2d2d2e4/1.png?token-time=2145916800&token-hash=e2fyqdbuJbpCckHcwux7rbuW6OPkKdERcus0u2wIEWU%3D" alt="uroco @99" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24641572/b4fd175424814f15b0ca9178d2d2d2e4/1.png?token-time=2145916800&token-hash=e2fyqdbuJbpCckHcwux7rbuW6OPkKdERcus0u2wIEWU%3D" alt="uroco @99" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/takimura">takimura </a></td>
<td><a href="https://www.patreon.com/aqz">aqz tamaina</a></td> <td><a href="https://www.patreon.com/aqz">aqz tamaina</a></td>
<td><a href="https://www.patreon.com/user?u=28295158">012</a></td> <td><a href="https://www.patreon.com/user?u=28295158">012 </a></td>
<td><a href="https://www.patreon.com/nijimiss">nafuchoco</a></td> <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=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=4389829">natalie </a></td>
<td><a href="https://www.patreon.com/noellabo">noellabo</a></td> <td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td>
<td><a href="https://www.patreon.com/Corset">CG</a></td> <td><a href="https://www.patreon.com/noellabo">noellabo </a></td>
<td><a href="https://www.patreon.com/hekovic">Hekovic</a></td> <td><a href="https://www.patreon.com/Corset">CG </a></td>
<td><a href="https://www.patreon.com/hekovic">Hekovic </a></td>
<td><a href="https://www.patreon.com/user?u=24641572">uroco @99</a></td> <td><a href="https://www.patreon.com/user?u=24641572">uroco @99</a></td>
</tr></table> </tr></table>
<table><tr> <table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1.png?token-time=2145916800&token-hash=hBayGfOmQH3kRMdNnDe4oCZD_9fsJWSt29xXR3KRMVk%3D" alt="Nokotaro Takeda" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1.png?token-time=2145916800&token-hash=hBayGfOmQH3kRMdNnDe4oCZD_9fsJWSt29xXR3KRMVk%3D" alt="Nokotaro Takeda" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/23932002" alt="nenohi" width="100"></td> <td><img src="https://c8.patreon.com/2/200/23932002" alt="nenohi " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9481273/7fa89168e72943859c3d3c96e424ed31/4.jpeg?token-time=2145916800&token-hash=5w1QV1qXe-NdWbdFmp1H7O_-QBsSiV0haumk3XTHIEg%3D" alt="Efertone" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9481273/7fa89168e72943859c3d3c96e424ed31/4.jpeg?token-time=2145916800&token-hash=5w1QV1qXe-NdWbdFmp1H7O_-QBsSiV0haumk3XTHIEg%3D" alt="Efertone " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1.jpeg?token-time=2145916800&token-hash=vGe7wXGqmA8Q7m-kDNb6fyGdwk-Dxk4F-ut8ZZu51RM%3D" alt="Takashi Shibuya" width="100"></td> <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1.jpeg?token-time=2145916800&token-hash=vGe7wXGqmA8Q7m-kDNb6fyGdwk-Dxk4F-ut8ZZu51RM%3D" alt="Takashi Shibuya" width="100"></td>
</tr><tr> </tr><tr>
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
<td><a href="https://www.patreon.com/user?u=23932002">nenohi</a></td> <td><a href="https://www.patreon.com/user?u=23932002">nenohi </a></td>
<td><a href="https://www.patreon.com/efertone">Efertone</a></td> <td><a href="https://www.patreon.com/efertone">Efertone </a></td>
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table> </tr></table>
**Last updated:** Tue, 17 Mar 2020 18:57:08 UTC **Last updated:** Thu, 07 May 2020 18:00:08 UTC
<!-- PATREON_END --> <!-- PATREON_END -->
[backer-url]: #backers [backer-url]: #backers

View File

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

View File

@ -39,8 +39,8 @@ server {
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings # SSL protocol settings
ssl_protocols TLSv1 TLSv1.2; ssl_protocols 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_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; ssl_prefer_server_ciphers on;
# Change to your upload limit # Change to your upload limit
@ -53,6 +53,7 @@ server {
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_redirect off; proxy_redirect off;

View File

@ -22,8 +22,8 @@ adduser --disabled-password --disabled-login misskey
Please install and setup these softwares: Please install and setup these softwares:
#### Dependencies :package: #### Dependencies :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 * **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
* **[Redis](https://redis.io/)** * **[Redis](https://redis.io/)**
##### Optional ##### Optional

View File

@ -22,8 +22,8 @@ adduser --disabled-password --disabled-login misskey
Installez les paquets suivants : Installez les paquets suivants :
#### Dépendences :package: #### Dépendences :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 * **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
* **[Redis](https://redis.io/)** * **[Redis](https://redis.io/)**
##### Optionnels ##### Optionnels

View File

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

View File

@ -5,14 +5,13 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as gulp from 'gulp'; import * as gulp from 'gulp';
import * as ts from 'gulp-typescript'; import * as ts from 'gulp-typescript';
import * as mocha from 'gulp-mocha';
import * as rimraf from 'rimraf'; import * as rimraf from 'rimraf';
import * as rename from 'gulp-rename'; import * as rename from 'gulp-rename';
const cleanCSS = require('gulp-clean-css'); const cleanCSS = require('gulp-clean-css');
const sass = require('gulp-dart-sass'); const sass = require('gulp-dart-sass');
const fiber = require('fibers'); const fiber = require('fibers');
const locales = require('./locales'); const locales: { [x: string]: any } = require('./locales');
const meta = require('./package.json'); const meta = require('./package.json');
gulp.task('build:ts', () => { gulp.task('build:ts', () => {
@ -32,14 +31,20 @@ gulp.task('build:copy:views', () =>
gulp.task('build:copy:locales', cb => { gulp.task('build:copy:locales', cb => {
fs.mkdirSync('./built/client/assets/locales', { recursive: true }); fs.mkdirSync('./built/client/assets/locales', { recursive: true });
const v = { '_version_': meta.version };
for (const [lang, locale] of Object.entries(locales)) { 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(); 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([ gulp.src([
'./src/emojilist.json', './src/emojilist.json',
'./src/server/web/views/**/*', './src/server/web/views/**/*',
@ -93,14 +98,4 @@ gulp.task('build', gulp.parallel(
'build:client', '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')); 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

@ -1,11 +1,12 @@
--- ---
_lang_: "Deutsch" _lang_: "Deutsch"
introMisskey: "Willkommen! Misskey ist eine dezentralisierte Open-Source Microblogging-Platform.\nVerfasse \"Notizen\" um mitzuteilen, was gerade passiert oder um Ereignisse mit Anderen zu teilen. 📡\nMit \"Reaktionen\" kannst du außerdem schnell deine Gefühle über Notizen anderer Benutzer zum Ausdruck bringen. 👍\nLass uns eine neue Welt erforschen! 🚀"
monthAndDay: "{day}/{month}" monthAndDay: "{day}/{month}"
search: "Suchen" search: "Suchen"
notifications: "Benachrichtigungen" notifications: "Benachrichtigungen"
username: "Benutzername" username: "Benutzername"
password: "Passwort" password: "Passwort"
fetchingAsApObject: "Aus Fediverse holen" fetchingAsApObject: "Wird aus dem Fediverse angefragt..."
ok: "OK" ok: "OK"
gotIt: "Verstanden!" gotIt: "Verstanden!"
cancel: "Abbrechen" cancel: "Abbrechen"
@ -16,17 +17,17 @@ noNotifications: "Keine Benachrichtigungen"
instance: "Instanz" instance: "Instanz"
settings: "Einstellungen" settings: "Einstellungen"
profile: "Profil" profile: "Profil"
timeline: "Zeitleiste" timeline: "Chronik"
noAccountDescription: "Keine Selbsteinführung" noAccountDescription: "Dieser Nutzer hat seine Profilbeschreibung noch nicht ausgefüllt."
login: "Einloggen" login: "Einloggen"
loggingIn: "Einloggen in bearbeitung" loggingIn: "Du wirst eingeloggt..."
logout: "Ausloggen" logout: "Ausloggen"
signup: "Registrieren" signup: "Registrieren"
uploading: "Upload läuft" uploading: "Upload läuft"
save: "Speichern" save: "Speichern"
users: "Benutzer" users: "Benutzer"
addUser: "Benutzer hinzufügen" addUser: "Benutzer hinzufügen"
favorite: "Favoriten" favorite: "Zu Favoriten hinzufügen"
favorites: "Favoriten" favorites: "Favoriten"
unfavorite: "Aus Favoriten entfernen" unfavorite: "Aus Favoriten entfernen"
pin: "Anheften" pin: "Anheften"
@ -34,56 +35,60 @@ unpin: "Lösen"
copyContent: "Inhalt kopieren" copyContent: "Inhalt kopieren"
copyLink: "Link kopieren" copyLink: "Link kopieren"
delete: "Löschen" delete: "Löschen"
addToList: "Zur Liste hinzufügen" 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: "Zu Liste hinzufügen"
sendMessage: "Nachricht senden" sendMessage: "Nachricht senden"
copyUsername: "Benutzernamen kopieren" copyUsername: "Benutzernamen kopieren"
reply: "Antworten" reply: "Antworten"
loadMore: "Zeige mehr" loadMore: "Mehr anzeigen"
youGotNewFollower: "Sie haben einen neuen Follower" youGotNewFollower: "Du hast einen neuen Follower"
receiveFollowRequest: "Follow Request erhalten." receiveFollowRequest: "Follow-Anfrage erhalten"
followRequestAccepted: "FollowRequestAkzeptiert" followRequestAccepted: "Follow-Anfrage akzeptiert"
mentions: "Erwähnungen" mentions: "Erwähnungen"
directNotes: "Direktnachrichten" directNotes: "Direktnachrichten"
importAndExport: "Importieren und Exportieren" importAndExport: "Importieren und Exportieren"
import: "Importieren" import: "Importieren"
export: "Exportieren" export: "Exportieren"
files: "Dateien" files: "Dateien"
download: "Download" download: "Herunterladen"
driveFileDeleteConfirm: "Möchtest du die Datei \"{name}\" löschen? Die zugehörige Notiz wird ebenso verschwinden." driveFileDeleteConfirm: "Möchtest du die Datei \"{name}\" löschen? Die zugehörige Notiz wird ebenso verschwinden."
unfollowConfirm: "Möchtest du {name} nicht mehr folgen?" 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."
importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch nehmen."
lists: "Listen" lists: "Listen"
noLists: "Keine Liste!" noLists: "Du hast keine Listen"
note: "Notiz" note: "Notiz"
notes: "Notizen" notes: "Notizen"
following: "Folgen" following: "Folgt"
followers: "Folgende" followers: "Gefolgt von"
followsYou: "Folgt dir" followsYou: "Folgt dir"
createList: "Liste erstellen" createList: "Liste erstellen"
manageLists: "Liste verwalten" manageLists: "Listen verwalten"
error: "Ein Problem ist aufgetreten" error: "Ein Problem ist aufgetreten"
retry: "Wiederholen" retry: "Wiederholen"
enterListName: "Listennamen eingeben" enterListName: "Listennamen eingeben"
privacy: "Privatsphäre" privacy: "Privatsphäre"
makeFollowManuallyApprove: "Folgeanfragen benötigen Bestätigung" makeFollowManuallyApprove: "Follow-Anfragen benötigen Bestätigung"
defaultNoteVisibility: "Die Standardsichtbarkeit" defaultNoteVisibility: "Standardsichtbarkeit"
follow: "Folgen" follow: "Folgen"
followRequest: "Follower-Anfragen" followRequest: "Follow-Anfrage"
followRequests: "Follower-Anfragen" followRequests: "Follow-Anfragen"
unfollow: "Nicht mehr folgen" unfollow: "Nicht mehr folgen"
followRequestPending: "Ausstehend" followRequestPending: "Ausstehende Follow-Anfrage"
enterEmoji: "Gib ein Emoji ein" enterEmoji: "Gib ein Emoji ein"
renote: "Renote" renote: "Renote"
unrenote: "Renote zurücknehmen" unrenote: "Renote zurücknehmen"
quote: "Zitieren" quote: "Zitieren"
pinnedNote: "Angepinnte Notiz" pinnedNote: "Angepinnte Notiz"
you: "Du" you: "Du"
clickToShow: "Klicke zum den Inhalt anzusehen" clickToShow: "Klicke, um diesen Inhalt anzusehen"
sensitive: "Dieser Inhalt ist NSFW" sensitive: "Dieser Inhalt ist NSFW"
add: "Hinzufügen" add: "Hinzufügen"
reaction: "Reaktionen" reaction: "Reaktionen"
reactionSettingDescription: "Weisen Sie Ihre lieblings reaktionen zu, die Sie in den Reaktionenswähler stecken möchten." reactionSettingDescription: "Gib deine Lieblingsreaktionen ein, um sie der Reaktionsauswahl hinzuzufügen."
rememberNoteVisibility: "Notizsichtbarkeit merken" rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhängen abbrechen" attachCancel: "Anhang entfernen"
markAsSensitive: "Als sensitiv markieren" markAsSensitive: "Als sensitiv markieren"
unmarkAsSensitive: "Markierung als sensitiv zurücknehmen" unmarkAsSensitive: "Markierung als sensitiv zurücknehmen"
enterFileName: "Dateinamen eingeben" enterFileName: "Dateinamen eingeben"
@ -93,40 +98,55 @@ block: "Blockieren"
unblock: "Blockierung aufheben" unblock: "Blockierung aufheben"
suspend: "Sperren" suspend: "Sperren"
unsuspend: "Sperrung aufheben" unsuspend: "Sperrung aufheben"
blockConfirm: "Möchtest du diesen Account wirklich blockieren?" blockConfirm: "Möchtest du diesen Benutzer wirklich blockieren?"
unblockConfirm: "Möchtest du diese Blockierung wirklich aufheben?" unblockConfirm: "Möchtest du diese Blockierung wirklich aufheben?"
suspendConfirm: "Möchtest du diesen Account wirklich sperren?" suspendConfirm: "Möchtest du diesen Benutzer wirklich sperren?"
unsuspendConfirm: "Möchtest du die Sperrung dieses Accounts wirklich aufheben?" unsuspendConfirm: "Möchtest du die Sperrung dieses Benutzers wirklich aufheben?"
selectList: "Wähle eine Liste aus" selectList: "Wähle eine Liste aus"
customEmojis: "Benutzerdefinierte Emojis" customEmojis: "Benutzerdefinierte Emojis"
emojiName: "Emojiname" emojiName: "Emojiname"
emojiUrl: "Emoji-URL" emojiUrl: "Emoji-URL"
addEmoji: "Emoji hinzufügen" 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" flagAsBot: "Als Bot markieren"
flagAsCat: "Als Katze markieren" flagAsCat: "Als Katze markieren"
autoAcceptFollowed: "Folgeanfragen automatisch akzeptieren" autoAcceptFollowed: "Follow-Anfragen automatisch akzeptieren"
addAcount: "Benutzerkonto hinzufügen" addAcount: "Benutzerkonto hinzufügen"
loginFailed: "Login fehlgeschlagen" loginFailed: "Login fehlgeschlagen"
showOnRemote: "Auf Ursprungsinstanz ansehen"
general: "Allgemein" general: "Allgemein"
wallpaper: "Hintergrund" wallpaper: "Hintergrund"
setWallpaper: "Hintergrund festlegen"
removeWallpaper: "Hintergrund entfernen" removeWallpaper: "Hintergrund entfernen"
searchWith: "Suche: {q}" searchWith: "Suche: {q}"
youHaveNoLists: "Du hast keine Listen" youHaveNoLists: "Du hast keine Listen"
followConfirm: "Möchtest du {name} wirklich folgen?" followConfirm: "Möchtest du {name} wirklich folgen?"
proxyAccount: "Proxy-Benutzerkonto"
proxyAccountDescription: "Ein Proxy-Benutzerkonto ist ein Benutzerkonto, das sich für Nutzer unter bestimmten Konditionen wie ein Follower aus einer fremden Instanz verhält. Zum Beispiel wird die Aktivität eines Nutzers aus einer fremden Instanz nicht an diese Instanz übermittelt, falls es keinen Benutzer dieser Instanz gibt, der diesem Nutzer aus fremder Instanz folgt. In diesem Fall folgt stattdessen das Proxy-Benutzerkonto."
host: "Host"
selectUser: "Benutzer wählen" selectUser: "Benutzer wählen"
recipient: "Empfänger" recipient: "Empfänger"
annotation: "Anmerkung" annotation: "Anmerkung"
federation: "Föderation" federation: "Föderation"
instances: "Instanz" instances: "Instanz"
registeredAt: "Registriert am"
latestRequestSentAt: "Letzte Anfrage gesendet am"
latestRequestReceivedAt: "Letzte Anfrage erhalten am"
latestStatus: "Neuester Status" latestStatus: "Neuester Status"
storageUsage: "Speicherplatzverbrauch" storageUsage: "Speicherplatzverbrauch"
charts: "Charts" charts: "Diagramme"
perHour: "Pro Stunde" perHour: "Pro Stunde"
perDay: "Pro Tag" perDay: "Pro Tag"
stopActivityDelivery: "Senden von Aktivitäten einstellen"
blockThisInstance: "Diese Instanz blockieren" blockThisInstance: "Diese Instanz blockieren"
operations: "Aktionen"
software: "Software"
version: "Version" version: "Version"
metadata: "Metadaten" metadata: "Metadaten"
withNFiles: "{n} Datei(en)" withNFiles: "{n} Datei(en)"
monitor: "Beobachten"
jobQueue: "Job-Warteschlange" jobQueue: "Job-Warteschlange"
cpuAndMemory: "CPU und Arbeitsspeicher" cpuAndMemory: "CPU und Arbeitsspeicher"
network: "Netzwerk" network: "Netzwerk"
@ -137,6 +157,7 @@ clearQueue: "Warteschlange leeren"
clearQueueConfirmTitle: "Möchtest du die Warteschlange wirklich leeren?" clearQueueConfirmTitle: "Möchtest du die Warteschlange wirklich leeren?"
clearQueueConfirmText: "Jegliche Notizen, die sich noch in der Warteschlange befinden, werden hierdurch nicht föderiert. Diese Aktion wird normalerweise NICHT benötigt." clearQueueConfirmText: "Jegliche Notizen, die sich noch in der Warteschlange befinden, werden hierdurch nicht föderiert. Diese Aktion wird normalerweise NICHT benötigt."
clearCachedFiles: "Cache leeren" clearCachedFiles: "Cache leeren"
clearCachedFilesConfirm: "Sollen alle im Cache gespeicherten Dateien von anderen Instanzen wirklich gelöscht werden?"
blockedInstances: "Blockierte Instanzen" blockedInstances: "Blockierte Instanzen"
blockedInstancesDescription: "Gib den Hostnamen der Instanz an, die blockiert werden soll. Blockierte Instanzen können nicht mehr mit dieser kommunizieren." blockedInstancesDescription: "Gib den Hostnamen der Instanz an, die blockiert werden soll. Blockierte Instanzen können nicht mehr mit dieser kommunizieren."
muteAndBlock: "Stummgeschaltet / Blockiert" muteAndBlock: "Stummgeschaltet / Blockiert"
@ -152,11 +173,18 @@ processing: "In Bearbeitung"
preview: "Vorschau" preview: "Vorschau"
default: "Standard" default: "Standard"
noCustomEmojis: "Es existieren keine Emojis" noCustomEmojis: "Es existieren keine Emojis"
customEmojisOfRemote: "Emojis von anderen Instanzen"
noJobs: "Es gibt keine Jobs" noJobs: "Es gibt keine Jobs"
federating: "Föderiert" federating: "Föderiert"
blocked: "Blockiert" blocked: "Blockiert"
suspended: "Gesperrt" suspended: "Gesperrt"
all: "Alles" all: "Alles"
subscribing: "Abonnieren"
publishing: "Veröffentlichen"
notResponding: "Antwortet nicht"
instanceFollowing: "Gefolgt auf der Instanz"
instanceFollowers: "Follower der Instanz"
instanceUsers: "Benutzer dieser Instanz"
changePassword: "Passwort ändern" changePassword: "Passwort ändern"
security: "Sicherheit" security: "Sicherheit"
retypedNotMatch: "Eingaben stimmen nicht überein." retypedNotMatch: "Eingaben stimmen nicht überein."
@ -165,47 +193,68 @@ newPassword: "Neues Passwort"
newPasswordRetype: "Neues Passwort (wiederholen)" newPasswordRetype: "Neues Passwort (wiederholen)"
attachFile: "Datei anhängen" attachFile: "Datei anhängen"
more: "Mehr!" more: "Mehr!"
featured: "Hervorgehoben" featured: "Beliebt"
usernameOrUserId: "Benutzername oder Benutzer-ID" usernameOrUserId: "Benutzername oder Benutzer-ID"
noSuchUser: "Benutzer nicht gefunden" noSuchUser: "Benutzer nicht gefunden"
lookup: "Abfragen"
announcements: "Ankündigungen" announcements: "Ankündigungen"
imageUrl: "Bild-URL" imageUrl: "Bild-URL"
remove: "Löschen" remove: "Löschen"
removed: "Erfolgreich gelöscht" removed: "Erfolgreich gelöscht"
removeAreYouSure: "Möchtest du \"{x}\" wirklich löschen?" removeAreYouSure: "Möchtest du \"{x}\" wirklich löschen?"
saved: "Gespeichert" saved: "Gespeichert"
messaging: "Nachrichten" messaging: "Privatnachrichten"
upload: "Hochladen" upload: "Hochladen"
fromDrive: "Aus Drive" fromDrive: "Aus Drive"
fromUrl: "Von einer URL" fromUrl: "Von einer URL"
uploadFromUrl: "Von einer URL hochladen"
uploadFromUrlDescription: "URL der hochzuladenden Datei"
uploadFromUrlRequested: "Upload angefordert"
uploadFromUrlMayTakeTime: "Es kann eine Weile dauern, bis der Upload abgeschlossen ist."
explore: "Erkunden" explore: "Erkunden"
games: "Misskey Spiele" games: "Misskey Spiele"
messageRead: "Gelesen" messageRead: "Gelesen"
noMoreHistory: "Kein weiterer Verlauf vorhanden" noMoreHistory: "Kein weiterer Verlauf vorhanden"
startMessaging: "Neue Privatnachricht erstellen"
nUsersRead: "Von {n} gelesen" nUsersRead: "Von {n} gelesen"
agreeTo: "Ich stimme {0} zu" agreeTo: "Ich stimme {0} zu"
tos: "Nutzungsbedingungen" tos: "Nutzungsbedingungen"
start: "Anfangen" start: "Anfangen"
home: "Startseite" home: "Startseite"
remoteUserCaution: "Diese Informationen sind möglicherweise veraltet, da der Benutzer von einer anderen Instanz stammt."
activity: "Aktivität" activity: "Aktivität"
images: "Bilder" images: "Bilder"
birthday: "Geburtstag" birthday: "Geburtstag"
yearsOld: "{age} Jahre alt" yearsOld: "{age} Jahre alt"
registeredDate: "Registierdatum" registeredDate: "Registrationsdatum"
location: "Ort" location: "Ort"
theme: "Farbthemen" theme: "Farbthemen"
themeForLightMode: "Farbthema, das im Hellmodus genutzt wird"
themeForDarkMode: "Farbthema, das im Dunkelmodus genutzt wird"
light: "Hell"
dark: "Dunkel"
lightThemes: "Helle Farbthemen" lightThemes: "Helle Farbthemen"
darkThemes: "Dunkle Farbthemen" darkThemes: "Dunkle Farbthemen"
syncDeviceDarkMode: "Dunkelmodus mit den Einstellungen deines Gerätes synchronisieren"
drive: "Drive" drive: "Drive"
fileName: "Dateiname"
selectFile: "Datei auswählen" selectFile: "Datei auswählen"
selectFiles: "Dateien auswählen" selectFiles: "Dateien auswählen"
selectFolder: "Wähle einen Ordner"
selectFolders: "Wähle Ordner"
renameFile: "Datei umbenennen" renameFile: "Datei umbenennen"
folderName: "Ordnername"
createFolder: "Ordner erstellen" createFolder: "Ordner erstellen"
renameFolder: "Ordner umbenennen" renameFolder: "Ordner umbenennen"
deleteFolder: "Ordner löschen" deleteFolder: "Ordner löschen"
addFile: "Datei hinzufügen" addFile: "Datei hinzufügen"
emptyDrive: "Drive ist leer" emptyDrive: "Drive ist leer"
emptyFolder: "Der Ordner ist leer" emptyFolder: "Der Ordner ist leer"
unableToDelete: "Nicht löschbar"
inputNewFileName: "Gib einen neuen Dateinamen ein"
inputNewFolderName: "Gib einen neuen Ordnernamen ein"
circularReferenceFolder: "Der Zielordner ist ein Unterorder des Ordners, den du verschieben möchtest."
hasChildFilesOrFolders: "Dieser Ordner kann nicht gelöscht werden, da er nicht leer ist."
copyUrl: "URL kopieren" copyUrl: "URL kopieren"
rename: "Umbenennen" rename: "Umbenennen"
avatar: "Profilbild" avatar: "Profilbild"
@ -214,34 +263,52 @@ nsfw: "Dieser Inhalt ist NSFW"
disconnectedFromServer: "Verbindung zum Server wurde getrennt" disconnectedFromServer: "Verbindung zum Server wurde getrennt"
reload: "Aktualisieren" reload: "Aktualisieren"
doNothing: "Ignorieren" doNothing: "Ignorieren"
reloadConfirm: "Möchtest du die Chronik aktualisieren?"
watch: "Beobachten" watch: "Beobachten"
unwatch: "Nicht mehr beobachten" unwatch: "Nicht mehr beobachten"
accept: "Akzeptieren" accept: "Akzeptieren"
reject: "Ablehnen" reject: "Ablehnen"
normal: "Normal"
instanceName: "Name der Instanz" instanceName: "Name der Instanz"
instanceDescription: "Beschreibung der Instanz" instanceDescription: "Beschreibung der Instanz"
maintainerName: "Betreiber" maintainerName: "Betreiber"
maintainerEmail: "Betreiberemail" maintainerEmail: "Betreiber-Email"
tosUrl: "URL der Nutzungsbedingungen" tosUrl: "URL der Nutzungsbedingungen"
thisYear: "Dieses Jahr" thisYear: "Dieses Jahr"
thisMonth: "Dieser Monat" thisMonth: "Dieser Monat"
today: "Heute" today: "Heute"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Seiten" pages: "Seiten"
integration: "Integration" integration: "Integration"
connectSerice: "Verbinden" connectSerice: "Verbinden"
disconnectSerice: "Trennen" disconnectSerice: "Trennen"
enableLocalTimeline: "Lokale Chronik aktivieren"
enableGlobalTimeline: "Globale Chronik aktivieren"
disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle Chroniken, auch wenn diese deaktiviert sind."
registration: "Registrieren" registration: "Registrieren"
enableRegistration: "Registration neuer Benutzer erlauben" enableRegistration: "Registration neuer Benutzer erlauben"
invite: "Einladen" invite: "Einladen"
proxyRemoteFiles: "Dateien anderer Instanzen durch Proxy leiten"
proxyRemoteFilesDescription: "Wenn diese Einstellung aktiviert ist, dann werden Dateien von anderen Instanzen, welche entweder nicht lokal gespeichert sind oder durch Überschreiten des Speicherlimits gelöscht wurden, durch einen Proxy geleitet. Hierbei wird auch ein Vorschaubild generiert. \n Dies hat keinen Effekt auf den Speicherplatz des Servers."
driveCapacityPerLocalAccount: "Drivekapazität pro lokales Benutzerkonto" driveCapacityPerLocalAccount: "Drivekapazität pro lokales Benutzerkonto"
driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer anderer Instanzen"
inMb: "In Megabytes" inMb: "In Megabytes"
iconUrl: "Icon-URL" iconUrl: "Icon-URL"
bannerUrl: "Banner-URL" bannerUrl: "Banner-URL"
basicInfo: "Basisdaten" basicInfo: "Basisdaten"
pinnedUsers: "Angepinnte Benutzer" pinnedUsers: "Angepinnte Benutzer"
pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt." 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" recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA aktivieren" 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" antennas: "Antennen"
manageAntennas: "Antennen verwalten" manageAntennas: "Antennen verwalten"
name: "Name" name: "Name"
@ -249,6 +316,8 @@ antennaSource: "Antennenquelle"
antennaKeywords: "Schlüsselwörter, die beobachtet werden sollen" antennaKeywords: "Schlüsselwörter, die beobachtet werden sollen"
antennaExcludeKeywords: "Schlüsselwörter, die ignoriert werden sollen" antennaExcludeKeywords: "Schlüsselwörter, die ignoriert werden sollen"
antennaKeywordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen." antennaKeywordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen."
notifyAntenna: "Über neue Notizen benachrichtigen"
withFileAntenna: "Nur Notizen mit Dateien"
serviceworker: "ServiceWorker" serviceworker: "ServiceWorker"
enableServiceworker: "ServiceWorker aktivieren" enableServiceworker: "ServiceWorker aktivieren"
antennaUsersDescription: "Benutzernamen getrennt durch Zeilenumbrüche angeben" antennaUsersDescription: "Benutzernamen getrennt durch Zeilenumbrüche angeben"
@ -256,20 +325,43 @@ caseSensitive: "Groß-/Kleinschreibung unterscheiden"
withReplies: "Antworten beinhalten" withReplies: "Antworten beinhalten"
connectedTo: "Mit folgenden Benutzerkonten verknüpft" connectedTo: "Mit folgenden Benutzerkonten verknüpft"
notesAndReplies: "Notizen und Antworten" 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"
unsilenceConfirm: "Möchtest du die instanzweite Stummschaltung dieses Benutzers wirklich aufheben?"
popularUsers: "Beliebte Benutzer" popularUsers: "Beliebte Benutzer"
recentlyUpdatedUsers: "Vor kurzem aktive Benutzer" recentlyUpdatedUsers: "Vor kurzem aktive Benutzer"
recentlyRegisteredUsers: "Vor kurzem registrierte Benutzer" recentlyRegisteredUsers: "Vor kurzem registrierte Benutzer"
recentlyDiscoveredUsers: "Vor kurzem gefundene Benutzer" recentlyDiscoveredUsers: "Vor kurzem gefundene Benutzer"
exploreUsersCount: "Es gibt {count} Benutzer" exploreUsersCount: "Es gibt {count} Benutzer"
exploreFediverse: "Das Fediverse erkunden" exploreFediverse: "Das Fediverse erkunden"
popularTags: "Beliebte Schlagwörter"
userList: "Listen" userList: "Listen"
about: "Über"
aboutMisskey: "Über Misskey" aboutMisskey: "Über Misskey"
aboutMisskeyText: "Misskey ist Open-Source-Software die von syuilo seit 2014 entwickelt wird."
misskeyMembers: "Misskey wird momentan von den unten aufgelisteten Mitgliedern weiterentwickelt und instand gehalten:"
misskeySource: "Der Quelltext ist hier verfügbar:"
misskeyTranslation: "Hilf dabei, Misskey zu übersetzen:"
misskeyDonate: "Spende an Misskey, um die Weiterentwicklung zu unterstützen:"
morePatrons: "Wir schätzen ebenso die Unterstützung vieler anderer hier nicht gelisteter Personen sehr. Danke! 🥰"
patrons: "UnterstützerInnen"
administrator: "Administrator"
token: "Token"
twoStepAuthentication: "Zwei-Faktor-Authentifizierung"
moderator: "Moderator"
nUsersMentioned: "{n} Benutzer reden darüber"
securityKey: "Sicherheitsschlüssel"
securityKeyName: "Schlüsselname"
registerSecurityKey: "Sicherheitsschlüssel registrieren"
lastUsed: "Zuletzt benutzt"
unregister: "Deaktivieren"
passwordLessLogin: "Passwortloses Anmelden einrichten"
resetPassword: "Passwort zurücksetzen" resetPassword: "Passwort zurücksetzen"
newPasswordIs: "Das neue Passwort ist \"{password}\"" newPasswordIs: "Das neue Passwort ist \"{password}\""
posted: "Gesendet"
autoReloadWhenDisconnected: "Automatisch aktualisieren wenn die Serververbindung getrennt wird" autoReloadWhenDisconnected: "Automatisch aktualisieren wenn die Serververbindung getrennt wird"
autoNoteWatch: "Notiz automatisch beobachten" autoNoteWatch: "Notizen automatisch beobachten"
autoNoteWatchDescription: "Werde über Notizen, auf die du reagiert oder geantwortet hast, informiert" autoNoteWatchDescription: "Werde über Notizen, auf die du reagiert oder geantwortet hast, informiert"
reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren" reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren"
share: "Teilen" share: "Teilen"
@ -279,7 +371,21 @@ uploadFolder: "Standardordner für Uploads"
cacheClear: "Cache leeren" cacheClear: "Cache leeren"
markAsReadAllNotifications: "Alle Benachrichtigungen als gelesen markieren" markAsReadAllNotifications: "Alle Benachrichtigungen als gelesen markieren"
markAsReadAllUnreadNotes: "Alle Notizen als gelesen markieren" markAsReadAllUnreadNotes: "Alle Notizen als gelesen markieren"
invites: "Einladen" markAsReadAllTalkMessages: "Alle Nachrichten als gelesen markieren"
help: "Hilfe"
inputMessageHere: "Hier Nachricht eingeben"
close: "Schließen"
group: "Gruppe"
groups: "Gruppen"
createGroup: "Gruppe erstellen"
ownedGroups: "Eigene Gruppen"
joinedGroups: "Beigetretene Gruppen"
invites: "Einladungen"
groupName: "Gruppenname"
members: "Mitglieder"
transfer: "Übertragen"
messagingWithUser: "Privatnachrichten mit einem Benutzer"
messagingWithGroup: "Privatnachrichten mit einer Gruppe"
title: "Betreff" title: "Betreff"
text: "Text" text: "Text"
enable: "Aktivieren" enable: "Aktivieren"
@ -288,12 +394,40 @@ retype: "Erneut eingeben"
noteOf: "Notiz von {user}" noteOf: "Notiz von {user}"
inviteToGroup: "Zu Gruppe einladen" inviteToGroup: "Zu Gruppe einladen"
maxNoteTextLength: "Maximale Länge von Notizen" maxNoteTextLength: "Maximale Länge von Notizen"
quoteAttached: "Zitiert"
quoteQuestion: "Als Zitat anfügen?"
noMessagesYet: "Noch keine Nachrichten"
newMessageExists: "Du hast eine neue Nachricht"
onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden"
signinRequired: "Anmeldung erforderlich"
invitationCode: "Einladungscode"
checking: "Wird überprüft..."
available: "Verfügbar"
unavailable: "Unverfügbar"
usernameInvalidFormat: "Buchstaben, Zahlen und Unterstriche sind verwendbar."
tooShort: "Zu kurz"
tooLong: "Zu lang"
weakPassword: "Schwaches Passwort"
normalPassword: "Standardpasswort"
strongPassword: "Starkes Passwort"
passwordMatched: "Stimmt überein"
passwordNotMatched: "Stimmt nicht überein"
signinWith: "Mit {x} anmelden"
signinFailed: "Anmeldung fehlgeschlagen. Überprüfe Benutzername und Passswort."
tapSecurityKey: "Tippe deinen Sicherheitsschlüssel an"
or: "Oder"
uiLanguage: "Sprache der Benutzeroberfläche"
groupInvited: "Du wurdest in eine Gruppe eingeladen"
aboutX: "Über {x}"
useOsNativeEmojis: "Eingebaute Emojis des Betriebssystems benutzen" useOsNativeEmojis: "Eingebaute Emojis des Betriebssystems benutzen"
youHaveNoGroups: "Keine Gruppen vorhanden"
joinOrCreateGroup: "Lass dich zu einer Gruppe einladen oder erstelle deine eigene." joinOrCreateGroup: "Lass dich zu einer Gruppe einladen oder erstelle deine eigene."
noHistory: "Kein Verlauf" noHistory: "Kein Verlauf"
disableAnimatedMfm: "MFM, die Animationen enthalten, deaktivieren" disableAnimatedMfm: "MFM, die Animationen enthalten, deaktivieren"
doing: "In Bearbeitung"
category: "Kategorie" category: "Kategorie"
tags: "Schlagwörter" tags: "Schlagwörter"
docSource: "Quelle dieses Dokuments"
createAccount: "Benutzerkonto erstellen" createAccount: "Benutzerkonto erstellen"
existingAcount: "Bestehendes Benutzerkonto" existingAcount: "Bestehendes Benutzerkonto"
regenerate: "Regenerieren" regenerate: "Regenerieren"
@ -302,29 +436,92 @@ noFollowRequests: "Du hast keine Follow-Anfragen"
openImageInNewTab: "Bilder in neuem Tab öffnen" openImageInNewTab: "Bilder in neuem Tab öffnen"
dashboard: "Dashboard" dashboard: "Dashboard"
local: "Lokal" local: "Lokal"
remote: "Fremd"
total: "Gesamt" total: "Gesamt"
weekOverWeekChanges: "Wöchentlich" weekOverWeekChanges: "Wöchentlich"
dayOverDayChanges: "Täglich" dayOverDayChanges: "Täglich"
accessibility: "Barrierefreiheit" accessibility: "Barrierefreiheit"
clinetSettings: "Client-Einstellungen" clinetSettings: "Client-Einstellungen"
accountSettings: "Benutzerkontoeinstellungen" accountSettings: "Benutzerkonto-Einstellungen"
promotion: "Hervorgehoben" promotion: "Hervorgehoben"
promote: "Hervorheben" promote: "Hervorheben"
numberOfDays: "Anzahl der Tage" numberOfDays: "Anzahl der Tage"
hideThisNote: "Diese Notiz verstecken" hideThisNote: "Diese Notiz verstecken"
showFeaturedNotesInTimeline: "Beliebte Notizen in Chronik anzeigen"
objectStorage: "Objektspeicher"
useObjectStorage: "Objektspeicher verwenden"
objectStorageBaseUrl: "Basis-URL"
objectStorageBaseUrlDesc: "URL-Prefix, der zum Konstruieren der Objekt- bzw. Mediareferenz-URL genutzt wird. Falls du ein CDN- oder einen Proxy nutzt, gib dessen URL ein. Ansonsten gib die Adresse, der dir von deinem Anbieter z.B. in dessen Servicehandbuch gegeben wurde, an. Beispielsweise 'https://<bucket>.s3.amazonaws.com' für AWS S3 oder 'https://storage.googleapis.com/<bucket>' für GCS."
objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Bitte gib den Bucket-Namen an, der bei deinem Anbieter verwendet wird."
objectStoragePrefix: "Prefix"
objectStoragePrefixDesc: "Dateien werden im Ordner dieses Prefixes gespeichert."
objectStorageEndpoint: "Endpoint"
objectStorageEndpointDesc: "Dieses Feld leerlassen, falls du AWS S3 verwendest. Ansonsten trage den Endpoint im Format \"<host>\" oder \"<host>:<port>\" an, den Angaben deines Anbieters entsprechend."
objectStorageRegion: "Region"
objectStorageRegionDesc: "Gib eine Region (wie z.B. \"xx-east-1\") an. Falls dein Anbieter nicht zwischen Regionen unterscheidet, lass dieses Feld leer oder gib \"us-east-1\" an."
objectStorageUseSSL: "SSL verwenden"
objectStorageUseSSLDesc: "Deaktiviere dies falls du für die API-Verbindungen kein HTTPS verwenden wirst"
objectStorageUseProxy: "Über Proxy verbinden"
objectStorageUseProxyDesc: "Deaktiviere dies falls du keinen Proxy für den Objektspeicher verwenden wirst"
serverLogs: "Serverprotokolle" serverLogs: "Serverprotokolle"
deleteAll: "Alle löschen" deleteAll: "Alle löschen"
showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik anzeigen"
newNoteRecived: "Es gibt neue Notizen"
sounds: "Töne" sounds: "Töne"
listen: "Anhören" listen: "Anhören"
none: "Keine" none: "Keine"
volume: "Lautstärke" volume: "Lautstärke"
details: "Details" details: "Details"
chooseEmoji: "Wähle ein Emoji" chooseEmoji: "Wähle ein Emoji"
unableToProcess: "Der Vorgang konnte nicht abgeschlossen werden."
recentUsed: "Vor kurzem verwendet"
install: "Installieren"
uninstall: "Uninstallieren"
installedApps: "Authorisierte Anwendungen"
nothing: "Hier gibt es nichts zu sehen"
installedDate: "Authorisiert"
lastUsedDate: "Zuletzt verwendet"
state: "Status"
sort: "Sortieren"
ascendingOrder: "Aufsteigende Reihenfolge"
descendingOrder: "Absteigende Reihenfolge"
scratchpad: "Testumgebung"
scratchpadDescription: "Die Testumgebung bietet eine experimentale Umgebung für AiScript. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Misskey überprüfen."
output: "Ausgabe"
script: "Skript"
disablePagesScript: "AiScript auf Seiten deaktivieren"
updateRemoteUser: "Informationen über den Benutzer der fremder Instanz aktualisieren"
deleteAllFiles: "Alle Dateien löschen"
deleteAllFilesConfirm: "Möchtest du wirklich alle Dateien löschen?"
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"
manage: "Themaverwaltung"
code: "Themencode"
installed: "{name} wurde installiert"
alreadyInstalled: "Dieses Thema ist bereits installiert"
invalid: "Themenformat ist ungültig"
_sfx: _sfx:
note: "Notizen" note: "Notizen"
noteMy: "Meine Notizen" noteMy: "Meine Notizen"
notification: "Benachrichtigungen" notification: "Benachrichtigungen"
chat: "Nachrichten" chat: "Privatnachrichten"
chatBg: "Nachrichten (Hintergrund)" chatBg: "Nachrichten (Hintergrund)"
antenna: "Antennen" antenna: "Antennen"
_ago: _ago:
@ -339,14 +536,82 @@ _ago:
monthsAgo: "vor {n} Monat(en)" monthsAgo: "vor {n} Monat(en)"
yearsAgo: "vor {n} Jahr(en)" yearsAgo: "vor {n} Jahr(en)"
_time: _time:
second: "Sekunde" second: "Sekunde(n)"
minute: "Minute" minute: "Minute(n)"
hour: "Stunde" hour: "Stunde(n)"
day: "Tag(en)"
_tutorial:
title: "Wie du Misskey verwendest"
step1_1: "Willkommen!"
step1_2: "Diese Seite ist die \"Chronik\". Sie zeigt dir deine geschrieben \"Notizen\" sowie die aller Benutzer, denen du \"folgst\" in chronologischer Reihenfolge."
step1_3: "Deine Chronik sollte momentan leer sein, da du bis jetzt nocht keine Notizen geschrieben hast und auch noch keinen Benutzern folgst."
step2_1: "Lass uns zuerst dein Profil vervollständigen, bevor du Notizen schreibst oder jemandem folgst."
step2_2: "Informationen darüber, wer du bist, macht es anderen leichter zu wissen, ob sie deine Notizen sehen wollen und ob sie dir folgen möchten."
step3_1: "Mit dem Einrichten deines Profils fertig?"
step3_2: "Der nächste Schritt ist das Schreiben einer Notiz. Dies kannst du tun, indem du auf das Stift-Icon auf dem Bildschirm drückst."
step3_3: "Fülle das Fenster aus und drücke auf den Knopf oben rechts zum Senden."
step3_4: "Gibt es nichts, das du momentan sagen möchtest? Versuch's mit \"Hallo Misskey!\""
step4_1: "Fertig mit dem Senden deiner ersten Notiz?"
step4_2: "Falls deine Notiz nun auf deiner Chronik auftaucht, hast du alles richtig gemacht."
step5_1: "Lass uns nun deiner Chronik etwas mehr Leben einhauchen, indem du einigen anderen Benutzern folgst."
step5_2: "{featured} zeigt dir beliebte Notizen dieser Instanz. In {explore} kannst du beliebte Benutzer finden. Schau dort, ob du Benutzer findest, die dich interessieren."
step5_3: "Um anderen Benutzern zu folgen, klicke auf ihr Profilbild und klicke dann auf den \"Folgen\" Knopf in ihrem Profil."
step5_4: "Wenn der Benutzer neben seinem Namen ein Schloss hat, dann muss er deine Follow-Anfrage manuell bestätigen."
step6_1: "Wenn du nun auch die Notizen anderer Benutzer auf deiner Chronik siehst, hast du alles richtig gemacht."
step6_2: "Du kannst ebenso \"Reaktionen\" verwenden, um schnell auf Notizen anderer Benutzer zu antworten."
step6_3: "Um eine \"Reaktion\" anzufügen, klicke auf das \"+\"-Symbol in der Notiz eines anderen Benutzers und wähle ein Emoji, mit dem du reagieren möchtest."
step7_1: "Glückwunsch! Du hast die Misskey-Einführung abgeschlossen."
step7_2: "Wenn du mehr über Misskey lernen möchtest, schau dich im {help}-Bereich um."
step7_3: "Und nun, viel Spaß mit Misskey! 🚀"
_2fa:
alreadyRegistered: "Du hast bereits ein Gerät für Zwei-Faktor-Authentifizierung registriert"
registerDevice: "Neues Gerät registrieren"
registerKey: "Neuen Sicherheitsschlüssel registrieren"
step1: "Als Erstes, installiere eine Authentifizierungsapp (z.B. {a} oder {b}) auf deinem Gerät."
step2: "Dann, scanne den angezeigten QR-Code mit deinem Gerät."
step3: "Um die Einrichtung abzuschließen, gib den Token ein, der von deiner Authentifizierungsapp angezeigt wird."
step4: "Ab jetzt benötigen alle Loginversuche auch einen Login-Token."
securityKeyInfo: "Du kannst neben Fingerabdruck- oder PIN-Authentifizierung auf deinem Gerät auch Authentifizierung mit FIDO2-kompatiblen Hardware-Sicherheitsschlüsseln einrichten."
_permissions: _permissions:
"read:messaging": "Nachrichten lesen" "read:account": "Deine Benutzerkontoinformationen lesen"
"write:messaging": "Nachrichten schicken oder löschen" "write:account": "Deine Benutzerkontoinformationen bearbeiten"
"read:reactions": "Reaktionen sehen" "read:blocks": "Die Liste deiner blockierten Benutzer lesen"
"write:blocks": "Die Liste deiner blockierten Benutzer bearbeiten"
"read:drive": "Deine Drive-Dateien und Ordner lesen"
"write:drive": "Deine Drive-Dateien und Ordner bearbeiten oder löschen"
"read:favorites": "Deine Favoriten-Liste lesen"
"write:favorites": "Deine Favoriten-Liste bearbeiten"
"read:following": "Deine Follower-Liste lesen"
"write:following": "Anderen Benutzern folgen oder entfolgen"
"read:messaging": "Privatnachrichten lesen"
"write:messaging": "Privatnachrichten schicken oder löschen"
"read:mutes": "Stummschaltungen lesen"
"write:mutes": "Stummschaltungen bearbeiten"
"write:notes": "Notizen schreiben oder löschen"
"read:notifications": "Benachrichtigungen lesen"
"write:notifications": "Mit Benachrichtigungen arbeiten"
"read:reactions": "Reaktionen lesen"
"write:reactions": "Reaktionen hinzufügen und bearbeiten" "write:reactions": "Reaktionen hinzufügen und bearbeiten"
"write:votes": "In Umfragen abstimmen"
"read:pages": "Deine Seiten lesen"
"write:pages": "Deine Seiten bearbeiten oder löschen"
"read:page-likes": "Liste der Seiten, die mir gefallen, lesen"
"write:page-likes": "Liste der Seiten, die mir gefallen, bearbeiten"
"read:user-groups": "Benutzergruppen lesen"
"write:user-groups": "Benutzergruppen bearbeiten oder löschen"
_auth:
shareAccess: "Möchtest du \"{name}\" authorisieren, auf dieses Benuzerkonto zugreifen zu können?"
shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, auf dein Benutzerkonto zugreifen zu können?"
permissionAsk: "Diese Anwendung erfordert folgende Berechtigungen:"
pleaseGoBack: "Bitte gehe zurück zur Anwendung"
callback: "Rückkehr zur Anwendung"
denied: "Zugriff verweigert"
_antennaSources:
all: "Alle Notizen"
homeTimeline: "Notizen von Benutzern, denen gefolgt wird"
users: "Notizen von konkreten Benutzern"
userList: "Notizen von allen Benutzern aus einer Liste"
userGroup: "Notizen von allen Benutzern aus einer Gruppe"
_weekday: _weekday:
sunday: "Sonntag" sunday: "Sonntag"
monday: "Montag" monday: "Montag"
@ -358,7 +623,7 @@ _weekday:
_widgets: _widgets:
memo: "Memo" memo: "Memo"
notifications: "Benachrichtigungen" notifications: "Benachrichtigungen"
timeline: "Zeitleiste" timeline: "Chronik"
calendar: "Kalender" calendar: "Kalender"
trends: "Trends" trends: "Trends"
clock: "Uhr" clock: "Uhr"
@ -367,21 +632,21 @@ _widgets:
photos: "Fotos" photos: "Fotos"
_cw: _cw:
hide: "Ausblenden" hide: "Ausblenden"
show: "Zeige mehr" show: "Mehr anzeigen"
chars: "{count} Zeichen" chars: "{count} Zeichen"
files: "{count} Dateien" files: "{count} Dateien"
poll: "Umfrage" poll: "Umfrage"
_poll: _poll:
noOnlyOneChoice: "Mindestens zwei Antwortmöglichkeiten werden benötigt." noOnlyOneChoice: "Mindestens zwei Antwortmöglichkeiten werden benötigt."
choiceN: "Auswahl {n}" choiceN: "Auswahl {n}"
noMore: "Du kannst keine weiteren Auswahlen hinzufügen" noMore: "Du kannst keine weiteren Auswahlmöglichkeiten hinzufügen"
canMultipleVote: "Mehrfachantworten erlauben" canMultipleVote: "Mehrfachantworten erlauben"
expiration: "Abstimmung endet am" expiration: "Abstimmung endet am"
infinite: "Nie" infinite: "Nie"
at: "Beenden am..." at: "Beenden am..."
after: "Beenden nach..." after: "Beenden nach..."
deadlineDate: "Enddatum" deadlineDate: "Abstimmungsende"
deadlineTime: "Stunde" deadlineTime: "Zeit"
duration: "Laufzeit" duration: "Laufzeit"
votesCount: "{n} Stimmen" votesCount: "{n} Stimmen"
totalVotes: "Insgesamt {n} Stimmen" totalVotes: "Insgesamt {n} Stimmen"
@ -397,10 +662,11 @@ _visibility:
public: "Öffentlich" public: "Öffentlich"
publicDescription: "Deine Notiz wird global sichtbar sein" publicDescription: "Deine Notiz wird global sichtbar sein"
home: "Startseite" home: "Startseite"
followers: "Folgende" homeDescription: "Deine Notiz wird nur in der Chronik deiner Instanz angezeigt."
followers: "Follower"
followersDescription: "Nur für Follower sichtbar" followersDescription: "Nur für Follower sichtbar"
specified: "Direkt" specified: "Direkt"
specifiedDescription: "Nur für erwähnte Benutzer sichtbar" specifiedDescription: "Nur für bestimmte Benutzer sichtbar"
localOnly: "Nur Lokal" localOnly: "Nur Lokal"
_postForm: _postForm:
replyPlaceholder: "Dieser Notiz antworten..." replyPlaceholder: "Dieser Notiz antworten..."
@ -422,9 +688,9 @@ _profile:
metadataContent: "Inhalt" metadataContent: "Inhalt"
_exportOrImport: _exportOrImport:
allNotes: "Alle Notizen" allNotes: "Alle Notizen"
followingList: "Folgen" followingList: "Gefolgte Benutzer"
muteList: "Stummschalten" muteList: "Stummschaltungen"
blockingList: "Blockieren" blockingList: "Blockierungen"
userLists: "Listen" userLists: "Listen"
_charts: _charts:
federationInstancesIncDec: "Unterschied in der Anzahl von förderierenden Instanzen" federationInstancesIncDec: "Unterschied in der Anzahl von förderierenden Instanzen"
@ -434,6 +700,7 @@ _charts:
activeUsers: "Aktive Benutzer" activeUsers: "Aktive Benutzer"
notesIncDec: "Unterschied in der Anzahl von Notizen" notesIncDec: "Unterschied in der Anzahl von Notizen"
localNotesIncDec: "Unterschied in der Anzahl von lokalen Notizen" localNotesIncDec: "Unterschied in der Anzahl von lokalen Notizen"
remoteNotesIncDec: "Unterschied in Anzahl der Notizen von anderen Instanzen"
notesTotal: "Anzahl aller Notizen" notesTotal: "Anzahl aller Notizen"
filesIncDec: "Unterschied in der Anzahl von Dateien" filesIncDec: "Unterschied in der Anzahl von Dateien"
filesTotal: "Anzahl aller Dateien" filesTotal: "Anzahl aller Dateien"
@ -442,26 +709,119 @@ _charts:
_instanceCharts: _instanceCharts:
requests: "Anfragen" requests: "Anfragen"
users: "Unterschied in der Anzahl von Benutzern" users: "Unterschied in der Anzahl von Benutzern"
usersTotal: "Gesamtanzahl an Benutzern"
notes: "Unterschied in der Anzahl von Notizen" notes: "Unterschied in der Anzahl von Notizen"
notesTotal: "Gesamtanzahl an Notizen"
ff: "Unterschied in der Anzahl von Followern" ff: "Unterschied in der Anzahl von Followern"
ffTotal: "Gesamtanzahl an Followern"
cacheSize: "Unterschied in der Größe des Caches" cacheSize: "Unterschied in der Größe des Caches"
cacheSizeTotal: "Gesamtgröße des Caches"
files: "Unterschied in der Anzahl der Dateien" files: "Unterschied in der Anzahl der Dateien"
filesTotal: "Gesamtanzahl an Dateien"
_timelines: _timelines:
home: "Startseite" home: "Startseite"
local: "Lokal" local: "Lokal"
social: "Sozial"
global: "Global" 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: _pages:
newPage: "Seite erstellen"
editPage: "Diese Seite bearbeiten"
readPage: "Quelltext-Ansicht"
created: "Seite erfolgreich erstellt"
updated: "Seite erfolgreich aktualisiert"
deleted: "Seite erfolgreich gelöscht"
nameAlreadyExists: "Die angegebene Seiten-URL existiert bereits"
invalidNameTitle: "Die angegebene Seiten-URL ist ungültig"
invalidNameText: "Überprüfe, ob der Seitentitel nicht leer ist"
editThisPage: "Diese Seite bearbeiten"
viewSource: "Quelltext anzeigen"
viewPage: "Seite anschauen"
like: "Gefällt mir"
unlike: "\"Gefällt mir\" entfernen"
my: "Meine Seiten"
liked: "Seiten, die mir gefallen"
inspector: "Inspektor"
content: "Inhalt" content: "Inhalt"
variables: "Variablen"
title: "Titel" title: "Titel"
url: "Seiten-URL" url: "Seiten-URL"
summary: "Zusammenfassung" summary: "Zusammenfassung"
alignCenter: "Mittig ausrichten" alignCenter: "Bestandteile zentrieren"
hideTitleWhenPinned: "Seitentitel ausblenden, wenn an dein Profil angepinnt "
font: "Schriftart" font: "Schriftart"
fontSerif: "Serif" fontSerif: "Serif"
fontSansSerif: "Sans Serif" fontSansSerif: "Sans Serif"
eyeCatchingImageSet: "Vorschaubild festlegen"
eyeCatchingImageRemove: "Vorschaubild entfernen"
chooseBlock: "Block hinzufügen" chooseBlock: "Block hinzufügen"
selectType: "Wähle einen Typ" selectType: "Wähle einen Typ"
enterVariableName: "Gib einen Namen für deine Variable ein" enterVariableName: "Gib einen Namen für deine Variable ein"
variableNameIsAlreadyUsed: "Dieser Name wird bereits von einer anderen Variable verwendet"
contentBlocks: "Inhalt"
inputBlocks: "Eingabe"
specialBlocks: "Spezial"
blocks: blocks:
text: "Text" text: "Text"
textarea: "Textfeld" textarea: "Textfeld"
@ -474,24 +834,36 @@ _pages:
post: "Neue Notiz anfertigen" post: "Neue Notiz anfertigen"
_post: _post:
text: "Inhalt" text: "Inhalt"
attachCanvasImage: "Leinwand als Bild anfügen"
canvasId: "Leinwand-ID"
textInput: "Texteingabe" textInput: "Texteingabe"
_textInput: _textInput:
name: "Variablenname"
text: "Titel" text: "Titel"
default: "Standardwert" default: "Standardwert"
textareaInput: "Eingabe des mehrzeiligen Textfelds" textareaInput: "Eingabe des mehrzeiligen Textfelds"
_textareaInput: _textareaInput:
name: "Variablenname"
text: "Titel" text: "Titel"
default: "Standardwert" default: "Standardwert"
numberInput: "Nummereingabe" numberInput: "Nummereingabe"
_numberInput: _numberInput:
name: "Variablenname"
text: "Titel" text: "Titel"
default: "Standardwert" default: "Standardwert"
canvas: "Leinwand"
_canvas:
id: "Leinwand-ID"
width: "Breite"
height: "Höhe"
switch: "Fallunterscheidung" switch: "Fallunterscheidung"
_switch: _switch:
name: "Variablenname"
text: "Titel" text: "Titel"
default: "Standardwert" default: "Standardwert"
counter: "Zähler" counter: "Zähler"
_counter: _counter:
name: "Variablenname"
text: "Titel" text: "Titel"
inc: "Erhöhen um" inc: "Erhöhen um"
_button: _button:
@ -509,13 +881,18 @@ _pages:
message: "Nachricht, die bei Aktivierung gezeigt werden soll" message: "Nachricht, die bei Aktivierung gezeigt werden soll"
variable: "Variable, die gesendet werden soll" variable: "Variable, die gesendet werden soll"
no-variable: "Keine" no-variable: "Keine"
callAiScript: "AiScript ausführen"
_callAiScript:
functionName: "Funktionsname"
radioButton: "Optionsfeld" radioButton: "Optionsfeld"
_radioButton: _radioButton:
name: "Variablenname"
title: "Titel" title: "Titel"
values: "Auswahlmöglichkeiten (getrennt durch Zeilenumbrüche)" values: "Auswahlmöglichkeiten (getrennt durch Zeilenumbrüche)"
default: "Standardwert" default: "Standardwert"
script: script:
categories: categories:
flow: "Steuerung"
logical: "Logische Operationen" logical: "Logische Operationen"
operation: "Berechnungen" operation: "Berechnungen"
comparison: "Vergleiche" comparison: "Vergleiche"
@ -666,17 +1043,43 @@ _pages:
splitStrByLine: "Text nach Zeilenumbrüchen aufteilen" splitStrByLine: "Text nach Zeilenumbrüchen aufteilen"
_splitStrByLine: _splitStrByLine:
arg1: "Text" arg1: "Text"
ref: "Variablen"
aiScriptVar: "AiScript Variablen"
fn: "Funktionen" fn: "Funktionen"
_fn: _fn:
slots: "Slots"
slots-info: "Trenne jeden Slot mit einem Zeilenumbruch"
arg1: "Ausgabe" arg1: "Ausgabe"
for: "Wiederholen" for: "Wiederholen"
_for: _for:
arg1: "Anzahl der Wiederholungen" arg1: "Anzahl der Wiederholungen"
arg2: "Aktion" arg2: "Aktion"
typeError: "Slot {slot} akzeptiert Werte vom Typ \"{expect}\", aber es wurde ein \"{actual}\" Wert angegeben!"
thereIsEmptySlot: "Slot {slot} ist leer!"
types: types:
string: "Text" string: "Text"
number: "Nummer" number: "Nummer"
boolean: "Flag"
array: "Listen" array: "Listen"
stringArray: "Textliste" stringArray: "Textliste"
emptySlot: "Leerer Slot"
enviromentVariables: "Umgebungsvariable" enviromentVariables: "Umgebungsvariable"
pageVariables: "Seitenelement" 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" emojiName: "Emoji name"
emojiUrl: "Emoji URL" emojiUrl: "Emoji URL"
addEmoji: "Add an emoji" addEmoji: "Add an emoji"
settingGuide: "Suggested Configuration"
cacheRemoteFiles: "Cache remote files" 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." 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" flagAsBot: "This account is a bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Filename" fileName: "Filename"
selectFile: "Select a file" selectFile: "Select a file"
selectFiles: "Select files" selectFiles: "Select files"
selectFolder: "Select a folder"
selectFolders: "Select folders"
renameFile: "Rename file" renameFile: "Rename file"
folderName: "Folder name" folderName: "Folder name"
createFolder: "Create a folder" createFolder: "Create a folder"
@ -260,11 +263,12 @@ nsfw: "NSFW"
disconnectedFromServer: "Connection to the server was interrupted." disconnectedFromServer: "Connection to the server was interrupted."
reload: "Refresh" reload: "Refresh"
doNothing: "Ignore" doNothing: "Ignore"
reloadConfirm: "Would you like to retry?" reloadConfirm: "Would you like to refresh timeline?"
watch: "Watch" watch: "Watch"
unwatch: "Undo Watch" unwatch: "Undo Watch"
accept: "Accept" accept: "Accept"
reject: "Reject" reject: "Reject"
normal: "Normal"
instanceName: "Instance name" instanceName: "Instance name"
instanceDescription: "Instance description" instanceDescription: "Instance description"
maintainerName: "Maintainer" maintainerName: "Maintainer"
@ -296,10 +300,15 @@ bannerUrl: "Banner image URL"
basicInfo: "Basic info" basicInfo: "Basic info"
pinnedUsers: "Pinned user" pinnedUsers: "Pinned user"
pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab." 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" recaptcha: "reCAPTCHA"
enableRecaptcha: "Enable reCAPTCHA" enableRecaptcha: "Enable reCAPTCHA"
recaptchaSiteKey: "Site key" recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret 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" antennas: "Antennas"
manageAntennas: "Manage Antennas" manageAntennas: "Manage Antennas"
name: "Name" name: "Name"
@ -319,6 +328,7 @@ notesAndReplies: "Notes and replies"
withFiles: "Media" withFiles: "Media"
silence: "Silence" silence: "Silence"
silenceConfirm: "Are you sure that you want to silence this user?" silenceConfirm: "Are you sure that you want to silence this user?"
unsilence: "Unsilence"
unsilenceConfirm: "Are you sure that you want to undo silence of this user?" unsilenceConfirm: "Are you sure that you want to undo silence of this user?"
popularUsers: "Trending users" popularUsers: "Trending users"
recentlyUpdatedUsers: "Users with recent activity" recentlyUpdatedUsers: "Users with recent activity"
@ -350,9 +360,7 @@ unregister: "Unregister"
passwordLessLogin: "Set up password-less login" passwordLessLogin: "Set up password-less login"
resetPassword: "Reset password" resetPassword: "Reset password"
newPasswordIs: "The new password is \"{password}\"" newPasswordIs: "The new password is \"{password}\""
post: "Post" autoReloadWhenDisconnected: "Auto refresh when disconnected from server"
posted: "Posted!"
autoReloadWhenDisconnected: "Auto reload when disconnected from server"
autoNoteWatch: "Watch note automatically" autoNoteWatch: "Watch note automatically"
autoNoteWatchDescription: "Get notified about the notes which you reactioned or replied." autoNoteWatchDescription: "Get notified about the notes which you reactioned or replied."
reduceUiAnimation: "Reduce UI animation" reduceUiAnimation: "Reduce UI animation"
@ -454,6 +462,8 @@ objectStorageRegion: "Region"
objectStorageRegionDesc: "Specify a region like 'xx-east-1'. If your service does not have distinction about regions, leave it blank or fill with 'us-east-1'." objectStorageRegionDesc: "Specify a region like 'xx-east-1'. If your service does not have distinction about regions, leave it blank or fill with 'us-east-1'."
objectStorageUseSSL: "Use SSL" objectStorageUseSSL: "Use SSL"
objectStorageUseSSLDesc: "Turn off this if you are not going to use HTTPS for API connection" objectStorageUseSSLDesc: "Turn off this if you are not going to use HTTPS for API connection"
objectStorageUseProxy: "Connect over Proxy"
objectStorageUseProxyDesc: "Turn off this if you are not going to use Proxy for ObjectStorage connection"
serverLogs: "Server logs" serverLogs: "Server logs"
deleteAll: "Delete all" deleteAll: "Delete all"
showFixedPostForm: "Display the posting form at the top of the timeline" showFixedPostForm: "Display the posting form at the top of the timeline"
@ -476,6 +486,27 @@ state: "State"
sort: "Sort" sort: "Sort"
ascendingOrder: "Ascending" ascendingOrder: "Ascending"
descendingOrder: "Descending" descendingOrder: "Descending"
scratchpad: "Scratch pad"
scratchpadDescription: "Scratchpad provides experimental environment for AiScript. You can write, execute, and check the results that interact with Misskey."
output: "Output"
script: "Script"
disablePagesScript: "Disable AiScript on Pages"
updateRemoteUser: "Update remote user information"
deleteAllFiles: "Delete All Files"
deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
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: _theme:
explore: "Explore Themes" explore: "Explore Themes"
install: "Install theme" install: "Install theme"
@ -516,7 +547,7 @@ _tutorial:
step2_2: "Providing some information about who you are will make it easier for others to follow you back." step2_2: "Providing some information about who you are will make it easier for others to follow you back."
step3_1: "Finished setting up your profile?" step3_1: "Finished setting up your profile?"
step3_2: "The next step is to post a note. You can do this by pressing the pencil icon on the screen." step3_2: "The next step is to post a note. You can do this by pressing the pencil icon on the screen."
step3_3: "Fill in the modal and press the button on the right top to post." step3_3: "Fill in the modal and press the button on the top right to post."
step3_4: "Have nothing to say? Try \"just setting up my msky\"!" step3_4: "Have nothing to say? Try \"just setting up my msky\"!"
step4_1: "Finished posting your first note?" step4_1: "Finished posting your first note?"
step4_2: "Hurray! Now your first note is displayed on your timeline." step4_2: "Hurray! Now your first note is displayed on your timeline."
@ -676,20 +707,82 @@ _charts:
_instanceCharts: _instanceCharts:
requests: "Requests" requests: "Requests"
users: "Difference in # of users" users: "Difference in # of users"
usersTotal: "Total # of users" usersTotal: "Cumulative total # of users"
notes: "Difference in # of notes" notes: "Difference in # of notes"
notesTotal: "Total # of notes" notesTotal: "Cumulative total # of notes"
ff: "Difference in # of followers" ff: "Difference in # of followers"
ffTotal: "Total # of followers" ffTotal: "Cumulative total # of followers"
cacheSize: "Difference in cache size" cacheSize: "Difference in cache size"
cacheSizeTotal: "Total cache size" cacheSizeTotal: "Cumulative total cache size"
files: "Difference in # of files" files: "Difference in # of files"
filesTotal: "Total # of files" filesTotal: "Cumulative total # of files"
_timelines: _timelines:
home: "Home" home: "Home"
local: "Local" local: "Local"
social: "Social" social: "Social"
global: "Global" 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: _pages:
newPage: "Create a page" newPage: "Create a page"
editPage: "Edit this page" editPage: "Edit this page"
@ -739,6 +832,8 @@ _pages:
post: "Compose a note" post: "Compose a note"
_post: _post:
text: "Content" text: "Content"
attachCanvasImage: "Post with Canvas as Image"
canvasId: "Canvas ID"
textInput: "Text input" textInput: "Text input"
_textInput: _textInput:
name: "Variable name" name: "Variable name"
@ -754,6 +849,11 @@ _pages:
name: "Variable name" name: "Variable name"
text: "Title" text: "Title"
default: "Default value" default: "Default value"
canvas: "Canvas"
_canvas:
id: "Canvas ID"
width: "Width"
height: "Height"
switch: "Switch" switch: "Switch"
_switch: _switch:
name: "Variable name" name: "Variable name"
@ -779,6 +879,9 @@ _pages:
message: "Message to display when activated" message: "Message to display when activated"
variable: "Variable to send" variable: "Variable to send"
no-variable: "None" no-variable: "None"
callAiScript: "Invoke AiScript"
_callAiScript:
functionName: "Function name"
radioButton: "Choice" radioButton: "Choice"
_radioButton: _radioButton:
name: "Variable name" name: "Variable name"
@ -939,6 +1042,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "Text" arg1: "Text"
ref: "Variables" ref: "Variables"
aiScriptVar: "Variable of AiScript"
fn: "Functions" fn: "Functions"
_fn: _fn:
slots: "Slots" slots: "Slots"
@ -960,3 +1064,10 @@ _pages:
enviromentVariables: "Environment variable" enviromentVariables: "Environment variable"
pageVariables: "Page element" pageVariables: "Page element"
argVariables: "Input slot" argVariables: "Input slot"
_relayStatus:
requesting: "Pending"
accepted: "Accepted"
rejected: "Rejected"
_notification:
youWereFollowed: "Followed you"
youWereInvitedToGroup: "Invited to group"

View File

@ -60,7 +60,7 @@ lists: "Listas"
noLists: "No tiene listas" noLists: "No tiene listas"
note: "Notas" note: "Notas"
notes: "Notas" notes: "Notas"
following: "Sigue" following: "Siguiendo"
followers: "Seguidores" followers: "Seguidores"
followsYou: "Te sigue" followsYou: "Te sigue"
createList: "Crear lista" createList: "Crear lista"
@ -107,6 +107,7 @@ customEmojis: "Emojis personalizados"
emojiName: "Nombre del emoji" emojiName: "Nombre del emoji"
emojiUrl: "URL de la imágen del emoji" emojiUrl: "URL de la imágen del emoji"
addEmoji: "Añadir emoji" addEmoji: "Añadir emoji"
settingGuide: "Configuración sugerida"
cacheRemoteFiles: "Mantener en cache los archivos remotos" 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." 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" flagAsBot: "Esta cuenta es un bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Nombre de archivo" fileName: "Nombre de archivo"
selectFile: "Elegir archivo" selectFile: "Elegir archivo"
selectFiles: "Elegir archivos" selectFiles: "Elegir archivos"
selectFolder: "Seleccione una carpeta"
selectFolders: "Seleccione carpetas"
renameFile: "Renombrar archivo" renameFile: "Renombrar archivo"
folderName: "Nombre de la carpeta" folderName: "Nombre de la carpeta"
createFolder: "Crear carpeta" createFolder: "Crear carpeta"
@ -265,6 +268,7 @@ watch: "Ver"
unwatch: "Dejar de ver" unwatch: "Dejar de ver"
accept: "Aceptar" accept: "Aceptar"
reject: "Rechazar" reject: "Rechazar"
normal: "Normal"
instanceName: "Nombre de la instancia" instanceName: "Nombre de la instancia"
instanceDescription: "Descripción de la instancia" instanceDescription: "Descripción de la instancia"
maintainerName: "Nombre del administrador" maintainerName: "Nombre del administrador"
@ -296,10 +300,15 @@ bannerUrl: "URL de la imagen del banner"
basicInfo: "Información básica" basicInfo: "Información básica"
pinnedUsers: "Usuarios fijados" pinnedUsers: "Usuarios fijados"
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva" 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" recaptcha: "reCAPTCHA"
enableRecaptcha: "activar reCAPTCHA" enableRecaptcha: "activar reCAPTCHA"
recaptchaSiteKey: "Clave del sitio" recaptchaSiteKey: "Clave del sitio"
recaptchaSecretKey: "Clave secreta" 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" antennas: "Antenas"
manageAntennas: "Administrar antenas" manageAntennas: "Administrar antenas"
name: "Nombre" name: "Nombre"
@ -319,6 +328,7 @@ notesAndReplies: "Notas y respuestas"
withFiles: "Adjuntos" withFiles: "Adjuntos"
silence: "Silenciar" silence: "Silenciar"
silenceConfirm: "¿Desea silenciar al usuario?" silenceConfirm: "¿Desea silenciar al usuario?"
unsilence: "Dejar de silenciar"
unsilenceConfirm: "¿Desea dejar de silenciar al usuario?" unsilenceConfirm: "¿Desea dejar de silenciar al usuario?"
popularUsers: "Usuarios populares" popularUsers: "Usuarios populares"
recentlyUpdatedUsers: "Usuarios activos recientemente" recentlyUpdatedUsers: "Usuarios activos recientemente"
@ -350,8 +360,6 @@ unregister: "Cancelar registro"
passwordLessLogin: "Iniciar sesión sin contraseña" passwordLessLogin: "Iniciar sesión sin contraseña"
resetPassword: "Resetear contraseña" resetPassword: "Resetear contraseña"
newPasswordIs: "La nueva contraseña es \"{password}\"" newPasswordIs: "La nueva contraseña es \"{password}\""
post: "Nota"
posted: "Posteado"
autoReloadWhenDisconnected: "Recargar automáticamente cuando el servidor está desconectado" autoReloadWhenDisconnected: "Recargar automáticamente cuando el servidor está desconectado"
autoNoteWatch: "Ver nota automáticamente" autoNoteWatch: "Ver nota automáticamente"
autoNoteWatchDescription: "Recibe notificaciones sobre las notas de otros usuarios que a los que respondiste y reaccionaste" autoNoteWatchDescription: "Recibe notificaciones sobre las notas de otros usuarios que a los que respondiste y reaccionaste"
@ -454,6 +462,8 @@ objectStorageRegion: "Region"
objectStorageRegionDesc: "Especifique una región como 'xx-east-1'. Si su servicio no tiene distinción sobre regiones, déjelo en blanco o complete con 'us-east-1'." objectStorageRegionDesc: "Especifique una región como 'xx-east-1'. Si su servicio no tiene distinción sobre regiones, déjelo en blanco o complete con 'us-east-1'."
objectStorageUseSSL: "Usar SSL" objectStorageUseSSL: "Usar SSL"
objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API" objectStorageUseSSLDesc: "Desactive esto si no va a usar HTTPS para la conexión API"
objectStorageUseProxy: "Conectarse a través de Proxy"
objectStorageUseProxyDesc: "Desactive esto si no va a usar Proxy para la conexión de Almacenamiento de objetos"
serverLogs: "Registros del servidor" serverLogs: "Registros del servidor"
deleteAll: "Eliminar todos" deleteAll: "Eliminar todos"
showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo" showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo"
@ -472,6 +482,30 @@ installedApps: "Aplicaciones Autorizadas"
nothing: "No hay nada que ver aqui" nothing: "No hay nada que ver aqui"
installedDate: "Autorizado" installedDate: "Autorizado"
lastUsedDate: "Utilizado el" lastUsedDate: "Utilizado el"
state: "Estado"
sort: "Ordenar"
ascendingOrder: "Ascendente"
descendingOrder: "Descendente"
scratchpad: "Scratch pad"
scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript. Puede escribir, ejecutar y verificar los resultados que interactúan con Misskey."
output: "Salida"
script: "Script"
disablePagesScript: "Deshabilitar AiScript en Páginas"
updateRemoteUser: "Actualizar información de usuario remoto"
deleteAllFiles: "Borrar todos los archivos"
deleteAllFilesConfirm: "¿Desea borrar todos los archivos?"
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: _theme:
explore: "Explorar temas" explore: "Explorar temas"
install: "Instalar tema" install: "Instalar tema"
@ -672,15 +706,80 @@ _charts:
_instanceCharts: _instanceCharts:
requests: "Pedidos" requests: "Pedidos"
users: "Variación de usuarios" users: "Variación de usuarios"
usersTotal: "Total acumulado de usuarios"
notes: "Variación de la cantidad de notas" notes: "Variación de la cantidad de notas"
notesTotal: "Total acumulado de la cantidad de notas"
ff: "Variación de cantidad de seguidos/seguidores" ff: "Variación de cantidad de seguidos/seguidores"
ffTotal: "Total acumulado de cantidad de seguidos/seguidores"
cacheSize: "Variación del tamaño de la caché" cacheSize: "Variación del tamaño de la caché"
cacheSizeTotal: "Total acumulado del tamaño de la caché"
files: "Variación de cantidad de archivos" files: "Variación de cantidad de archivos"
filesTotal: "Total acumulado de cantidad de archivos"
_timelines: _timelines:
home: "Inicio" home: "Inicio"
local: "Local" local: "Local"
social: "Social" social: "Social"
global: "Global" 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: _pages:
newPage: "Crear página" newPage: "Crear página"
editPage: "Editar página" editPage: "Editar página"
@ -730,6 +829,8 @@ _pages:
post: "Formulario" post: "Formulario"
_post: _post:
text: "Contenido" text: "Contenido"
attachCanvasImage: "Nota con lienzo como imagen"
canvasId: "Lienzo ID"
textInput: "Entrada de texto" textInput: "Entrada de texto"
_textInput: _textInput:
name: "Nombre de variable" name: "Nombre de variable"
@ -745,6 +846,11 @@ _pages:
name: "Nombre de variable" name: "Nombre de variable"
text: "Título" text: "Título"
default: "Valor predeterminado" default: "Valor predeterminado"
canvas: "Lienzo"
_canvas:
id: "Lienzo ID"
width: "Ancho"
height: "Altura"
switch: "Interruptor" switch: "Interruptor"
_switch: _switch:
name: "Nombre de variable" name: "Nombre de variable"
@ -770,6 +876,9 @@ _pages:
message: "Mensaje mostrado al apretar" message: "Mensaje mostrado al apretar"
variable: "Variable a enviar" variable: "Variable a enviar"
no-variable: "Ninguna" no-variable: "Ninguna"
callAiScript: "Invocar AiScript"
_callAiScript:
functionName: "Nombre de la función"
radioButton: "Botón de opción" radioButton: "Botón de opción"
_radioButton: _radioButton:
name: "Nombre de variable" name: "Nombre de variable"
@ -930,6 +1039,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "Texto" arg1: "Texto"
ref: "Variables" ref: "Variables"
aiScriptVar: "Variable de AiScript"
fn: "funciones" fn: "funciones"
_fn: _fn:
slots: "Slots" slots: "Slots"
@ -951,3 +1061,10 @@ _pages:
enviromentVariables: "Variables de entorno" enviromentVariables: "Variables de entorno"
pageVariables: "Items de la página" pageVariables: "Items de la página"
argVariables: "Slot de entrada" 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" _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}" monthAndDay: "{day}/{month}"
search: "Rechercher" search: "Rechercher"
notifications: "Notifications" notifications: "Notifications"
username: "Nom d'utilisateur·rice" username: "Nom dutilisateur·rice"
password: "Mot de passe" password: "Mot de passe"
fetchingAsApObject: "Récupération depuis le fédiverse" fetchingAsApObject: "Récupération depuis le fédiverse"
ok: "D'accord" ok: "OK"
gotIt: "J'ai compris !" gotIt: "Jai compris !"
cancel: "Annuler" cancel: "Annuler"
enterUsername: "Entrer un nom d'utilisateur·rice" enterUsername: "Entrer un nom dutilisateur·rice"
renotedBy: "Renoté par {user}" renotedBy: "Renoté par {user}"
noNotes: "Pas de notes" noNotes: "Aucune note"
noNotifications: "Pas de notifications" noNotifications: "Aucune notification"
instance: "Instance" instance: "Instance"
settings: "Paramètres" settings: "Paramètres"
profile: "Profil" profile: "Profil"
timeline: "Fil d'actualité" timeline: "Fil"
noAccountDescription: "L'utilisateur·rice n'a pas renseigné de présentation sur son profil" noAccountDescription: "Lutilisateur·rice na pas encore renseigné de biographie de présentation sur son profil."
login: "Se connecter" login: "Se connecter"
loggingIn: "Connexion en cours" loggingIn: "Connexion en cours"
logout: "Se déconnecter" logout: "Se déconnecter"
signup: "S'enregistrer" signup: "Sinscrire"
uploading: "Envoi en cours" uploading: "Envoi en cours"
save: "Enregistrer" save: "Enregistrer"
users: "Utilisateur·rice·s" users: "Utilisateur·rice·s"
@ -36,29 +36,29 @@ copyContent: "Copier le contenu"
copyLink: "Copier le lien" copyLink: "Copier le lien"
delete: "Supprimer" delete: "Supprimer"
deleteAndEdit: "Supprimer et réécrire" 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" addToList: "Ajouter à une liste"
sendMessage: "Envoyer un message" sendMessage: "Envoyer un message"
copyUsername: "Copier le nom d'utilisateur" copyUsername: "Copier le nom dutilisateur·rice"
reply: "Répondre" reply: "Répondre"
loadMore: "Voir plus" loadMore: "Afficher plus"
youGotNewFollower: "Vous suit" youGotNewFollower: "Vous suit"
receiveFollowRequest: "Demande de suivi reçue" receiveFollowRequest: "Demande dabonnement reçue"
followRequestAccepted: "L'abonne la demande acceptée" followRequestAccepted: "La demande dabonnement a été acceptée"
mentions: "Mentions" mentions: "Mentions"
directNotes: "Messages directs" directNotes: "Notes directes"
importAndExport: "Import et export" importAndExport: "Import et export"
import: "Importer" import: "Importer"
export: "Exporter" export: "Exporter"
files: "Fichier·s" files: "Fichiers"
download: "Télécharger" 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." 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} ?" unfollowConfirm: "Désirez-vous vous 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." 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." importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps."
lists: "Listes" lists: "Listes"
noLists: "Aucune liste" noLists: "Vous navez aucune liste"
note: "Note" note: "Notes"
notes: "Notes" notes: "Notes"
following: "Abonnements" following: "Abonnements"
followers: "Abonné·e·s" followers: "Abonné·e·s"
@ -68,27 +68,27 @@ manageLists: "Gérer les listes"
error: "Une erreur est survenue" error: "Une erreur est survenue"
retry: "Réessayer" retry: "Réessayer"
enterListName: "Nom de la liste" enterListName: "Nom de la liste"
privacy: "Vie privée" privacy: "Confidentialité"
makeFollowManuallyApprove: "Demandes dsuivi requiert l'approbation" makeFollowManuallyApprove: "Accepter manuellement les demandes dabonnement"
defaultNoteVisibility: "Visibilité par défaut" defaultNoteVisibility: "Visibilité par défaut"
follow: "Suivre" follow: "Sabonner"
followRequest: "Demande dsuivre" followRequest: "Demande dabonnement"
followRequests: "Demandes dabonnement" followRequests: "Demandes dabonnement"
unfollow: "Se désabonner" unfollow: "Se désabonner"
followRequestPending: "En attente dapprobation" followRequestPending: "En attente dapprobation"
enterEmoji: "ou entrez un émoji" enterEmoji: "ou entrez un émoji"
renote: "Renote" renote: "Renote"
unrenote: "Annuler Renote" unrenote: "Annuler Renote"
quote: "Citation" quote: "Citer"
pinnedNote: "Note épinglée" pinnedNote: "Note épinglée"
you: "Vous" you: "Vous"
clickToShow: "Cliquer pour afficher" clickToShow: "Cliquer pour afficher"
sensitive: "Contenu sensible" sensitive: "Contenu sensible"
add: "Ajouter" add: "Ajouter"
reaction: "Réactions" 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" rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Enlever le fichier attaché" attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible" markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible" unmarkAsSensitive: "Enlever le marquage comme sensible"
enterFileName: "Entrer le nom du fichier" enterFileName: "Entrer le nom du fichier"
@ -98,32 +98,33 @@ block: "Bloquer"
unblock: "Débloquer" unblock: "Débloquer"
suspend: "Suspendre" suspend: "Suspendre"
unsuspend: "Annuler la suspension" unsuspend: "Annuler la suspension"
blockConfirm: "Désirez-vous bloquer ce compte ?" blockConfirm: "Êtes-vous sûr·e de vouloir bloquer ce compte ?"
unblockConfirm: "Désirez-vous débloquer ce compte ?" unblockConfirm: "Êtes-vous sûr·e de vouloir débloquer ce compte ?"
suspendConfirm: "Désirez-vous suspendre ce compte ?" suspendConfirm: "Êtes-vous sûr·e de vouloir suspendre ce compte ?"
unsuspendConfirm: "Désirez-vous annuler la suspension de ce compte ?" unsuspendConfirm: "Êtes-vous sûr·e de vouloir annuler la suspension de ce compte ?"
selectList: "Sélectionner une liste" selectList: "Sélectionner une liste"
customEmojis: "Émojis personnalisés" customEmojis: "Émojis personnalisés"
emojiName: "Nom de lémoji" emojiName: "Nom de lémoji"
emojiUrl: "URL de lémoji" emojiUrl: "URL de lémoji"
addEmoji: "Ajouter un émoji" addEmoji: "Ajouter un émoji"
cacheRemoteFiles: "Mettre en cache des fichiers distants" settingGuide: "Configuration proposée"
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." 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" flagAsBot: "Ce compte est un robot"
flagAsCat: "Ce compte est un chat" 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" addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion" loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur l'instance distante" showOnRemote: "Voir sur linstance distante"
general: "Général" general: "Général"
wallpaper: "Arrière plan" wallpaper: "Fond décran"
setWallpaper: "Définir le fond d'écran" setWallpaper: "Définir le fond décran"
removeWallpaper: "Supprimer l'arrière plan" removeWallpaper: "Supprimer le fond décran"
searchWith: "Recherche : {q}" searchWith: "Recherche : {q}"
youHaveNoLists: "Vous n'avez aucune liste" 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" 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" host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice" selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Correspondant·e" recipient: "Correspondant·e"
@ -133,13 +134,13 @@ instances: "Instance"
registeredAt: "Premier contact le" registeredAt: "Premier contact le"
latestRequestSentAt: "Dernière requête envoyée" latestRequestSentAt: "Dernière requête envoyée"
latestRequestReceivedAt: "Dernière requête reçue" latestRequestReceivedAt: "Dernière requête reçue"
latestStatus: "Dernière statut" latestStatus: "Dernier statut"
storageUsage: "Stockage utilisé" storageUsage: "Stockage utilisé"
charts: "Graphiques" charts: "Graphiques"
perHour: "par heure" perHour: "par heure"
perDay: "par jour" perDay: "par jour"
stopActivityDelivery: "Arrêter l'envoi d'activités" stopActivityDelivery: "Arrêter lenvoi de lactivité"
blockThisInstance: "Bloquer cette instnce" blockThisInstance: "Bloquer cette instance"
operations: "Opérations" operations: "Opérations"
software: "Logiciel" software: "Logiciel"
version: "Version" version: "Version"
@ -150,7 +151,7 @@ jobQueue: "File dattente"
cpuAndMemory: "Processeur et mémoire" cpuAndMemory: "Processeur et mémoire"
network: "Réseau" network: "Réseau"
disk: "Disque" disk: "Disque"
instanceInfo: "Informations sur l'instance" instanceInfo: "Informations sur linstance"
statistics: "Statistiques" statistics: "Statistiques"
clearQueue: "Vider la file d'attente" clearQueue: "Vider la file d'attente"
clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir 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" clearCachedFiles: "Vider le cache"
clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?" clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?"
blockedInstances: "Instances bloquées" 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." 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és / Bloqués" muteAndBlock: "Masqué·e·s / Bloqué·e·s"
mutedUsers: "Utilisateur·rice·s en sourdine" mutedUsers: "Utilisateur·rice·s en sourdine"
blockedUsers: "Utilisateur·rice·s bloqué·e·s" 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" editProfile: "Modifier votre profil"
noteDeleteConfirm: "Confirmez-vous la suppression de cette note ?" noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note ?"
pinLimitExceeded: "Je ne peux plus épingler" pinLimitExceeded: "Vous ne pouvez plus épingler d'autres notes."
intro: "L'installation de Misskey est terminée! Créons le compte administrateur." intro: "Linstallation de Misskey est terminée ! Veuillez créer un compte administrateur."
done: "Terminé" done: "Terminé"
processing: "Traitement en cours" processing: "Traitement en cours"
preview: "Prévisualisation" preview: "Prévisualisation"
default: "Par défaut" default: "Par défaut"
noCustomEmojis: "Il a pas démoji" noCustomEmojis: "Il n'y a pas démoji"
customEmojisOfRemote: "Émojis l'instance distante" customEmojisOfRemote: "Émojis venant des autres instances"
noJobs: "Il n'y a aucune tâche planifiée" noJobs: "Il n'y a aucune tâche planifiée"
federating: "En cours de fédération" federating: "En cours de fédération"
blocked: "Bloqué" blocked: "Bloqué·e"
suspended: "Suspendu" suspended: "Suspendu·e"
all: "Tous" all: "Tous"
subscribing: "Abonné" subscribing: "Abonné"
publishing: "Publié" publishing: "Publié"
notResponding: "Ne répond pas" notResponding: "Ne répond pas"
instanceFollowing: "Abonnements une instance" instanceFollowing: "Abonnements une instance"
instanceFollowers: "Abonné·e·s de l'instance" instanceFollowers: "Abonné·e·s de linstance"
instanceUsers: "Utilisateur·e·s de l'instance" instanceUsers: "Utilisateur·rice·s de cette linstance"
changePassword: "Modifier votre mot de passe" changePassword: "Modifier votre mot de passe"
security: "Sécurité" security: "Sécurité"
retypedNotMatch: "Les saisies ne correspondent pas." retypedNotMatch: "Les saisies ne correspondent pas."
currentPassword: "Mot de passe actuel" currentPassword: "Mot de passe actuel"
newPassword: "Nouveau mot de passe" 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" attachFile: "Joindre un fichier"
more: "Plus !" more: "Plus !"
featured: "Tendances" featured: "Tendances"
usernameOrUserId: "Nom d'utilisateur ou ID utilisateur" usernameOrUserId: "Nom d'utilisateur ou ID utilisateur"
noSuchUser: "Utilisateur non trouvé" noSuchUser: "Utilisateur·rice non trouvé"
lookup: "Recherche" lookup: "Recherche"
announcements: "Annonces" announcements: "Annonces"
imageUrl: "URL de limage" imageUrl: "URL de limage"
@ -203,9 +204,9 @@ removed: "Supprimé"
removeAreYouSure: "Supprimer «{x}» ?" removeAreYouSure: "Supprimer «{x}» ?"
saved: "Enregistré" saved: "Enregistré"
messaging: "Discuter" messaging: "Discuter"
upload: "Téléchargez" upload: "Téléverser"
fromDrive: "Depuis le Drive" fromDrive: "Depuis le Drive"
fromUrl: "De l'URL" fromUrl: "Depuis une URL"
uploadFromUrl: "Téléverser via une URL" uploadFromUrl: "Téléverser via une URL"
uploadFromUrlDescription: "URL du fichier que vous souhaitez téléverser" uploadFromUrlDescription: "URL du fichier que vous souhaitez téléverser"
uploadFromUrlRequested: "Téléversement demandé" uploadFromUrlRequested: "Téléversement demandé"
@ -213,32 +214,34 @@ uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un c
explore: "Découvrir" explore: "Découvrir"
games: "Jeux de Misskey" games: "Jeux de Misskey"
messageRead: "Lus" messageRead: "Lus"
noMoreHistory: "Plus d'histoire passée" noMoreHistory: "Il n'y a plus d'historique"
startMessaging: "Commencer à discuter" startMessaging: "Commencer à discuter"
nUsersRead: "{n} personnes ont lu" nUsersRead: "Lu par {n} personnes"
agreeTo: "D'accord {0}" agreeTo: "J'accepte {0}"
tos: "Conditions d'utilisation" tos: "les conditions dutilisation"
start: "Commencer" start: "Commencer"
home: "Principal" home: "Principal"
remoteUserCaution: "Les informations sont incomplètes en raison de l'utilisateur distant." remoteUserCaution: "Les informations peuvent être incomplètes, parce que lutilisateur·rice vient dune instance distante."
activity: "Activités" activity: "Activité"
images: "Images" images: "Images"
birthday: "Date de naissance" birthday: "Date de naissance"
yearsOld: "{age} ans" yearsOld: "{age} ans"
registeredDate: "Date de création" registeredDate: "Inscrit le"
location: "Localisation" location: "Localisation"
theme: "Thème" 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" themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Lumière" light: "Clair"
dark: "Sombre" dark: "Sombre"
lightThemes: "Thème lumineux" lightThemes: "Thème clair"
darkThemes: "Thème sombre" darkThemes: "Thème sombre"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil" syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
drive: "Drive" drive: "Drive"
fileName: "Nom du fichier" fileName: "Nom du fichier"
selectFile: "Choisir le 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" renameFile: "Renommer le ficher"
folderName: "Nom du dossier" folderName: "Nom du dossier"
createFolder: "Créer un dossier" createFolder: "Créer un dossier"
@ -251,89 +254,96 @@ unableToDelete: "Ne peut pas être supprimé"
inputNewFileName: "Entrez un nouveau nom de fichier" inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier" inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer." 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" copyUrl: "Copier lURL"
rename: "Renommer" rename: "Renommer"
avatar: "Avatar" avatar: "Avatar"
banner: "Bannière" banner: "Bannière"
nsfw: "Contenu sensible" nsfw: "Contenu sensible"
disconnectedFromServer: "Déconnecté du serveur" disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir" reload: "Rafraîchir"
doNothing: "Ignorer" doNothing: "Ignorer"
reloadConfirm: "Voulez-vous recharger?" reloadConfirm: "Voulez-vous recharger le fil ?"
watch: "Surveiller" watch: "Surveiller"
unwatch: "Ne plus surveiller" unwatch: "Ne plus surveiller"
accept: "Autoriser" accept: "Autoriser"
reject: "Refuser" reject: "Refuser"
normal: "Normal"
instanceName: "Nom de linstance" instanceName: "Nom de linstance"
instanceDescription: "Description de linstance" instanceDescription: "Description de linstance"
maintainerName: "Nom d'administrateur" maintainerName: "Ladministrateur·rice"
maintainerEmail: "Email de l'administrateur" maintainerEmail: "Email de ladministrateur·rice"
tosUrl: "URL des conditions d'utilisation" tosUrl: "URL des conditions dutilisation"
thisYear: "Cette année" thisYear: "Cette année"
thisMonth: "Ce mois-ci" thisMonth: "Ce mois-ci"
today: "Aujourd'hui" today: "Aujourdhui"
dayX: "{day} jour" dayX: "{day}"
monthX: "{month} mois" monthX: "{month}"
yearX: "{year} année" yearX: "{year}"
pages: "Pages" pages: "Pages"
integration: "Intégrations" integration: "Intégrations"
connectSerice: "Connecter" connectSerice: "Connecter"
disconnectSerice: "Déconnecter" disconnectSerice: "Déconnecter"
enableLocalTimeline: "Activer le fil local" enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline: "Activer le fil global" 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" registration: "S'inscrire"
enableRegistration: "Autoriser nimporte qui à senregistrés" enableRegistration: "Autoriser les nouvelles inscriptions"
invite: "Inviter" invite: "Inviter"
proxyRemoteFiles: "Proxy fichiers distants" 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." 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" driveCapacityPerLocalAccount: "Volume du Drive par utilisateur local"
driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant" driveCapacityPerRemoteAccount: "Volume du Drive par utilisateur distant"
inMb: "en mégaoctets" inMb: "en mégaoctets"
iconUrl: "URL de l'image de l'icône" iconUrl: "URL de limage de lavatar"
bannerUrl: "URL de l'image de la bannière" bannerUrl: "URL de limage de la bannière"
basicInfo: "Informations basiques" basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e" 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" recaptcha: "reCAPTCHA"
enableRecaptcha: "Activation de reCAPTCHA" enableRecaptcha: "Activer reCAPTCHA"
recaptchaSiteKey: "Clé du site" recaptchaSiteKey: "Clé du site"
recaptchaSecretKey: "Clé secrète" recaptchaSecretKey: "Clé secrète"
antennas: "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."
manageAntennas: "Gestion d'antenne" antennas: "Antennes"
manageAntennas: "Gestion des antennes"
name: "Nom" name: "Nom"
antennaSource: "Recevoir la source" antennaSource: "Source de lantenne"
antennaKeywords: "Mots clés à recevoir" antennaKeywords: "Mots clés à recevoir"
antennaExcludeKeywords: "Mots clés à exclure" 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." antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
notifyAntenna: "Notifier les nouvelles notes" notifyAntenna: "Me notifier pour les nouvelles notes"
withFileAntenna: "Notes uniquement avec fichiers joints" withFileAntenna: "Notes ayant des attachements uniquement"
serviceworker: "ServiceWorker" serviceworker: "ServiceWorker"
enableServiceworker: "Activer 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" caseSensitive: "Sensible à la casse"
withReplies: "Y compris répondres" withReplies: "Inclure les réponses"
connectedTo: "Vous êtes connectés aux services suivants" connectedTo: "Vous êtes connectés aux services suivants"
notesAndReplies: "Notes et Répondres" notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints" withFiles: "Avec fichiers joints"
silence: "Mettre en masquer" silence: "Mettre en sourdine"
silenceConfirm: "Mettre l'utilisateur sous masquer ?" silenceConfirm: "Êtes-vous sûr·e de vouloir mettre lutilisateur·rice en sourdine ?"
unsilenceConfirm: "Voulez-vous annuler le masquer ?" 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" popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment" 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" recentlyDiscoveredUsers: "Utilisateur·rice·s récemment découverts"
exploreUsersCount: "Il y a {count} utilisateur·rice·s" exploreUsersCount: "Il y a {count} utilisateur·rice·s"
exploreFediverse: "Explorer le Fédiverse" exploreFediverse: "Explorer le Fediverse"
popularTags: "Mots-clés populaires" popularTags: "Mots-clés populaires"
userList: "Listes" userList: "Listes"
about: "Informations" about: "Informations"
aboutMisskey: "À propos de Misskey" 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 :" misskeyMembers: "Il est développé et maintenu par les membres listés ci-dessous :"
misskeySource: "Le code source est disponible ici:" 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:" 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 ! 🥰" morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰"
patrons: "Supporteurs" patrons: "Supporteurs"
@ -350,20 +360,18 @@ unregister: "Se désinscrire"
passwordLessLogin: "Connectez-vous sans mot de passe" passwordLessLogin: "Connectez-vous sans mot de passe"
resetPassword: "Réinitialiser mot de passe" resetPassword: "Réinitialiser mot de passe"
newPasswordIs: "Votre nouveau mot de passe est \"{password}\"" newPasswordIs: "Votre nouveau mot de passe est \"{password}\""
post: "Publier"
posted: "Publié !"
autoReloadWhenDisconnected: "Rechargement automatique lorsque le serveur se déconnecte" 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." 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" share: "Partager"
notFound: "Non trouvé" 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" uploadFolder: "Emplacement de téléversement par défaut"
cacheClear: "Vider le cache" cacheClear: "Vider le cache"
markAsReadAllNotifications: "Marquer toutes les notifications comme lues" markAsReadAllNotifications: "Marquer toutes les notifications comme lues"
markAsReadAllUnreadNotes: "Marquer toutes les notes 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" help: "Aide"
inputMessageHere: "Tapez ici votre message" inputMessageHere: "Tapez ici votre message"
close: "Fermer" close: "Fermer"
@ -402,20 +410,20 @@ tooLong: "Est trop long"
weakPassword: "Faible mot de passe" weakPassword: "Faible mot de passe"
normalPassword: "Bon mot de passe" normalPassword: "Bon mot de passe"
strongPassword: "Fort mot de passe" strongPassword: "Fort mot de passe"
passwordMatched: "Correcte" passwordMatched: "Combinaison correcte !"
passwordNotMatched: "Ne correspond pas" passwordNotMatched: "Ne correspond pas"
signinWith: "Connectez-vous avec {x}" signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects." signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
tapSecurityKey: "Touchez la clé de sécurité" tapSecurityKey: "Touchez la clé de sécurité"
or: "OU" or: "OU"
uiLanguage: "Langue d'affichage de l'interface" uiLanguage: "Langue daffichage de linterface"
groupInvited: "Invité au groupe" groupInvited: "Invité au groupe"
aboutX: "À propos de {x}" 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" youHaveNoGroups: "Vous n'avez aucune groupe"
joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe." joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe."
noHistory: "Pas d'historique" noHistory: "Pas d'historique"
disableAnimatedMfm: "Désactiver MFM qui a des animations" disableAnimatedMfm: "Désactiver MFM ayant des animations"
doing: "Attends une seconde" doing: "Attends une seconde"
category: "Catégories" category: "Catégories"
tags: "Étiquettes" tags: "Étiquettes"
@ -425,7 +433,7 @@ existingAcount: "Comptes existants"
regenerate: "Régénérer" regenerate: "Régénérer"
fontSize: "Taille de la police" fontSize: "Taille de la police"
noFollowRequests: "Vous navez aucune demande dabonnement en attente" 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" dashboard: "Tableau de bord"
local: "Local" local: "Local"
remote: "Distant" remote: "Distant"
@ -443,7 +451,7 @@ showFeaturedNotesInTimeline: "Afficher les notes en vedette dans fil d'actualit
objectStorage: "Stockage d'objets" objectStorage: "Stockage d'objets"
useObjectStorage: "Utiliser le stockage d'objets" useObjectStorage: "Utiliser le stockage d'objets"
objectStorageBaseUrl: "Base URL" 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" objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Veuillez spécifier le nom du compartiment utilisé sur le service configuré." objectStorageBucketDesc: "Veuillez spécifier le nom du compartiment utilisé sur le service configuré."
objectStoragePrefix: "Prefix" objectStoragePrefix: "Prefix"
@ -454,6 +462,8 @@ objectStorageRegion: "Region"
objectStorageRegionDesc: "Spécifiez une région comme 'xx-east-1'. Si votre service ne fait pas de distinction entre les régions, laissez-le vide ou remplissez 'us-east-1'." objectStorageRegionDesc: "Spécifiez une région comme 'xx-east-1'. Si votre service ne fait pas de distinction entre les régions, laissez-le vide ou remplissez 'us-east-1'."
objectStorageUseSSL: "Utiliser SSL" objectStorageUseSSL: "Utiliser SSL"
objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API" objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API"
objectStorageUseProxy: "Se connecter via proxy"
objectStorageUseProxyDesc: "Désactivez-le si vous n'utilisez pas Proxy pour la connexion de stockage d'objets"
serverLogs: "Journaux serveur" serverLogs: "Journaux serveur"
deleteAll: "Supprimer tout" deleteAll: "Supprimer tout"
showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité" showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité"
@ -463,8 +473,8 @@ listen: "Écouter"
none: "Rien" none: "Rien"
volume: "Volume" volume: "Volume"
details: "Détails" details: "Détails"
chooseEmoji: "Choisissez des emojis" chooseEmoji: "Choisissez un émoji"
unableToProcess: "L'opération n'a pas pu être complétée" unableToProcess: "Lopération na pas pu être complétée."
recentUsed: "Récemment utilisé" recentUsed: "Récemment utilisé"
install: "Installation" install: "Installation"
uninstall: "Désinstaller" uninstall: "Désinstaller"
@ -472,6 +482,31 @@ installedApps: "Applications Autorisées"
nothing: "Il n'y a rien à voir ici" nothing: "Il n'y a rien à voir ici"
installedDate: "Autorisé" installedDate: "Autorisé"
lastUsedDate: "Dernière utilisation" lastUsedDate: "Dernière utilisation"
state: "État"
sort: "Trier"
ascendingOrder: "Ascendant"
descendingOrder: "Descendant"
scratchpad: "Scratch pad"
scratchpadDescription: "Scratchpad fournit un environnement expérimental pour AiScript. Vous pouvez écrire, exécuter et vérifier les résultats qui interagissent avec Misskey."
output: "Sortie"
script: "Script"
disablePagesScript: "Désactiver AiScript sur les Pages"
updateRemoteUser: "Mettre à jour les informations de lutilisateur·rice distant·e"
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}. 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: _theme:
explore: "Explorer les thèmes" explore: "Explorer les thèmes"
install: "Installer un thème" install: "Installer un thème"
@ -486,7 +521,7 @@ _sfx:
notification: "Notifications" notification: "Notifications"
chat: "Discuter" chat: "Discuter"
chatBg: "Discuter (De fond)" chatBg: "Discuter (De fond)"
antenna: "Réception d'antenne" antenna: "Réception de lantenne"
_ago: _ago:
unknown: "Inconnu" unknown: "Inconnu"
future: "Futur" future: "Futur"
@ -506,33 +541,33 @@ _time:
_tutorial: _tutorial:
title: "Comment utiliser Misskey" title: "Comment utiliser Misskey"
step1_1: "Bienvenue," 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_2: "Cette page est appelée « un fil ». Elle affiche les « notes » des personnes auxquelles vous êtes abonné dans un 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é." 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: "Finissons de créer votre profil avant d'écrire une note ou de abonne quelqu'un." 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 vous abonne." 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_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_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_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\"." step3_4: "Vous navez rien à dire ? Essayez décrire « Jai commencé à utiliser Misskey »."
step4_1: "Avez-vous posté votre première notes ?" step4_1: "Avez-vous publié votre première note ?"
step4_2: "Votre première note est maintenant affiché sur votre fil d'actualité." step4_2: "Youpi ! Celle-ci est maintenant affiché sur votre fil dactualité."
step5_1: "Ensuite, abonnons-nous d'autres personnes et rendre la fil d'actualité en savoir plus vivante." step5_1: "Maintenant, essayons de nous abonner à dautres personnes afin de rendre votre fil plus vivant."
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_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 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_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: "Selon l'utilisateur, il peut s'écouler un certain temps avant que la abonner ne soit approuvé." 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: "Si vous voyez la notes d'un autre utilisateur sur fil d'actualité, c'était réussi." step6_1: "Maintenant, vous êtes en mesure de voir safficher les notes des autres utilisateur·rice·s sur votre propre fil."
step6_2: "Vous pouvez ajouter des \"réactions\" aux notes des autres afin de pouvoir facilement dire votre émotion." 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, cliquez sur la marque \"+\" sur la note et sélectionnez la réaction souhaitée." step6_3: "Pour ajouter une réaction à une note, cliquez sur le signe « + » de celle-ci et sélectionnez lémoji souhaité."
step7_1: "Tu as bien travaillé ! Ceci conclut l'explication de l'utilisation de base de Misskey." step7_1: "Félicitations ! Vous avez atteint la fin du tutoriel de base pour lutilisation de Misskey."
step7_2: "Pour plus d'informations sur Misskey, voir {help}." step7_2: "Si vous désirez en savoir plus sur Misskey, jetez un œil sur la section {help}."
step7_3: "Alors, profitez de Misskey 🚀" step7_3: "Bon courage et amusez-vous bien sur Misskey 🚀"
_2fa: _2fa:
alreadyRegistered: "Cette étape à déjà été complétée" alreadyRegistered: "Cette étape à déjà été complétée"
registerDevice: "Ajouter un appareil" registerDevice: "Ajouter un nouvel appareil"
registerKey: "Sinscrire la clé" registerKey: "Sinscrire la clé"
step1: "Tout d'abord, installez une application d'authentification, telle que {a} ou {b}, sur votre appareil." 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." step2: "Ensuite, scannez le code QR affiché sur lécran."
step3: "Entrez le jeton affiché sur l'application et vous avez terminé." 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." 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." 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: _permissions:
@ -544,7 +579,7 @@ _permissions:
"write:drive": "Écrire sur le Drive" "write:drive": "Écrire sur le Drive"
"read:favorites": "Afficher les favoris" "read:favorites": "Afficher les favoris"
"write:favorites": "Écrire des 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" "write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter" "read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter" "write:messaging": "Contrôler le discuter"
@ -558,23 +593,23 @@ _permissions:
"write:votes": "Voter" "write:votes": "Voter"
"read:pages": "Afficher la page" "read:pages": "Afficher la page"
"write:pages": "Mettre à jour les Pages" "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" "write:page-likes": "Mettre à jour les favoris sur les Pages"
"read:user-groups": "Voir les groupes d'utilisateur·rice·s" "read:user-groups": "Voir les groupes d'utilisateur·rice·s"
"write:user-groups": "Éditer les groupes des utilisateur·rice·s" "write:user-groups": "Éditer les groupes des utilisateur·rice·s"
_auth: _auth:
shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?" shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?"
shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?" shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?"
permissionAsk: "Cette application nécessite les autorisations suivantes " permissionAsk: "Cette application nécessite les autorisations suivantes :"
pleaseGoBack: "Veillez retourner à l'application" pleaseGoBack: "Veuillez retourner à lapplication"
callback: "Retour vers lapplication" callback: "Retour vers lapplication"
denied: "Accès refusé" denied: "Accès refusé"
_antennaSources: _antennaSources:
all: "Toutes les notes" all: "Toutes les notes"
homeTimeline: "Notes de l'utilisateur auquel je m'abonne" homeTimeline: "Notes venant des utilisateur·rice·s auxquel·les je suis abonné"
users: "Notes des un ou plusieurs utilisateurs spécifiés" users: "Notes venant de la part dutilisateur·rice·s précis"
userList: "Notes pour les utilisateurs de la liste spécifiée" userList: "Notes venant dune liste spécifique"
userGroup: "Notes pour les utilisateurs de la groupe spécifiée" userGroup: "Notes venant dutilisateur·rice·s du groupe spécifié"
_weekday: _weekday:
sunday: "Dimanche" sunday: "Dimanche"
monday: "Lundi" monday: "Lundi"
@ -586,16 +621,16 @@ _weekday:
_widgets: _widgets:
memo: "Note collante" memo: "Note collante"
notifications: "Notifications" notifications: "Notifications"
timeline: "Fil d'actualité" timeline: "Fil"
calendar: "Calendrier" calendar: "Calendrier"
trends: "Tendances" trends: "Tendances"
clock: "Horloge" clock: "Horloge"
rss: "Lecteur de flux RSS" rss: "Lecteur de flux RSS"
activity: "Activités" activity: "Activité"
photos: "Photos" photos: "Photos"
_cw: _cw:
hide: "Masquer" hide: "Masquer"
show: "Voir plus" show: "Afficher plus"
chars: "{count} caractères" chars: "{count} caractères"
files: "{count} fichiers" files: "{count} fichiers"
poll: "Sondage" poll: "Sondage"
@ -643,7 +678,7 @@ _postForm:
f: "En attente de vos écrits ..." f: "En attente de vos écrits ..."
_profile: _profile:
name: "Nom" name: "Nom"
username: "Nom d'utilisateur·rice" username: "Nom dutilisateur·rice"
description: "À propos de moi" description: "À propos de moi"
youCanIncludeHashtags: "Vous pouvez également inclure des hashtags." youCanIncludeHashtags: "Vous pouvez également inclure des hashtags."
metadata: "Informations complémentaires" metadata: "Informations complémentaires"
@ -659,7 +694,7 @@ _charts:
federationInstancesIncDec: "Variation du nombre d'instances" federationInstancesIncDec: "Variation du nombre d'instances"
federationInstancesTotal: "Nombre d'instances au total" federationInstancesTotal: "Nombre d'instances au total"
usersIncDec: "Variation du nombre d'utilisateur·rice·s" usersIncDec: "Variation du nombre d'utilisateur·rice·s"
usersTotal: "Nombre d'utilsateur·rice·s au total" usersTotal: "Nombre d'utilisateur·rice·s au total"
activeUsers: "Utilisateur·rice·s actif·ve·s" activeUsers: "Utilisateur·rice·s actif·ve·s"
notesIncDec: "Variation du nombre d'notes" notesIncDec: "Variation du nombre d'notes"
localNotesIncDec: "Variation du nombre de notes local" localNotesIncDec: "Variation du nombre de notes local"
@ -672,15 +707,82 @@ _charts:
_instanceCharts: _instanceCharts:
requests: "Requêtes" requests: "Requêtes"
users: "Variation du nombre d'utilisateur·rice·s" users: "Variation du nombre d'utilisateur·rice·s"
usersTotal: "Nombre d'utilisateur·rice·s au total cumulé"
notes: "Variation du nombre d'notes" notes: "Variation du nombre d'notes"
notesTotal: "Nombre d'notes au total cumulé"
ff: "Variation des abonné·e·s" ff: "Variation des abonné·e·s"
ffTotal: "Nombre d'abonné·e·s au total cumulé"
cacheSize: "Variation de la taille du cache" cacheSize: "Variation de la taille du cache"
cacheSizeTotal: "La taille du cache au total cumulé"
files: "Variation du nombre de fichiers" files: "Variation du nombre de fichiers"
filesTotal: "Nombre de fichiers au total cumulé"
_timelines: _timelines:
home: "Principal" home: "Principal"
local: "Local" local: "Local"
social: "Social" social: "Social"
global: "Global" 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: _pages:
newPage: "Créer une page" newPage: "Créer une page"
editPage: "Modifier une page" editPage: "Modifier une page"
@ -695,9 +797,9 @@ _pages:
viewSource: "Afficher la source" viewSource: "Afficher la source"
viewPage: "Afficher la page" viewPage: "Afficher la page"
like: "Favori" like: "Favori"
unlike: "Je nfavoris pas" unlike: "Je naime pas"
my: "Mes pages" my: "Mes pages"
liked: "Pages favoris" liked: "Pages favorites"
inspector: "Inspecteur" inspector: "Inspecteur"
content: "Bloc de page" content: "Bloc de page"
variables: "Variables" variables: "Variables"
@ -713,7 +815,7 @@ _pages:
eyeCatchingImageRemove: "Supprimer une image attirante" eyeCatchingImageRemove: "Supprimer une image attirante"
chooseBlock: "Ajouter un bloc" chooseBlock: "Ajouter un bloc"
selectType: "Choisir un type" 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" variableNameIsAlreadyUsed: "Cette variable est déjà utilisée"
contentBlocks: "Contenu" contentBlocks: "Contenu"
inputBlocks: "Entrée" inputBlocks: "Entrée"
@ -730,6 +832,8 @@ _pages:
post: "Formulaire à publier" post: "Formulaire à publier"
_post: _post:
text: "Contenu" text: "Contenu"
attachCanvasImage: "Publier avec Toile comme image"
canvasId: "Toile ID"
textInput: "Entrée de textuelle" textInput: "Entrée de textuelle"
_textInput: _textInput:
name: "Nom de la variable" name: "Nom de la variable"
@ -745,6 +849,11 @@ _pages:
name: "Nom de la variable" name: "Nom de la variable"
text: "Titre" text: "Titre"
default: "Valeur par défaut" default: "Valeur par défaut"
canvas: "Toile"
_canvas:
id: "Toile ID"
width: "Largeur"
height: "Hauteur"
switch: "Basculer" switch: "Basculer"
_switch: _switch:
name: "Nom de la variable" name: "Nom de la variable"
@ -766,10 +875,13 @@ _pages:
resetRandom: "Réinitialiser le nombre aléatoire" resetRandom: "Réinitialiser le nombre aléatoire"
pushEvent: "Envoyer un évènement" pushEvent: "Envoyer un évènement"
_pushEvent: _pushEvent:
event: "Nom de l'évènement" event: "Nom de lévènement"
message: "Message à afficher lorsque appuyé" message: "Message à afficher lorsque appuyé"
variable: "Variable à envoyer" variable: "Variable à envoyer"
no-variable: "Rien" no-variable: "Rien"
callAiScript: "Appeler AiScript"
_callAiScript:
functionName: "Nom de la fonction"
radioButton: "Choix" radioButton: "Choix"
_radioButton: _radioButton:
name: "Nom de la variable" name: "Nom de la variable"
@ -793,7 +905,7 @@ _pages:
multiLineText: "Texte (Multi-lignes)" multiLineText: "Texte (Multi-lignes)"
textList: "Liste de texte" textList: "Liste de texte"
_textList: _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: "Longueur d'un texte"
_strLen: _strLen:
arg1: "Texte" arg1: "Texte"
@ -930,6 +1042,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "Texte" arg1: "Texte"
ref: "Variables" ref: "Variables"
aiScriptVar: "Variable d'AiScript"
fn: "Fonction" fn: "Fonction"
_fn: _fn:
slots: "Slots" slots: "Slots"
@ -951,3 +1064,10 @@ _pages:
enviromentVariables: "Variables d'environnement" enviromentVariables: "Variables d'environnement"
pageVariables: "Élément de page" pageVariables: "Élément de page"
argVariables: "Entrée slot" argVariables: "Entrée slot"
_relayStatus:
requesting: "En attente"
accepted: "Accepté"
rejected: "Refusée"
_notification:
youWereFollowed: "Vous suit"
youWereInvitedToGroup: "Invité au groupe"

View File

@ -16,7 +16,7 @@ const merge = (...args) => args.reduce((a, c) => ({
const languages = [ const languages = [
//'cs-CZ', //'cs-CZ',
//'da-DK', //'da-DK',
//'de-DE', 'de-DE',
'en-US', 'en-US',
'es-ES', 'es-ES',
'fr-FR', 'fr-FR',
@ -26,7 +26,7 @@ const languages = [
//'nl-NL', //'nl-NL',
//'pl-PL', //'pl-PL',
'zh-CN', 'zh-CN',
//'zh-TW', 'zh-TW',
]; ];
const primaries = { const primaries = {

View File

@ -107,6 +107,7 @@ customEmojis: "カスタム絵文字"
emojiName: "絵文字名" emojiName: "絵文字名"
emojiUrl: "絵文字画像URL" emojiUrl: "絵文字画像URL"
addEmoji: "絵文字を追加" addEmoji: "絵文字を追加"
settingGuide: "おすすめ設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。" cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
flagAsBot: "Botとして設定" flagAsBot: "Botとして設定"
@ -239,6 +240,8 @@ drive: "ドライブ"
fileName: "ファイル名" fileName: "ファイル名"
selectFile: "ファイルを選択" selectFile: "ファイルを選択"
selectFiles: "ファイルを選択" selectFiles: "ファイルを選択"
selectFolder: "フォルダーを選択"
selectFolders: "フォルダーを選択"
renameFile: "ファイル名を変更" renameFile: "ファイル名を変更"
folderName: "フォルダー名" folderName: "フォルダー名"
createFolder: "フォルダーを作成" createFolder: "フォルダーを作成"
@ -265,6 +268,7 @@ watch: "ウォッチ"
unwatch: "ウォッチ解除" unwatch: "ウォッチ解除"
accept: "許可" accept: "許可"
reject: "拒否" reject: "拒否"
normal: "正常"
instanceName: "インスタンス名" instanceName: "インスタンス名"
instanceDescription: "インスタンスの紹介" instanceDescription: "インスタンスの紹介"
maintainerName: "管理者の名前" maintainerName: "管理者の名前"
@ -296,10 +300,15 @@ bannerUrl: "バナー画像のURL"
basicInfo: "基本情報" basicInfo: "基本情報"
pinnedUsers: "ピン留めユーザー" pinnedUsers: "ピン留めユーザー"
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。" pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptchaを有効にする"
hcaptchaSiteKey: "サイトキー"
hcaptchaSecretKey: "シークレットキー"
recaptcha: "reCAPTCHA" recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHAを有効にする" enableRecaptcha: "reCAPTCHAを有効にする"
recaptchaSiteKey: "サイトキー" recaptchaSiteKey: "サイトキー"
recaptchaSecretKey: "シークレットキー" recaptchaSecretKey: "シークレットキー"
avoidMultiCaptchaConfirm: "複数のCaptchaを使用すると干渉を起こす可能性があります。他のCaptchaを無効にしますかキャンセルして複数のCaptchaを有効化したままにすることも可能です。"
antennas: "アンテナ" antennas: "アンテナ"
manageAntennas: "アンテナの管理" manageAntennas: "アンテナの管理"
name: "名前" name: "名前"
@ -319,6 +328,7 @@ notesAndReplies: "投稿と返信"
withFiles: "ファイル付き" withFiles: "ファイル付き"
silence: "サイレンス" silence: "サイレンス"
silenceConfirm: "サイレンスしますか?" silenceConfirm: "サイレンスしますか?"
unsilence: "サイレンス解除"
unsilenceConfirm: "サイレンス解除しますか?" unsilenceConfirm: "サイレンス解除しますか?"
popularUsers: "人気のユーザー" popularUsers: "人気のユーザー"
recentlyUpdatedUsers: "最近投稿したユーザー" recentlyUpdatedUsers: "最近投稿したユーザー"
@ -350,8 +360,6 @@ unregister: "登録を解除"
passwordLessLogin: "パスワード無しログイン" passwordLessLogin: "パスワード無しログイン"
resetPassword: "パスワードをリセット" resetPassword: "パスワードをリセット"
newPasswordIs: "新しいパスワードは「{password}」です" newPasswordIs: "新しいパスワードは「{password}」です"
post: "投稿"
posted: "投稿しました"
autoReloadWhenDisconnected: "サーバー切断時に自動リロード" autoReloadWhenDisconnected: "サーバー切断時に自動リロード"
autoNoteWatch: "ノートの自動ウォッチ" autoNoteWatch: "ノートの自動ウォッチ"
autoNoteWatchDescription: "あなたがリアクションしたり返信したりした他のユーザーのノートに関する通知を受け取るようにします。" autoNoteWatchDescription: "あなたがリアクションしたり返信したりした他のユーザーのノートに関する通知を受け取るようにします。"
@ -406,7 +414,7 @@ passwordMatched: "一致しました"
passwordNotMatched: "一致していません" passwordNotMatched: "一致していません"
signinWith: "{x}でログイン" signinWith: "{x}でログイン"
signinFailed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" signinFailed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
tapSecurityKey: "セキュリティキーにタッチ" tapSecurityKey: "セキュリティキーにタッチ"
or: "もしくは" or: "もしくは"
uiLanguage: "UIの表示言語" uiLanguage: "UIの表示言語"
groupInvited: "グループに招待されました" groupInvited: "グループに招待されました"
@ -454,6 +462,8 @@ objectStorageRegion: "Region"
objectStorageRegionDesc: "'xx-east-1'のようなregionを指定してください。使用サービスにregionの概念がない場合は、空または'us-east-1'にしてください。" objectStorageRegionDesc: "'xx-east-1'のようなregionを指定してください。使用サービスにregionの概念がない場合は、空または'us-east-1'にしてください。"
objectStorageUseSSL: "SSLを使用する" objectStorageUseSSL: "SSLを使用する"
objectStorageUseSSLDesc: "API接続にhttpsを使用しない場合はオフにしてください" objectStorageUseSSLDesc: "API接続にhttpsを使用しない場合はオフにしてください"
objectStorageUseProxy: "Proxyを利用する"
objectStorageUseProxyDesc: "API接続にproxyを利用しない場合はオフにしてください"
serverLogs: "サーバーログ" serverLogs: "サーバーログ"
deleteAll: "全て削除" deleteAll: "全て削除"
showFixedPostForm: "タイムライン上部に投稿フォームを表示する" showFixedPostForm: "タイムライン上部に投稿フォームを表示する"
@ -476,6 +486,29 @@ state: "状態"
sort: "ソート" sort: "ソート"
ascendingOrder: "昇順" ascendingOrder: "昇順"
descendingOrder: "降順" descendingOrder: "降順"
scratchpad: "スクラッチパッド"
scratchpadDescription: "スクラッチパッドは、AiScriptの実験環境を提供します。Misskeyと対話するコードの記述、実行、結果の確認ができます。"
output: "出力"
script: "スクリプト"
disablePagesScript: "Pagesのスクリプトを無効にする"
updateRemoteUser: "リモートユーザー情報の更新"
deleteAllFiles: "すべてのファイルを削除"
deleteAllFilesConfirm: "すべてのファイルを削除しますか?"
removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
userSuspended: "このユーザーは凍結されています。"
userSilenced: "このユーザーはサイレンスされています。"
sidebar: "サイドバー"
divider: "分割線"
addItem: "項目を追加"
rooms: "ルーム"
relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
serviceworkerInfo: "プッシュ通知を行うには有効する必要があります。"
deletedNote: "削除された投稿"
invisibleNote: "非公開の投稿"
_theme: _theme:
explore: "テーマを探す" explore: "テーマを探す"
@ -711,6 +744,69 @@ _timelines:
social: "ソーシャル" social: "ソーシャル"
global: "グローバル" 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: _pages:
newPage: "ページの作成" newPage: "ページの作成"
editPage: "ページの編集" editPage: "ページの編集"
@ -762,6 +858,8 @@ _pages:
post: "投稿フォーム" post: "投稿フォーム"
_post: _post:
text: "内容" text: "内容"
attachCanvasImage: "キャンバスの画像を添付する"
canvasId: "キャンバスID"
textInput: "テキスト入力" textInput: "テキスト入力"
_textInput: _textInput:
@ -781,6 +879,12 @@ _pages:
text: "タイトル" text: "タイトル"
default: "デフォルト値" default: "デフォルト値"
canvas: "キャンバス"
_canvas:
id: "キャンバスID"
width: "幅"
height: "高さ"
switch: "スイッチ" switch: "スイッチ"
_switch: _switch:
name: "変数名" name: "変数名"
@ -808,6 +912,9 @@ _pages:
message: "押したときに表示するメッセージ" message: "押したときに表示するメッセージ"
variable: "送信する変数" variable: "送信する変数"
no-variable: "なし" no-variable: "なし"
callAiScript: "AiScript呼び出し"
_callAiScript:
functionName: "関数名"
radioButton: "選択肢" radioButton: "選択肢"
_radioButton: _radioButton:
@ -970,6 +1077,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "テキスト" arg1: "テキスト"
ref: "変数" ref: "変数"
aiScriptVar: "AiScript変数"
fn: "関数" fn: "関数"
_fn: _fn:
slots: "スロット" slots: "スロット"
@ -991,3 +1099,22 @@ _pages:
enviromentVariables: "環境変数" enviromentVariables: "環境変数"
pageVariables: "ページ要素" pageVariables: "ページ要素"
argVariables: "入力スロット" 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: "内容をコピー" copyContent: "内容をコピー"
copyLink: "リンクをコピー" copyLink: "リンクをコピー"
delete: "ほかす" delete: "ほかす"
deleteAndEdit: "ほかして直す"
deleteAndEditConfirm: "このートをほかしてもっかい直すこのートへのリアクション、Remote、返信も全部消えんで"
addToList: "リストに入れたる" addToList: "リストに入れたる"
sendMessage: "メッセージを送る"
copyUsername: "ユーザー名をコピー"
reply: "返す" reply: "返す"
loadMore: "もっとあるやろ!" loadMore: "もっとあるやろ!"
youGotNewFollower: "フォローされたで"
receiveFollowRequest: "フォローリクエストされたで"
followRequestAccepted: "フォローが承認されたで"
mentions: "あんた宛て" mentions: "あんた宛て"
directNotes: "ダイレクト投稿" directNotes: "ダイレクト投稿"
importAndExport: "インポートとエクスポート"
import: "インポート" import: "インポート"
export: "エクスポート" export: "エクスポート"
files: "ファイル" files: "ファイル"
download: "ダウンロード" download: "ダウンロード"
driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付したノートも消えてまうで。"
unfollowConfirm: "{name}のフォローを解除してもええんか?"
exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。"
importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。"
lists: "リスト" lists: "リスト"
noLists: "リストはあらへん" noLists: "リストはあらへん"
note: "ノート"
notes: "ノート"
following: "フォロー"
followers: "フォロワー"
followsYou: "フォローされとるで" followsYou: "フォローされとるで"
createList: "リスト作る"
manageLists: "リストの管理"
error: "問題が発生してん" error: "問題が発生してん"
retry: "もっぺんやってみる"
enterListName: "リスト名を入れてや" enterListName: "リスト名を入れてや"
privacy: "プライバシーってなんや?オカンの年齢か?" privacy: "プライバシーってなんや?オカンの年齢か?"
makeFollowManuallyApprove: "他人のフォローは許可してからや!" makeFollowManuallyApprove: "他人のフォローは許可してからや!"
@ -55,13 +74,20 @@ defaultNoteVisibility: "もとからの公開範囲"
follow: "フォロー" follow: "フォロー"
followRequest: "フォロー許してくれや!言うてみる" followRequest: "フォロー許してくれや!言うてみる"
followRequests: "フォロー許してくれや!" followRequests: "フォロー許してくれや!"
unfollow: "フォローやめる"
followRequestPending: "フォロー許してくれるん待っとる" followRequestPending: "フォロー許してくれるん待っとる"
enterEmoji: "絵文字を入れてや" enterEmoji: "絵文字を入れてや"
renote: "Renote"
unrenote: "Renoteやめる"
quote: "引用"
pinnedNote: "ピン留めされたノート"
you: "あんた" you: "あんた"
clickToShow: "押してみ、見せたるわ" clickToShow: "押してみ、見せたるわ"
sensitive: "見たらあかんで" sensitive: "見たらあかんで"
add: "増やす" add: "増やす"
reaction: "リアクション" reaction: "リアクション"
reactionSettingDescription: "リアクションピッカーに出しとくリアクションを選んでや。"
rememberNoteVisibility: "公開範囲覚えといて"
attachCancel: "くっつけるのやめよか" attachCancel: "くっつけるのやめよか"
markAsSensitive: "ちょっと見せられへんわ" markAsSensitive: "ちょっと見せられへんわ"
unmarkAsSensitive: "別にええんじゃね?" unmarkAsSensitive: "別にええんじゃね?"
@ -72,45 +98,264 @@ block: "ブロック"
unblock: "ブロックやめたる" unblock: "ブロックやめたる"
suspend: "凍結" suspend: "凍結"
unsuspend: "溶かす" unsuspend: "溶かす"
blockConfirm: "ブロックしてしもうてええか?"
unblockConfirm: "ブロックすんのやめるけどええか?"
suspendConfirm: "凍結してしもうてええか?"
unsuspendConfirm: "解凍するけどええか?"
selectList: "リストを選ぶ"
customEmojis: "カスタム絵文字" customEmojis: "カスタム絵文字"
emojiName: "絵文字名"
emojiUrl: "絵文字画像URL"
addEmoji: "絵文字を追加"
settingGuide: "ええ感じの設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定をチャラにすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されへんので通信量が増加します。" cacheRemoteFilesDescription: "この設定をチャラにすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されへんので通信量が増加します。"
flagAsBot: "Botやでと言っとく"
flagAsCat: "Catやでと言っとく"
autoAcceptFollowed: "フォローしとるユーザーからのフォロリクは全部勝手にええでって言うで"
addAcount: "アカウント追加"
loginFailed: "ログインに失敗してん" loginFailed: "ログインに失敗してん"
showOnRemote: "リモートで見る"
general: "全般"
wallpaper: "壁紙" wallpaper: "壁紙"
setWallpaper: "壁紙を設定"
removeWallpaper: "壁紙ほかす" removeWallpaper: "壁紙ほかす"
searchWith: "検索: {q}"
youHaveNoLists: "リストはあらへん" youHaveNoLists: "リストはあらへん"
followConfirm: "{name}をフォローしてええか?"
proxyAccount: "プロキシアカウント"
proxyAccountDescription: "プロキシアカウントは、代わりにフォローしてくれるアカウントや。例えば、551に豚まんが無いときやったり、ユーザーがリモートユーザーをアカウントに入れたとき、リストに入れられたユーザーが誰からもフォローされてないと寂しいやん。寂しいし、アクティビティも配達されへんから、プロキシアカウントがフォローしてくれるで。ええやつやん…" proxyAccountDescription: "プロキシアカウントは、代わりにフォローしてくれるアカウントや。例えば、551に豚まんが無いときやったり、ユーザーがリモートユーザーをアカウントに入れたとき、リストに入れられたユーザーが誰からもフォローされてないと寂しいやん。寂しいし、アクティビティも配達されへんから、プロキシアカウントがフォローしてくれるで。ええやつやん…"
host: "ホスト" host: "ホスト"
selectUser: "ユーザーを選ぶ"
recipient: "宛先"
annotation: "注釈"
federation: "連合" federation: "連合"
instances: "インスタンス" instances: "インスタンス"
registeredAt: "一見さんになった日"
latestRequestSentAt: "ちょっと前のリクエスト送信"
latestRequestReceivedAt: "ちょっと前のリクエスト受信"
latestStatus: "ちょっと前のステータス"
storageUsage: "ストレージ使うた量"
charts: "チャート" charts: "チャート"
perHour: "1時間ごと" perHour: "1時間ごと"
perDay: "1日ごと" perDay: "1日ごと"
stopActivityDelivery: "アクティビティの配送をやめる"
blockThisInstance: "このインスタンスをブロック"
operations: "操作" operations: "操作"
software: "ソフトウェア"
version: "バージョン" version: "バージョン"
metadata: "メタデータ"
withNFiles: "{n}個のファイル"
monitor: "モニター"
jobQueue: "ジョブキュー"
cpuAndMemory: "CPUとメモリ"
network: "ネットワーク" network: "ネットワーク"
disk: "ディスク"
instanceInfo: "インスタンス情報"
statistics: "統計" statistics: "統計"
clearQueue: "キューにさいなら"
clearQueueConfirmTitle: "キューをクリアしまっか?"
clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。" clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。"
clearCachedFiles: "キャッシュにさいなら"
clearCachedFilesConfirm: "キャッシュされとるリモートファイルを全部削除しまっか?"
blockedInstances: "インスタンスブロック"
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。"
muteAndBlock: "ミュートとブロック" muteAndBlock: "ミュートとブロック"
mutedUsers: "ミュートしたユーザー"
blockedUsers: "ブロックしたユーザー"
noUsers: "ユーザーはおらへん" noUsers: "ユーザーはおらへん"
editProfile: "プロフィールをいじる"
noteDeleteConfirm: "このノートを削除しまっか?"
pinLimitExceeded: "これ以上ピン留めできひん" pinLimitExceeded: "これ以上ピン留めできひん"
intro: "Misskeyのインストールが完了してん管理者アカウントを作ってや。" intro: "Misskeyのインストールが完了してん管理者アカウントを作ってや。"
done: "でけた"
processing: "処理しとる"
preview: "プレビュー"
default: "デフォルト"
noCustomEmojis: "絵文字はあらへん" noCustomEmojis: "絵文字はあらへん"
customEmojisOfRemote: "リモートの絵文字"
noJobs: "ジョブはあらへん" noJobs: "ジョブはあらへん"
federating: "連合しとる"
blocked: "ブロックしとる"
suspended: "配信せぇへん"
all: "みな" all: "みな"
subscribing: "購読しとる"
publishing: "配信しとる"
notResponding: "応答してへんで"
instanceFollowing: "インスタンスのフォロー"
instanceFollowers: "インスタンスのフォロワー\n"
instanceUsers: "インスタンスのユーザー"
changePassword: "パスワード変える"
security: "セキュリティ"
retypedNotMatch: "そやないねん。" retypedNotMatch: "そやないねん。"
currentPassword: "今のパスワード"
newPassword: "今度のパスワード"
newPasswordRetype: "今度のパスワード(もっぺん入れて)"
attachFile: "ファイルくっつけて"
more: "他ないんか!"
featured: "ハイライト"
usernameOrUserId: "ユーザー名かユーザーID"
noSuchUser: "ユーザーが見つからへんで"
lookup: "見てきて"
announcements: "これ知っといてな"
imageUrl: "画像URL"
remove: "ほかす" remove: "ほかす"
removed: "削除したで!"
removeAreYouSure: "「{x}」はなおしてしもてええか?"
saved: "保存したで!"
messaging: "チャット"
upload: "アップロード"
fromDrive: "ドライブから"
fromUrl: "URLから"
uploadFromUrl: "URLアップロード"
uploadFromUrlDescription: "このURLのファイルをアップロードしたいねん"
uploadFromUrlRequested: "アップロードしたい言うといたで"
uploadFromUrlMayTakeTime: "アップロード終わるんにちょい時間かかるかもしれへんわ。"
explore: "みつける"
games: "Misskey Games"
messageRead: "もう読んだ"
noMoreHistory: "これより過去の履歴はあらへんで" 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: "ファイル名をいらう" renameFile: "ファイル名をいらう"
folderName: "フォルダー名"
createFolder: "フォルダー作る"
renameFolder: "フォルダー名を変える"
deleteFolder: "フォルダーを消してまう"
addFile: "ファイルを追加"
emptyDrive: "ドライブにはなんも残っとらん"
emptyFolder: "ふぉろだーにはなんも残っとらん"
unableToDelete: "消そうおもってんけどな、あかんかったわ"
inputNewFileName: "今度のファイル名は何にするん?"
inputNewFolderName: "今度のフォルダ名は何にするん?"
circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
hasChildFilesOrFolders: "このフォルダ、まだなんか入っとるから消されへん"
copyUrl: "URLをコピー"
rename: "名前を変えるで"
avatar: "アイコン"
banner: "バナー"
nsfw: "見たらあかんで" 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: "リスト" userList: "リスト"
about: "情報" about: "情報"
aboutMisskey: "Misskeyってなんや" 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に該当するページはあらへんやった。" notFoundDescription: "指定されたURLに該当するページはあらへんやった。"
close: "さいなら" close: "さいなら"
joinedGroups: "参加しとるグループ" joinedGroups: "参加しとるグループ"
invites: "来てや"
_sfx: _sfx:
note: "ノート"
notification: "通知" notification: "通知"
chat: "チャット"
_ago: _ago:
unknown: "謎" unknown: "謎"
future: "未来" future: "未来"
@ -137,6 +382,7 @@ _antennaSources:
_widgets: _widgets:
notifications: "通知" notifications: "通知"
timeline: "タイムライン" timeline: "タイムライン"
activity: "アクティビティ"
_cw: _cw:
show: "もっとあるやろ!" show: "もっとあるやろ!"
_poll: _poll:
@ -144,14 +390,27 @@ _poll:
deadlineTime: "時間" deadlineTime: "時間"
_visibility: _visibility:
publicDescription: "みなのユーザーに公開" publicDescription: "みなのユーザーに公開"
home: "ホーム"
followers: "フォロワー"
_profile: _profile:
name: "名前"
username: "ユーザー名" username: "ユーザー名"
_exportOrImport: _exportOrImport:
allNotes: "全てのノート" allNotes: "全てのノート"
followingList: "フォロー"
muteList: "ミュート" muteList: "ミュート"
blockingList: "ブロック" blockingList: "ブロック"
userLists: "リスト" userLists: "リスト"
_timelines:
home: "ホーム"
_rooms:
_roomType:
default: "デフォルト"
_furnitures:
monitor: "モニター"
_pages: _pages:
blocks:
image: "画像"
script: script:
categories: categories:
list: "リスト" list: "リスト"
@ -170,3 +429,5 @@ _pages:
arg1: "リスト" arg1: "リスト"
types: types:
array: "リスト" array: "リスト"
_notification:
youWereFollowed: "フォローされたで"

View File

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

View File

@ -107,6 +107,7 @@ customEmojis: "커스텀 이모지"
emojiName: "이모지 이름" emojiName: "이모지 이름"
emojiUrl: "이모지 URL" emojiUrl: "이모지 URL"
addEmoji: "이모지 추가" addEmoji: "이모지 추가"
settingGuide: "추천 설정"
cacheRemoteFiles: "리모트 파일을 캐시" cacheRemoteFiles: "리모트 파일을 캐시"
cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다." cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다."
flagAsBot: "나는 봇입니다" flagAsBot: "나는 봇입니다"
@ -239,6 +240,8 @@ drive: "드라이브"
fileName: "파일명" fileName: "파일명"
selectFile: "파일 선택" selectFile: "파일 선택"
selectFiles: "파일 선택" selectFiles: "파일 선택"
selectFolder: "폴더 선택"
selectFolders: "폴더 선택"
renameFile: "파일 이름 변경" renameFile: "파일 이름 변경"
folderName: "폴더명" folderName: "폴더명"
createFolder: "폴더 만들기" createFolder: "폴더 만들기"
@ -265,6 +268,7 @@ watch: "지켜보기"
unwatch: "지켜보기 해제" unwatch: "지켜보기 해제"
accept: "허가" accept: "허가"
reject: "거부" reject: "거부"
normal: "정상"
instanceName: "인스턴스 이름" instanceName: "인스턴스 이름"
instanceDescription: "인스턴스 소개" instanceDescription: "인스턴스 소개"
maintainerName: "관리자 이름" maintainerName: "관리자 이름"
@ -296,10 +300,15 @@ bannerUrl: "배너 이미지 URL"
basicInfo: "기본 정보" basicInfo: "기본 정보"
pinnedUsers: "고정된 유저" pinnedUsers: "고정된 유저"
pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다." pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha 활성화"
hcaptchaSiteKey: "사이트 키"
hcaptchaSecretKey: "시크릿 키"
recaptcha: "reCAPTCHA" recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA 활성화" enableRecaptcha: "reCAPTCHA 활성화"
recaptchaSiteKey: "사이트 키" recaptchaSiteKey: "사이트 키"
recaptchaSecretKey: "시크릿 키" recaptchaSecretKey: "시크릿 키"
avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다."
antennas: "안테나" antennas: "안테나"
manageAntennas: "안테나 관리" manageAntennas: "안테나 관리"
name: "이름" name: "이름"
@ -319,6 +328,7 @@ notesAndReplies: "글과 답글"
withFiles: "미디어" withFiles: "미디어"
silence: "사일런스" silence: "사일런스"
silenceConfirm: "이 계정을 사일런스로 설정하시겠습니까?" silenceConfirm: "이 계정을 사일런스로 설정하시겠습니까?"
unsilence: "사일런스 해제"
unsilenceConfirm: "이 계정의 사일런스를 해제하시겠습니까?" unsilenceConfirm: "이 계정의 사일런스를 해제하시겠습니까?"
popularUsers: "인기 유저" popularUsers: "인기 유저"
recentlyUpdatedUsers: "최근 활동한 유저" recentlyUpdatedUsers: "최근 활동한 유저"
@ -350,8 +360,6 @@ unregister: "등록 해제"
passwordLessLogin: "비밀번호 없이 로그인" passwordLessLogin: "비밀번호 없이 로그인"
resetPassword: "비밀번호 재설정" resetPassword: "비밀번호 재설정"
newPasswordIs: "새로운 비밀번호는 \"{password}\" 입니다" newPasswordIs: "새로운 비밀번호는 \"{password}\" 입니다"
post: "작성"
posted: "게시하였습니다"
autoReloadWhenDisconnected: "서버와의 연결이 끊기면 자동 새로고침" autoReloadWhenDisconnected: "서버와의 연결이 끊기면 자동 새로고침"
autoNoteWatch: "노트를 자동으로 지켜보기" autoNoteWatch: "노트를 자동으로 지켜보기"
autoNoteWatchDescription: "리액션하거나 답글을 남긴 다른 유저의 노트에 대한 알림을 받습니다." autoNoteWatchDescription: "리액션하거나 답글을 남긴 다른 유저의 노트에 대한 알림을 받습니다."
@ -454,6 +462,8 @@ objectStorageRegion: "Region"
objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 경우, 비워 두거나 'us-east-1'으로 설정해 주세요." objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 경우, 비워 두거나 'us-east-1'으로 설정해 주세요."
objectStorageUseSSL: "SSL 사용" objectStorageUseSSL: "SSL 사용"
objectStorageUseSSLDesc: "API 호출시 HTTPS 를 사용하지 않는 경우 OFF 로 설정해 주세요" objectStorageUseSSLDesc: "API 호출시 HTTPS 를 사용하지 않는 경우 OFF 로 설정해 주세요"
objectStorageUseProxy: "연결에 프록시를 사용"
objectStorageUseProxyDesc: "오브젝트 스토리지 API 호출시 프록시를 사용하지 않는 경우 OFF 로 설정해 주세요"
serverLogs: "서버 로그" serverLogs: "서버 로그"
deleteAll: "모두 삭제" deleteAll: "모두 삭제"
showFixedPostForm: "타임라인 상단에 글 작성란을 표시" showFixedPostForm: "타임라인 상단에 글 작성란을 표시"
@ -476,6 +486,26 @@ state: "상태"
sort: "정렬" sort: "정렬"
ascendingOrder: "오름차순" ascendingOrder: "오름차순"
descendingOrder: "내림차순" descendingOrder: "내림차순"
scratchpad: "스크래치 패드"
scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Misskey 와 상호 작용하는 코드를 작성, 실행 및 결과를 확인할 수 있습니다."
output: "출력"
script: "스크립트"
disablePagesScript: "Pages 에서 AiScript 를 사용하지 않음"
updateRemoteUser: "리모트 유저 정보 갱신"
deleteAllFiles: "모든 파일 삭제"
deleteAllFilesConfirm: "모든 파일을 삭제하시겠습니까?"
removeAllFollowing: "모든 팔로잉 해제"
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
userSuspended: "이 계정은 정지된 상태입니다."
userSilenced: "이 계정은 사일런스된 상태입니다."
sidebar: "사이드바"
divider: "구분선"
addItem: "항목 추가"
rooms: "방"
relays: "릴레이"
addRelay: "릴레이 추가"
inboxUrl: "Inbox 주소"
addedRelays: "추가된 릴레이"
_theme: _theme:
explore: "테마 찾아보기" explore: "테마 찾아보기"
install: "테마 설치" install: "테마 설치"
@ -661,30 +691,97 @@ _exportOrImport:
userLists: "리스트" userLists: "리스트"
_charts: _charts:
federationInstancesIncDec: "연합 인스턴스 수 증감" federationInstancesIncDec: "연합 인스턴스 수 증감"
federationInstancesTotal: "연합 인스턴스 수" federationInstancesTotal: "연합 인스턴스 수 합계"
usersIncDec: "유저 수 증감" usersIncDec: "유저 수 증감"
usersTotal: "유저 수 합계" usersTotal: "유저 수 합계"
activeUsers: "활성 유저 수" activeUsers: "활성 유저 수"
notesIncDec: "노트 수 증감" notesIncDec: "노트 수 증감"
localNotesIncDec: "로컬 노트 수 증감" localNotesIncDec: "로컬 노트 수 증감"
remoteNotesIncDec: "리모트 노트 수 증감" remoteNotesIncDec: "리모트 노트 수 증감"
notesTotal: "노트 수" notesTotal: "노트 수 합계"
filesIncDec: "파일 수 증감" filesIncDec: "파일 수 증감"
filesTotal: "파일 수" filesTotal: "파일 수 합계"
storageUsageIncDec: "스토리지 사용량 증감" storageUsageIncDec: "스토리지 사용량 증감"
storageUsageTotal: "스토리지 사용량" storageUsageTotal: "스토리지 사용량 합계"
_instanceCharts: _instanceCharts:
requests: "요청" requests: "요청"
users: "유저 수 증감" users: "유저 수 증감"
usersTotal: "누적 유저 수"
notes: "노트 수 증감" notes: "노트 수 증감"
notesTotal: "누적 노트 수"
ff: "팔로잉/팔로워 증감" ff: "팔로잉/팔로워 증감"
ffTotal: "누적 팔로잉/팔로워 수"
cacheSize: "캐시 용량 증감" cacheSize: "캐시 용량 증감"
cacheSizeTotal: "누적 캐시 용량"
files: "파일 수 증감" files: "파일 수 증감"
filesTotal: "누적 파일 수"
_timelines: _timelines:
home: "홈" home: "홈"
local: "로컬" local: "로컬"
social: "소셜" social: "소셜"
global: "글로벌" 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: _pages:
newPage: "페이지 만들기" newPage: "페이지 만들기"
editPage: "페이지 수정" editPage: "페이지 수정"
@ -734,6 +831,8 @@ _pages:
post: "글 입력란" post: "글 입력란"
_post: _post:
text: "내용" text: "내용"
attachCanvasImage: "캔버스의 이미지와 함께 게시하기"
canvasId: "캔버스 ID"
textInput: "텍스트 입력" textInput: "텍스트 입력"
_textInput: _textInput:
name: "변수명" name: "변수명"
@ -749,6 +848,11 @@ _pages:
name: "변수명" name: "변수명"
text: "제목" text: "제목"
default: "기본값" default: "기본값"
canvas: "캔버스"
_canvas:
id: "캔버스 ID"
width: "폭"
height: "높이"
switch: "스위치" switch: "스위치"
_switch: _switch:
name: "변수명" name: "변수명"
@ -774,6 +878,9 @@ _pages:
message: "눌렀을 때 표시할 페이지" message: "눌렀을 때 표시할 페이지"
variable: "보낼 변수" variable: "보낼 변수"
no-variable: "없음" no-variable: "없음"
callAiScript: "AiScript 호출"
_callAiScript:
functionName: "함수명"
radioButton: "선택지" radioButton: "선택지"
_radioButton: _radioButton:
name: "변수명" name: "변수명"
@ -934,6 +1041,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "텍스트" arg1: "텍스트"
ref: "변수" ref: "변수"
aiScriptVar: "AiScript 변수"
fn: "함수" fn: "함수"
_fn: _fn:
slots: "슬롯" slots: "슬롯"
@ -955,3 +1063,10 @@ _pages:
enviromentVariables: "환경 변수" enviromentVariables: "환경 변수"
pageVariables: "페이지 요소" pageVariables: "페이지 요소"
argVariables: "입력 슬롯" 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: "复制链接" copyLink: "复制链接"
delete: "删除" delete: "删除"
deleteAndEdit: "删除和编辑" deleteAndEdit: "删除和编辑"
deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应,转和回复也将被删除。" deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应,转和回复也将被删除。"
addToList: "添加至列表" addToList: "添加至列表"
sendMessage: "发送" sendMessage: "发送"
copyUsername: "复制用户名" copyUsername: "复制用户名"
@ -107,6 +107,7 @@ customEmojis: "自定义Emoji"
emojiName: "Emoji 名称" emojiName: "Emoji 名称"
emojiUrl: "emoji 地址" emojiUrl: "emoji 地址"
addEmoji: "添加Emoji" addEmoji: "添加Emoji"
settingGuide: "推荐配置"
cacheRemoteFiles: "远程文件缓存" cacheRemoteFiles: "远程文件缓存"
cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。" cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。"
flagAsBot: "这个账户是Bot" flagAsBot: "这个账户是Bot"
@ -209,7 +210,7 @@ fromUrl: "从 URL"
uploadFromUrl: "从网址上传" uploadFromUrl: "从网址上传"
uploadFromUrlDescription: "要上传的文件的URL" uploadFromUrlDescription: "要上传的文件的URL"
uploadFromUrlRequested: "请求上传" uploadFromUrlRequested: "请求上传"
uploadFromUrlMayTakeTime: "上传完成可能需要一些时间。" uploadFromUrlMayTakeTime: "上传可能需要一些时间完成。"
explore: "发现" explore: "发现"
games: "Misskey游戏" games: "Misskey游戏"
messageRead: "已读" messageRead: "已读"
@ -228,17 +229,19 @@ yearsOld: "{age}岁"
registeredDate: "注册于" registeredDate: "注册于"
location: "位置" location: "位置"
theme: "主题" theme: "主题"
themeForLightMode: "在轻便模式下使用的主题" themeForLightMode: "在浅色模式下使用的主题"
themeForDarkMode: "在黑暗模式下使用的主题" themeForDarkMode: "在深色模式下使用的主题"
light: "轻便" light: "浅色"
dark: "黑暗" dark: "深色"
lightThemes: "亮色主题" lightThemes: "亮色主题"
darkThemes: "暗色主题" darkThemes: "暗色主题"
syncDeviceDarkMode: "将黑暗模式与设备设置同步" syncDeviceDarkMode: "将深色模式与设备设置同步"
drive: "网盘" drive: "网盘"
fileName: "文件名称" fileName: "文件名称"
selectFile: "选择文件" selectFile: "选择文件"
selectFiles: "选择文件" selectFiles: "选择文件"
selectFolder: "选择文件夹"
selectFolders: "选择多个文件夹"
renameFile: "重命名文件" renameFile: "重命名文件"
folderName: "文件夹名称" folderName: "文件夹名称"
createFolder: "创建文件夹" createFolder: "创建文件夹"
@ -265,6 +268,7 @@ watch: "关注"
unwatch: "取消关注" unwatch: "取消关注"
accept: "允许" accept: "允许"
reject: "拒绝" reject: "拒绝"
normal: "正常"
instanceName: "实例名称" instanceName: "实例名称"
instanceDescription: "实例介绍" instanceDescription: "实例介绍"
maintainerName: "管理员名称" maintainerName: "管理员名称"
@ -296,10 +300,15 @@ bannerUrl: "Banner URL"
basicInfo: "基本信息" basicInfo: "基本信息"
pinnedUsers: "置顶用户" pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。" pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
hcaptcha: "hCaptcha"
enableHcaptcha: "启用 hCaptcha"
hcaptchaSiteKey: "网站密钥"
hcaptchaSecretKey: "密钥"
recaptcha: "reCAPTCHA" recaptcha: "reCAPTCHA"
enableRecaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)" enableRecaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)"
recaptchaSiteKey: "网站密钥" recaptchaSiteKey: "网站密钥"
recaptchaSecretKey: "reCAPTCHA 密钥" recaptchaSecretKey: "reCAPTCHA 密钥"
avoidMultiCaptchaConfirm: "使用多种验证方式可能会造成干扰,您要禁用其他验证方式吗?您可以按“取消”按钮,仍然保持启用多种验证方式。"
antennas: "天线" antennas: "天线"
manageAntennas: "天线管理" manageAntennas: "天线管理"
name: "名称" name: "名称"
@ -319,6 +328,7 @@ notesAndReplies: "帖子与回复"
withFiles: "附件" withFiles: "附件"
silence: "禁言" silence: "禁言"
silenceConfirm: "确认要禁言吗?" silenceConfirm: "确认要禁言吗?"
unsilence: "解除禁言"
unsilenceConfirm: "要解除禁言吗?" unsilenceConfirm: "要解除禁言吗?"
popularUsers: "热门用户" popularUsers: "热门用户"
recentlyUpdatedUsers: "最近投稿用户" recentlyUpdatedUsers: "最近投稿用户"
@ -350,8 +360,6 @@ unregister: "删除账户"
passwordLessLogin: "无密码登录" passwordLessLogin: "无密码登录"
resetPassword: "重置密码" resetPassword: "重置密码"
newPasswordIs: "新的密码是「{password}」" newPasswordIs: "新的密码是「{password}」"
post: "投稿"
posted: "已投稿"
autoReloadWhenDisconnected: "断开连接时自动重新加载" autoReloadWhenDisconnected: "断开连接时自动重新加载"
autoNoteWatch: "自动关注帖子" autoNoteWatch: "自动关注帖子"
autoNoteWatchDescription: "让您能够收到关于「反应」和回复其他用户的帖子的通知。" autoNoteWatchDescription: "让您能够收到关于「反应」和回复其他用户的帖子的通知。"
@ -405,15 +413,15 @@ strongPassword: "密码强度:强"
passwordMatched: "密码一致" passwordMatched: "密码一致"
passwordNotMatched: "密码不一致" passwordNotMatched: "密码不一致"
signinWith: "以{x}登录" signinWith: "以{x}登录"
signinFailed: "无法登录请检查您的用户名和密码。" signinFailed: "无法登录请检查您的用户名和密码。"
tapSecurityKey: "点击安全密钥" tapSecurityKey: "轻触硬件安全密钥"
or: "或者" or: "或者"
uiLanguage: "显示语言" uiLanguage: "显示语言"
groupInvited: "群组招待" groupInvited: "群组招待"
aboutX: "关于 {x}" aboutX: "关于 {x}"
useOsNativeEmojis: "使用OS原生Emoji" useOsNativeEmojis: "使用OS原生Emoji"
youHaveNoGroups: "没有组" youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入或者创建群组" joinOrCreateGroup: "加入一个现有的群组,或者创建群组"
noHistory: "没有历史记录" noHistory: "没有历史记录"
disableAnimatedMfm: "禁用MFM动画" disableAnimatedMfm: "禁用MFM动画"
doing: "正在进行" doing: "正在进行"
@ -447,13 +455,15 @@ objectStorageBaseUrlDesc: "供参考的URL。如果使用CDN或Proxy则其URL
objectStorageBucket: "存储桶" objectStorageBucket: "存储桶"
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。" objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
objectStoragePrefix: "前缀" objectStoragePrefix: "前缀"
objectStoragePrefixDesc: "将存储在此前缀的目录下。" objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
objectStorageEndpoint: "端点" objectStorageEndpoint: "端点"
objectStorageEndpointDesc: "S3默认情况下为空否则请为每个服务指定端点。 指定为“<host>”或“<host>:<port>”。" objectStorageEndpointDesc: "S3默认情况下为空否则请为每个服务指定端点。 指定为“<host>”或“<host>:<port>”。"
objectStorageRegion: "可用区" objectStorageRegion: "可用区"
objectStorageRegionDesc: "指定一个可用区例如“xx-east-1”。 如果您的对象存储服务没有可用区概念请将其留空或填写“us-east-1”。" objectStorageRegionDesc: "指定一个可用区例如“xx-east-1”。 如果您的对象存储服务没有可用区概念请将其留空或填写“us-east-1”。"
objectStorageUseSSL: "使用SSL" objectStorageUseSSL: "使用SSL"
objectStorageUseSSLDesc: "如果不使用https进行API连接请关闭。" objectStorageUseSSLDesc: "如果不使用https进行API连接请关闭。"
objectStorageUseProxy: "使用代理"
objectStorageUseProxyDesc: "如果您不使用代理进行API连接请将其关闭。"
serverLogs: "服务器日志" serverLogs: "服务器日志"
deleteAll: "删除全部" deleteAll: "删除全部"
showFixedPostForm: "在时间线顶部显示帖子表单" showFixedPostForm: "在时间线顶部显示帖子表单"
@ -476,6 +486,29 @@ state: "状态"
sort: "排序" sort: "排序"
ascendingOrder: "升序" ascendingOrder: "升序"
descendingOrder: "降序" 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: _theme:
explore: "寻找主题" explore: "寻找主题"
install: "安装主题" install: "安装主题"
@ -486,7 +519,7 @@ _theme:
invalid: "主题格式错误" invalid: "主题格式错误"
_sfx: _sfx:
note: "帖子" note: "帖子"
noteMy: "我的笔记" noteMy: "我的帖子"
notification: "通知" notification: "通知"
chat: "聊天" chat: "聊天"
chatBg: "聊天背景" chatBg: "聊天背景"
@ -690,6 +723,68 @@ _timelines:
local: "本地" local: "本地"
social: "社交" social: "社交"
global: "全局" 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: _pages:
newPage: "创建页面" newPage: "创建页面"
editPage: "编辑页面" editPage: "编辑页面"
@ -739,6 +834,8 @@ _pages:
post: "投稿窗口" post: "投稿窗口"
_post: _post:
text: "内容" text: "内容"
attachCanvasImage: "附加画布图像"
canvasId: "画布ID"
textInput: "文本输入" textInput: "文本输入"
_textInput: _textInput:
name: "变量名" name: "变量名"
@ -754,6 +851,11 @@ _pages:
name: "变量名" name: "变量名"
text: "标题" text: "标题"
default: "默认值" default: "默认值"
canvas: "画布"
_canvas:
id: "画布ID"
width: "宽度"
height: "高度"
switch: "开关" switch: "开关"
_switch: _switch:
name: "变量名" name: "变量名"
@ -779,6 +881,9 @@ _pages:
message: "按下时显示的消息" message: "按下时显示的消息"
variable: "发送的变量" variable: "发送的变量"
no-variable: "空" no-variable: "空"
callAiScript: "调用AiScript"
_callAiScript:
functionName: "函数名"
radioButton: "选择项" radioButton: "选择项"
_radioButton: _radioButton:
name: "变量名" name: "变量名"
@ -939,6 +1044,7 @@ _pages:
_splitStrByLine: _splitStrByLine:
arg1: "文本" arg1: "文本"
ref: "变量" ref: "变量"
aiScriptVar: "AiScript变量"
fn: "函数" fn: "函数"
_fn: _fn:
slots: "槽函数" slots: "槽函数"
@ -960,3 +1066,20 @@ _pages:
enviromentVariables: "环境变量" enviromentVariables: "环境变量"
pageVariables: "页面元素" pageVariables: "页面元素"
argVariables: "输入变量" 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" bannerUrl: "橫幅圖片URL"
basicInfo: "基本資訊" basicInfo: "基本資訊"
pinnedUsers: "置頂用戶" pinnedUsers: "置頂用戶"
hcaptchaSiteKey: "網站金鑰"
hcaptchaSecretKey: "金鑰"
recaptcha: "reCAPTCHA" recaptcha: "reCAPTCHA"
enableRecaptcha: "啟用 reCAPTCHA" enableRecaptcha: "啟用 reCAPTCHA"
recaptchaSiteKey: "網站金鑰" recaptchaSiteKey: "網站金鑰"
@ -256,8 +258,6 @@ userList: "清單"
passwordLessLogin: "設置無密碼登入" passwordLessLogin: "設置無密碼登入"
resetPassword: "重置密碼" resetPassword: "重置密碼"
newPasswordIs: "新密碼為「{password}」" newPasswordIs: "新密碼為「{password}」"
post: "投稿"
posted: "投稿完成"
autoReloadWhenDisconnected: "和伺服器斷線時自動重新載入" autoReloadWhenDisconnected: "和伺服器斷線時自動重新載入"
autoNoteWatch: "自動關注筆記" autoNoteWatch: "自動關注筆記"
autoNoteWatchDescription: "收到反應或回覆過的筆記的通知" autoNoteWatchDescription: "收到反應或回覆過的筆記的通知"
@ -369,6 +369,9 @@ _exportOrImport:
userLists: "清單" userLists: "清單"
_timelines: _timelines:
home: "首頁" home: "首頁"
_rooms:
_furnitures:
monitor: "監視器"
_pages: _pages:
script: script:
categories: categories:
@ -388,3 +391,5 @@ _pages:
arg1: "清單" arg1: "清單"
types: types:
array: "清單" array: "清單"
_notification:
youWereFollowed: "您有新的追隨者"

View File

@ -0,0 +1,15 @@
/* tslint:disable:quotemark class-name indent */
import {MigrationInterface, QueryRunner} from "typeorm";
export class apUrl1585772678853 implements MigrationInterface {
name = 'apUrl1585772678853'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note" ADD "url" character varying(512)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "url"`, undefined);
}
}

View File

@ -0,0 +1,14 @@
import {MigrationInterface, QueryRunner} from 'typeorm';
export class AddObjectStorageUseProxy1586624197029 implements MigrationInterface {
name = 'AddObjectStorageUseProxy1586624197029'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "objectStorageUseProxy" boolean NOT NULL DEFAULT true`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "objectStorageUseProxy"`, undefined);
}
}

View File

@ -0,0 +1,12 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class remoteReaction1586641139527 implements MigrationInterface {
name = 'remoteReaction1586641139527'
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(260)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(`ALTER TABLE "note_reaction" ALTER COLUMN "reaction" TYPE character varying(130)`, undefined);
}
}

View File

@ -0,0 +1,14 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class pageAiScript1586708940386 implements MigrationInterface {
name = 'pageAiScript1586708940386'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "page" ADD "script" character varying(16384) NOT NULL DEFAULT ''`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "script"`, undefined);
}
}

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", "name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>", "author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.28.0", "version": "12.38.1",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",
@ -11,52 +11,60 @@
"private": true, "private": true,
"scripts": { "scripts": {
"start": "node ./index.js", "start": "node ./index.js",
"start-product": "cross-env NODE_ENV=production node ./index.js",
"init": "npm run migrate", "init": "npm run migrate",
"ormconfig": "node ./built/ormconfig.js", "ormconfig": "node ./built/ormconfig.js",
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", "migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
"migrateandstart": "npm run migrate && npm run start", "migrateandstart": "npm run migrate && npm run start",
"build": "webpack && gulp build", "build": "webpack && gulp build",
"build-product": "cross-env NODE_ENV=production webpack && gulp build",
"webpack": "webpack", "webpack": "webpack",
"watch": "webpack --watch", "watch": "webpack --watch",
"gulp": "gulp build", "gulp": "gulp build",
"clean": "gulp clean", "clean": "gulp clean",
"cleanall": "gulp cleanall", "cleanall": "gulp cleanall",
"lint": "tslint 'src/**/*.ts'", "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" "format": "gulp format"
}, },
"resolutions": { "resolutions": {
"https-proxy-agent": "^3.0.0", "chokidar": "^3.3.1",
"lodash": "^4.17.13" "constantinople": "^4.0.1",
"core-js": "^3.6.5",
"lodash": "^4.17.15",
"mocha": "^7.1.1"
}, },
"dependencies": { "dependencies": {
"@elastic/elasticsearch": "7.6.0", "@babel/plugin-transform-runtime": "7.9.6",
"@fortawesome/fontawesome-svg-core": "1.2.27", "@elastic/elasticsearch": "7.7.1",
"@fortawesome/free-brands-svg-icons": "5.12.1", "@fortawesome/fontawesome-svg-core": "1.2.28",
"@fortawesome/free-regular-svg-icons": "5.12.1", "@fortawesome/free-brands-svg-icons": "5.13.0",
"@fortawesome/free-solid-svg-icons": "5.12.1", "@fortawesome/free-regular-svg-icons": "5.13.0",
"@fortawesome/free-solid-svg-icons": "5.13.0",
"@fortawesome/vue-fontawesome": "0.1.9", "@fortawesome/vue-fontawesome": "0.1.9",
"@juggle/resize-observer": "3.0.2", "@juggle/resize-observer": "3.1.3",
"@koa/cors": "3.0.0", "@koa/cors": "3.1.0",
"@koa/multer": "2.0.2", "@koa/multer": "2.0.2",
"@koa/router": "8.0.8", "@koa/router": "8.0.8",
"@sinonjs/fake-timers": "6.0.1",
"@syuilo/aiscript": "0.6.1",
"@types/bcryptjs": "2.4.2", "@types/bcryptjs": "2.4.2",
"@types/bull": "3.12.0", "@types/bull": "3.13.0",
"@types/cbor": "5.0.0", "@types/cbor": "5.0.0",
"@types/dateformat": "3.0.1", "@types/dateformat": "3.0.1",
"@types/double-ended-queue": "2.1.1", "@types/double-ended-queue": "2.1.1",
"@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.1", "@types/glob": "7.1.1",
"@types/gulp": "4.0.6", "@types/gulp": "4.0.6",
"@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33", "@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31", "@types/gulp-replace": "0.0.31",
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "3.12.2", "@types/js-yaml": "3.12.4",
"@types/jsdom": "12.2.4", "@types/jsdom": "16.2.3",
"@types/jsonld": "1.5.1",
"@types/katex": "0.11.0", "@types/katex": "0.11.0",
"@types/koa": "2.11.1", "@types/koa": "2.11.3",
"@types/koa-bodyparser": "4.3.0", "@types/koa-bodyparser": "4.3.0",
"@types/koa-compress": "2.0.9",
"@types/koa-cors": "0.0.0", "@types/koa-cors": "0.0.0",
"@types/koa-favicon": "2.0.19", "@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1", "@types/koa-logger": "3.1.1",
@ -66,206 +74,202 @@
"@types/koa__cors": "3.0.1", "@types/koa__cors": "3.0.1",
"@types/koa__multer": "2.0.1", "@types/koa__multer": "2.0.1",
"@types/koa__router": "8.0.2", "@types/koa__router": "8.0.2",
"@types/lolex": "5.1.0", "@types/markdown-it": "10.0.1",
"@types/markdown-it": "0.0.9", "@types/mocha": "7.0.2",
"@types/mocha": "7.0.1", "@types/node": "14.0.5",
"@types/node": "13.7.1", "@types/node-fetch": "2.5.7",
"@types/nodemailer": "6.4.0", "@types/nodemailer": "6.4.0",
"@types/nprogress": "0.2.0", "@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1", "@types/oauth": "0.9.1",
"@types/parse5": "5.0.2", "@types/parse5": "5.0.3",
"@types/parsimmon": "1.10.1", "@types/parsimmon": "1.10.2",
"@types/portscanner": "2.1.0", "@types/portscanner": "2.1.0",
"@types/pug": "2.0.4", "@types/pug": "2.0.4",
"@types/qrcode": "1.3.4", "@types/qrcode": "1.3.4",
"@types/random-seed": "0.3.3", "@types/random-seed": "0.3.3",
"@types/ratelimiter": "2.1.28", "@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.15", "@types/redis": "2.8.21",
"@types/rename": "1.0.1", "@types/rename": "1.0.1",
"@types/request": "2.48.4",
"@types/request-promise-native": "1.0.17",
"@types/request-stats": "3.0.0", "@types/request-stats": "3.0.0",
"@types/rimraf": "2.0.3", "@types/rimraf": "3.0.0",
"@types/seedrandom": "2.4.28", "@types/seedrandom": "2.4.28",
"@types/sharp": "0.24.0", "@types/sharp": "0.25.0",
"@types/showdown": "1.9.3", "@types/sinonjs__fake-timers": "6.0.1",
"@types/speakeasy": "2.0.5", "@types/speakeasy": "2.0.5",
"@types/systeminformation": "3.54.1",
"@types/tinycolor2": "1.4.2", "@types/tinycolor2": "1.4.2",
"@types/tmp": "0.1.0", "@types/tmp": "0.2.0",
"@types/uuid": "3.4.7", "@types/uuid": "8.0.0",
"@types/web-push": "3.3.0", "@types/web-push": "3.3.0",
"@types/webpack": "4.41.6", "@types/webpack": "4.41.13",
"@types/webpack-stream": "3.2.10", "@types/webpack-stream": "3.2.11",
"@types/websocket": "1.0.0", "@types/websocket": "1.0.0",
"@types/ws": "7.2.1", "@types/ws": "7.2.4",
"@typescript-eslint/parser": "2.19.2", "@typescript-eslint/parser": "2.33.0",
"agentkeepalive": "4.1.0", "abort-controller": "3.0.0",
"animejs": "3.1.0", "apexcharts": "3.19.2",
"apexcharts": "3.15.6",
"autobind-decorator": "2.4.0", "autobind-decorator": "2.4.0",
"autosize": "4.0.2", "autosize": "4.0.2",
"autwh": "0.1.0", "autwh": "0.1.0",
"aws-sdk": "2.617.0", "aws-sdk": "2.683.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"bull": "3.12.1", "bull": "3.14.0",
"cafy": "15.2.1", "cafy": "15.2.1",
"cbor": "5.0.1", "cbor": "5.0.2",
"chai": "4.2.0", "chalk": "4.0.0",
"chalk": "3.0.0",
"chart.js": "2.9.3", "chart.js": "2.9.3",
"cli-highlight": "2.1.4", "cli-highlight": "2.1.4",
"commander": "4.1.1", "commander": "4.1.1",
"content-disposition": "0.5.3", "content-disposition": "0.5.3",
"core-js": "3.6.5",
"crc-32": "1.2.0", "crc-32": "1.2.0",
"css-loader": "3.4.2", "css-loader": "3.5.3",
"cssnano": "4.1.10", "cssnano": "4.1.10",
"dateformat": "3.0.3", "dateformat": "3.0.3",
"deep-entries": "3.1.0",
"diskusage": "1.1.3", "diskusage": "1.1.3",
"double-ended-queue": "2.1.0-0", "double-ended-queue": "2.1.0-0",
"escape-regexp": "0.0.1",
"eslint": "6.8.0", "eslint": "6.8.0",
"eslint-plugin-vue": "6.1.2", "eslint-plugin-vue": "6.2.2",
"eventemitter3": "4.0.0", "eventemitter3": "4.0.4",
"feed": "4.1.0", "feed": "4.1.0",
"fibers": "4.0.2", "fibers": "5.0.0",
"file-type": "14.1.2", "file-type": "14.5.0",
"fluent-ffmpeg": "2.1.2", "fluent-ffmpeg": "2.1.2",
"glob": "7.1.6", "glob": "7.1.6",
"gulp": "4.0.2", "gulp": "4.0.2",
"gulp-clean-css": "4.2.0", "gulp-clean-css": "4.3.0",
"gulp-dart-sass": "0.9.1", "gulp-dart-sass": "1.0.2",
"gulp-mocha": "7.0.2",
"gulp-rename": "2.0.0", "gulp-rename": "2.0.0",
"gulp-replace": "1.0.0", "gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.5", "gulp-sourcemaps": "2.6.5",
"gulp-terser": "1.2.0", "gulp-terser": "1.2.0",
"gulp-tslint": "8.1.4", "gulp-tslint": "8.1.4",
"gulp-typescript": "5.0.1", "gulp-typescript": "6.0.0-alpha.1",
"hard-source-webpack-plugin": "0.13.1", "hard-source-webpack-plugin": "0.13.1",
"hcaptcha": "0.0.1",
"html-minifier": "4.0.0", "html-minifier": "4.0.0",
"http-signature": "1.3.1", "http-proxy-agent": "4.0.1",
"http-signature": "1.3.4",
"https-proxy-agent": "5.0.0", "https-proxy-agent": "5.0.0",
"idb-keyval": "3.2.0",
"insert-text-at-cursor": "0.3.0", "insert-text-at-cursor": "0.3.0",
"is-root": "2.1.0", "is-root": "2.1.0",
"is-svg": "4.2.1", "is-svg": "4.2.1",
"js-yaml": "3.13.1", "js-yaml": "3.14.0",
"jsdom": "16.1.0", "jsdom": "16.2.2",
"json5": "2.1.1", "json5": "2.1.3",
"json5-loader": "3.0.0", "json5-loader": "4.0.0",
"jsrsasign": "8.0.12", "jsonld": "3.1.1",
"jsrsasign": "8.0.15",
"katex": "0.11.1", "katex": "0.11.1",
"koa": "2.11.0", "koa": "2.12.0",
"koa-bodyparser": "4.2.1", "koa-bodyparser": "4.3.0",
"koa-compress": "3.0.0", "koa-favicon": "2.1.0",
"koa-favicon": "2.0.1",
"koa-json-body": "5.3.0", "koa-json-body": "5.3.0",
"koa-logger": "3.2.1", "koa-logger": "3.2.1",
"koa-mount": "4.0.0", "koa-mount": "4.0.0",
"koa-send": "5.0.0", "koa-send": "5.0.0",
"koa-slow": "2.1.0", "koa-slow": "2.1.0",
"koa-views": "6.2.1", "koa-views": "6.2.2",
"langmap": "0.0.16", "langmap": "0.0.16",
"loader-utils": "1.2.3",
"lolex": "5.1.2",
"lookup-dns-cache": "2.1.0", "lookup-dns-cache": "2.1.0",
"markdown-it": "10.0.0", "markdown-it": "11.0.0",
"markdown-it-anchor": "5.2.5", "markdown-it-anchor": "5.3.0",
"mocha": "7.0.1", "mocha": "7.2.0",
"moji": "0.5.1", "moji": "0.5.1",
"ms": "2.1.2", "ms": "2.1.2",
"multer": "1.4.2", "multer": "1.4.2",
"nested-property": "1.0.4", "nested-property": "2.0.0",
"node-fetch": "2.6.0", "node-fetch": "2.6.0",
"nodemailer": "6.4.2", "nodemailer": "6.4.6",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"object-assign-deep": "0.4.0", "object-assign-deep": "0.4.0",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"parse5": "5.1.1", "parse5": "6.0.0",
"parsimmon": "1.13.0", "parsimmon": "1.13.0",
"pg": "7.18.1", "pg": "8.2.1",
"portal-vue": "2.1.7", "portal-vue": "2.1.7",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"postcss-loader": "3.0.0", "postcss-loader": "3.0.0",
"prismjs": "1.19.0", "prismjs": "1.20.0",
"probe-image-size": "5.0.0", "probe-image-size": "5.0.0",
"progress-bar-webpack-plugin": "2.1.0",
"promise-limit": "2.7.0", "promise-limit": "2.7.0",
"promise-sequential": "1.1.1", "promise-sequential": "1.1.1",
"pug": "2.0.4", "pug": "2.0.4",
"punycode": "2.1.1", "punycode": "2.1.1",
"pureimage": "0.1.6", "pureimage": "0.2.1",
"qrcode": "1.4.4", "qrcode": "1.4.4",
"random-seed": "0.3.0", "random-seed": "0.3.0",
"randomcolor": "0.5.4", "randomcolor": "0.5.4",
"ratelimiter": "3.4.0", "ratelimiter": "3.4.1",
"recaptcha-promise": "0.1.3", "recaptcha-promise": "0.1.3",
"reconnecting-websocket": "4.4.0", "reconnecting-websocket": "4.4.0",
"redis": "3.0.2", "redis": "3.0.2",
"redis-lock": "0.1.4", "redis-lock": "0.1.4",
"reflect-metadata": "0.1.13", "reflect-metadata": "0.1.13",
"regenerator-runtime": "0.13.5",
"rename": "1.0.4", "rename": "1.0.4",
"request": "2.88.2",
"request-promise-native": "1.0.8",
"request-stats": "3.0.0", "request-stats": "3.0.0",
"require-all": "3.0.0", "require-all": "3.0.0",
"rimraf": "3.0.2", "rimraf": "3.0.2",
"rndstr": "1.0.0", "rndstr": "1.0.0",
"s-age": "1.1.2", "s-age": "1.1.2",
"sass": "1.25.0", "sass": "1.26.5",
"sass-loader": "8.0.2", "sass-loader": "8.0.2",
"seedrandom": "3.0.5", "seedrandom": "3.0.5",
"sharp": "0.24.0", "sharp": "0.25.3",
"showdown": "1.9.1",
"showdown-highlightjs-extension": "0.1.2",
"speakeasy": "2.0.0", "speakeasy": "2.0.0",
"stringz": "2.0.0", "stringz": "2.1.0",
"style-loader": "1.1.3", "style-loader": "1.2.1",
"summaly": "2.3.1", "summaly": "2.3.1",
"syslog-pro": "1.0.0", "syslog-pro": "1.0.0",
"systeminformation": "4.21.2", "systeminformation": "4.26.4",
"syuilo-password-strength": "0.0.1", "syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "2.3.4",
"textarea-caret": "3.1.0", "textarea-caret": "3.1.0",
"three": "0.113.2", "three": "0.116.1",
"tinycolor2": "1.4.1", "tinycolor2": "1.4.1",
"tmp": "0.1.0", "tmp": "0.2.1",
"ts-loader": "6.2.1", "ts-loader": "7.0.4",
"ts-node": "8.6.2", "ts-node": "8.10.1",
"tslint": "6.0.0", "tslint": "6.1.2",
"tslint-sonarts": "1.9.0", "tslint-sonarts": "1.9.0",
"typeorm": "0.2.22", "typeorm": "0.2.25",
"typescript": "3.7.5", "typescript": "3.9.3",
"ulid": "2.3.0", "ulid": "2.3.0",
"url-loader": "3.0.0", "url-loader": "4.1.0",
"uuid": "3.4.0", "uuid": "8.1.0",
"v-animate-css": "0.0.3", "v-animate-css": "0.0.3",
"v-debounce": "0.1.2", "v-debounce": "0.1.2",
"vue": "2.6.11", "vue": "2.6.11",
"vue-color": "2.7.0", "vue-color": "2.7.1",
"vue-content-loading": "1.6.0", "vue-content-loading": "1.6.0",
"vue-cropperjs": "4.0.1", "vue-cropperjs": "4.1.0",
"vue-i18n": "8.15.3", "vue-i18n": "8.17.7",
"vue-json-pretty": "1.6.3", "vue-json-pretty": "1.6.3",
"vue-loader": "15.9.0", "vue-loader": "15.9.2",
"vue-marquee-text-component": "1.1.1", "vue-marquee-text-component": "1.1.1",
"vue-meta": "2.3.2", "vue-meta": "2.3.3",
"vue-prism-component": "1.1.1", "vue-prism-component": "1.2.0",
"vue-router": "3.1.5", "vue-prism-editor": "0.6.1",
"vue-router": "3.2.0",
"vue-style-loader": "4.1.2", "vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.4.5", "vue-svg-inline-loader-corejs3": "1.5.0",
"vue-template-compiler": "2.6.11", "vue-template-compiler": "2.6.11",
"vuedraggable": "2.23.2", "vuedraggable": "2.23.2",
"vuex": "3.1.2", "vuex": "3.4.0",
"vuex-persistedstate": "2.7.1", "vuex-persistedstate": "3.0.1",
"web-push": "3.4.3", "web-push": "3.4.4",
"webpack": "4.41.6", "webpack": "5.0.0-beta.16",
"webpack-cli": "3.3.11", "webpack-cli": "3.3.11",
"websocket": "1.0.31", "websocket": "1.0.31",
"ws": "7.2.1", "ws": "7.3.0",
"xev": "2.0.1" "xev": "2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/fluent-ffmpeg": "2.1.12", "@types/chai": "4.2.11",
"cross-env": "6.0.3" "@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; clockSkew?: number;
} }
interface IParsedSignature { interface IParsedSignature {
scheme: string; scheme: string;
params: ISignature; params: ISignature;
signingString: string; signingString: string;
algorithm: string;
keyId: string;
} }
type RequestSignerConstructorOptions = type RequestSignerConstructorOptions =

View File

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

View File

@ -49,44 +49,20 @@
<router-link class="item index" active-class="active" to="/" exact v-else> <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> <fa :icon="faHome" fixed-width/><span class="text">{{ $store.getters.isSignedIn ? $t('timeline') : $t('home') }}</span>
</router-link> </router-link>
<template v-if="$store.getters.isSignedIn"> <template v-for="item in menu">
<router-link class="item notifications" active-class="active" to="/my/notifications" ref="notificationButton"> <div v-if="item === '-'" class="divider"></div>
<fa :icon="faBell" fixed-width/><span class="text">{{ $t('notifications') }}</span> <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">
<i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i> <fa :icon="menuDef[item].icon" fixed-width/><span class="text">{{ $t(menuDef[item].title) }}</span>
</router-link> <i v-if="menuDef[item].indicated"><fa :icon="faCircle"/></i>
<router-link class="item" active-class="active" to="/my/messaging"> </component>
<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> </template>
<div class="divider"></div> <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"> <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> <fa :icon="faServer" fixed-width/><span class="text">{{ $t('instance') }}</span>
</button> </button>
<button class="item _button" @click="more"> <button class="item _button" @click="more">
<fa :icon="faEllipsisH" fixed-width/><span class="text">{{ $t('more') }}</span> <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> </button>
<router-link class="item" active-class="active" to="/preferences"> <router-link class="item" active-class="active" to="/preferences">
<fa :icon="faCog" fixed-width/><span class="text">{{ $t('settings') }}</span> <fa :icon="faCog" fixed-width/><span class="text">{{ $t('settings') }}</span>
@ -141,10 +117,10 @@
</div> </div>
<div class="buttons"> <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-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-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> <button v-if="$store.getters.isSignedIn" class="button post _buttonPrimary" @click="post()"><fa :icon="faPencilAlt"/></button>
</div> </div>
@ -156,20 +132,16 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
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, 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 { faBell, faEnvelope, faLaugh, faComments } from '@fortawesome/free-regular-svg-icons';
import { ResizeObserver } from '@juggle/resize-observer'; import { ResizeObserver } from '@juggle/resize-observer';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import i18n from './i18n';
import { host, instanceName } from './config'; import { host, instanceName } from './config';
import { search } from './scripts/search'; import { search } from './scripts/search';
import MkToast from './components/toast.vue';
const DESKTOP_THRESHOLD = 1100; const DESKTOP_THRESHOLD = 1100;
export default Vue.extend({ export default Vue.extend({
i18n,
components: { components: {
XClock: () => import('./components/header-clock.vue').then(m => m.default), XClock: () => import('./components/header-clock.vue').then(m => m.default),
MkButton: () => import('./components/ui/button.vue').then(m => m.default), MkButton: () => import('./components/ui/button.vue').then(m => m.default),
@ -188,10 +160,13 @@ export default Vue.extend({
searchQuery: '', searchQuery: '',
searchWait: false, searchWait: false,
widgetsEditMode: false, widgetsEditMode: false,
menuDef: this.$store.getters.nav({
search: this.search
}),
isDesktop: window.innerWidth >= DESKTOP_THRESHOLD, isDesktop: window.innerWidth >= DESKTOP_THRESHOLD,
canBack: false, canBack: false,
wallpaper: localStorage.getItem('wallpaper') != null, 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[] { widgets(): any[] {
return this.$store.state.deviceUser.widgets; 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;
} }
}, },
@ -310,7 +308,7 @@ export default Vue.extend({
title: this.$t('search'), title: this.$t('search'),
input: true input: true
}).then(async ({ canceled, result: query }) => { }).then(async ({ canceled, result: query }) => {
if (canceled || query == null || query == '') return; if (canceled || query == null || query === '') return;
this.searching = true; this.searching = true;
search(this, query).finally(() => { search(this, query).finally(() => {
@ -320,7 +318,7 @@ export default Vue.extend({
}, },
searchKeypress(e) { searchKeypress(e) {
if (e.keyCode == 13) { if (e.keyCode === 13) {
this.searchWait = true; this.searchWait = true;
search(this, this.searchQuery).finally(() => { search(this, this.searchQuery).finally(() => {
this.searchWait = false; this.searchWait = false;
@ -412,6 +410,11 @@ export default Vue.extend({
text: this.$t('federation'), text: this.$t('federation'),
to: '/instance/federation', to: '/instance/federation',
icon: faGlobe, icon: faGlobe,
}, {
type: 'link',
text: this.$t('relays'),
to: '/instance/relays',
icon: faProjectDiagram,
}, { }, {
type: 'link', type: 'link',
text: this.$t('announcements'), text: this.$t('announcements'),
@ -426,50 +429,16 @@ export default Vue.extend({
}, },
more(ev) { 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({ this.$root.menu({
items: [...(this.$store.getters.isSignedIn ? [{ items: [...items, null, {
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', type: 'link',
text: this.$t('help'), text: this.$t('help'),
to: '/docs', to: '/docs',
@ -530,14 +499,13 @@ export default Vue.extend({
}); });
}, },
onNotification(notification) { async onNotification(notification) {
// TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない if (document.visibilityState === 'visible') {
if (true) {
this.$root.stream.send('readNotification', { this.$root.stream.send('readNotification', {
id: notification.id id: notification.id
}); });
this.$root.new(MkToast, { this.$root.new(await import('./components/toast.vue').then(m => m.default), {
notification notification
}); });
} }

View File

@ -18,7 +18,7 @@
</style> </style>
</head> </head>
<body> <body>
<redoc spec-url='/api.json'></redoc> <redoc spec-url="/api.json" expand-responses="200" expand-single-schema-field="true"></redoc>
<script src="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"> </script> <script src="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"> </script>
</body> </body>
</html> </html>

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

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