diff --git a/.config/example.yml b/.config/example.yml index d5ea4ba607..38d5e59ea7 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -157,3 +157,10 @@ id: 'aid' # Sign to ActivityPub GET request (default: false) #signToActivityPubGet: true + +#allowedPrivateNetworks: [ +# '127.0.0.1/32' +#] + +# Upload or download file size limits (bytes) +#maxFileSize: 262144000 diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 30b804f0b5..1de4615f59 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,30 +1,10 @@ # What diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index c6e5329c26..9a32dac94e 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -29,6 +29,8 @@ jobs: steps: - uses: actions/checkout@v2 + with: + submodules: true - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: @@ -48,6 +50,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + with: + submodules: true - uses: actions/setup-node@v1 with: node-version: 12.x diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..9246e09b8b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "misskey-assets"] + path = misskey-assets + url = https://github.com/misskey-dev/assets.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 205c780c2c..2454a3b609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,24 @@ --> +## 12.90.0 (2021/09/04) + +### Improvements +- 藍モード、および藍ウィジェット + - クライアントに藍ちゃんを召喚することができるようになりました。 +- URLからのアップロード, APの添付ファイル, 外部ファイルのプロキシ等では、Privateアドレス等へのリクエストは拒否されるようになりました。 + - developmentで動作している場合は、この制限は適用されません。 + - Proxy使用時には、この制限は適用されません。 + Proxy使用時に同等の制限を行いたい場合は、Proxy側で設定を行う必要があります。 + - `default.yml`にて`allowedPrivateNetworks`にCIDRを追加することにより、宛先ネットワークを指定してこの制限から除外することが出来ます。 +- アップロード, ダウンロード出来るファイルサイズにハードリミットが適用されるようになりました。(約250MB) + - `default.yml`にて`maxFileSize`を変更することにより、制限値を変更することが出来ます。 + +### Bugfixes +- 管理者が最初にサインアップするページでログインされないのを修正 +- CWを維持する設定を復活 +- クライアントの表示を修正 + ## 12.89.2 (2021/08/24) ### Bugfixes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b3c67ff4d7..ca0a841ccf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,22 +1,41 @@ # Contribution guide -:v: Thanks for your contributions :v: +**[✨ English version available](/docs/CONTRIBUTING.en.md)** -## When you contribute... -- 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。 - - 設計に迷った時はプロジェクトリーダーの判断を仰いでください。 -- 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。 - - 温度感高めで見てほしいものは責付いてください。 +プロジェクトに興味を持っていただきありがとうございます! このドキュメントでは、プロジェクトに貢献する際に必要な情報をまとめています。 ## Issues -Feature suggestions and bug reports are filed in https://github.com/misskey-dev/misskey/issues . +Issueを作成する前に、以下をご確認ください: +- 重複を防ぐため、既に同様の内容のIssueが作成されていないか検索してから新しいIssueを作ってください。 +- Issueを質問に使わないでください。 + - Issueは、要望、提案、問題の報告にのみ使用してください。 + - 質問は、[Misskey Forum](https://forum.misskey.io/)や[Discord](https://discord.gg/Wp8gVStHW3)でお願いします。 -* Please search existing issues to avoid duplication. If your issue is already filed, please add your reaction or comment to the existing one. -* If you have multiple independent issues, please submit them separately. +## 実装をする前に +機能追加やバグ修正をしたいときは、まずIssueで設計、方針をレビューしてもらいましょう(無い場合は作ってください)。このステップがないと、せっかく実装してもPRがマージされない可能性が高くなります。 -## Branches -* **master** branch is tracking the latest release and used for production purposes. -* **develop** branch is where we work for the next release. -* **l10n_develop** branch is reserved for localization management. +また、実装に取り掛かるときは当該Issueに自分をアサインしてください(自分でできない場合は他メンバーに自分をアサインしてもらうようお願いしてください)。 +自分が実装するという意思表示をすることで、作業がバッティングするのを防ぎます。 + +## PRの作成 +PRありがとうございます! PRを作成する前に、以下をご確認ください: +- 可能であればタイトルに、以下で示すようなPRの種類が分かるキーワードをプリフィクスしてください。 + - `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` など + - また、PRの粒度が適切であることを確認してください。ひとつのPRに複数の種類の変更や関心を含めることは避けてください。 +- このPRによって解決されるIssueがある場合は、そのIssueへの参照を本文内に含めてください。 +- [`CHANGELOG.md`](/CHANGELOG.md)に変更点を追記してください。リファクタリングなど、利用者に影響を与えない変更についてはこの限りではありません。 +- この変更により新たに作成、もしくは更新すべきドキュメントがないか確認してください。 +- 機能追加やバグ修正をした場合は、可能であればテストケースを追加してください。 +- テスト、Lintが通っていることを予め確認してください。 + - `npm run test`、`npm run lint`でぞれぞれ実施可能です。[詳細](#testing) +- UIに変更がある場合はスクリーンショットを本文内に添付してください。 + +ご協力ありがとうございます🤗 + +## ブランチ +- **`master`** branch is tracking the latest release and used for production purposes. +- **`develop`** branch is where we work for the next release. + - PRを作成するときは、基本的にこのブランチに向けてください。 +- **`l10n_develop`** branch is reserved for localization management. ## Localization (l10n) Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management. @@ -32,14 +51,22 @@ If your language is not listed in Crowdin, please open an issue. * Documents for instance admins are located in [`/docs`](/docs). * Documents for end users are located in [`/src/docs`](/src/docs). -## Test -* Test codes are located in [`/test`](/test). +## Testing +- Test codes are located in [`/test`](/test). -### Run specify test +### Run test +``` +npm run test +``` + +#### Run specify test ``` npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register ``` +### e2e tests +TODO + ## Continuous integration Misskey uses GitHub Actions for executing automated tests. Configuration files are located in [`/.github/workflows`](/.github/workflows). @@ -55,116 +82,11 @@ Configuration files are located in [`/.github/workflows`](/.github/workflows). If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/). You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html). -## FAQ +## Notes ### How to resolve conflictions occurred at yarn.lock? Just execute `yarn` to fix it. -## Glossary -### AP -Stands for _**A**ctivity**P**ub_. - -### MFM -Stands for _**M**isskey **F**lavored **M**arkdown_. - -### Mk -Stands for _**M**iss**k**ey_. - -### SW -Stands for _**S**ervice**W**orker_. - -### Nyaize -Convert な(na) to にゃ(nya) - -#### Denyaize -Revert Nyaize - -## TypeScript Coding Style -### Do not omit semicolons -This is to avoid Automatic Semicolon Insertion (ASI) hazard. - -Ref: -* https://www.ecma-international.org/ecma-262/#sec-automatic-semicolon-insertion -* https://github.com/tc39/ecma262/pull/1062 - -### Do not omit curly brackets -Bad: -``` ts -if (foo) - bar; -else - baz; -``` - -Good: -``` ts -if (foo) { - bar; -} else { - baz; -} -``` - -As a special case, you can omit the curly brackets if - -* the body of the `if`-statement have only one statement and, -* the `if`-statement does not have `else`-clause. - -Good: -``` ts -if (foo) bar; -``` - -Make sure that the condition and the body statement are on the same line. - -### Do not use `==` when it can simply be replaced with `===`. -🥰 - -### Use only boolean (or null related) values in the condition of an `if`-statement. -Bad: -``` ts -if (foo.length) -``` - -Good: -``` ts -if (foo.length > 0) -``` - -### Do not use `export default` -This is because the current language support does not work well with `export default`. - -Ref: -* https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html -* https://gfx.hatenablog.com/entry/2017/11/24/135343 - -Bad: -``` ts -export default function(foo: string): string { -``` - -Good: -``` ts -export function something(foo: string): string { -``` - -## Directory structure -``` -src ... Source code - @types ... Type definitions - prelude ... Independence utils for coding JavaScript without side effects - misc ... Independence utils for Misskey without side effects - service ... Common functions with side effects - queue ... Job queues and Jobs - server ... Web Server - client ... Client - mfm ... MFM - -test ... Test code - -``` - -## Notes ### placeholder SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない 例えば diff --git a/Dockerfile b/Dockerfile index 1e8584551f..8c655c4c4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,7 @@ RUN apk add --no-cache \ python3 \ zlib-dev +RUN git submodule update --init COPY package.json yarn.lock .yarnrc ./ RUN yarn install COPY . ./ diff --git a/docs/CONTRIBUTING.en.md b/docs/CONTRIBUTING.en.md new file mode 100644 index 0000000000..21f2b591f3 --- /dev/null +++ b/docs/CONTRIBUTING.en.md @@ -0,0 +1,66 @@ +# Contribution guide +:v: Thanks for your contributions :v: + +**ℹ️ Important:** This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.** +Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\ +The accuracy of translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language. +It will also allow the reader to use the translation tool of their preference if necessary. + +## Issues +Before creating an issue, please check the following: +- To avoid duplication, please search for similar issues before creating a new issue. +- Do not use Issues as a question. + - Issues should only be used to feature requests, suggestions, and report problems. + - Please ask questions in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3). + +## Before implementation +When you want to add a feature or fix a bug, first have the design and policy reviewed in an Issue (if it is not there, please make one). Without this step, there is a high possibility that the PR will not be merged even if it is implemented. + +Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask another member to assign you). By expressing your intention to work the Issue, you can prevent conflicts in the work. + +## Well-known branches +- **`master`** branch is tracking the latest release and used for production purposes. +- **`develop`** branch is where we work for the next release. + - When you create a PR, basically target it to this branch. +- **`l10n_develop`** branch is reserved for localization management. + +## Creating a PR +Thank you for your PR! Before creating a PR, please check the following: +- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below. + - `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc + - Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR. +- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text. +- Please add the summary of the changes to [`CHANGELOG.md`](/CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring. +- Check if there are any documents that need to be created or updated due to this change. +- If you have added a feature or fixed a bug, please add a test case if possible. +- Please make sure that tests and Lint are passed in advance. + - You can run it with `npm run test` and `npm run lint`. [See more info](#testing) +- If this PR includes UI changes, please attach a screenshot in the text. + +Thanks for your cooperation 🤗 + +## Localization (l10n) +Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management. +You can improve our translations with your Crowdin account. +Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository. +The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release. + +If your language is not listed in Crowdin, please open an issue. + +![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg) + +## Testing +- Test codes are located in [`/test`](/test). + +### Run test +``` +npm run test +``` + +#### Run specify test +``` +npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register +``` + +### e2e tests +TODO diff --git a/docs/docker.en.md b/docs/docker.en.md index 93eee8e4b4..adeafe3d31 100644 --- a/docs/docker.en.md +++ b/docs/docker.en.md @@ -83,10 +83,11 @@ Just `docker-compose up -d`. GLHF! 1. `git stash` 2. `git checkout master` 3. `git pull` -4. `git stash pop` -5. `docker-compose build` -6. Check [ChangeLog](../CHANGELOG.md) for migration information -7. `docker-compose stop && docker-compose up -d` +4. `git submodule update --init` +5. `git stash pop` +6. `docker-compose build` +7. Check [ChangeLog](../CHANGELOG.md) for migration information +8. `docker-compose stop && docker-compose up -d` ### How to execute [cli commands](manage.en.md): `docker-compose run --rm web node built/tools/mark-admin @example` diff --git a/docs/docker.fr.md b/docs/docker.fr.md index 7abd46335f..840e5b5a28 100644 --- a/docs/docker.fr.md +++ b/docs/docker.fr.md @@ -50,10 +50,11 @@ Utilisez la commande `docker-compose up -d`. GLHF! 1. `git stash` 2. `git checkout master` 3. `git pull` -4. `git stash pop` -5. `docker-compose build` -6. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration -7. `docker-compose stop && docker-compose up -d` +4. `git submodule update --init` +5. `git stash pop` +6. `docker-compose build` +7. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration +8. `docker-compose stop && docker-compose up -d` ### Comment exécuter des [commandes](manage.fr.md) `docker-compose run --rm web node built/tools/mark-admin @example` diff --git a/docs/docker.ja.md b/docs/docker.ja.md index 15b1a944ac..c660a9041b 100644 --- a/docs/docker.ja.md +++ b/docs/docker.ja.md @@ -83,10 +83,11 @@ docker-compose run --rm web yarn run init 1. `git stash` 2. `git checkout master` 3. `git pull` -4. `git stash pop` -5. `docker-compose build` -6. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する -7. `docker-compose stop && docker-compose up -d` +4. `git submodule update --init` +5. `git stash pop` +6. `docker-compose build` +7. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する +8. `docker-compose stop && docker-compose up -d` ### cliコマンドを実行する方法: diff --git a/docs/docker.zh.md b/docs/docker.zh.md index a842fcb0cc..5a494ea11e 100644 --- a/docs/docker.zh.md +++ b/docs/docker.zh.md @@ -83,10 +83,11 @@ docker-compose run --rm web yarn run init 1. `git stash` 2. `git checkout master` 3. `git pull` -4. `git stash pop` -5. `docker-compose build` -6. 检查 [更新日志](../CHANGELOG.md) 以获取升级迁移信息。 -7. `docker-compose stop && docker-compose up -d` +4. `git submodule update --init` +5. `git stash pop` +6. `docker-compose build` +7. 检查 [更新日志](../CHANGELOG.md) 以获取升级迁移信息。 +8. `docker-compose stop && docker-compose up -d` ### 如何执行 [控制台指令](manage.zh.md): `docker-compose run --rm web node built/tools/mark-admin @example` diff --git a/docs/setup.en.md b/docs/setup.en.md index bb72fcda1e..dfe50a6600 100644 --- a/docs/setup.en.md +++ b/docs/setup.en.md @@ -131,11 +131,12 @@ You can check if the service is running with `systemctl status misskey`. ### How to update your Misskey server to the latest version 1. `git checkout master` 2. `git pull` -3. `yarn install` -4. `NODE_ENV=production yarn build` -5. `yarn migrate` -6. Restart your Misskey process to apply changes -7. Enjoy +3. `git submodule update --init` +4. `yarn install` +5. `NODE_ENV=production yarn build` +6. `yarn migrate` +7. Restart your Misskey process to apply changes +8. Enjoy If you encounter any problems with updating, please try the following: 1. `yarn clean` or `yarn cleanall` diff --git a/docs/setup.fr.md b/docs/setup.fr.md index 7f4795eec5..f38c7a8eab 100644 --- a/docs/setup.fr.md +++ b/docs/setup.fr.md @@ -126,9 +126,10 @@ Vous pouvez vérifier si le service a démarré en utilisant la commande `system ### Méthode de mise à jour vers la plus récente version de Misskey 1. `git checkout master` 2. `git pull` -3. `yarn install` -4. `NODE_ENV=production yarn build` -5. `yarn migrate` +3. `git submodule update --init` +4. `yarn install` +5. `NODE_ENV=production yarn build` +6. `yarn migrate` ---------------------------------------------------------------- diff --git a/docs/setup.ja.md b/docs/setup.ja.md index e8bae56f43..5681ee8c51 100644 --- a/docs/setup.ja.md +++ b/docs/setup.ja.md @@ -133,9 +133,10 @@ yarn run init ### Misskeyを最新バージョンにアップデートする方法: 1. `git checkout master` 2. `git pull` -3. `yarn install` -4. `NODE_ENV=production yarn build` -5. `yarn migrate` +3. `git submodule update --init` +4. `yarn install` +5. `NODE_ENV=production yarn build` +6. `yarn migrate` なにか問題が発生した場合は、`yarn clean`または`yarn cleanall`すると直る場合があります。 diff --git a/docs/setup.zh.md b/docs/setup.zh.md index 50664706b7..26a72f0d05 100644 --- a/docs/setup.zh.md +++ b/docs/setup.zh.md @@ -131,11 +131,12 @@ yarn run init ### 如何将您的 Misskey 服务器升级至最新版本 1. `git checkout master` 2. `git pull` -3. `yarn install` -4. `NODE_ENV=production yarn build` -5. `yarn migrate` -6. 重启您的 Misskey 进程来应用改变。 -7. 尽情享受吧! +3. `git submodule update --init` +4. `yarn install` +5. `NODE_ENV=production yarn build` +6. `yarn migrate` +7. 重启您的 Misskey 进程来应用改变。 +8. 尽情享受吧! 如果您在更新时遇到任何问题,请尝试以下操作: 1. `yarn clean` 或是 `yarn cleanall` diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 1afc8fab48..c5ce70dd67 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -779,6 +779,12 @@ translate: "Übersetzen" translatedFrom: "Aus {x} übersetzt" accountDeletionInProgress: "Löschung des Benutzerkontos momentan in Bearbeitung" usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche (_) verwenden. Benutzernamen können später nicht geändert werden." +aiChanMode: "Ai Modus" +keepCw: "Inhaltswarnung beibehalten" +pubSub: "Pub/Sub Benutzerkonten" +lastCommunication: "Letzte Kommunikation" +resolved: "Gelöst" +unresolved: "Ungelöst" _accountDelete: accountDelete: "Benutzerkonto löschen" mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist, kann dessen Dauer davon abhängen, wie viel Inhalt in diesem erstellt wurde oder wie viele Dateien hochgeladen wurden." @@ -1159,6 +1165,7 @@ _widgets: jobQueue: "Job-Warteschlange" serverMetric: "Servermetriken" aiscript: "AiScript-Konsole" + aichan: "Ai" _cw: hide: "Verbergen" show: "Inhalt anzeigen" diff --git a/locales/en-US.yml b/locales/en-US.yml index 9565e62038..5d33e35f5e 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -779,6 +779,12 @@ translate: "Translate" translatedFrom: "Translated from {x}" accountDeletionInProgress: "Account deletion is currently in progress" usernameInfo: "A name that identifies your account from others on this server. You can use the alphabet (a~z, A~Z), digits (0~9) or underscores (_). Usernames can not be changed later." +aiChanMode: "Ai Mode" +keepCw: "Keep Content Warning" +pubSub: "Pub/Sub Accounts" +lastCommunication: "Last communication" +resolved: "Resolved" +unresolved: "Unresolved" _accountDelete: accountDelete: "Delete Account" mayTakeTime: "As account deletion is a resource-heavy process, it may take some time to complete depending on how much content you have created and how many files you have uploaded." @@ -1093,7 +1099,7 @@ _2fa: _permissions: "read:account": "View your account information" "write:account": "Edit your account information" - "read:blocks": "View the list of people you blocked" + "read:blocks": "View your list of blocked users" "write:blocks": "Edit your list of blocked users" "read:drive": "Access your drive files and folders" "write:drive": "Edit or delete your drive files and folders" @@ -1159,6 +1165,7 @@ _widgets: jobQueue: "Job Queue" serverMetric: "Server metrics" aiscript: "AiScript console" + aichan: "Ai" _cw: hide: "Hide" show: "Show content" diff --git a/locales/eo-UY.yml b/locales/eo-UY.yml index 4d435512b8..9ebd9b1d81 100644 --- a/locales/eo-UY.yml +++ b/locales/eo-UY.yml @@ -1,8 +1,8 @@ --- _lang_: "Esperanto" headlineMisskey: "Reto ligata per notoj" -introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza mikrobloga servo.\nKreu \"noto\"n por diskonigu tion ke nun okazas, aŭ por dissendu pri vi. 📡\nPer la funkcio \"reago\", vi ankaŭ povas rapide esprimi vian senton pri ĉies noto. 👍\nOni esploru novan mondon. 🚀" -monthAndDay: "{day}-a/{month}" +introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza mikrobloga servo.\nKreu \"noto\"n por diskonigu ke nun okazas, aŭ por dissendu pri vi. 📡\nPer la funkcio \"reago\", vi ankaŭ povas rapide esprimi vian senton pri ĉies noto. 👍\nEsploru novan mondon. 🚀" +monthAndDay: "{day}a/{month}" search: "Serĉi" notifications: "Sciigoj" username: "Uzantnomo" @@ -16,36 +16,35 @@ enterUsername: "Entajpu uzantnomon" renotedBy: "Renoto farita de {user}" noNotes: "Neniu noto!" noNotifications: "Vi ne havas sciigojn." -instance: "Ekzemplo" +instance: "Nodo" settings: "Agordoj" basicSettings: "Ĝeneralaj agordoj" otherSettings: "Aliaj agordoj" openInWindow: "Malfermi en nova fenestro" profile: "Profilo" timeline: "Templinio" -noAccountDescription: "Tiu uzanto ankoraŭ ne skribis biografieton" +noAccountDescription: "Tiu uzanto ne skribis biografieton" login: "Ensaluti" loggingIn: "Ensalutado..." logout: "Elsaluti" signup: "Krei konton" uploading: "Alŝutado..." save: "Konservi" -users: "Uzanto" +users: "Uzantoj" addUser: "Aldoni uzanton" favorite: "Preferi" -favorites: "Preferataj" +favorites: "Preferataĵoj" unfavorite: "Malpreferi" -favorited: "Aldonita al preferatoj" -alreadyFavorited: "Jame aldonita al preferatoj" -cantFavorite: "Ne aldonita al preferatoj" -pin: "Alpingli sur la profilo" +favorited: "Aldonita al preferataĵoj" +cantFavorite: "Ne aldonita al preferataĵoj" +pin: "Alpingli al la profilo" unpin: "Depingli" copyContent: "Kopii enhavon" copyLink: "Kopii ligilon" delete: "Forviŝi" -deleteAndEdit: "Forigi kaj redakti" +deleteAndEdit: "Forviŝi kaj redakti" deleteAndEditConfirm: "Ĉu vi certas, ke vi volas forigi kaj redakti la noton? Ankaŭ ĉiuj reagoj, renotoj, kaj respondoj al ĝi foriĝos." -addToList: "Aldoni al la listo" +addToList: "Aldoni al listo" sendMessage: "Sendi mesaĝon" copyUsername: "Kopii uzantnomon" searchUser: "Serĉi uzanton" @@ -57,13 +56,13 @@ receiveFollowRequest: "Peto de sekvado estas ricevita" followRequestAccepted: "La peto de sekvado akceptita" mention: "Mencioj" mentions: "Al vi" -directNotes: "Rektaj notoj" +directNotes: "Notoj rektaj" importAndExport: "Importi/eksporti" import: "Importi" export: "Eksporti" files: "Dosieroj" download: "Elŝuti" -driveFileDeleteConfirm: "Ĉu vi certas, ke vi volas forviŝi la dosieron \"{name}\"? Ankaŭ notoj kiu enhavas ĝin forviŝiĝos." +driveFileDeleteConfirm: "Ĉu vi certas, ke vi volas forviŝi la dosieron \"{name}\"? Ankaŭ notoj kiuj enhavas ĝin forviŝiĝos." unfollowConfirm: "Ĉu vi certas, ke vi volas ne plu sekvi {name}'(o)n?" lists: "Listoj" noLists: "Neniu listo" @@ -86,17 +85,21 @@ unfollow: "Malsekvi" enterEmoji: "Entajpu emoĵion" renote: "Fari renoton" unrenote: "Malfari renoton" -renoted: "Renoton fariĝis." -cantRenote: "Tiu noto ne estas renototebla." -cantReRenote: "Oni ne povas fari renoton kiu enhavas renoto." +renoted: "Renoto fariĝis." +cantRenote: "Tiu noto ne estas resendebla." +cantReRenote: "Renotoj ne estas renotebla." quote: "Citi" -pinnedNote: "Pinglita noto" -pinned: "Alpingli sur la profilo" +pinnedNote: "Alpinglita noto" +pinned: "Alpingli al la profilo" you: "Vi" clickToShow: "Klaku por malkaŝu" sensitive: "Enhavo ne estas deca por laborejo (NSFW)" add: "Aldoni" reaction: "Reagoj" +rememberNoteVisibility: "Rememori la videblecon de la noto laste sendita" +attachCancel: "Deigi aldonaĵon" +markAsSensitive: "Troviĝi NSFW" +unmarkAsSensitive: "Ne troviĝi NSFW" enterFileName: "Entajpu nomon de dosiero" mute: "Silentigi" unmute: "Malsilentigi" @@ -119,12 +122,12 @@ emojis: "Emoĵio" emojiName: "Nomo de emoĵio" emojiUrl: "URL de la emoĵio" addEmoji: "Aldoni emoĵion" -settingGuide: "Rekomendaj agordoj" +settingGuide: "Agordaj rekomendoj" cacheRemoteFiles: "Havi staplon de transaj dosieroj" -flagAsBot: "Tiu uzanto estas roboto" -flagAsCat: "Tiu uzanto estas kato" +flagAsBot: "Agordo por robota uzanto" +flagAsCat: "Agordo de katiĝa uzanto" addAccount: "Aldoni konton" -showOnRemote: "Vidi sur la fora ekzemplo" +showOnRemote: "Vidi sur la fora nodo" general: "Ĝenerala" wallpaper: "Ekranfonoj" setWallpaper: "Apliki ekranfonon" @@ -135,42 +138,43 @@ followConfirm: "Ĉu vi certas ke vi volas sekvi {name}'(o)n?" selectUser: "Elekti uzanton" annotation: "Komentarioj" federation: "Kunfederaĵo" -instances: "Ekzemplo" +instances: "Nodo" perHour: "Po horo" perDay: "Po tago" -blockThisInstance: "Bloki tiu ekzemplo" +blockThisInstance: "Bloki tiun nodon" version: "Versio" withNFiles: "{n} dosiero(j)" disk: "Diskilo" -instanceInfo: "Informo pri la ekzemplo" +instanceInfo: "Informoj pri la nodo" clearCachedFiles: "Malplenigi la staplon" clearCachedFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn transajn dosierojn en la staplo?" -blockedInstances: "Blokataj ekzemploj" -muteAndBlock: "Silentigatoj kaj blokatoj" -mutedUsers: "Silentigataj uzantoj" -blockedUsers: "Blokataj uzantoj" +blockedInstances: "Blokitaj nodoj" +muteAndBlock: "Silentigitoj kaj blokitoj" +mutedUsers: "Silentigitaj uzantoj" +blockedUsers: "Blokitaj uzantoj" noUsers: "Sen uzantoj" editProfile: "Redakti profilon" noteDeleteConfirm: "Ĉu vi certas ke vi volas forviŝi la noton?" pinLimitExceeded: "Vi povas alpingli ne pli noton." -processing: "Traktado..." +processing: "Prilaborado..." noCustomEmojis: "Neniu emoĵio" -federating: "Kunfederado" -blocked: "Blokata" +federating: "Nun kunfederanta" +blocked: "Blokita" +suspended: "Suspendita" all: "Ĉiuj" -subscribing: "Abonita" -publishing: "Dissendado" +subscribing: "Abonata" +publishing: "Al kiu dissendas" notResponding: "Alvokato ne disponeblas" -instanceFollowing: "Sekvatoj el la ekzemplo" -instanceFollowers: "Sekvantoj el la ekzemplo" -instanceUsers: "Uzantoj de la ekzemplo" +instanceFollowing: "Sekvatoj el la nodo" +instanceFollowers: "Sekvantoj el la nodo" +instanceUsers: "Uzantoj de ĉi tiu nodo" changePassword: "Ŝanĝi pasvorton" security: "Sekureco" currentPassword: "Aktuala pasvorto" newPassword: "Nova pasvorto" newPasswordRetype: "Reentajpu la novan pasvorton" attachFile: "Aldoni dosieron" -more: "Plu !" +more: "Plu!" featured: "Maksimumi" usernameOrUserId: "Uzantnomo aŭ identigilo de uzanto" noSuchUser: "Neniuj uzantoj trovitaj." @@ -195,8 +199,8 @@ startMessaging: "Komenci babiladon" nUsersRead: "Legita de {n} homoj" tos: "Kondiĉoj de uzado" start: "Komenciĝi" -home: "Hejmo" -remoteUserCaution: "Ĉi tiu Infomoj estas ne tute ekzakta pro distanca uzanto." +home: "Hejma" +remoteUserCaution: "Tiu infomoj estas ne tute ekzakta pro distanca uzanto." activity: "Aktiveco" images: "Bildoj" birthday: "Naskiĝdato" @@ -233,14 +237,14 @@ watch: "Observi" unwatch: "Malobservi" accept: "Permesi" normal: "Normala" -instanceName: "Nomo de la ekzemplo" +instanceName: "Nomo de la nodo" maintainerName: "Nomo de la administranto" maintainerEmail: "Retpoŝto de la administranto" tosUrl: "URL de kondiĉoj de uzado" thisYear: "Ĉi-jare" thisMonth: "Ĉi-monate" today: "Hodiaŭ" -dayX: "{day}-a" +dayX: "{day}a" monthX: "{month}" yearX: "La jaro {year}" pages: "Paĝoj" @@ -257,26 +261,32 @@ backgroundImageUrl: "URL de fona bildo" basicInfo: "Baza informo" pinnedUsers: "Alpinglita uzanto" pinnedPages: "Alpinglitaj paĝoj" -pinnedNotes: "Pinglita noto" +pinnedNotes: "Alpinglita noto" antennas: "Antenoj" manageAntennas: "Administri antenojn" name: "Nomo" +notifyAntenna: "Oni sciigos novajn notojn" withFileAntenna: "Nur kun aldonaĵo" withReplies: "Inkluzive respondoj" +connectedTo: "Sekva konto estas konektita" notesAndReplies: "Kun respondoj" withFiles: "Kun aldonaĵo" silence: "Mutigi" silenceConfirm: "Ĉu vi certas ke vi volas mutigi la uzanton?" unsilence: "Malmutigi" unsilenceConfirm: "Ĉu vi certas ke vi volas malmutigi la uzanton?" -recentlyUpdatedUsers: "Uzantoj kiu lastatempe faris noton" -recentlyRegisteredUsers: "Nove aniĝintaj uzantoj" +popularUsers: "Popularaj uzantoj" +recentlyUpdatedUsers: "Uzantoj kiuj lastatempe sendis noton" +recentlyRegisteredUsers: "Novaliĝintaj uzantoj" +exploreUsersCount: "Tiuj estas {count} uzantoj" +exploreFediverse: "Esplori la Fediverson" popularTags: "Popularaj kradvortoj" userList: "Listoj" about: "Informoj" aboutMisskey: "Pri Misskey" administrator: "Administranto" -moderator: "Moderigisto" +moderator: "Kontrolisto" +nUsersMentioned: "{n} uzanto(j) menciis" securityKey: "Sekureca ŝlosilo" securityKeyName: "Nomo de la ŝlosilo" lastUsed: "Plej malnove uzita" @@ -294,14 +304,14 @@ groups: "Grupoj" createGroup: "Krei grupon" groupName: "Grupa nomo" members: "Membroj" -messagingWithUser: "Mesaĝado kun uzanto" -messagingWithGroup: "Mesaĝado kun grupo" +messagingWithUser: "Babili private" +messagingWithGroup: "Babili grupe" title: "Titolo" text: "Teksto" enable: "Ebligi" next: "Sekve" noteOf: "Noto de {user}" -noMessagesYet: "Neniu mesaĝo" +noMessagesYet: "Ankoraŭ neniu mesaĝo" newMessageExists: "Vi ricevis novan mesaĝon." onlyOneFileCanBeAttached: "Vi povas aldoni nur unu dosieron po unu mesaĝo." invitationCode: "Kodo de invito" @@ -331,19 +341,26 @@ objectStorageRegion: "Regiono" objectStorageUseSSL: "Oni uzas SSL" serverLogs: "Servila protokolo" deleteAll: "Forviŝi ĉiujn" +newNoteRecived: "Jen estas novaj notoj" sounds: "Sonoj" listen: "Aŭdi" none: "Neniu" showInPage: "Vidi en paĝo" deleteAllFiles: "Forviŝi ĉiujn dosierojn" deleteAllFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn viajn dosierojn?" -userSilenced: "Tiu uzanto estas mutigata." +userSuspended: "Ĉi tiu uzanto estas flostigita." +userSilenced: "Ĉi tiu uzanto estas mutigita." menu: "Menuo" deletedNote: "Forviŝita noto" invisibleNote: "Malpublika noto" +visibility: "Videbleco" poll: "Balotujo" useCw: "Kaŝi enhavo" +enablePlayer: "Vidi videon" +disablePlayer: "Fermi videon" themeEditor: "Redaktilo de koloraroj" +description: "Priskribe" +describeFile: "Priskribi la bildon" author: "Aŭtoro" manage: "Administro" plugins: "Kromaĵoj" @@ -358,8 +375,9 @@ smtpConfig: "Agordoj de la servilo SMTP" smtpPort: "Pordo" smtpUser: "Uzantnomo" smtpPass: "Pasvorto" -wordMute: "Silentigo de vortoj" +wordMute: "Silentigi specifajn vortojn" userSaysSomething: "{name} parolis ion" +makeActive: "Aktivigi" display: "Vidi" copy: "Kopii" database: "Datumbazo" @@ -396,7 +414,7 @@ makeExplorable: "Videbligi konton sur la paĝo \"Esplori\"" duplicate: "Duobligi" left: "Maldekstra" center: "Centra" -showTitlebar: "Montri titola stango" +showTitlebar: "Videbligi titolan stangon" clearCache: "Malplenigi staplon" onlineUsersCount: "{n} uzanto(j) estas surlinea" nUsers: "{n} uzanto(j)" @@ -421,13 +439,15 @@ publish: "Publikigi" inChannelSearch: "Serĉi en kanalo" useReactionPickerForContextMenu: "Oni malfermas reago-elektilon per dekstro-kliki" typingUsers: "{users} estas entajpanta(j)..." +addDescription: "Priskribi" info: "Informoj" +userInfo: "Informoj de uzanto" unknown: "Nekonata" online: "Surkonektita" offline: "Forkonektita" -instanceBlocking: "Blokado de ekzemplo" +instanceBlocking: "Blokado de nodoj" selectAccount: "Elekti konton" -user: "Uzanto" +user: "Uzantoj" administration: "Administro" accounts: "Kontoj" high: "Alta" @@ -470,7 +490,7 @@ _aboutMisskey: translation: "Traduki Misskey'on" patrons: "Mecenatoj" _mfm: - dummy: "Misskey vastigas la mondon de Fediverso" + dummy: "Misskey evoluigas la mondon de Fediverso" mention: "Mencioj" hashtag: "Kradvorto" url: "URL" @@ -504,11 +524,12 @@ _channel: _menuDisplay: hide: "Kaŝi" _wordMute: - muteWords: "Kaŝigitaj vortoj" - mutedNotes: "Silentigataj notoj" + muteWords: "Silentigitaj vortoj" + mutedNotes: "Silentigitaj notoj" _theme: manage: "Administri kolorarojn" code: "Kodo de koloraro" + description: "Priskribe" darken: "Malbrileco" lighten: "Brileco" keys: @@ -516,9 +537,10 @@ _theme: navBg: "Fono de flanka stango" hashtag: "Kradvorto" mention: "Mencioj" - renote: "Fari renoton" + renote: "Renoto" buttonBg: "Fono de butono" driveFolderBg: "Fono de dosierujo de la disko" + messageBg: "Fono de retbabilejo" _sfx: note: "Nova noto" noteMy: "Mia noto" @@ -530,7 +552,7 @@ _sfx: _ago: future: "Futuro" justNow: "Ĵus" - secondsAgo: "Antaŭ {n} sekundoj" + secondsAgo: "Antaŭ {n} sekundo(j)" minutesAgo: "Antaŭ {n} minutoj" hoursAgo: "Antaŭ {n} horo(j)" daysAgo: "Antaŭ {n} tagoj" @@ -548,11 +570,13 @@ _tutorial: step7_2: "Se vi volas scii pli pri Misskey, rigardu la fakon {help}." step7_3: "Do, bonvolu amuziĝi Misskey'on🚀" _permissions: - "read:blocks": "Vidi la liston de uzantoj kiun vi blokas" - "write:blocks": "Redakti vian liston de blokataj uzantoj" + "write:account": "Redakti Informojn de via konto" + "read:blocks": "Vidi vian liston de uzantoj blokitaj" + "write:blocks": "Redakti vian liston de uzantoj blokitaj" "read:drive": "Operacio por legi la informon de dosiero en via disko de Misskey" "write:drive": "Ĉia operacio por skribi, forviŝi, aŭ alimaniere ŝanĝi la informon de dosiero en via disko de Misskey" - "read:favorites": "Vidi vian liston de preferatoj" + "read:favorites": "Vidi vian liston de preferataĵoj" + "write:favorites": "Redakti vian liston de preferataĵoj." "read:following": "Vidi tiun kiun vi sekvas" "write:following": "Sekvi aŭ malsekvi alian uzanton" "read:messaging": "Vidi vian retbabiladon" @@ -585,6 +609,7 @@ _widgets: slideshow: "Bildoprezento" button: "Butono" onlineUsers: "Surkonektita uzanto" + aichan: "Ai" _cw: show: "Vidu pli" files: "{count} dosiero(j)" @@ -597,11 +622,12 @@ _poll: vote: "Baloti" closed: "Oni jam balotis ĝin" _visibility: - publicDescription: "Via noto aperiĝos sur la konfederacia templinio" - home: "Hejmo" - homeDescription: "Elsendi nur sur la hejmtemplinio" + publicDescription: "Via noto aperiĝos sur la templinio Malloka" + home: "Hejma" + homeDescription: "Elsendi nur sur la templinio Hejmo" followers: "Sekvantoj" followersDescription: "Nur al sekvantoj al mi" + specified: "Rekta" localOnly: "Nur loka" localOnlyDescription: "Ne montri al transaj uzantoj" _postForm: @@ -616,18 +642,21 @@ _profile: changeBanner: "Ŝanĝi standardon" _exportOrImport: allNotes: "Ĉiuj notoj" - followingList: "Sekvataj" + followingList: "Sekvataj uzantoj" muteList: "Silentigoj" - blockingList: "Blokado" + blockingList: "Blokitaj uzantoj" userLists: "Listoj" _charts: - federationInstancesTotal: "Tuta numero de kunfederantaj ekzemploj" + federationInstancesTotal: "Tuta numero de nodoj kunfederantaj" + usersTotal: "Tuta numero de uzantoj" + activeUsers: "Numero de aktivaj uzantoj" + notesTotal: "Tuta numero de notoj" filesTotal: "Tuta numero de dosieroj" _timelines: - home: "HEJMO" - local: "LOKA" - social: "SOCIALA" - global: "MALLOKA" + home: "Hejma" + local: "Loka" + social: "Sociala" + global: "Malloka" _rooms: translate: "Movi" chooseImage: "Elekti bildon" @@ -641,15 +670,21 @@ _pages: viewPage: "Vidi via paĝojn" my: "Miaj paĝoj" featured: "Ravaĵoj" + contents: "Enhavo" content: "Blokado de paĝo" url: "URL de paĝo" alignCenter: "Centrigi" chooseBlock: "Aldoni blokon" + contentBlocks: "Enhavo" blocks: + text: "Teksto" + textarea: "Areo de teksto" image: "Bildo" button: "Butono" _post: canvasId: "Kanvasa identigilo" + textInput: "Enigo el teksto" + textareaInput: "Enigo el teksto en multaj linioj" _numberInput: text: "Titolo" _canvas: @@ -665,8 +700,20 @@ _pages: event: "Nomo de la evento" script: categories: + text: "Manipulo de teksto" list: "Listoj" blocks: + text: "Teksto" + multiLineText: "Teksto (multaj linioj)" + textList: "List de teksto" + _strLen: + arg1: "Teksto" + _strPick: + arg1: "Teksto" + _strReplace: + arg1: "Teksto" + _strReverse: + arg1: "Teksto" _join: arg1: "Listoj" _randomPick: @@ -675,18 +722,24 @@ _pages: arg1: "Listoj" _seedRandomPick: arg2: "Listoj" + _DRPWPM: + arg1: "List de teksto" pick: "Elekti de la listo" _pick: arg1: "Listoj" _listLen: arg1: "Listoj" + _stringToNumber: + arg1: "Teksto" _splitStrByLine: arg1: "Teksto" types: + string: "Teksto" array: "Listoj" stringArray: "List de teksto" _notification: fileUploaded: "La dosiero sukcese alŝutiĝis." + youRenoted: "Renoto farita de {name}" youGotPoll: "{name} balotis" youGotMessagingMessageFromUser: "{name} sentis mesaĝon al vi." youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}" @@ -709,3 +762,4 @@ _deck: antenna: "Antenoj" list: "Listoj" mentions: "Al vi" + direct: "Notoj rektaj" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 9b77a750e4..7bb4f69769 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -429,7 +429,7 @@ invitationCode: "Code d’invitation" checking: "Vérification en cours..." available: "Disponible" unavailable: "Non disponible" -usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres, des chiffres et des _" +usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres (minuscules et/ou majuscules), des chiffres et des _" tooShort: "Trop court" tooLong: "Trop long" weakPassword: "Mot de passe faible" @@ -776,6 +776,16 @@ misskeyUpdated: "Misskey a été mis à jour !" whatIsNew: "Voir les derniers changements" translate: "Traduire" translatedFrom: "Traduit depuis {x}" +accountDeletionInProgress: "La suppression de votre compte est en cours" +usernameInfo: "C'est un nom qui identifie votre compte sur l'instance de manière unique. Vous pouvez utiliser des lettres de l'alphabet (minuscules et majuscules), des chiffres (de 0 à 9), ou bien le tiret « _ ». Vous ne pourrez pas modifier votre nom d'utilisateur·rice par la suite." +keepCw: "Garder le CW" +_accountDelete: + accountDelete: "Supprimer le compte" + mayTakeTime: "La suppression de compte nécessitant beaucoup de ressources, l'exécution du processus peut prendre du temps, en fonction de la quantité de contenus que vous avez créés et du nombre de fichiers que vous avez téléversés." + sendEmail: "Une fois la suppression de votre compte effectuée, un courriel sera envoyé à l'adresse que vous aviez enregistrée." + requestAccountDelete: "Demander la suppression de votre compte" + started: "La procédure de suppression a commencé." + inProgress: "Suppression en cours" _docs: continueReading: "Lire plus" features: "Fonctionnalités" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 236bd01ac3..06191089c3 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -775,6 +775,18 @@ useBlurEffect: "Gunakan efek blur pada antarmuka" learnMore: "Pelajari lebih lanjut" misskeyUpdated: "Misskey telah dimutakhirkan!" whatIsNew: "Lihat perubahan pemutakhiran" +translate: "Terjemahkan" +translatedFrom: "Terjemahkan dari {x}" +accountDeletionInProgress: "Penghapusan akun sedang dalam proses" +usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada server ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya." +keepCw: "Biarkan Peringatan Konten" +_accountDelete: + accountDelete: "Hapus akun" + mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah." + sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat surel yang terdaftarkan pada akun ini." + requestAccountDelete: "Minta penghapusan akun" + started: "Penghapusan telah dimulai" + inProgress: "Penghapusan sedang dalam proses" _docs: continueReading: "Baca lebih lanjut" features: "Fitur" @@ -1148,6 +1160,7 @@ _widgets: jobQueue: "Antrian kerja" serverMetric: "Statistik server" aiscript: "Konsol AiScript" + aichan: "Ai" _cw: hide: "Sembunyikan" show: "Lihat konten" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 0c78ea1492..e22f50668f 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -779,6 +779,12 @@ translate: "翻訳" translatedFrom: "{x}から翻訳" accountDeletionInProgress: "アカウントの削除が進行中です" usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。" +aiChanMode: "藍モード" +keepCw: "CWを維持する" +pubSub: "Pub/Subのアカウント" +lastCommunication: "直近の通信" +resolved: "解決済み" +unresolved: "未解決" _accountDelete: accountDelete: "アカウントの削除" @@ -1188,6 +1194,7 @@ _widgets: jobQueue: "ジョブキュー" serverMetric: "サーバーメトリクス" aiscript: "AiScriptコンソール" + aichan: "藍" _cw: hide: "隠す" diff --git a/locales/kab-KAB.yml b/locales/kab-KAB.yml index 199e4cc135..364a935310 100644 --- a/locales/kab-KAB.yml +++ b/locales/kab-KAB.yml @@ -36,6 +36,7 @@ selectList: "Fren tabdart" youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart" security: "Taɣellist" remove: "Kkes" +connectService: "Qqen" userList: "Tibdarin" securityKey: "Tasarutt n tɣellist" securityKeyName: "Isem n tsarutt" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index a6e759cc4b..b886d4c605 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1148,6 +1148,7 @@ _widgets: jobQueue: "Очередь заданий" serverMetric: "Показатели сервера" aiscript: "Консоль AiScript" + aichan: "Ай" _cw: hide: "Спрятать" show: "Показать еще" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 7dad6232be..dcc9226b7a 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -779,8 +779,16 @@ translate: "翻译" translatedFrom: "从 {x} 翻译" accountDeletionInProgress: "正在删除账户" usernameInfo: "在服务器上唯一标识您的帐户的名称。您可以使用字母 (a ~ z, A ~ Z)、数字 (0 ~ 9) 和下划线 (_)。用户名以后不能更改。" +keepCw: "保留CW" +pubSub: "Pub/Sub账户" +resolved: "已解决" +unresolved: "未解决" _accountDelete: accountDelete: "删除帐户" + mayTakeTime: "删除账号是一个性能损耗较大的处理,如果账号持有的内容数量和上传的文件数量较多的话,完成需要花费一段时间。" + sendEmail: "账户删除完成后,将向注册的电子邮件地址发送通知。" + requestAccountDelete: "请求删除账户" + started: "账户删除过程已开始。" inProgress: "正在删除" _docs: continueReading: "继续阅读" @@ -1155,6 +1163,7 @@ _widgets: jobQueue: "作业队列" serverMetric: "服务器监控" aiscript: "AiScript控制台" + aichan: "蓝" _cw: hide: "隐藏" show: "查看更多" diff --git a/misskey-assets b/misskey-assets new file mode 160000 index 0000000000..0179793ec8 --- /dev/null +++ b/misskey-assets @@ -0,0 +1 @@ +Subproject commit 0179793ec891856d6f37a3be16ba4c22f67a81b5 diff --git a/package.json b/package.json index 1f9baa3ca2..ebb4d90897 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "12.89.2", + "version": "12.90.0", "codename": "indigo", "repository": { "type": "git", @@ -148,6 +148,7 @@ "http-signature": "1.3.5", "idb-keyval": "5.1.3", "insert-text-at-cursor": "0.3.0", + "ip-cidr": "3.0.4", "is-svg": "4.3.1", "js-yaml": "4.1.0", "jsdom": "16.7.0", @@ -184,6 +185,7 @@ "postcss": "8.3.6", "postcss-loader": "6.1.1", "prismjs": "1.24.1", + "private-ip": "2.2.1", "probe-image-size": "7.2.1", "promise-limit": "2.7.0", "pug": "3.0.2", diff --git a/src/client/account.ts b/src/client/account.ts index ee1d845493..e469bae5a2 100644 --- a/src/client/account.ts +++ b/src/client/account.ts @@ -1,4 +1,4 @@ -import { get, set } from '@client/scripts/idb-proxy'; +import { del, get, set } from '@client/scripts/idb-proxy'; import { reactive } from 'vue'; import { apiUrl } from '@client/config'; import { waiting } from '@client/os'; @@ -26,21 +26,33 @@ export async function signout() { //#region Remove account const accounts = await getAccounts(); accounts.splice(accounts.findIndex(x => x.id === $i.id), 1); - set('accounts', accounts); + + if (accounts.length > 0) await set('accounts', accounts); + else await del('accounts'); //#endregion - //#region Remove push notification registration + //#region Remove service worker registration try { - const registration = await navigator.serviceWorker.ready; - const push = await registration.pushManager.getSubscription(); - if (!push) return; - await fetch(`${apiUrl}/sw/unregister`, { - method: 'POST', - body: JSON.stringify({ - i: $i.token, - endpoint: push.endpoint, - }), - }); + if (navigator.serviceWorker.controller) { + const registration = await navigator.serviceWorker.ready; + const push = await registration.pushManager.getSubscription(); + if (push) { + await fetch(`${apiUrl}/sw/unregister`, { + method: 'POST', + body: JSON.stringify({ + i: $i.token, + endpoint: push.endpoint, + }), + }); + } + } + + if (accounts.length === 0) { + await navigator.serviceWorker.getRegistrations() + .then(registrations => { + return Promise.all(registrations.map(registration => registration.unregister())); + }); + } } catch (e) {} //#endregion diff --git a/src/client/components/signin.vue b/src/client/components/signin.vue index 0094038fb6..c051288d0a 100755 --- a/src/client/components/signin.vue +++ b/src/client/components/signin.vue @@ -111,7 +111,9 @@ export default defineComponent({ onLogin(res) { if (this.autoSet) { - login(res.i); + return login(res.i); + } else { + return; } }, @@ -144,7 +146,7 @@ export default defineComponent({ }); }).then(res => { this.$emit('login', res); - this.onLogin(res); + return this.onLogin(res); }).catch(err => { if (err === null) return; os.dialog({ diff --git a/src/client/components/signup.vue b/src/client/components/signup.vue index d584b97209..d332274111 100644 --- a/src/client/components/signup.vue +++ b/src/client/components/signup.vue @@ -178,14 +178,14 @@ export default defineComponent({ 'hcaptcha-response': this.hCaptchaResponse, 'g-recaptcha-response': this.reCaptchaResponse, }).then(() => { - os.api('signin', { + return os.api('signin', { username: this.username, password: this.password }).then(res => { this.$emit('signup', res); if (this.autoSet) { - login(res.i); + return login(res.i); } }); }).catch(() => { diff --git a/src/client/pages/federation.vue b/src/client/pages/federation.vue index f4ab9d0ec3..2afe70eea6 100644 --- a/src/client/pages/federation.vue +++ b/src/client/pages/federation.vue @@ -28,14 +28,14 @@ - - - - + + + + - - + + diff --git a/src/client/pages/settings/general.vue b/src/client/pages/settings/general.vue index cfa8107d28..f8e8e6b24b 100644 --- a/src/client/pages/settings/general.vue +++ b/src/client/pages/settings/general.vue @@ -45,6 +45,10 @@ + + {{ $ts.aiChanMode }} + + @@ -149,6 +153,7 @@ export default defineComponent({ enableInfiniteScroll: defaultStore.makeGetterSetter('enableInfiniteScroll'), useReactionPickerForContextMenu: defaultStore.makeGetterSetter('useReactionPickerForContextMenu'), squareAvatars: defaultStore.makeGetterSetter('squareAvatars'), + aiChanMode: defaultStore.makeGetterSetter('aiChanMode'), }, watch: { @@ -184,6 +189,10 @@ export default defineComponent({ this.reloadAsk(); }, + aiChanMode() { + this.reloadAsk(); + }, + showGapBetweenNotesInTimeline() { this.reloadAsk(); }, diff --git a/src/client/pages/settings/privacy.vue b/src/client/pages/settings/privacy.vue index 4095e744c2..46d8c17ca2 100644 --- a/src/client/pages/settings/privacy.vue +++ b/src/client/pages/settings/privacy.vue @@ -28,6 +28,7 @@ {{ $ts._visibility.localOnly }} + {{ $ts.keepCw }} @@ -69,6 +70,7 @@ export default defineComponent({ defaultNoteVisibility: defaultStore.makeGetterSetter('defaultNoteVisibility'), defaultNoteLocalOnly: defaultStore.makeGetterSetter('defaultNoteLocalOnly'), rememberNoteVisibility: defaultStore.makeGetterSetter('rememberNoteVisibility'), + keepCw: defaultStore.makeGetterSetter('keepCw'), }, created() { diff --git a/src/client/pages/welcome.setup.vue b/src/client/pages/welcome.setup.vue index de844ece1c..d0091bef67 100644 --- a/src/client/pages/welcome.setup.vue +++ b/src/client/pages/welcome.setup.vue @@ -53,7 +53,7 @@ export default defineComponent({ username: this.username, password: this.password, }).then(res => { - login(res.i); + return login(res.token); }).catch(() => { this.submitting = false; diff --git a/src/client/store.ts b/src/client/store.ts index 4c4a7d93e9..e4b762873d 100644 --- a/src/client/store.ts +++ b/src/client/store.ts @@ -210,6 +210,10 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: '' }, + aiChanMode: { + where: 'device', + default: false + }, })); // TODO: 他のタブと永続化されたstateを同期 diff --git a/src/client/style.scss b/src/client/style.scss index 269cf88939..6ab5e796bd 100644 --- a/src/client/style.scss +++ b/src/client/style.scss @@ -159,7 +159,6 @@ hr { display: inline-block; padding: 0; margin: 0; // for Safari - width: max-content; background: none; border: none; cursor: pointer; diff --git a/src/client/tsconfig.json b/src/client/tsconfig.json index ac7ef7ddfc..7a26047ddf 100644 --- a/src/client/tsconfig.json +++ b/src/client/tsconfig.json @@ -21,7 +21,8 @@ "baseUrl": ".", "paths": { "@/*": ["../*"], - "@client/*": ["./*"] + "@client/*": ["./*"], + "@lib/*": ["../../lib/*"], }, "typeRoots": [ "node_modules/@types", diff --git a/src/client/ui/default.vue b/src/client/ui/default.vue index 23b63114cc..eef693faef 100644 --- a/src/client/ui/default.vue +++ b/src/client/ui/default.vue @@ -54,12 +54,14 @@ + + @@ -458,5 +477,15 @@ export default defineComponent({ overflow: auto; background: var(--bg); } + + > .ivnzpscs { + position: fixed; + bottom: 0; + right: 0; + width: 300px; + height: 600px; + border: none; + pointer-events: none; + } } diff --git a/src/client/widgets/aichan.vue b/src/client/widgets/aichan.vue new file mode 100644 index 0000000000..06c49090a1 --- /dev/null +++ b/src/client/widgets/aichan.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/client/widgets/index.ts b/src/client/widgets/index.ts index 38cb85494a..51a82af080 100644 --- a/src/client/widgets/index.ts +++ b/src/client/widgets/index.ts @@ -19,6 +19,7 @@ export default function(app: App) { app.component('MkwJobQueue', defineAsyncComponent(() => import('./job-queue.vue'))); app.component('MkwButton', defineAsyncComponent(() => import('./button.vue'))); app.component('MkwAiscript', defineAsyncComponent(() => import('./aiscript.vue'))); + app.component('MkwAichan', defineAsyncComponent(() => import('./aichan.vue'))); } export const widgets = [ @@ -40,4 +41,5 @@ export const widgets = [ 'jobQueue', 'button', 'aiscript', + 'aichan', ]; diff --git a/src/config/types.ts b/src/config/types.ts index 8084be1864..e3ca6c1ab6 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -37,6 +37,10 @@ export type Source = { proxySmtp?: string; proxyBypassHosts?: string[]; + allowedPrivateNetworks?: string[]; + + maxFileSize?: number; + accesslog?: string; clusterLimit?: number; diff --git a/src/docs/ar-SA/general/apps.md b/src/docs/ar-SA/general/apps.md index 1f4c85fe8f..81f99f2818 100644 --- a/src/docs/ar-SA/general/apps.md +++ b/src/docs/ar-SA/general/apps.md @@ -1,6 +1,6 @@ # サードパーティアプリのリスト -## クライアント +## العملاء todo -## 連携サービス +## الخدمات المترابطة todo diff --git a/src/docs/eo-UY/advanced/api.md b/src/docs/eo-UY/advanced/api.md index 6425f67f3c..ec21cc6194 100644 --- a/src/docs/eo-UY/advanced/api.md +++ b/src/docs/eo-UY/advanced/api.md @@ -47,7 +47,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。 レスポンスに含まれるプロパティ: * `token` ... ユーザーのアクセストークン -* `user` ... ユーザーの情報 +* `user` ... Informoj de uzanto [「APIの使い方」へ進む](#APIの使い方) diff --git a/src/docs/eo-UY/advanced/develop-bot.md b/src/docs/eo-UY/advanced/develop-bot.md index 7f825e9bc4..0ea99c1bbc 100644 --- a/src/docs/eo-UY/advanced/develop-bot.md +++ b/src/docs/eo-UY/advanced/develop-bot.md @@ -1,4 +1,4 @@ -# Botの作成 +# Evoluigi robotan uzanton [Misskey API](./api)を利用してBotの開発が可能です。 また、いくつかのBot実装が公開されているため、ぜひ参考にしてください。 - [syuilo/ai](https://github.com/syuilo/ai) ... Node.js上で動く、TypeScript製Bot実装 diff --git a/src/docs/eo-UY/features/favorite.md b/src/docs/eo-UY/features/favorite.md index d87cb83e46..05c03fa2db 100644 --- a/src/docs/eo-UY/features/favorite.md +++ b/src/docs/eo-UY/features/favorite.md @@ -1,4 +1,4 @@ -# Preferi +# Preferataĵoj [ノート](./node)をお気に入りとして登録できる機能です。 お気に入り登録したノートは、[お気に入りページ](./my/favorites)で一覧することができます。 お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。 ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。 diff --git a/src/docs/eo-UY/features/keyboard-shortcut.md b/src/docs/eo-UY/features/keyboard-shortcut.md index 6741bffca2..9a337c4fa5 100644 --- a/src/docs/eo-UY/features/keyboard-shortcut.md +++ b/src/docs/eo-UY/features/keyboard-shortcut.md @@ -28,7 +28,7 @@ Ctrl + Q即刻Renoteする(フォームを開かずに)- E, A, +リアクションフォームを開くEmote, reAction 0~9数字に対応したリアクションをする(対応については後述)- - F, Bお気に入りに登録Favorite, Bookmark + F, BAldoni vian liston de preferaĵojFavorite, Bookmark Del, Ctrl + D投稿を削除Delete M, O投稿に対するメニューを開くMore, Other SCWで隠された部分を表示 or 隠すShow, See @@ -42,7 +42,7 @@ ショートカット効果由来 - EnterRenoteする- + EnterFari renoton- Qフォームを展開するQuote Escフォームを閉じる- diff --git a/src/docs/eo-UY/features/mfm.md b/src/docs/eo-UY/features/mfm.md index 5be2df4f30..cca995657d 100644 --- a/src/docs/eo-UY/features/mfm.md +++ b/src/docs/eo-UY/features/mfm.md @@ -4,7 +4,7 @@ MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用 ## MFMが使用可能な場所の例 - ノート本文 - CW注釈 -- ユーザーの名前 +- Nomo de uzanto - ユーザーの自己紹介 ## 開発者向け情報 diff --git a/src/docs/eo-UY/features/mute-and-block.md b/src/docs/eo-UY/features/mute-and-block.md index d38faf0d7d..9d01f2c2fa 100644 --- a/src/docs/eo-UY/features/mute-and-block.md +++ b/src/docs/eo-UY/features/mute-and-block.md @@ -1,4 +1,4 @@ -# Silentigatoj kaj blokatoj +# Silentigitoj kaj blokitoj 好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
ℹ️ ミュートとブロックは併用できます。
diff --git a/src/docs/eo-UY/features/note.md b/src/docs/eo-UY/features/note.md index c507095fa3..66c03c777a 100644 --- a/src/docs/eo-UY/features/note.md +++ b/src/docs/eo-UY/features/note.md @@ -21,20 +21,20 @@ Renoteを削除するには、Renoteの時刻表示の隣にある「...」を ## CW Contents Warningの略で、ノートの内容を、閲覧者の操作なしには表示しないようにできる機能です。主に長大な内容を隠すためや、ネタバレ防止などに使うことができます。 設定するには、フォームの「内容を隠す」ボタン(目のアイコン)を押します。すると新しい入力エリアが表れるので、そこに内容の要約を記入します。 -## 公開範囲 +## Videbleco ノートごとに、そのノートが公開される範囲を設定することができます。フォームの「ノート」ボタンの左にあるアイコンを押すと公開範囲を以下から選択できます。 -### パブリック +### Publika 全ての人に対してノートが公開されるほか、サーバーの全てのタイムライン(ホームタイムライン、ローカルタイムライン、ソーシャルタイムライン、グローバルタイムライン)にノートが流れます。
⚠️ アカウントがサイレンス状態の時は、この公開範囲は使用できません。
-### Hejmo +### Hejma 全ての人に対してノートが公開されますが、フォロワー以外のローカルタイムライン、ソーシャルタイムライン、グローバルタイムラインにはノートは流れません。 ### Sekvantoj 自分のフォロワーに対してのみノートを公開します。フォロワーの全てのタイムラインに流れます。 -### ダイレクト +### Rekta 指定したユーザーに対してのみノートを公開します。指定したユーザーの全てのタイムラインに流れます。 ### 「ローカルのみ」オプション @@ -42,12 +42,12 @@ Contents Warningの略で、ノートの内容を、閲覧者の操作なしに ### 公開範囲の比較 - +
パブリックHejmoSekvantojダイレクト
PublikaHejmaSekvantojRekta
フォロワーのLTL/STL/GTL
非フォロワーのLTL/STL/GTL
-## Alpingli sur la profilo +## Alpingli al la profilo ノートをピン留めすると、ユーザーページに常にそのノートを表示しておくことができます。 ノートのメニューを開き、「ピン留め」を選択してピン留めできます。 複数のノートをピン留めできます。 ## Observi diff --git a/src/docs/eo-UY/features/timeline.md b/src/docs/eo-UY/features/timeline.md index 51b8550bef..7c0e8dfd7f 100644 --- a/src/docs/eo-UY/features/timeline.md +++ b/src/docs/eo-UY/features/timeline.md @@ -1,7 +1,7 @@ # Templinio タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。 -## Hejmo +## Hejma 自分のフォローしているユーザーの投稿が流れます。HTLと略されます。 ## Loka @@ -16,16 +16,16 @@ ## 比較 | ソース | | | Templinio | | | | ------------ | --------- | ----- | --------- | ------- | ------- | -| Uzanto | 公開範囲 | Hejmo | Loka | Sociala | Malloka | +| Uzantoj | Videbleco | Hejma | Loka | Sociala | Malloka | | ローカル (フォロー) | Publikigi | ✔ | ✔ | ✔ | ✔ | -| | Hejmo | ✔ | | ✔ | | +| | Hejma | ✔ | | ✔ | | | | Sekvantoj | ✔ | ✔ | ✔ | ✔ | | リモート (フォロー) | Publikigi | ✔ | | ✔ | ✔ | -| | Hejmo | ✔ | | ✔ | | +| | Hejma | ✔ | | ✔ | | | | Sekvantoj | ✔ | | ✔ | ✔ | | ローカル (未フォロー) | Publikigi | | ✔ | ✔ | ✔ | -| | Hejmo | | | | | +| | Hejma | | | | | | | Sekvantoj | | | | | | リモート (未フォロー) | Publikigi | | | | ✔ | -| | Hejmo | | | | | +| | Hejma | | | | | | | Sekvantoj | | | | | diff --git a/src/docs/eo-UY/features/word-mute.md b/src/docs/eo-UY/features/word-mute.md index 81a7d6fe57..ed1da91678 100644 --- a/src/docs/eo-UY/features/word-mute.md +++ b/src/docs/eo-UY/features/word-mute.md @@ -1,4 +1,4 @@ -# Silentigo de vortoj +# Silentigi specifajn vortojn ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。 ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。 diff --git a/src/docs/eo-UY/general/glossary.md b/src/docs/eo-UY/general/glossary.md index 9050c592b9..b590714097 100644 --- a/src/docs/eo-UY/general/glossary.md +++ b/src/docs/eo-UY/general/glossary.md @@ -16,7 +16,7 @@ Misskeyに関する用語集です。 ## CW (読み: こんてんつわーにんぐ) Contents Warningの略。ノートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 -## Fediverse +## Fediverso (読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 ## MTL @@ -46,14 +46,14 @@ Ai estas oficiala maskoto de Misskey. ## Aktivaj Uzantoj: インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 -## Ekzemplo +## Nodo todo ## Ŝaltpodio サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 ## コントロールパネル -todo +インスタンスの設定画面のこと。 ## Servilo todo @@ -73,16 +73,16 @@ Misskeyにアップロードしたファイルを管理する機能。詳細は[ ## Notoj Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) -## Transa aŭ fora +## Miskiisto Misskeyを使う人のこと。 -## Moderigisto +## Kontrolisto スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 -## Transa +## Transa/fora 他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。 -## Kunfederaĵo +## Kunfederado サーバー上で作成された情報が他のサーバーに伝わること。 ## Loka diff --git a/src/docs/eo-UY/general/links.md b/src/docs/eo-UY/general/links.md index 812f374398..8bc76cc433 100644 --- a/src/docs/eo-UY/general/links.md +++ b/src/docs/eo-UY/general/links.md @@ -1,7 +1,7 @@ # リンク集 ## Webサイト -- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー +- [Oficiala Discord](https://discord.gg/Wp8gVStHW3) - Servilo Discord'a oficiala de Misskey - [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム ## Kontoj diff --git a/src/docs/eo-UY/general/misskey.md b/src/docs/eo-UY/general/misskey.md index e819ba24b8..cafd053335 100644 --- a/src/docs/eo-UY/general/misskey.md +++ b/src/docs/eo-UY/general/misskey.md @@ -12,7 +12,7 @@ Misskey estas malfermitkoda distribuita mikroblogo. Ĝia trajtoj estas diversaj 分散(distributed)型とは、非中央集権(decentralized)とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に通信(連合、federation)することでコンテンツ共有ネットワーク(Fediverse)を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。 -## Ĉiam malfermitkode +## Ĉiam malfermitkoda Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うとソフトウェアのソースコード(プログラム)が公開されていることです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
ℹ️ 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリはGitHub上でホスティングされています。
@@ -26,7 +26,7 @@ Misskeyを気に入っていただけたら、ぜひプロジェクトを支援 ### 議論に参加する 新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。 -### テキストを翻訳する +### Traduki tekston Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey) ### 感想を投稿する diff --git a/src/docs/fr-FR/advanced/api.md b/src/docs/fr-FR/advanced/api.md index 76019b6145..bffde881f4 100644 --- a/src/docs/fr-FR/advanced/api.md +++ b/src/docs/fr-FR/advanced/api.md @@ -1,4 +1,4 @@ -# Misskey API +# API de Misskey MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。 @@ -18,13 +18,13 @@ APIを使い始めるには、まずアクセストークンを取得する必 ### アプリケーション利用者にアクセストークンの発行をリクエストする アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。 -#### Step 1 +#### Étape 1 UUIDを生成する。以後これをセッションIDと呼びます。 > このセッションIDは毎回生成し、使いまわさないようにしてください。 -#### Step 2 +#### Étape 2 `{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。 > 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f` @@ -42,7 +42,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。 * 要求する権限を`,`で区切って列挙します * どのような権限があるかは[APIリファレンス](/api-doc)で確認できます -#### Step 3 +#### Étape 3 ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。 レスポンスに含まれるプロパティ: diff --git a/src/docs/fr-FR/general/troubleshooting.md b/src/docs/fr-FR/general/troubleshooting.md index 7cdaebe8e3..f6a6771df2 100644 --- a/src/docs/fr-FR/general/troubleshooting.md +++ b/src/docs/fr-FR/general/troubleshooting.md @@ -16,11 +16,11 @@ Bien que cela arrive rarement, il se peut que le cache soit à l'origine du prob Si le problème persiste malgré tout, il est très probable qu'il s'agisse d'une panne côté serveur ; nous vous invitons donc à contacter l'administrateur·rice de votre instance. ## Le client est lent -以下を試してみてください: +Essayez les solutions proposées ci-dessous : -- クライアント設定で「UIのアニメーションを減らす」を有効にする -- クライアント設定で「モーダルにぼかし効果を使用」を無効にする -- お使いのブラウザの設定でハードウェアアクセラレーションを有効にする +- activer l'option « Réduire les animations dans l'interface » dans les paramètres du client +- désactiver l'option « Utiliser un effet de flou pour les modals » dans les paramètres du client +- activer l'accélération matérielle dans les paramètres de votre navigateur - お使いのデバイスのスペックを上げる ## UIの一部の表示がおかしい(背景が透明になっている等) diff --git a/src/docs/id-ID/admin/disable-timelines.md b/src/docs/id-ID/admin/disable-timelines.md index b081e35ab0..54d350ec4a 100644 --- a/src/docs/id-ID/admin/disable-timelines.md +++ b/src/docs/id-ID/admin/disable-timelines.md @@ -1,8 +1,8 @@ -# LTL/STL/GTLの無効化 -Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、インスタンスコントロールパネルで設定します。 +# Menonaktifkan LTL/STL/GTL +Misskey memungkinkan untuk menonaktifkan LTL/STL/GTL secara satu persatu.Kamu dapat mengaktifkan atau menonaktifkan linimasa individual tersebut melalui panel kontrol instansi. LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。 -
⚠️ 無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。
+
Menonaktifkan linimasa dapat menyebabkan kebingungan dan memungkinkan untuk pengguna mengalami drop-in jangka pendek.Oleh karena itu, dimohon berhati-hati dengan efek dari menonaktifkan linimasa, dan jelaskan alasannya mengapa menonaktifkan tersebut dari awal, agar pengguna kamu dapat bersiap dengan mengikuti pengguna yang seringnya mereka berkomunikasi di LTL/STL.
-なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。 +Sebagai tambahan, Administrator / Moderator akan tetap dapat melihat linimasa ini meskipun telah dinonaktifkan. diff --git a/src/docs/id-ID/admin/faq.md b/src/docs/id-ID/admin/faq.md index 317b4e0655..747a4a24fa 100644 --- a/src/docs/id-ID/admin/faq.md +++ b/src/docs/id-ID/admin/faq.md @@ -1,5 +1,5 @@ -# よくある質問 -ここでは、サーバー管理者向けのよくある質問を掲載しています。 +# Pertanyaan Yang Sering Ditanyakan (FAQ) +Dokumen ini ditujukan kepada administrator server dan memberikan daftar jawaban untuk pertanyaan yang sering ditanyakan. -## デフォルトテーマを設定したい -現在、デフォルトテーマ設定機能は実装されていません。 +## "Aku ingin menyetel tema bawaan untuk instansi milikku" +Untuk saat ini belum ada fitur yang membolehkan kamu untuk menyetel tema default instansi milikmu. diff --git a/src/docs/id-ID/general/changelog.md b/src/docs/id-ID/general/changelog.md index 6766a63b20..3b00e6acb1 100644 --- a/src/docs/id-ID/general/changelog.md +++ b/src/docs/id-ID/general/changelog.md @@ -1,5 +1,5 @@ -# 更新履歴 -
ℹ️ このサーバーの更新履歴です。Misskeyの最新のリリースについては、GitHubをご確認ください。
+# Catatan Rilis +
ℹ️ Catatan rilis ini hanya berlaku pada versi terakhir dari server ini.Untuk membaca catatan rilis Misskey paling terbaru, mohon periksa ke GitHub.
diff --git a/src/docs/id-ID/general/faq.md b/src/docs/id-ID/general/faq.md index c272b2ad42..b82f0986f7 100644 --- a/src/docs/id-ID/general/faq.md +++ b/src/docs/id-ID/general/faq.md @@ -1,4 +1,4 @@ -# よくある質問 +# Pertanyaan Yang Sering Ditanyakan (FAQ) ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。 ## iOS/Androidのアプリはありますか? diff --git a/src/docs/id-ID/general/glossary.md b/src/docs/id-ID/general/glossary.md index 95945e8f00..b98b3b1114 100644 --- a/src/docs/id-ID/general/glossary.md +++ b/src/docs/id-ID/general/glossary.md @@ -1,35 +1,35 @@ -# 用語集 -Misskeyに関する用語集です。 +# Kosakata +Kosakata yang terkait dengan Misskey. ## ActivityPub -(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。 +Protokol yang digunakan untuk memungkinkan distribusi dari Misskey.Dengan mengikuti protokol ini, komunikasi dengan server lainnya yang juga mengikuti protokol ini menjadi mungkin, yang mana membentuk suatu semesta yang disebut sebagai Fediverse. ## AiScript -(読み: あいすくりぷと) Misskey上で使用できるプログラミング言語です。詳細は[こちら。](../advanced/aiscript) +Bahasa pemrograman yang tersedia untuk digunakan dalam Misskey.Untuk detilnya, [lihat disini.](../advanced/aiscript) ## API -(読み: えーぴーあい) Misskeyのサーバーが公開している、プログラムからMisskeyを扱うためのインターフェース。詳細は[こちら。](../advanced/api) +Antarmuka yang dapat digunakan untuk berinteraksi dengan Misskey melalui program, tersedia untuk setiap instansi individual.Untuk detilnya, [lihat disini.](../advanced/api) ## Bot -(読み: ぼっと) プログラムによって動作しているアカウント。 +Sebuah akun yang dikendalikan oleh program. ## CW -(読み: こんてんつわーにんぐ) Contents Warningの略。ノートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 +Singkatan dari "Content Warning".Sebuah fitur untuk menyembunyikan konten dari catatan kecuali diminta untuk diperlihatkan oleh pengguna.Utamanya digunakan untuk menyembunyikan konten catatan panjang atau untuk mencegah postingan spoiler secara publik. ## Fediverse -(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 +Sebuah jaringan server yang terdiri dari berbagai platform berbeda yang saling berkomunikasi, termasuk Misskey. ## GTL -グローバルタイムライン(Global TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +Singkatan dari "Global TimeLine" (Linimasa Global).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline). ## HTL -ホームタイムライン(Home TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +Singkatan dari "Home TimeLine" (Linimasa Beranda).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline) ## LTL -ローカルタイムライン(Local TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +Singkatan dari "Local TimeLine" (Linimasa Lokal).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline) ## MFM -(読み: えむえふえむ) Misskey Flavored Markdownの略で、Misskey上で使用できるマークアップ言語です。詳細は[こちら。](../features/mfm) +Singkatan dari "Misskey Flavored Markdown", sebuah bahasa markdown yang tersedia untuk digunakan pada Misskey.Untuk detilnya, [lihat disini.](../features/mfm) ## NSFW (読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。 @@ -38,21 +38,21 @@ Misskeyに関する用語集です。 (読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note) ## STL -ソーシャルタイムライン(Social TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +Singkatan dari "Social TimeLine" (Linimasa Sosial).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline) -## 藍 -(読み: あい) Misskeyの看板娘(公式キャラクター)です。 +## Ai +Ai adalah maskot resmi milik Misskey. -## アクティブユーザー -インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 +## Pengguna Aktif +Para pengguna di antara semua pengguna yang ada yang terus menggunakan akun mereka. ## Instansi todo ## Emoji kustom -サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 +Emoji yang disediakan oleh server kamu.Emoji yang spesifik tidak disediakan oleh server kamu tetapi tersedia secara bawaan adalah "Unicode Emoji". -## コントロールパネル +## Panel kontrol インスタンスの設定画面のこと。 ## Server @@ -73,8 +73,8 @@ Misskeyにアップロードしたファイルを管理する機能。詳細は[ ## Catatan Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) -## ミスキスト -Misskeyを使う人のこと。 +## Misskist +Pengguna dari Misskey. ## Moderator スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 diff --git a/src/docs/id-ID/general/misskey.md b/src/docs/id-ID/general/misskey.md index 18e74c63db..a843f2888f 100644 --- a/src/docs/id-ID/general/misskey.md +++ b/src/docs/id-ID/general/misskey.md @@ -1,87 +1,87 @@ # Tentang Misskey -Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。 +Misskey adalah platform sumber terbuka dan terdistribusi untuk mikroblogging. Pengembangan dimulai dari 2014 oleh syuilo di Jepang. Memiliki banyak fitur seperti Drive atau Reaksi dan juga kustomisasi UI yang tinggi. -## 歴史 +## Sejarah 開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。 -## 分散型とは何か? +## Apa yang dimaksud dengan "Terdistribusi"? 分散(distributed)型とは、非中央集権(decentralized)とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に通信(連合、federation)することでコンテンツ共有ネットワーク(Fediverse)を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。 -## 常にオープンソース -Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うとソフトウェアのソースコード(プログラム)が公開されていることです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。 +## Selalu sumber-terbuka +Misskey sudah selalu, dan akan selalu menjadi perangkat lunak sumber terbuka.オープンソースとは、簡単に言うとソフトウェアのソースコード(プログラム)が公開されていることです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
ℹ️ 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリはGitHub上でホスティングされています。
-## 開発に参加する、プロジェクトを支援する +## Ikut mengembangkan dan mendukung proyek Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。 -### 機能を追加したり、バグを修正する +### Menambahkan fitur atau memperbaiki bug ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。 貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。 -### 議論に参加する +### Berpartisipasi dalam diskusi 新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。 -### テキストを翻訳する +### Menerjemahkan teks Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey) -### 感想を投稿する +### Berbagi impresimu 不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。 -### ミスキストを増やす +### Menambahkan jumlah Misskist ミスキストとは、Misskeyを使用する人のことです。 知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。 -### 寄付をする +### Membuat donasi Misskeyはビジネスではなく、利用は無料であるため、収益は皆様からの寄付のみです。(インスタンスによっては広告収入を得ているような場合もありますが、それは運営者の収入であり直接開発者への収入にはなりません) 寄付をしていただければ、今後も開発を続けることが可能になり、プロジェクトへの貢献になります。 寄付は基本的には[Patreon](https://www.patreon.com/syuilo)で受け付けています。 一定額寄付していただけると、Misskeyの[情報ページ](/about-misskey)に名前を記載することができます。 また、サーバーの運営者も、基本的には収益を得ていません。サーバーの運営にはコストがかかるので、運営者の支援をすることもご検討ください。 開発には直接関係しませんが、サーバーがあってこそのプロジェクトなので、運営が維持されるというのは開発と同じくらい重要なことです。 -## クレジット +## Kredit Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。 -## よくある質問 -### プロジェクトは何を目指していますか? +## Pertanyaan Yang Sering Ditanyakan (FAQ) +### Apa yang ingin dicapai dari project ini? 強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。 -### 企業によって開発されていますか? +### Apakah Misskey dikembangkan oleh perusahaan? いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。 開発メンバーも基本的にはボランティアです。 また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。 -### 誰が運営していますか? +### Siapa yang mengelola Misskey? Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。 また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。 サーバーの運営者は、[このページ](/about)で確認することができます。 あなたがサーバーを作成すれば、あなたが運営者になります。 -### どのサーバーを選べばいいですか? +### Server mana yang seharusnya aku pilih? [サーバー一覧が公開されています。](https://join.misskey.page/ja-JP/instances) サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。 他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。 なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。 基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。 -### サーバーを建てるにはどうしたらいいですか? +### Bagaimana cara untuk membuat server milikku sendiri? Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。 -### どのような技術を使用していますか? +### Teknologi apa yang Misskey gunakan? Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。 -- サーバーサイド: Node.js -- データベース: PostgreSQL、Redis -- UIフレームワーク: Vue.js -- プログラミング言語: TypeScript +- Server: Node.js +- Database: PostgreSQL, Redis +- UI Framework: Vue.js +- Bahasa Pemrograman: TypeScript また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。 -### Mastodonのフォークですか? +### Apakah ini fork dari Mastodon? いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。 -### iOS/Androidのアプリはありますか? +### Apakah ada aplikasi untuk iOS / Android tersedia? 公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 -### Misskeyのロゴ、アイコンはどこで入手できますか? -(準備中) +### Dimana aku bisa mengunduh logo atau ikon Misskey? +(Sedang dipersiapkan) -### 時折目にする猫耳の可愛い女の子は? +### Siapa gadis imut bertelinga kucing yang sering muncul di Misskey? Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
ℹ️ 藍ちゃんについてはこちらです。
diff --git a/src/docs/pt-PT/features/timeline.md b/src/docs/pt-PT/features/timeline.md index b9392fbdc8..0951157033 100644 --- a/src/docs/pt-PT/features/timeline.md +++ b/src/docs/pt-PT/features/timeline.md @@ -1,31 +1,31 @@ -# Timeline +# Linha do tempo タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。 -## ホーム -自分のフォローしているユーザーの投稿が流れます。HTLと略されます。 +## Início +Postagens de usuários que você segue serão mostradas.Abreviado como HTL. -## ローカル +## Local 全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。LTLと略されます。 -## ソーシャル +## Social 自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。 -## グローバル +## Global 全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。 -## 比較 -| ソース | | | Timeline | | | -| ------------ | ----- | --- | -------- | ----- | ----- | -| Usuários | 公開範囲 | ホーム | ローカル | ソーシャル | グローバル | -| ローカル (フォロー) | 公開 | ✔ | ✔ | ✔ | ✔ | -| | ホーム | ✔ | | ✔ | | -| | フォロワー | ✔ | ✔ | ✔ | ✔ | -| リモート (フォロー) | 公開 | ✔ | | ✔ | ✔ | -| | ホーム | ✔ | | ✔ | | -| | フォロワー | ✔ | | ✔ | ✔ | -| ローカル (未フォロー) | 公開 | | ✔ | ✔ | ✔ | -| | ホーム | | | | | -| | フォロワー | | | | | -| リモート (未フォロー) | 公開 | | | | ✔ | -| | ホーム | | | | | -| | フォロワー | | | | | +## Comparação +| Fonte | | | Linha do tempo | | | +| --------------- | ------------ | ------ | -------------- | ------ | ------ | +| Usuários | Visibilidade | Início | Local | Social | Global | +| Local (seguir) | Público | ✔ | ✔ | ✔ | ✔ | +| | Início | ✔ | | ✔ | | +| | Seguidores | ✔ | ✔ | ✔ | ✔ | +| Remoto (seguir) | Público | ✔ | | ✔ | ✔ | +| | Início | ✔ | | ✔ | | +| | Seguidores | ✔ | | ✔ | ✔ | +| ローカル (未フォロー) | Público | | ✔ | ✔ | ✔ | +| | Início | | | | | +| | Seguidores | | | | | +| リモート (未フォロー) | Público | | | | ✔ | +| | Início | | | | | +| | Seguidores | | | | | diff --git a/src/docs/ru-RU/features/mfm.md b/src/docs/ru-RU/features/mfm.md index 5be2df4f30..3fb13a82b5 100644 --- a/src/docs/ru-RU/features/mfm.md +++ b/src/docs/ru-RU/features/mfm.md @@ -1,12 +1,12 @@ # MFM -MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。 +MFM, Misskey Flavored Markdown — это язык разметки, который можно использовать для оформления текста, и он доступен много где на сайте. Есть [шпагралка по MFM](/mfm-cheat-sheet), в которой можно посмотреть синтаксис. -## MFMが使用可能な場所の例 -- ノート本文 -- CW注釈 -- ユーザーの名前 -- ユーザーの自己紹介 +## Примеры случаев, где полезен MFM +- оформление заметок; +- предупреждение для содержимого не для всех; +- имена пользователей; +- самопредставление. -## 開発者向け情報 -MFMのパーサー実装はライブラリとして公開されており、簡単にクライアントにMFMを組み込むことが可能です。 -- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptパーサー実装 +## Информация для разаботчиков +Реализация транслятора MFM опубликована в виде библиотеки, так что его несложно встроить в программу-клиент. +- реализация транслятора MFM на Javascript: [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js). diff --git a/src/docs/ru-RU/general/apps.md b/src/docs/ru-RU/general/apps.md index 1f4c85fe8f..2e30a092af 100644 --- a/src/docs/ru-RU/general/apps.md +++ b/src/docs/ru-RU/general/apps.md @@ -1,6 +1,6 @@ -# サードパーティアプリのリスト -## クライアント -todo +# Список сторонних приложений +## Клиент +(пока не готово) -## 連携サービス -todo +## Связанные службы +(в процессе) diff --git a/src/docs/ru-RU/general/changelog.md b/src/docs/ru-RU/general/changelog.md index 6766a63b20..30a4afd013 100644 --- a/src/docs/ru-RU/general/changelog.md +++ b/src/docs/ru-RU/general/changelog.md @@ -1,5 +1,5 @@ -# 更新履歴 -
ℹ️ このサーバーの更新履歴です。Misskeyの最新のリリースについては、GitHubをご確認ください。
+# Журнал изменений +
ℹ️ Этот журнал отражает только изменения в последней версии на данном сайте.Последние изменения смотрите в репозитории на GitHub.
diff --git a/src/docs/ru-RU/general/faq.md b/src/docs/ru-RU/general/faq.md index c272b2ad42..0b3a1e272c 100644 --- a/src/docs/ru-RU/general/faq.md +++ b/src/docs/ru-RU/general/faq.md @@ -1,28 +1,28 @@ -# よくある質問 -ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。 +# Часто задаваемые вопросы +Здесь собраны частые вопросы об использовании Misskey. Вопросы, касающиеся проекта как такового — на [отдельной странице](./misskey). -## iOS/Androidのアプリはありますか? -公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 +## Существуют ли приложения для iOS или Android? +Мы не делаем официальных приложений Misskey для какой-либо ОС, однако существуют сторонние программы. [Посмотрите наш список приложений, если интересно.](./apps) -ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 +Обратите внимание, что новые функции в сторонних приложениях неизбежно будут появляться с некоторой задержкой, так что, если это вас не устраивает, лучше пользуйтесь официальным веб-клиентом. Кроме того, веб-клиент Misskey полностью соответствует требованиям технологии PWA, то есть, его можно заставить работать практически так же, как обычное приложение. [По ссылке есть дополнительная информация об этом.](todo) -## Mastodonクライアントでログインできないのですが? -MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。 +## Можно ли войти в Misskey через клиент Mastodon? +Программный интерфейс Misskey за мелкими исключениями несовместим с таковым у Mastodon, так что использовать клиенты Mastodon не получится. -## 他のサーバーのユーザーをフォローするときは? -メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io` +## Как подписаться на пользователя с другого сайта? +Выберите «Поиск» из меню, и введите имя пользователя вместе с доменным именем сайта.Например, `@syuilo@misskey.io`. ## Renoteを削除するには? -Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を選択します。 Renoteについては[こちら](../features/note)をご確認ください。 +Нажмите три точки «•••» около даты репоста, и выберите «Отмена репоста». [Про репосты можно почитать по ссылке.](../features/note) -## URLのプレビューを表示させたくない -MFMには、そのURLのプレビューを無効にする構文があります。詳細は[MFMチートシート](/mfm-cheat-sheet)をご確認ください。 +## Что сделать, чтобы не отображался предварительный просмотр ссылки? +Можно убрать предварительной просмотр посредством MFM.Об этом есть в [шпаргалке по MFM](/mfm-cheat-sheet). -## カスタム絵文字を追加したい -運営者のみがカスタム絵文字を追加、編集、削除できます。それらを希望する場合は運営者に依頼してください。 +## Хочу новые, собственные эмодзи! +Добавить эмодзи может только администрация сервера, как и менять и удалять их.С такими пожеланиями обращайтесь к администраторам своего сайта. -## Botを開発したい -Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。 +## Желаю разрабатывать бота +Программный интерфейс Misskey позволяет делать ботов.[Есть отдельная страница для тех, кому это интересно](../advanced/develop-bot). -## ノートの翻訳機能はどのサービスを使用していますか? -[DeepL](https://www.deepl.com/)を使用しています。 +## Какой сервис используется для перевода заметок? +Для этого применяется [DeepL](https://www.deepl.com/). diff --git a/src/docs/ru-RU/general/glossary.md b/src/docs/ru-RU/general/glossary.md index c87e622a02..1525e971a3 100644 --- a/src/docs/ru-RU/general/glossary.md +++ b/src/docs/ru-RU/general/glossary.md @@ -1,89 +1,89 @@ -# 用語集 -Misskeyに関する用語集です。 +# Глоссарий +Это — словарь специальных терминов, используемых в Misskey. ## ActivityPub -(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。 +/экти́вити-па́б/ протокол, используемый для децентрализации Misskey.Взаимодействием серверов по этому протоколу реализуется федерация, за счёт чего и образуется Федиверс (Fediverse). ## AiScript -(読み: あいすくりぷと) Misskey上で使用できるプログラミング言語です。詳細は[こちら。](../advanced/aiscript) +/ай-скрипт/ язык программирования, доступный в Misskey.[Подробности — по ссылке.](../advanced/aiscript) ## API -(読み: えーぴーあい) Misskeyのサーバーが公開している、プログラムからMisskeyを扱うためのインターフェース。詳細は[こちら。](../advanced/api) +/эй-пи-ай/ интерфейс, посредством которого клиентская программа может взаимодействовать с сервером Misskey.[Смотрите подробности здесь.](../advanced/api) -## Bot -(読み: ぼっと) プログラムによって動作しているアカウント。 +## Бот +учётная запись, которой управляет программа. ## CW -(読み: こんてんつわーにんぐ) Contents Warningの略。ノートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 +(Content Warning) сокращение для фразы «предупреждение о содержимом не для всех».Функция, скрывающая содержимое заметки до тех пор, пока пользователь вручную не откроет его.Применяется в основном чтобы свернуть длинный текст или не показывать спойлер (неожиданный поворот сюжета). ## Fediverse -(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 +/федиве́рс/ множество серверов, в том числе на Misskey, которые взаимодействуют друг с другом, и тем самым образуют единую распределённую сеть. -## GTL -グローバルタイムライン(Global TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +## ВЛ (GTL) +сокращение для «всеобщая лента».[Про ленты смотрите ссылку.](../features/timeline) -## HTL -ホームタイムライン(Home TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +## ДЛ (HTL) +сокращение для «домашняя лента».[Про ленты смотрите ссылку.](../features/timeline) -## LTL -ローカルタイムライン(Local TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +## МЛ (LTL) +сокращение для «местная лента»[Про ленты смотрите ссылку.](../features/timeline) ## MFM -(読み: えむえふえむ) Misskey Flavored Markdownの略で、Misskey上で使用できるマークアップ言語です。詳細は[こちら。](../features/mfm) +/эм-эф-эм/ язык разметки, используемый в Misskey (Misskey Flavored Markdown)[См. ссылку.](../features/mfm) -## NSFW -(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。 +## Содержимое не для всех (NSFW) +то, что может быть неприемлемо для некоторых людей.Функция пометки изображения как «не для всех» и скрытия его до тех пор, пока пользователь сам не откроет его. ## Репост -(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note) +Цитирование в неизменном виде уже существующей заметки, повторная публикация.[См. ссылку.](../features/note) -## STL -ソーシャルタイムライン(Social TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) +## СЛ (STL) +сокращение для «социальная лента».[Про ленты смотрите ссылку.](../features/timeline) -## 藍 -(読み: あい) Misskeyの看板娘(公式キャラクター)です。 +## Ай +официальный маскот Misskey. -## アクティブユーザー -インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 +## Активные пользователи +пользователи, пользующиеся своей учётной записью по настоящее время. ## Инстанс -todo +(в планах) ## Эмодзи пользователя -サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 +эмодзи, предоставляемые вашим сервером.Эмодзи, что не предоставляются сервером, но доступны по умолчанию, называются «юникодные эмодзи». -## コントロールパネル -インスタンスの設定画面のこと。 +## Панель управления +страница настройки инстанса. ## Сервер -todo +(в планах) ## Заглушить -ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence) +скрыть заметки из общих лент.Действие может применяться модераторами в отношении отдельных пользователей.[См. ссылку.](../features/silence) ## Очередь заданий -アクティビティ配送などを順番に行うためのシステム。 +Средство последовательной трансляции активности на другие сервера. ## Заморозить -アカウントが使用不可に設定されている状態。 +сделать учётную запись недоступной для пользователя. ## Диск -Misskeyにアップロードしたファイルを管理する機能。詳細は[こちら。](../features/drive) +средство для загрузки и хранения файлов пользователей.[См. ссылку.](../features/drive) -## Заметки -Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) +## Заметка +Сообщение, могущее содержать текст, изображения, опросы и прочее, которое публикуется в Misskey.[См. ссылку.](../features/note) -## ミスキスト -Misskeyを使う人のこと。 +## Мискиец +пользователь Misskey. ## Модератор -スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 +Пользователь с правами управления сообществом, который может, например, удалять недопустимые публикации, или замораживать учётные записи, с которых рассылается спам. -## С других сайтов -他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。 +## Удалённый, с другого сайта +то, что передано на данный сервер с другого.Используется также как определение для других слов: например «пользователь с другого сайта».Противоположность «местному». ## Федерация -サーバー上で作成された情報が他のサーバーに伝わること。 +связь сервера с другими, позволяющая транслировать активность между ними. -## Местная -自サーバーのことを指します。ローカルユーザー、ローカルタイムラインといったように接頭辞としても使われます。リモートの逆です。 +## Местный, с этого сайта +то, что относится к тому же серверу.Используется также как определение для других слов, например, «пользователь с этого сайта».Противоположность «удалённому». diff --git a/src/docs/ru-RU/general/links.md b/src/docs/ru-RU/general/links.md index c893801b49..3b55b66abe 100644 --- a/src/docs/ru-RU/general/links.md +++ b/src/docs/ru-RU/general/links.md @@ -1,12 +1,12 @@ -# リンク集 +# Полезные ссылки -## Webサイト -- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー -- [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム +## Веб-сайты +- [Официальный Discord](https://discord.gg/Wp8gVStHW3) — официальный Discord-сервер Misskey. +- [Форум Misskey](https://forum.misskey.io/) — форум для обсуждения разных вопросов и Misskey. ## Учётные записи -- [@repo@misskey.io](https://misskey.io/@repo) - Misskeyのリポジトリの更新を投稿するbot +- [@repo@misskey.io](https://misskey.io/@repo) — бот, публикующий информацию об обновлениях в репозитории Misskey. -## ライブラリ -- [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) - JavaScriptのMisskey SDK -- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptのMFMパーサー実装 +## Библиотеки +- [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) — набор средств разработки на Javascript для Misskey. +- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) — реализация транслятора MFM на Javascript. diff --git a/src/docs/ru-RU/general/misskey.md b/src/docs/ru-RU/general/misskey.md index f2426925db..8b8c10b978 100644 --- a/src/docs/ru-RU/general/misskey.md +++ b/src/docs/ru-RU/general/misskey.md @@ -91,7 +91,7 @@ Misskey — некоммерческий проект, он бесплатен ### Какой узел выбрать? -[По ссылке есть (неполный) список узлов.](https://join.misskey.page/ja-JP/instances) У какого-то узла может быть заявлена объединяющая всех тематика (какое-то кино или хобби, например). Если такое вас интересует, присоединиться будет неплохим выбором. Кроме того, для вас могут быть важны размер сервера, коллектив, страна, язык, или доверяете ли вы его хозяевам. Какого-то особого «официального» сервера у Misskey нет.Ко всему прочему вы можете создать свой собственный узел на личном сервере. +[По ссылке есть (неполный) список узлов.](https://join.misskey.page/ja-JP/instances) Некоторые узлы посвящены определённой тематике, например, какому-нибудь кино, или хобби. Если такое вас интересует, этот узел будет неплохим выбором. Кроме того, для вас могут быть важны размер сервера, коллектив, страна, язык, или доверяете ли вы его хозяевам. Какого-то особого «официального» сервера у Misskey нет.Ко всему прочему вы можете создать свой собственный узел на личном сервере. По большому счёту не важно, какой узел вы себе выберете. Независимо от этого вы будете на связи со всеми остальными узлами сети. @@ -99,34 +99,34 @@ Misskey — некоммерческий проект, он бесплатен ### Как поднять свой собственный сервер? -Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。 +Для начала хотим выразить признательность за ваш интерес к созданию своего сервера. На текущий 2021 год не существует специальных провайдеров для хостинга Misskey, так что для его установки понадобится некоторое умение. [Узнать, как поднять свой сервер, можете по ссылке.](todo) ### Какие технологии использует Misskey? -Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。 +По ходу развития Misskey используемые технологии успели значительно поменяться.В начале использовалась связка MySQL + PHP + jQuery, но теперь используется следующее: -- ПО на стороне сервера: Node.js -- Система управления базой данных: PostgreSQL, Redis -- Интерфейс пользователя: Vue.js -- Язык программирования: TypeScript +- ПО на стороне сервера: Node.js; +- система управления базой данных: PostgreSQL, Redis; +- интерфейс пользователя: Vue.js; +- язык программирования: TypeScript; -また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。 +и, кроме, того, технологии, родившиеся в самом Misskey, как например AiScript. ### А не клон ли это Mastodon? -Нет.MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。 +Нет. Проект Misskey не имеет никакого отношения к Mastodon и ему подобным проектам. Что касается разработки, то она велась уже давно.Однако децентрализованным он стал уже после появления Mastodon. Помимо того, что в обоих используется протокол децентрализации ActivityPub, между этим проектами нет ничего общего. ### Существуют ли приложения для iOS или Android? -公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 +Мы не делаем официальных приложений Misskey для какой-либо ОС, однако существуют сторонние программы. [Посмотрите наш список приложений, если интересно.](./apps) -ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 +Обратите внимание, что новые функции в сторонних приложениях неизбежно будут появляться с некоторой задержкой, так что, если это вас не устраивает, лучше пользуйтесь официальным веб-клиентом. Кроме того, веб-клиент Misskey полностью соответствует требованиям технологии PWA, то есть, его можно заставить работать практически так же, как обычное приложение. [По ссылке есть дополнительная информация об этом.](todo) diff --git a/src/docs/ru-RU/general/report-issue.md b/src/docs/ru-RU/general/report-issue.md index 63527e32af..ac9a5272f1 100644 --- a/src/docs/ru-RU/general/report-issue.md +++ b/src/docs/ru-RU/general/report-issue.md @@ -1,8 +1,8 @@ -# 不具合の報告 -不具合と思われる状況に遭遇したときは、まず[トラブルシューティング](./troubleshooting)をご一読ください。 それでも問題が解決しないときは、以下の情報を含めて[フォーラム](https://forum.misskey.io/)に投稿してください。 投稿することで、解決策が見つかったり、不具合と判断されれば開発チームによって修正が行われます。 +# Как сообщить об ошибке +Если вы столкнулись с чем-то, похожим на программную ошибку, сначала загляните на страницу [«Разрешение проблем»](./troubleshooting), возможно, там есть есть решение. Если после этого не смогли справиться с проблемой самостоятельно, напишите об этом на [Форуме](https://forum.misskey.io/), включив сведения, перечисленные ниже. Не исключено, что там вам помогут найти решение. Если же это и правда ошибка, команда разработчиков об этом узнает и сможет её исправить. -## 含める情報 -- Misskeyのバージョン([情報ページ](/about)で確認できます) -- お使いのブラウザの種類とバージョン -- お使いのOSの種類とバージョン -- 問題の再現手順 +## О чём писать в сообщении +- версию Misskey (её можно на странице [«О Misskey»](/about)); +- наименование и версию вашего браузера; +- наименование и версию вашей операционной системы; +- последовательность действий, которая привела к описываемой вами проблеме. diff --git a/src/docs/ru-RU/general/troubleshooting.md b/src/docs/ru-RU/general/troubleshooting.md index e325e4e944..bbe13f35fa 100644 --- a/src/docs/ru-RU/general/troubleshooting.md +++ b/src/docs/ru-RU/general/troubleshooting.md @@ -1,40 +1,40 @@ # Разрешение проблем -
ℹ️ よくある質問も合わせてお役立てください。
+
ℹ️ Часто задаваемые вопросы также могут быть полезны.
-問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。 +При возникновении каких-либо проблем, сначала поищите решение здесь. Если не нашли подходящего пункта, или с помощью изложенного здесь не удалось решить вопрос, обратитесь к администрации своего узла или [сообщите об ошибке разработчикам](./report-issue). -## クライアントが起動しない -ほとんどの場合、お使いのブラウザまたはOSのバージョンが古いことが原因です。 ブラウザおよびOSのバージョンを最新のものに更新してから、再度試してみてください。 +## Клиент не запускается +В большинстве случаев виной этому оказывается слишком старая версия браузера или ОС. Попробуйте обновить браузер и ОС до последней версии и попытайтесь снова. -これは稀ですが、それでも起動しない場合は、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。 +Иногда клиент не запускается из-за проблемы с кэшем.Очистите кэш браузера и попробуйте ещё раз. -## ページが読み込めない -クライアントが起動するもののページが読み込めないというエラーが出る場合は、ネットワークに問題がないか確認してください。また、サーバーがダウンしていないか確認してください。 +## Содержимое страницы не загружается +Если клиент запускается, но выдаёт сообщение, что содержимое не может быть загружено, проверьте сетевое соединение на наличие проблем.Также проверьте, что нужный сервер не отключен, например, на обслуживание. -これは稀ですが、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。 +В редких случаях может быть дело в кэше.Очистите кэш браузера и попробуйте ещё раз. -まだ問題がある場合は、サーバーの問題と思われるのでサーバーの管理者に連絡してください。 +Остальные проблемы в основном связаны с серверной частью, так что, если написанное не помогло, постарайтесь связаться с администрацией сервера. -## クライアントの動作が遅い -以下を試してみてください: +## Клиент тормозит +Попробуйте следующее: -- クライアント設定で「UIのアニメーションを減らす」を有効にする -- クライアント設定で「モーダルにぼかし効果を使用」を無効にする -- お使いのブラウザの設定でハードウェアアクセラレーションを有効にする -- お使いのデバイスのスペックを上げる +- включите в настройках клиента пункт «Уменьшить анимацию в пользовательском интерфейсе»; +- выключите пункт «Размывка под формой поверх всего» там же; +- включите в настройках браузера аппаратное ускорение графики; +- проведите апгрейд. -## UIの一部の表示がおかしい(背景が透明になっている等) -アップデートによりUIの改修が行われたときに、テーマのキャッシュシステムの影響でそのような表示になることがあります。 クライアントの設定の「キャッシュをクリア」すると直ります。 -
⚠️ 「クライアントの」キャッシュクリアです。「ブラウザの」キャッシュクリアは行わないでください。
+## Некоторые элементы интерфейса выглядят странно и неудобно (например, фон стал прозрачным) +Такое может происходить из-за кэширования тем, когда происходит изменение интерфейса при обновлении. Исправить это можно нажав на кнопку «Очистить кэш» в настройках клиента. +
⚠️ Очищать нужно именно кэш клиента!Очистка кэша браузера тут не поможет. Не нужно делать этого.
-## 通知やアンテナ等の点滅が消えない -点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。 すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。 +## Мигающий индикатор при «Антенне» не пропадает. +Мигающий индикатор означает, что здесь есть что-то ещё не прочитанное.Обычно такое происходит, когда непрочитанное уползает далеко из-за большого количества новых заметок. Если вы уверены, что всё прочитали, но значок всё ещё на месте (возможно, из-за ошибки), то можете явно пометить всё как прочитанное в настройках. -## Renoteができない -フォロワー限定のノートはRenoteすることはできません。 +## Недоступен репост. +Нельзя репостить заметки, предназначенные только для подписчиков. -## UI上で特定の要素が表示されない -広告ブロッカーを使用しているとそのような不具合が発生することがあります。Misskeyではオフにしてご利用ください。 +## Некоторые нужные элементы интерфейса не отображаются +Проблемы вроде этой могут проявляться при использовании блокировщика рекламы.Отключите его при использовании Misskey. -## UI上で未翻訳の部分がある -ほとんどの場合、単に翻訳が間に合っていないだけで、不具合ではありません。翻訳が終わるまでお待ちください。 [翻訳に参加](./misskey)していただくことも可能です。 +## Некоторые элементы интерфейса на иностранном языке +Обычно это не программная ошибка, а просто перевод интерфейса отстаёт от текущей версии.Подождите, пока переводчики сделают своё дело. Или [помогите переводу](./misskey) сами. diff --git a/src/docs/zh-CN/advanced/reversi-bot.md b/src/docs/zh-CN/advanced/reversi-bot.md index c89ec0cbe3..86637b775e 100644 --- a/src/docs/zh-CN/advanced/reversi-bot.md +++ b/src/docs/zh-CN/advanced/reversi-bot.md @@ -1,4 +1,4 @@ -# MisskeyリバーシBotの開発 +# Misskey黑白棋机器人开发 Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。 1. `games/reversi`ストリームに以下のパラメータを付けて接続する: diff --git a/src/docs/zh-CN/features/keyboard-shortcut.md b/src/docs/zh-CN/features/keyboard-shortcut.md index 5279eb9bd4..b555e34f40 100644 --- a/src/docs/zh-CN/features/keyboard-shortcut.md +++ b/src/docs/zh-CN/features/keyboard-shortcut.md @@ -31,7 +31,7 @@ F, Bお気に入りに登録Favorite, Bookmark Del, Ctrl + D投稿を削除Delete M, O投稿に対するメニューを開くMore, Other - SCWで隠された部分を表示 or 隠すShow, See + S显示或隐藏CW的隐藏部分Show, See Escフォーカスを外す- diff --git a/src/docs/zh-CN/features/mfm.md b/src/docs/zh-CN/features/mfm.md index 5be2df4f30..d42350edf0 100644 --- a/src/docs/zh-CN/features/mfm.md +++ b/src/docs/zh-CN/features/mfm.md @@ -3,7 +3,7 @@ MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用 ## MFMが使用可能な場所の例 - ノート本文 -- CW注釈 +- CW注释 - ユーザーの名前 - ユーザーの自己紹介 diff --git a/src/docs/zh-CN/features/note.md b/src/docs/zh-CN/features/note.md index 9030cd384d..b3ed79c8ea 100644 --- a/src/docs/zh-CN/features/note.md +++ b/src/docs/zh-CN/features/note.md @@ -8,7 +8,7 @@ ノートを[お気に入り](./favorite)登録することで、後で簡単に見返すことができます。 ## ノートを作成する -ノートを作成するには、画面上にある鉛筆マークのボタンを押して、作成フォームを開きます。作成フォームに内容を入力し、「ノート」ボタンを押すことでノートが作成されます。 ノートには、画像、動画など任意のファイルや、[アンケート](./poll)を添付することができます。また、本文中には[MFM](./mfm)が使用でき、[メンション](./mention)や[ハッシュタグ](./hashtag)を含めることもできます。 他にも、CWや公開範囲といった設定も行えます(詳細は後述)。 +ノートを作成するには、画面上にある鉛筆マークのボタンを押して、作成フォームを開きます。作成フォームに内容を入力し、「ノート」ボタンを押すことでノートが作成されます。 ノートには、画像、動画など任意のファイルや、[アンケート](./poll)を添付することができます。您还可以通过在文本中使用[MFM](./mfm)来将[提及](./mention)和[Hash标签](./hashtag)包含在内。 另外还可以设置CW的可见范围等(详细说明见后文)。
ℹ️ コンピューターのクリップボードに画像データがある状態で、フォーム内のテキストボックスにペーストするとその画像を添付することができます。
ℹ️ テキストボックス内でCtrl + Enterを押すことでも投稿できます。
diff --git a/src/misc/download-url.ts b/src/misc/download-url.ts index 43e061c715..8a8640a8cd 100644 --- a/src/misc/download-url.ts +++ b/src/misc/download-url.ts @@ -1,13 +1,13 @@ import * as fs from 'fs'; import * as stream from 'stream'; import * as util from 'util'; -import { URL } from 'url'; -import fetch from 'node-fetch'; -import { getAgentByUrl } from './fetch'; -import { AbortController } from 'abort-controller'; +import got, * as Got from 'got'; +import { httpAgent, httpsAgent } from './fetch'; import config from '@/config/index'; import * as chalk from 'chalk'; import Logger from '@/services/logger'; +import * as IPCIDR from 'ip-cidr'; +const PrivateIp = require('private-ip'); const pipeline = util.promisify(stream.pipeline); @@ -15,26 +15,72 @@ export async function downloadUrl(url: string, path: string) { const logger = new Logger('download'); logger.info(`Downloading ${chalk.cyan(url)} ...`); - const controller = new AbortController(); - setTimeout(() => { - controller.abort(); - }, 60 * 1000); - const response = await fetch(new URL(url).href, { + const timeout = 30 * 1000; + const operationTimeout = 60 * 1000; + const maxSize = config.maxFileSize || 262144000; + + const req = got.stream(url, { headers: { 'User-Agent': config.userAgent }, - timeout: 10 * 1000, - signal: controller.signal, - agent: getAgentByUrl, + timeout: { + lookup: timeout, + connect: timeout, + secureConnect: timeout, + socket: timeout, // read timeout + response: timeout, + send: timeout, + request: operationTimeout, // whole operation timeout + }, + agent: { + http: httpAgent, + https: httpsAgent, + }, + retry: 0, + }).on('response', (res: Got.Response) => { + if ((process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') && !config.proxy && res.ip) { + if (isPrivateIp(res.ip)) { + logger.warn(`Blocked address: ${res.ip}`); + req.destroy(); + } + } + + const contentLength = res.headers['content-length']; + if (contentLength != null) { + const size = Number(contentLength); + if (size > maxSize) { + logger.warn(`maxSize exceeded (${size} > ${maxSize}) on response`); + req.destroy(); + } + } + }).on('downloadProgress', (progress: Got.Progress) => { + if (progress.transferred > maxSize) { + logger.warn(`maxSize exceeded (${progress.transferred} > ${maxSize}) on downloadProgress`); + req.destroy(); + } + }).on('error', (e: any) => { + if (e.name === 'HTTPError') { + const statusCode = e.response?.statusCode; + const statusMessage = e.response?.statusMessage; + e.name = `StatusError`; + e.statusCode = statusCode; + e.message = `${statusCode} ${statusMessage}`; + } }); - if (!response.ok) { - logger.error(`Got ${response.status} (${url})`); - throw response.status; - } - - await pipeline(response.body, fs.createWriteStream(path)); + await pipeline(req, fs.createWriteStream(path)); logger.succ(`Download finished: ${chalk.cyan(url)}`); } + +function isPrivateIp(ip: string) { + for (const net of config.allowedPrivateNetworks || []) { + const cidr = new IPCIDR(net); + if (cidr.contains(ip)) { + return false; + } + } + + return PrivateIp(ip); +} diff --git a/src/server/api/index.ts b/src/server/api/index.ts index 55083261ee..db35fdf9e0 100644 --- a/src/server/api/index.ts +++ b/src/server/api/index.ts @@ -16,6 +16,7 @@ import discord from './service/discord'; import github from './service/github'; import twitter from './service/twitter'; import { Instances, AccessTokens, Users } from '@/models/index'; +import config from '@/config'; // Init app const app = new Koa(); @@ -37,7 +38,11 @@ app.use(bodyParser({ // Init multer instance const upload = multer({ - storage: multer.diskStorage({}) + storage: multer.diskStorage({}), + limits: { + fileSize: config.maxFileSize || 262144000, + files: 1, + } }); // Init router diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts index c455de6447..a73164ed21 100644 --- a/src/server/file/send-drive-file.ts +++ b/src/server/file/send-drive-file.ts @@ -83,10 +83,10 @@ export default async function(ctx: Koa.Context) { ctx.set('Content-Type', image.type); ctx.set('Cache-Control', 'max-age=31536000, immutable'); } catch (e) { - serverLogger.error(e); + serverLogger.error(e.statusCode); - if (typeof e == 'number' && e >= 400 && e < 500) { - ctx.status = e; + if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) { + ctx.status = e.statusCode; ctx.set('Cache-Control', 'max-age=86400'); } else { ctx.status = 500; diff --git a/src/server/proxy/proxy-media.ts b/src/server/proxy/proxy-media.ts index fb38a5c07b..3bd65dfe67 100644 --- a/src/server/proxy/proxy-media.ts +++ b/src/server/proxy/proxy-media.ts @@ -39,8 +39,8 @@ export async function proxyMedia(ctx: Koa.Context) { } catch (e) { serverLogger.error(e); - if (typeof e == 'number' && e >= 400 && e < 500) { - ctx.status = e; + if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) { + ctx.status = e.statusCode; } else { ctx.status = 500; } diff --git a/webpack.config.ts b/webpack.config.ts index 296813caa0..e9f3aa6e47 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -164,6 +164,7 @@ module.exports = { ], alias: { '@client': __dirname + '/src/client', + '@lib': __dirname + '/lib', '@': __dirname + '/src', 'const.styl': __dirname + '/src/client/const.styl' } diff --git a/yarn.lock b/yarn.lock index ccfee76557..8151dfe089 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5742,6 +5742,27 @@ ioredis@^4.27.0: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ip-address@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-7.1.0.tgz#4a9c699e75b51cbeb18b38de8ed216efa1a490c5" + integrity sha512-V9pWC/VJf2lsXqP7IWJ+pe3P1/HCYGBMZrrnT62niLGjAfCbeiwXMUxaeHvnVlz19O27pvXP4azs+Pj/A0x+SQ== + dependencies: + jsbn "1.1.0" + sprintf-js "1.1.2" + +ip-cidr@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ip-cidr/-/ip-cidr-3.0.4.tgz#a915c47e00f47ea8d5f8ed662ea6161471c44375" + integrity sha512-pKNiqmBlTvEkhaLAa3+FOmYSY0/jjADVxxjA3NbujZZTT8mjLI90Q+6mwg6kd0fNm0RuAOkWJ1u1a/ETmlrPNQ== + dependencies: + ip-address "^7.1.0" + jsbn "^1.1.0" + +ip-regex@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -6238,6 +6259,11 @@ js-yaml@~3.7.0: argparse "^1.0.7" esprima "^2.6.0" +jsbn@1.1.0, jsbn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha1-sBMHyym2GKHtJux56RH4A8TaAEA= + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -7440,6 +7466,11 @@ nested-property@4.0.0: resolved "https://registry.yarnpkg.com/nested-property/-/nested-property-4.0.0.tgz#a67b5a31991e701e03cdbaa6453bc5b1011bb88d" integrity sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA== +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + next-line@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603" @@ -8861,6 +8892,14 @@ prismjs@1.24.1: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036" integrity sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow== +private-ip@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-2.2.1.tgz#4fe167d04e12eca5c67cdcbd3224e86b38c79253" + integrity sha512-jN1WT/br/VNW9xEcwHr6DjtOKxQ5qOIqmh7o+co2TWgq56pZJw99iO3UT1tWdfgsQiyK9FqG4ji3ykwpjFqITA== + dependencies: + ip-regex "^4.3.0" + netmask "^2.0.2" + probe-image-size@7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.1.tgz#df0c924e67e247bc94f8fcb0fad7f0081061fc44" @@ -10103,6 +10142,11 @@ split@^1.0.0: dependencies: through "2" +sprintf-js@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"