Compare commits

..

No commits in common. "ead8a4eb3b13e66252a348877e0850fd653ea8c9" and "b58d9a3056e7e1e04b3240ec43b67b376d031d23" have entirely different histories.

965 changed files with 32467 additions and 42675 deletions

View File

@ -57,7 +57,6 @@ db:
redis:
host: localhost
port: 6379
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
#pass: example-pass
#prefix: example-prefix
#db: 1

View File

@ -22,10 +22,7 @@ First, in order to avoid duplicate Issues, please search to see if the problem y
## 🤬 Actual Behavior
<!--
Tell us what happens instead of the expected behavior.
Please include errors from the developer console and/or server log files if you have access to them.
-->
<!--- Tell us what happens instead of the expected behavior -->
## 📝 Steps to Reproduce

12
.github/labeler.yml vendored
View File

@ -1,12 +0,0 @@
'⚙Server':
- packages/backend/**/*
'🖥Client':
- packages/client/**/*
'🧪Test':
- cypress/**/*
- packages/backend/test/**/*
'‼️ wrong locales':
- any: ['locales/*.yml', '!locales/ja-JP.yml']

View File

@ -1,16 +0,0 @@
name: "Pull Request Labeler"
on:
pull_request_target:
branches-ignore:
- 'l10n_develop'
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@ -1,39 +1,25 @@
name: Lint
on:
push:
branches:
- master
- develop
pull_request:
jobs:
backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'yarn'
cache-dependency-path: |
packages/backend/yarn.lock
- run: yarn install
- run: yarn --cwd ./packages/backend lint
client:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'yarn'
cache-dependency-path: |
packages/client/yarn.lock
- run: yarn install
- run: yarn --cwd ./packages/client lint
name: Lint
on:
push:
branches:
- master
- develop
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: 'yarn'
cache-dependency-path: |
packages/backend/yarn.lock
packages/client/yarn.lock
- run: yarn install
- run: yarn lint

View File

@ -1,36 +0,0 @@
# If someone with write access comments "/ok-to-test" on a pull request, emit a repository_dispatch event
name: Ok To Test
on:
issue_comment:
types: [created]
jobs:
ok-to-test:
runs-on: ubuntu-latest
# Only run for PRs, not issue comments
if: ${{ github.event.issue.pull_request }}
steps:
# Generate a GitHub App installation access token from an App ID and private key
# To create a new GitHub App:
# https://developer.github.com/apps/building-github-apps/creating-a-github-app/
# See app.yml for an example app manifest
- name: Generate token
id: generate_token
uses: tibdex/github-app-token@v1
with:
app_id: ${{ secrets.DEPLOYBOT_APP_ID }}
private_key: ${{ secrets.DEPLOYBOT_PRIVATE_KEY }}
- name: Slash Command Dispatch
uses: peter-evans/slash-command-dispatch@v1
env:
TOKEN: ${{ steps.generate_token.outputs.token }}
with:
token: ${{ env.TOKEN }} # GitHub App installation access token
# token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} # PAT or OAuth token will also work
reaction-token: ${{ secrets.GITHUB_TOKEN }}
issue-type: pull-request
commands: deploy
named-args: true
permission: write

View File

@ -1,95 +0,0 @@
# Run secret-dependent integration tests only after /deploy approval
on:
pull_request:
types: [opened, reopened, synchronize]
repository_dispatch:
types: [deploy-command]
name: Deploy preview environment
jobs:
# Repo owner has commented /deploy on a (fork-based) pull request
deploy-preview-environment:
runs-on: ubuntu-latest
if:
github.event_name == 'repository_dispatch' &&
github.event.client_payload.slash_command.sha != '' &&
contains(github.event.client_payload.pull_request.head.sha, github.event.client_payload.slash_command.sha)
steps:
- uses: actions/github-script@v5
id: check-id
env:
number: ${{ github.event.client_payload.pull_request.number }}
job: ${{ github.job }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
result-encoding: string
script: |
const { data: pull } = await github.rest.pulls.get({
...context.repo,
pull_number: process.env.number
});
const ref = pull.head.sha;
const { data: checks } = await github.rest.checks.listForRef({
...context.repo,
ref
});
const check = checks.check_runs.filter(c => c.name === process.env.job);
return check[0].id;
- uses: actions/github-script@v5
env:
check_id: ${{ steps.check-id.outputs.result }}
details_url: ${{ github.server_url }}/${{ github.repository }}/runs/${{ github.run_id }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.checks.update({
...context.repo,
check_run_id: process.env.check_id,
status: 'in_progress',
details_url: process.env.details_url
});
# Check out merge commit
- name: Fork based /deploy checkout
uses: actions/checkout@v2
with:
ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
# <insert integration tests needing secrets>
- name: Context
uses: okteto/context@latest
with:
token: ${{ secrets.OKTETO_TOKEN }}
- name: Deploy preview environment
uses: ikuradon/deploy-preview@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: pr-${{ github.event.client_payload.pull_request.number }}-syuilo
timeout: 15m
# Update check run called "integration-fork"
- uses: actions/github-script@v5
id: update-check-run
if: ${{ always() }}
env:
# Conveniently, job.status maps to https://developer.github.com/v3/checks/runs/#update-a-check-run
conclusion: ${{ job.status }}
check_id: ${{ steps.check-id.outputs.result }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { data: result } = await github.rest.checks.update({
...context.repo,
check_run_id: process.env.check_id,
status: 'completed',
conclusion: process.env.conclusion
});
return result;

View File

@ -1,21 +0,0 @@
# file: .github/workflows/preview-closed.yaml
on:
pull_request:
types:
- closed
name: Destroy preview environment
jobs:
destroy-preview-environment:
runs-on: ubuntu-latest
steps:
- name: Context
uses: okteto/context@latest
with:
token: ${{ secrets.OKTETO_TOKEN }}
- name: Destroy preview environment
uses: okteto/destroy-preview@latest
with:
name: pr-${{ github.event.number }}-syuilo

View File

@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
node-version: [18.x]
node-version: [16.x]
services:
postgres:
@ -57,7 +57,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [18.x]
node-version: [16.x]
browser: [chrome]
services:
@ -103,7 +103,7 @@ jobs:
- name: ALSA Env
run: echo -e 'pcm.!default {\n type hw\n card 0\n}\n\nctl.!default {\n type hw\n card 0\n}' > ~/.asoundrc
- name: Cypress run
uses: cypress-io/github-action@v4
uses: cypress-io/github-action@v2
with:
install: false
start: npm run start:test

3
.gitignore vendored
View File

@ -13,9 +13,6 @@ report.*.json
cypress/screenshots
cypress/videos
# Coverage
coverage
# config
/.config/*
!/.config/example.yml

View File

@ -1 +1 @@
v16.15.0
v16.14.0

View File

@ -1,6 +0,0 @@
build:
misskey:
args:
- NODE_ENV=development
deploy:
- helm upgrade --install misskey chart --set image=${OKTETO_BUILD_MISSKEY_IMAGE} --set url="https://misskey-$(kubectl config view --minify -o jsonpath='{..namespace}').cloud.okteto.net" --set environment=development

View File

@ -3,7 +3,6 @@
"editorconfig.editorconfig",
"eg2.vscode-npm-script",
"dbaeumer.vscode-eslint",
"Vue.volar",
"Vue.vscode-typescript-vue-plugin"
"johnsoncodehk.volar",
]
}

View File

@ -2,6 +2,7 @@
## 12.x.x (unreleased)
### Improvements
-
### Bugfixes
-
@ -9,225 +10,11 @@
You should also include the user name that made the change.
-->
## 12.119.0 (2022/09/10)
### Improvements
- Client: Add following badge to user preview popup @nvisser
- Client: mobile twitter url can be used as widget @caipira113
- Client: Improve clock widget @syuilo
### Bugfixes
- マイグレーションに失敗する問題を修正
- Server: 他人の通知を既読にできる可能性があるのを修正 @syuilo
- Client: アクセストークン管理画面、アカウント管理画面表示できないのを修正 @futchitwo
## 12.118.1 (2022/08/08)
### Bugfixes
- Client: can not show some setting pages @syuilo
## 12.118.0 (2022/08/07)
### Improvements
- Client: 設定のバックアップ/リストア機能
- Client: Add vi-VN language support
- Client: Add unix time widget @syuilo
### Bugfixes
- Server: リモートユーザーを正しくブロックできるように修正する @xianonn
- Client: 一度作ったwebhookの設定画面を開こうとするとページがフリーズする @syuilo
- Client: MiAuth認証ページが機能していない @syuilo
- Client: 一部のアプリからファイルを投稿フォームへドロップできない場合がある問題を修正 @m-hayabusa
## 12.117.1 (2022/07/19)
### Improvements
- Client: UIのブラッシュアップ @syuilo
### Bugfixes
- Server: ファイルのアップロードに失敗することがある問題を修正 @acid-chicken
- Client: リアクションピッカーがアプリ内ウィンドウの後ろに表示されてしまう問題を修正 @syuilo
- Client: ユーザー情報の取得の再試行を修正 @xianonn
- Client: MFMチートシートの挙動を修正 @syuilo
- Client: 「インスタンスからのお知らせを受け取る」の設定を変更できない問題を修正 @syuilo
## 12.117.0 (2022/07/18)
### Improvements
- Client: ウィンドウを最大化できるように @syuilo
- Client: Shiftキーを押した状態でリンクをクリックするとアプリ内ウィンドウで開くように @syuilo
- Client: デッキを使用している際、Ctrlキーを押した状態でリンクをクリックするとページ遷移を強制できるように @syuilo
- Client: UIのブラッシュアップ @syuilo
## 12.116.1 (2022/07/17)
### Bugfixes
- Client: デッキUI時に ページで表示 ボタンが機能しない問題を修正 @syuilo
- Error During Migration Run to 12.111.x
## 12.116.0 (2022/07/16)
### Improvements
- Client: registry editor @syuilo
- Client: UIのブラッシュアップ @syuilo
### Bugfixes
- Error During Migration Run to 12.111.x
- Server: TypeError: Cannot convert undefined or null to object @syuilo
## 12.115.0 (2022/07/16)
### Improvements
- Client: Deckのプロファイル切り替えを簡単に @syuilo
- Client: UIのブラッシュアップ @syuilo
## 12.114.0 (2022/07/15)
### Improvements
- RSSティッカーで表示順序をシャッフルできるように @syuilo
### Bugfixes
- クライアントが起動しなくなることがある問題を修正 @syuilo
## 12.113.0 (2022/07/13)
### Improvements
- Support <plain> syntax for MFM
### Bugfixes
- Server: Fix crash at startup if TensorFlow is not supported @mei23
- Client: URLエンコードされたルーティングを修正
## 12.112.3 (2022/07/09)
### Improvements
- Make active email validation configurable
### Bugfixes
- Server: Fix Attempts to update all notifications @mei23
## 12.112.2 (2022/07/08)
### Bugfixes
- Fix Docker doesn't work @mei23
Still not working on arm64 environment. (See 12.112.0)
## 12.112.1 (2022/07/07)
same as 12.112.0
## 12.112.0 (2022/07/07)
### Known issues
- 現在arm64環境ではインストールに失敗します。これは次のバージョンで修正される予定です。
### Changes
- ハイライトがみつけるに統合されました
- カスタム絵文字ページはインスタンス情報ページに統合されました
- 連合ページはインスタンス情報ページに統合されました
- メンション一覧ページは通知一覧ページに統合されました
- ダイレクト投稿一覧ページは通知一覧ページに統合されました
- メニューからアンテナタイムラインを表示する方法は廃止され、タイムライン上部のアイコンからアクセスするようになりました
- メニューからリストタイムラインを表示する方法は廃止され、タイムライン上部のアイコンからアクセスするようになりました
### Improvements
- Server: Allow GET method for some endpoints @syuilo
- Server: Auto NSFW detection @syuilo
- Server: Add rate limit to i/notifications @tamaina
- Client: Improve control panel @syuilo
- Client: Show warning in control panel when there is an unresolved abuse report @syuilo
- Client: Statusbars @syuilo
- Client: Add instance-cloud widget @syuilo
- Client: Add rss-ticker widget @syuilo
- Client: Removing entries from a clip @futchitwo
- Client: Poll highlights in explore page @syuilo
- Client: Improve deck UI @syuilo
- Client: Word mute also checks content warnings @Johann150
- Client: メニューからページをリロードできるように @syuilo
- Client: Improve emoji picker performance @syuilo
- Client: For notes with specified visibility, show recipients when hovering over visibility symbol. @Johann150
- Client: Make widgets available again on a tablet @syuilo
- ユーザーにモデレーションメモを残せる機能 @syuilo
- Make possible to delete an account by admin @syuilo
- Improve player detection in URL preview @mei23
- Add Badge Image to Push Notification #8012 @tamaina
- Server: Improve performance
- Server: Supports IPv6 on Redis transport. @mei23
IPv4/IPv6 is used by default. You can tune this behavior via `redis.family`.
- Server: Add possibility to log IP addresses of users @syuilo
- Add additional drive capacity change support @CyberRex0
### Bugfixes
- Server: Fix GenerateVideoThumbnail failed @mei23
- Server: Ensure temp directory cleanup @Johann150
- favicons of federated instances not showing @syuilo
- Admin: The checkbox for blocking an instance works again @Johann150
- Client: Prevent access to user pages when not logged in @pixeldesu @Johann150
- Client: Disable some hotkeys (e.g. for creating a post) for not logged in users @pixeldesu
- Client: Ask users that are not logged in to log in when trying to vote in a poll @Johann150
- Instance mutes also apply in antennas etc. @Johann150
## 12.111.1 (2022/06/13)
### Bugfixes
- some fixes of multiple notification read @tamaina
- some GenerateVideoThumbnail failed @Johann150
- Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
- Client: ギャラリーの投稿を開こうとすると編集画面が表示される @futchitwo
## 12.111.0 (2022/06/11)
### Note
- Node.js 16.15.0 or later is required
### Improvements
- Supports Unicode Emoji 14.0 @mei23
- プッシュ通知を複数アカウント対応に #7667 @tamaina
- プッシュ通知にクリックやactionを設定 #7667 @tamaina
- ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション @tamaina
- Server: always remove completed tasks of job queue @Johann150
- Client: アバターの設定で画像をクロップできるように @syuilo
- Client: make emoji stand out more on reaction button @Johann150
- Client: display URL of QR code for TOTP registration @tamaina
- Client: render quote renote CWs as MFM @pixeldesu
- API: notifications/readは配列でも受け付けるように #7667 @tamaina
- API: ユーザー検索で、クエリがusernameの条件を満たす場合はusernameもLIKE検索するように @tamaina
- MFM: Allow speed changes in all animated MFMs @Johann150
- The theme color is now better validated. @Johann150
Your own theme color may be unset if it was in an invalid format.
Admins should check their instance settings if in doubt.
- Perform port diagnosis at startup only when Listen fails @mei23
- Rate limiting is now also usable for non-authenticated users. @Johann150 @mei23
Admins should make sure the reverse proxy sets the `X-Forwarded-For` header to the original address.
### Bugfixes
- Server: keep file order of note attachement @Johann150
- Server: fix missing foreign key for reports leading to reports page being unusable @Johann150
- Server: fix internal in-memory caching @Johann150
- Server: prevent crash when processing certain PNGs @syuilo
- Server: Fix unable to generate video thumbnails @mei23
- Server: Fix `Cannot find module` issue @mei23
- Federation: Add rel attribute to host-meta @mei23
- Federation: add id for activitypub follows @Johann150
- Federation: use `source` instead of `_misskey_content` @Johann150
- Federation: ensure resolver does not fetch local resources via HTTP(S) @Johann150
- Federation: correctly render empty note text @Johann150
- Federation: Fix quote renotes containing no text being federated correctly @Johann150
- Federation: remove duplicate br tag/newline @Johann150
- Federation: add missing authorization checks @Johann150
- Client: fix profile picture height in mentions @tamaina
- Client: fix abuse reports page to be able to show all reports @Johann150
- Client: fix settings page @tamaina
- Client: fix profile tabs @futchitwo
- Client: fix popout URL @futchitwo
- Client: correctly handle MiAuth URLs with query string @sn0w
- Client: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する @xianonn
- MFM: more animated functions support `speed` parameter @futchitwo
- MFM: limit large MFM @Johann150
## 12.110.1 (2022/04/23)
### Bugfixes
- Fix GOP rendering @syuilo
- Improve performance of antenna, clip, and list @xianonn
- Improve performance of antenna, clip, and list @xianon
## 12.110.0 (2022/04/11)

View File

@ -1,11 +1,10 @@
# Contribution guide
We're glad you're interested in contributing Misskey! In this document you will find the information you need to contribute to the project.
> **Note**
> 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 machine 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.
** 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 machine 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.
## Roadmap
See [ROADMAP.md](./ROADMAP.md)
@ -17,9 +16,6 @@ Before creating an issue, please check the following:
- Issues should only be used to feature requests, suggestions, and bug tracking.
- Please ask questions or troubleshooting in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3).
> **Warning**
> Do not close issues that are about to be resolved. It should remain open until a commit that actually resolves it is merged.
## 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.
@ -66,28 +62,6 @@ Be willing to comment on the good points and not just the things you want fixed
- Are there any omissions or gaps?
- Does it check for anomalies?
## Deploy
The `/deploy` command by issue comment can be used to deploy the contents of a PR to the preview environment.
```
/deploy sha=<commit hash>
```
An actual domain will be assigned so you can test the federation.
## Merge
## Release
### Release Instructions
1. Commit version changes in the `develop` branch ([package.json](https://github.com/misskey-dev/misskey/blob/develop/package.json))
2. Create a release PR.
- Into `master` from `develop` branch.
- The title must be in the format `Release: x.y.z`.
- `x.y.z` is the new version you are trying to release.
3. Deploy and perform a simple QA check. Also verify that the tests passed.
4. Merge it.
5. Create a [release of GitHub](https://github.com/misskey-dev/misskey/releases)
- The target branch must be `master`
- The tag name must be the version
## Localization (l10n)
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
You can improve our translations with your Crowdin account.
@ -140,34 +114,6 @@ Misskey uses Vue(v3) as its front-end framework.
- **When creating a new component, please use the Composition API (with [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref sugar](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
## nirax
niraxは、Misskeyで使用しているオリジナルのフロントエンドルーティングシステムです。
**vue-routerから影響を多大に受けているので、まずはvue-routerについて学ぶことをお勧めします。**
### ルート定義
ルート定義は、以下の形式のオブジェクトの配列です。
``` ts
{
name?: string;
path: string;
component: Component;
query?: Record<string, string>;
loginRequired?: boolean;
hash?: string;
globalCacheKey?: string;
children?: RouteDef[];
}
```
> **Warning**
> 現状、ルートは定義された順に評価されます。
> たとえば、`/foo/:id`ルート定義の次に`/foo/bar`ルート定義がされていた場合、後者がマッチすることはありません。
### 複数のルーター
vue-routerとの最大の違いは、niraxは複数のルーターが存在することを許可している点です。
これにより、アプリ内ウィンドウでブラウザとは個別にルーティングすることなどが可能になります。
## Notes
### How to resolve conflictions occurred at yarn.lock?

View File

@ -1,5 +1,5 @@
Unless otherwise stated this repository is
Copyright © 2014-2022 syuilo and contributers
Copyright © 2014-2020 syuilo and contributers
And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE.

View File

@ -1,24 +1,28 @@
FROM node:16.15.1-bullseye AS builder
FROM node:16.14.0-alpine3.15 AS base
ARG NODE_ENV=production
ENV NODE_ENV=production
WORKDIR /misskey
ENV BUILD_DEPS autoconf automake file g++ gcc libc-dev libtool make nasm pkgconfig python3 zlib-dev git
FROM base AS builder
COPY . ./
RUN apt-get update
RUN apt-get install -y build-essential
RUN git submodule update --init
RUN yarn install
RUN yarn build
RUN rm -rf .git
RUN apk add --no-cache $BUILD_DEPS && \
git submodule update --init && \
yarn install && \
yarn build && \
rm -rf .git
FROM node:16.15.1-bullseye-slim AS runner
FROM base AS runner
WORKDIR /misskey
RUN apk add --no-cache \
ffmpeg \
tini
RUN apt-get update
RUN apt-get install -y ffmpeg tini
ENTRYPOINT ["/sbin/tini", "--"]
COPY --from=builder /misskey/node_modules ./node_modules
COPY --from=builder /misskey/built ./built
@ -27,6 +31,5 @@ COPY --from=builder /misskey/packages/backend/built ./packages/backend/built
COPY --from=builder /misskey/packages/client/node_modules ./packages/client/node_modules
COPY . ./
ENV NODE_ENV=production
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["npm", "run", "migrateandstart"]

173
README.md
View File

@ -1,29 +1,27 @@
[![Misskey](https://github.com/misskey-dev/assets/blob/main/banner.png?raw=true)](https://join.misskey.page/)
<div align="center">
<a href="https://misskey-hub.net">
<img src="./assets/title_float.svg" alt="Misskey logo" style="border-radius:50%" width="400"/>
</a>
**🌎 **[Misskey](https://misskey-hub.net/)** is an open source, decentralized social media platform that's free forever! 🚀**
**🌎 A forever evolving, interplanetary microblogging platform. 🚀**
**Misskey** is a distributed microblogging platform with advanced features such as Reactions and a highly customizable UI.
[Learn more](https://misskey-hub.net/)
---
<a href="https://misskey-hub.net/instances.html">
<img src="https://custom-icon-badges.herokuapp.com/badge/find_an-instance-acea31?logoColor=acea31&style=for-the-badge&logo=misskey&labelColor=363B40" alt="find an instance"/></a>
[✨ Find an instance](https://misskey-hub.net/instances.html)
[📦 Create your own instance](https://misskey-hub.net/docs/install.html)
[🛠️ Contribute](./CONTRIBUTING.md)
[🚀 Join the community](https://discord.gg/Wp8gVStHW3)
<a href="https://misskey-hub.net/docs/install.html">
<img src="https://custom-icon-badges.herokuapp.com/badge/create_an-instance-FBD53C?logoColor=FBD53C&style=for-the-badge&logo=server&labelColor=363B40" alt="create an instance"/></a>
<a href="./CONTRIBUTING.md">
<img src="https://custom-icon-badges.herokuapp.com/badge/become_a-contributor-A371F7?logoColor=A371F7&style=for-the-badge&logo=git-merge&labelColor=363B40" alt="become a contributor"/></a>
<a href="https://discord.gg/Wp8gVStHW3">
<img src="https://custom-icon-badges.herokuapp.com/badge/join_the-community-5865F2?logoColor=5865F2&style=for-the-badge&logo=discord&labelColor=363B40" alt="join the community"/></a>
<a href="https://www.patreon.com/syuilo">
<img src="https://custom-icon-badges.herokuapp.com/badge/become_a-patron-F96854?logoColor=F96854&style=for-the-badge&logo=patreon&labelColor=363B40" alt="become a patron"/></a>
---
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
</div>
<div>
@ -32,26 +30,139 @@
## ✨ Features
- **ActivityPub support**\
Not on Misskey? No problem! Not only can Misskey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed!
It is possible to interact with other software.
- **Reactions**\
You can add emoji reactions to any post! No longer are you bound by a like button, show everyone exactly how you feel with the tap of a button.
You can add "reactions" to each post, making it easy for you to express your feelings.
- **Drive**\
With Misskey's built in drive, you get cloud storage right in your social media, where you can upload any files, make folders, and find media from posts you've made!
An interface to manage uploaded files such as images, videos, sounds, etc.
You can also organize your favorite content into folders, making it easy to share again.
- **Rich Web UI**\
Misskey has a rich and easy to use Web UI!
It is highly customizable, from changing the layout and adding widgets to making custom themes.
Furthermore, plugins can be created using AiScript, an original programming language.
- And much more...
Misskey has a rich WebUI by default.
It is highly customizable by flexibly changing the layout and installing various widgets and themes.
Furthermore, plug-ins can be created using AiScript, a original programming language.
- and more...
</div>
<div style="clear: both;"></div>
## Documentation
Misskey Documentation can be found at [Misskey Hub](https://misskey-hub.net/), some of the links and graphics above also lead to specific portions of it.
## Sponsors
<div align="center">
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank"><img src="https://rss3.mypinata.cloud/ipfs/QmUG6H3Z7D5P511shn7sB4CPmpjH5uZWu4m5mWX7U3Gqbu" alt="RSS3" height="60"></a>
</div>
## Backers
<!-- PATREON_START -->
<table><tr>
<td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td>
<td><img src="https://c8.patreon.com/2/200/27956229" alt="Oliver Maximilian Seidel" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan " width="100"></td>
<td><img src="https://c8.patreon.com/2/200/27648259" alt="みなしま " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24430516/b1964ac5b9f746d2a12ff53dbc9aa40a/1.jpg?token-time=2145916800&token-hash=bmEiMGYpp3bS7hCCbymjGGsHBZM3AXuBOFO3Kro37PU%3D" alt="Eduardo Quiros" width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/user?u=20832595">Roujo </a></td>
<td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td>
<td><a href="https://www.patreon.com/weepjp">weepjp </a></td>
<td><a href="https://www.patreon.com/user?u=19045173">kiritan </a></td>
<td><a href="https://www.patreon.com/user?u=27648259">みなしま </a></td>
<td><a href="https://www.patreon.com/user?u=24430516">Eduardo Quiros</a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/14215107/1cbe1912c26143919fa0faca16f12ce1/4.jpg?token-time=2145916800&token-hash=BslMqDjTjz8KYANLvxL87agHTugHa0dMPUzT-hwR6Vk%3D" alt="Nesakko" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/776209" alt="Demogrognard" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3075183/c2ae575c604e420297f000ccc396e395/1.jpeg?token-time=2145916800&token-hash=O9qmPtpo6wWb0OuvnkEekhk_1WO2MTdytLr7ZgsAr80%3D" alt="Liaizon Wakest" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/23915207/25428766ecd745478e600b3d7f871eb2/1.png?token-time=2145916800&token-hash=urCLLA4KjJZX92Y1CxcBP4d8bVTHGkiaPnQZp-Tqz68%3D" alt="kabo2468y " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8249688/4aacf36b6b244ab1bc6653591b6640df/2.png?token-time=2145916800&token-hash=1ZEf2w6L34253cZXS_HlVevLEENWS9QqrnxGUAYblPo%3D" alt="AureoleArk " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon " width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/36813045/29876ea679d443bcbba3c3f16edab8c2/2.jpeg?token-time=2145916800&token-hash=YCKWnIhrV9rjUCV9KqtJnEqjy_uGYF3WMXftjUdpi7o%3D" alt="Wataru Manji (manji0)" width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/Nesakko">Nesakko</a></td>
<td><a href="https://www.patreon.com/user?u=776209">Demogrognard</a></td>
<td><a href="https://www.patreon.com/wakest">Liaizon Wakest</a></td>
<td><a href="https://www.patreon.com/user?u=557245">mkatze </a></td>
<td><a href="https://www.patreon.com/user?u=23915207">kabo2468y </a></td>
<td><a href="https://www.patreon.com/AureoleArk">AureoleArk </a></td>
<td><a href="https://www.patreon.com/osapon">osapon </a></td>
<td><a href="https://www.patreon.com/user?u=16869916">見当かなみ </a></td>
<td><a href="https://www.patreon.com/user?u=36813045">Wataru Manji (manji0)</a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61 " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5788159/af42076ab3354bb49803cfba65f94bee/1.jpg?token-time=2145916800&token-hash=iSaxp_Yr2-ZiU2YVi9rcpZZj9mj3UvNSMrZr4CU4qtA%3D" alt="mewl hayabusa" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28779508/3cd4cb7f017f4ee0864341e3464d42f9/1.png?token-time=2145916800&token-hash=eGQtR15be44kgvh8fw2Jx8Db4Bv15YBp2ldxh0EKRxA%3D" alt="S Y" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/38837364/9421361c54c645ac8f5fc442a40c32e9/1.png?token-time=2145916800&token-hash=TUZB48Nem3BeUPLBH6s3P6WyKBnQOy0xKaDSTBBUNzA%3D" alt="xianon" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26340354/08834cf767b3449e93098ef73a434e2f/2.png?token-time=2145916800&token-hash=nyM8DnKRL8hR47HQ619mUzsqVRpkWZjgtgBU9RY15Uc%3D" alt="totokoro " width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61 </a></td>
<td><a href="https://www.patreon.com/hs_sh_net">mewl hayabusa</a></td>
<td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td>
<td><a href="https://www.patreon.com/user?u=16542964">Takumi Sugita</a></td>
<td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin </a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
<td><a href="https://www.patreon.com/user?u=38837364">xianon</a></td>
<td><a href="https://www.patreon.com/user?u=26340354">totokoro </a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5827393/59893c191dda408f9cabd0f20a3a5627/1.jpeg?token-time=2145916800&token-hash=i9N05vOph-eP1LTLb9_npATjYOpntL0ZsHNaZFSsPmE%3D" alt="motcha " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/20494440/540beaf2445f408ea6597bc61e077bb3/1.png?token-time=2145916800&token-hash=UJ0JQge64Bx9XmN_qYA1inMQhrWf4U91fqz7VAKJeSg%3D" alt="axtuki1 " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13737140/1adf7835017d479280d90fe8d30aade2/1.png?token-time=2145916800&token-hash=0pdle8h5pDZrww0BDOjdz6zO-HudeGTh36a3qi1biVU%3D" alt="Satsuki Yanagi" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpg?token-time=2145916800&token-hash=nVAntpybQrznE0rg05keLrSE6ogPKJXB13rmrJng42c%3D" alt="takimura " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13100201/fc5be4fa90444f09a9c8a06f72385272/1.png?token-time=2145916800&token-hash=i8PjlgfOB2LPEdbtWyx8ZPsBKhGcNZqcw_FQmH71UGU%3D" alt="aqz tamaina" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9109588/e3cffc48d20a4e43afe04123e696781d/3.png?token-time=2145916800&token-hash=T_VIUA0IFIbleZv4pIjiszZGnQonwn34sLCYFIhakBo%3D" alt="nafuchoco " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/619ab87cc08448439222631ebb26802f/1.gif?token-time=2145916800&token-hash=o27K7M02s1z-LkDUEO5Oa7cu-GviRXeOXxryi4o_6VU%3D" alt="Atsuko Tominaga" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/3.png?token-time=2145916800&token-hash=FTm3WVom4dJ9NwWMU4OpCL_8Yc13WiwEbKrDPyTZTPs%3D" alt="natalie" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26144593/9514b10a5c1b42a3af58621aee213d1d/1.png?token-time=2145916800&token-hash=v1PYRsjzu4c_mndN4Hvi_dlispZJsuGRCQeNS82pUSM%3D" alt="EBISUME" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo " width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/user?u=19356899">sheeta.s </a></td>
<td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td>
<td><a href="https://www.patreon.com/user?u=20494440">axtuki1 </a></td>
<td><a href="https://www.patreon.com/user?u=13737140">Satsuki Yanagi</a></td>
<td><a href="https://www.patreon.com/takimura">takimura </a></td>
<td><a href="https://www.patreon.com/aqz">aqz tamaina</a></td>
<td><a href="https://www.patreon.com/user?u=9109588">nafuchoco </a></td>
<td><a href="https://www.patreon.com/user?u=16900731">Atsuko Tominaga</a></td>
<td><a href="https://www.patreon.com/user?u=4389829">natalie</a></td>
<td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td>
<td><a href="https://www.patreon.com/noellabo">noellabo </a></td>
</tr></table>
<table><tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24641572/b4fd175424814f15b0ca9178d2d2d2e4/1.png?token-time=2145916800&token-hash=e2fyqdbuJbpCckHcwux7rbuW6OPkKdERcus0u2wIEWU%3D" alt="uroco @99" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/14661394" alt="Chandler " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1.png?token-time=2145916800&token-hash=hBayGfOmQH3kRMdNnDe4oCZD_9fsJWSt29xXR3KRMVk%3D" alt="Nokotaro Takeda" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/23932002" alt="nenohi " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9481273/7fa89168e72943859c3d3c96e424ed31/4.jpeg?token-time=2145916800&token-hash=5w1QV1qXe-NdWbdFmp1H7O_-QBsSiV0haumk3XTHIEg%3D" alt="Efertone " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1.jpeg?token-time=2145916800&token-hash=vGe7wXGqmA8Q7m-kDNb6fyGdwk-Dxk4F-ut8ZZu51RM%3D" alt="Takashi Shibuya" width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/Corset">CG </a></td>
<td><a href="https://www.patreon.com/hekovic">Hekovic </a></td>
<td><a href="https://www.patreon.com/user?u=24641572">uroco @99</a></td>
<td><a href="https://www.patreon.com/user?u=14661394">Chandler </a></td>
<td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td>
<td><a href="https://www.patreon.com/user?u=23932002">nenohi </a></td>
<td><a href="https://www.patreon.com/efertone">Efertone </a></td>
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table>
**Last updated:** Sun, 26 Jul 2020 07:00:10 UTC
<!-- PATREON_END -->
[backer-url]: #backers
[backer-badge]: https://opencollective.com/misskey/backers/badge.svg
[backers-image]: https://opencollective.com/misskey/backers.svg
[sponsor-url]: #sponsors
[sponsor-badge]: https://opencollective.com/misskey/sponsors/badge.svg
[sponsors-image]: https://opencollective.com/misskey/sponsors.svg
[support-url]: https://opencollective.com/misskey#support
[syuilo-link]: https://syuilo.com
[syuilo-icon]: https://avatars2.githubusercontent.com/u/4439005?v=3&s=70

View File

@ -6,23 +6,19 @@ Also, the later tasks are more indefinite and are subject to change as developme
This is the phase we are at now. We need to make a high-maintenance environment that can withstand future development.
- Make the number of type errors zero (backend)
- Probably need to switch some libraries to others that make it difficult to reduce type errors
- e.g. koa to fastify https://github.com/misskey-dev/misskey/issues/7537
- Probably need to switch some libraries to others that make it difficult to reduce type errors
- e.g. koa to fastify https://github.com/misskey-dev/misskey/issues/7537
- Improve CI
- Fix tests
- mocha, jest, etc. do not support the combination of `TypeScript + ESM + Path alias`, and the tests currently do not work.
- Fix random test failures - https://github.com/misskey-dev/misskey/issues/7985 and https://github.com/misskey-dev/misskey/issues/7986
- Add more tests
- May need to implement a mechanism that allows for DI
- https://github.com/misskey-dev/misskey/pull/9085
- Measure coverage
- https://github.com/misskey-dev/misskey/pull/9081
- Fix tests
- mocha, jest, etc. do not support the combination of `TypeScript + ESM + Path alias`, and the tests currently do not work.
- Fix random test failures - https://github.com/misskey-dev/misskey/issues/7985 and https://github.com/misskey-dev/misskey/issues/7986
- Add more tests
- May need to implement a mechanism that allows for DI
- Improve documentation
## (2) Improve functionality
Once Phase 1 is complete and an environment conducive to the development of a stable system is in place, the implementation of new functions can begin gradually.
- Improve features for moderation
- OAuth2 support https://github.com/misskey-dev/misskey/issues/8262
- GraphQL support?

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -1,3 +0,0 @@
apiVersion: v2
name: misskey
version: 0.0.0

View File

@ -1,165 +0,0 @@
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey configuration
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────
# Final accessible URL seen by a user.
# url: https://example.tld/
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# URL SETTINGS AFTER THAT!
# ┌───────────────────────┐
#───┘ Port and TLS settings └───────────────────────────────────
#
# Misskey supports two deployment options for public.
#
# Option 1: With Reverse Proxy
#
# +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
# +------+ |+-------------+ +----------------+|
# +---------------------------------------+
#
# You need to setup reverse proxy. (eg. nginx)
# You do not define 'https' section.
# Option 2: Standalone
#
# +- https://example.tld/ -+
# +------+ | +---------------+ |
# | User | ---> | | Misskey (443) | |
# +------+ | +---------------+ |
# +------------------------+
#
# You need to run Misskey as root.
# You need to set Certificate in 'https' section.
# To use option 1, uncomment below line.
port: 3000 # A port that your Misskey server should listen.
# To use option 2, uncomment below lines.
#port: 443
#https:
# # path for certification
# key: /etc/letsencrypt/live/example.tld/privkey.pem
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
db:
host: localhost
port: 5432
# Database name
db: misskey
# Auth
user: example-misskey-user
pass: example-misskey-pass
# Whether disable Caching queries
#disableCache: true
# Extra Connection options
#extra:
# ssl: true
# ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────
redis:
host: localhost
port: 6379
#pass: example-pass
#prefix: example-prefix
#db: 1
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
#elasticsearch:
# host: localhost
# port: 9200
# ssl: false
# user:
# pass:
# ┌───────────────┐
#───┘ ID generation └───────────────────────────────────────────
# You can select the ID generation method.
# You don't usually need to change this setting, but you can
# change it according to your preferences.
# Available methods:
# aid ... Short, Millisecond accuracy
# meid ... Similar to ObjectID, Millisecond accuracy
# ulid ... Millisecond accuracy
# objectid ... This is left for backward compatibility
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# ID SETTINGS AFTER THAT!
id: "aid"
# ┌─────────────────────┐
#───┘ Other configuration └─────────────────────────────────────
# Whether disable HSTS
#disableHsts: true
# Number of worker processes
#clusterLimit: 1
# Job concurrency per worker
# deliverJobConcurrency: 128
# inboxJobConcurrency: 16
# Job rate limiter
# deliverJobPerSec: 128
# inboxJobPerSec: 16
# Job attempts
# deliverJobMaxAttempts: 12
# inboxJobMaxAttempts: 8
# IP address family used for outgoing request (ipv4, ipv6 or dual)
#outgoingAddressFamily: ipv4
# Syslog option
#syslog:
# host: localhost
# port: 514
# Proxy for HTTP/HTTPS
#proxy: http://127.0.0.1:3128
#proxyBypassHosts: [
# 'example.com',
# '192.0.2.8'
#]
# Proxy for SMTP/SMTPS
#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4
#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5
# Media Proxy
#mediaProxy: https://example.com/proxy
# Sign to ActivityPub GET request (default: false)
#signToActivityPubGet: true
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]
# Upload or download file size limits (bytes)
#maxFileSize: 262144000

View File

@ -1,8 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "misskey.fullname" . }}-configuration
data:
default.yml: |-
{{ .Files.Get "files/default.yml"|nindent 4 }}
url: {{ .Values.url }}

View File

@ -1,47 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "misskey.fullname" . }}
labels:
{{- include "misskey.labels" . | nindent 4 }}
spec:
selector:
matchLabels:
{{- include "misskey.selectorLabels" . | nindent 6 }}
replicas: 1
template:
metadata:
labels:
{{- include "misskey.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: misskey
image: {{ .Values.image }}
env:
- name: NODE_ENV
value: {{ .Values.environment }}
volumeMounts:
- name: {{ include "misskey.fullname" . }}-configuration
mountPath: /misskey/.config
readOnly: true
ports:
- containerPort: 3000
- name: postgres
image: postgres:14-alpine
env:
- name: POSTGRES_USER
value: "example-misskey-user"
- name: POSTGRES_PASSWORD
value: "example-misskey-pass"
- name: POSTGRES_DB
value: "misskey"
ports:
- containerPort: 5432
- name: redis
image: redis:alpine
ports:
- containerPort: 6379
volumes:
- name: {{ include "misskey.fullname" . }}-configuration
configMap:
name: {{ include "misskey.fullname" . }}-configuration

View File

@ -1,14 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "misskey.fullname" . }}
annotations:
dev.okteto.com/auto-ingress: "true"
spec:
type: ClusterIP
ports:
- port: 3000
protocol: TCP
name: http
selector:
{{- include "misskey.selectorLabels" . | nindent 4 }}

View File

@ -1,62 +0,0 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "misskey.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "misskey.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "misskey.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "misskey.labels" -}}
helm.sh/chart: {{ include "misskey.chart" . }}
{{ include "misskey.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "misskey.selectorLabels" -}}
app.kubernetes.io/name: {{ include "misskey.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "misskey.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "misskey.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@ -1,3 +0,0 @@
url: https://example.tld/
image: okteto.dev/misskey
environment: production

View File

@ -1,12 +0,0 @@
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
return require('./cypress/plugins/index.js')(on, config)
},
baseUrl: 'http://localhost:61812',
},
})

3
cypress.json Normal file
View File

@ -0,0 +1,3 @@
{
"baseUrl": "http://localhost:61812"
}

View File

@ -1,65 +0,0 @@
describe('After user signed in', () => {
beforeEach(() => {
cy.resetState();
cy.viewport('macbook-16');
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.login('alice', 'alice1234');
});
afterEach(() => {
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
// waitを入れることでそれを防止できる
cy.wait(1000);
});
it('widget edit toggle is visible', () => {
cy.get('.mk-widget-edit').should('be.visible');
});
it('widget select should be visible in edit mode', () => {
cy.get('.mk-widget-edit').click();
cy.get('.mk-widget-select').should('be.visible');
});
it('first widget should be removed', () => {
cy.get('.mk-widget-edit').click();
cy.get('.customize-container:first-child .remove._button').click();
cy.get('.customize-container').should('have.length', 2);
});
function buildWidgetTest(widgetName) {
it(`${widgetName} widget should get added`, () => {
cy.get('.mk-widget-edit').click();
cy.get('.mk-widget-select select').select(widgetName, { force: true });
cy.get('.bg._modalBg.transparent').click({ multiple: true, force: true });
cy.get('.mk-widget-add').click({ force: true });
cy.get(`.mkw-${widgetName}`).should('exist');
});
}
buildWidgetTest('memo');
buildWidgetTest('notifications');
buildWidgetTest('timeline');
buildWidgetTest('calendar');
buildWidgetTest('rss');
buildWidgetTest('trends');
buildWidgetTest('clock');
buildWidgetTest('activity');
buildWidgetTest('photos');
buildWidgetTest('digitalClock');
buildWidgetTest('federation');
buildWidgetTest('postForm');
buildWidgetTest('slideshow');
buildWidgetTest('serverMetric');
buildWidgetTest('onlineUsers');
buildWidgetTest('jobQueue');
buildWidgetTest('button');
buildWidgetTest('aiscript');
buildWidgetTest('aichan');
});

View File

@ -1,6 +1,8 @@
describe('Before setup instance', () => {
beforeEach(() => {
cy.resetState();
cy.request('POST', '/api/reset-db').as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);
});
afterEach(() => {
@ -30,10 +32,15 @@ describe('Before setup instance', () => {
describe('After setup instance', () => {
beforeEach(() => {
cy.resetState();
cy.request('POST', '/api/reset-db').as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
cy.request('POST', '/api/admin/accounts/create', {
username: 'admin',
password: 'pass',
}).its('body').as('admin');
});
afterEach(() => {
@ -63,13 +70,21 @@ describe('After setup instance', () => {
describe('After user signup', () => {
beforeEach(() => {
cy.resetState();
cy.request('POST', '/api/reset-db').as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
cy.request('POST', '/api/admin/accounts/create', {
username: 'admin',
password: 'pass',
}).its('body').as('admin');
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.request('POST', '/api/signup', {
username: 'alice',
password: 'alice1234',
}).its('body').as('alice');
});
afterEach(() => {
@ -114,15 +129,31 @@ describe('After user signup', () => {
describe('After user singed in', () => {
beforeEach(() => {
cy.resetState();
cy.request('POST', '/api/reset-db').as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
cy.request('POST', '/api/admin/accounts/create', {
username: 'admin',
password: 'pass',
}).its('body').as('admin');
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.request('POST', '/api/signup', {
username: 'alice',
password: 'alice1234',
}).its('body').as('alice');
cy.login('alice', 'alice1234');
cy.visit('/');
cy.intercept('POST', '/api/signin').as('signin');
cy.get('[data-cy-signin]').click();
cy.get('[data-cy-signin-username] input').type('alice');
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
cy.wait('@signin').as('signedIn');
});
afterEach(() => {
@ -132,10 +163,12 @@ describe('After user singed in', () => {
});
it('successfully loads', () => {
cy.get('[data-cy-open-post-form]').should('be.visible');
cy.visit('/');
});
it('note', () => {
cy.visit('/');
cy.get('[data-cy-open-post-form]').click();
cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
cy.get('[data-cy-open-post-form-submit]').click();

View File

@ -23,33 +23,3 @@
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
Cypress.Commands.add('resetState', () => {
cy.window(win => {
win.indexedDB.deleteDatabase('keyval-store');
});
cy.request('POST', '/api/reset-db').as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);
});
Cypress.Commands.add('registerUser', (username, password, isAdmin = false) => {
const route = isAdmin ? '/api/admin/accounts/create' : '/api/signup';
cy.request('POST', route, {
username: username,
password: password,
}).its('body').as(username);
});
Cypress.Commands.add('login', (username, password) => {
cy.visit('/');
cy.intercept('POST', '/api/signin').as('signin');
cy.get('[data-cy-signin]').click();
cy.get('[data-cy-signin-username] input').type(username);
cy.get('[data-cy-signin-password] input').type(`${password}{enter}`);
cy.wait('@signin').as('signedIn');
});

View File

@ -9,7 +9,7 @@ services:
- redis
# - es
ports:
- "3000:3000"
- "127.0.0.1:3000:3000"
networks:
- internal_network
- external_network

View File

@ -37,6 +37,7 @@ gulp.task('copy:client:locales', cb => {
gulp.task('build:backend:script', () => {
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js'])
.pipe(replace('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({
toplevel: true

View File

@ -52,7 +52,6 @@ searchUser: "ابحث عن مستخدمين"
reply: "رد"
loadMore: "عرض المزيد"
showMore: "عرض المزيد"
showLess: "اغلق"
youGotNewFollower: "يتابعك"
receiveFollowRequest: "تلقيت طلب متابعة"
followRequestAccepted: "قُبل طلب المتابعة"
@ -142,7 +141,7 @@ flagAsBotDescription: "فعّل هذا الخيار إذا كان هذا الح
flagAsCat: "علّم هذا الحساب كحساب قط"
flagAsCatDescription: "فعّل هذا الخيار لوضع علامة على الحساب لتوضيح أنه حساب قط."
flagShowTimelineReplies: "أظهر التعليقات في الخيط الزمني"
flagShowTimelineRepliesDescription: "يظهر الردود في الخيط الزمني"
flagShowTimelineRepliesDescription: "يظهر الردود في الخط الزمني"
autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة"
addAccount: "أضف حساباً"
loginFailed: "فشل الولوج"
@ -313,12 +312,12 @@ dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "الصفحات"
integration: "التكامل"
integration: "دمج"
connectService: "اتصل"
disconnectService: "اقطع الاتصال"
enableLocalTimeline: "تفعيل الخيط المحلي"
enableGlobalTimeline: "تفعيل الخيط الزمني الشامل"
disablingTimelinesInfo: "سيتمكن المديرون والمشرفون من الوصول إلى كل الخيوط الزمنية حتى وإن لم تفعّل."
disablingTimelinesInfo: "سيتمكن المديرون والمشرفون من الوصول إلى كل الخطوط الزمنية حتى وإن لم تفعّل."
registration: "إنشاء حساب"
enableRegistration: "تفعيل إنشاء الحسابات الجديدة"
invite: "دعوة"
@ -533,7 +532,6 @@ poll: "استطلاع رأي"
useCw: "إخفاء المحتوى"
enablePlayer: "افتح مشغل الفيديو"
disablePlayer: "أغلق مشغل الفيديو"
expandTweet: "وسّع التغريدة"
themeEditor: "مصمم القوالب"
description: "الوصف"
describeFile: "أضف تعليقًا توضيحيًا"
@ -637,7 +635,6 @@ yes: "نعم"
no: "لا"
driveFilesCount: "عدد الملفات في قرص التخزين"
driveUsage: "المستغل من قرص التخزين"
noCrawle: "ارفض فهرسة زاحف الويب"
noCrawleDescription: "يطلب من محركات البحث ألّا يُفهرسوا ملفك الشخصي وملاحظات وصفحاتك وما شابه."
alwaysMarkSensitive: "علّم افتراضيًا جميع ملاحظاتي كذات محتوى حساس"
loadRawImages: "حمّل الصور الأصلية بدلًا من المصغرات"
@ -804,12 +801,6 @@ oneHour: "ساعة"
oneDay: "يوم"
oneWeek: "أسبوع"
failedToFetchAccountInformation: "تعذر جلب معلومات الحساب"
file: "الملفات"
reverse: "اقلب"
colored: "ملوّن"
label: "التسمية"
localOnly: "المحلي فقط"
account: "الحسابات"
_emailUnavailable:
used: "هذا البريد الإلكتروني مستخدم"
format: "صيغة البريد الإلكتروني غير صالحة"
@ -887,11 +878,9 @@ _mfm:
center: "وسط"
centerDescription: "يمركز المحتوى في الوَسَط."
quote: "اقتبس"
quoteDescription: "يعرض المحتوى كاقتباس"
emoji: "إيموجي مخصص"
emojiDescription: "إحاطة اسم الإيموجي بنقطتي تفسير سيستبدله بصورة الإيموجي."
search: "البحث"
searchDescription: "يعرض نصًا في صندوق البحث"
flip: "اقلب"
flipDescription: "يقلب المحتوى عموديًا أو أفقيًا"
jelly: "تأثير (هلام)"
@ -1014,6 +1003,7 @@ _sfx:
antenna: "الهوائيات"
channel: "إشعارات القنات"
_ago:
unknown: "مجهول"
future: "المستقبَل"
justNow: "اللحظة"
secondsAgo: "منذ {n} ثوانٍ"
@ -1040,12 +1030,12 @@ _tutorial:
step3_3: "املأ النموذج وانقر الزرّ الموجود في أعلى اليمين للإرسال."
step3_4: "ليس لديك ما تقوله؟ إذا اكتب \"بدأتُ استخدم ميسكي\"."
step4_1: "هل نشرت ملاحظتك الأولى؟"
step4_2: "مرحى! يمكنك الآن رؤية ملاحظتك في الخيط الزمني."
step5_1: "والآن، لنجعل الخيط الزمني أكثر حيوية وذلك بمتابعة بعض المستخدمين."
step4_2: "مرحى! يمكنك الآن رؤية ملاحظتك في الخط الزمني."
step5_1: "والآن، لنجعل الخط الزمني أكثر حيوية وذلك بمتابعة بعض المستخدمين."
step5_2: "تعرض صفحة {features} الملاحظات المتداولة في هذا المثيل ويتيح لك {Explore} العثور على المستخدمين الرائدين. اعثر على الأشخاص الذين يثيرون إهتمامك وتابعهم!"
step5_3: "لمتابعة مستخدمين ادخل ملفهم الشخصي بالنقر على صورتهم الشخصية ثم اضغط زر 'تابع'."
step5_4: "إذا كان لدى المستخدم رمز قفل بجوار اسمه ، وجب عليك انتظاره ليقبل طلب المتابعة يدويًا."
step6_1: "الآن ستتمكن من رؤية ملاحظات المستخدمين المتابَعين في الخيط الزمني."
step6_1: "الآن ستتمكن من رؤية ملاحظات المستخدمين المتابَعين في الخط الزمني."
step6_2: "يمكنك التفاعل بسرعة مع الملاحظات عن طريق إضافة \"تفاعل\"."
step6_3: "لإضافة تفاعل لملاحظة ، انقر فوق علامة \"+\" أسفل للملاحظة واختر الإيموجي المطلوب."
step7_1: "مبارك ! أنهيت الدورة التعليمية الأساسية لاستخدام ميسكي."
@ -1211,13 +1201,8 @@ _charts:
_instanceCharts:
requests: "الطلبات"
users: "تباين عدد المستخدمين"
usersTotal: "تباين عدد المستخدمين"
notes: "تباين عدد الملاحظات"
notesTotal: "تباين عدد الملاحظات"
ff: "تباين عدد حسابات المتابَعة/المتابِعة"
ffTotal: "تباين عدد حسابات المتابَعة/المتابِعة"
files: "تباين عدد الملفات"
filesTotal: "تباين عدد الملفات"
_timelines:
home: "الرئيسي"
local: "المحلي"
@ -1336,7 +1321,6 @@ _pages:
random: "عشوائي"
value: "القيم"
fn: "دوال"
text: "إجراءات على النصوص"
convert: "تحويل"
list: "القوائم"
blocks:
@ -1517,10 +1501,6 @@ _notification:
followRequestAccepted: "طلبات المتابعة المقبولة"
groupInvited: "دعوات الفريق"
app: "إشعارات التطبيقات المرتبطة"
_actions:
followBack: "تابعك بالمثل"
reply: "رد"
renote: "أعد النشر"
_deck:
alwaysShowMainColumn: "أظهر العمود الرئيسي دائمًا"
columnAlign: "حاذِ الأعمدة"

View File

@ -52,7 +52,6 @@ searchUser: "ব্যবহারকারী খুঁজুন..."
reply: "জবাব"
loadMore: "আরও দেখুন"
showMore: "আরও দেখুন"
showLess: "বন্ধ"
youGotNewFollower: "আপনাকে অনুসরণ করছে"
receiveFollowRequest: "অনুসরণ করার জন্য অনুরোধ পাওয়া গেছে"
followRequestAccepted: "অনুসরণ করার অনুরোধ গৃহীত হয়েছে"
@ -832,24 +831,11 @@ themeColor: "থিমের রং"
size: "আকার"
numberOfColumn: "কলামের সংখ্যা"
searchByGoogle: "গুগল"
instanceDefaultLightTheme: "ইন্সট্যান্সের ডিফল্ট লাইট থিম"
instanceDefaultDarkTheme: "ইন্সট্যান্সের ডিফল্ট ডার্ক থিম"
instanceDefaultThemeDescription: "অবজেক্ট ফরম্যাটে থিম কোড লিখুন"
mutePeriod: "মিউটের সময়কাল"
indefinitely: "অনির্দিষ্ট"
tenMinutes: "১০ মিনিট"
oneHour: "১ ঘণ্টা"
oneDay: "একদিন"
oneWeek: "এক সপ্তাহ"
reflectMayTakeTime: "এটির কাজ দেখা যেতে কিছুটা সময় লাগতে পারে।"
failedToFetchAccountInformation: "অ্যাকাউন্টের তথ্য উদ্ধার করা যায়নি"
rateLimitExceeded: "রেট লিমিট ছাড়িয়ে গেছে "
file: "ফাইলগুলি"
reverse: "উল্টান"
colored: "রঙ্গিন"
label: "লেবেল"
localOnly: "শুধুমাত্র লোকাল"
account: "অ্যাকাউন্টগুলি"
_emailUnavailable:
used: "এই ইমেইল ঠিকানাটি ইতোমধ্যে ব্যবহৃত হয়েছে"
format: "এই ইমেল ঠিকানাটি সঠিকভাবে লিখা হয়নি"
@ -1095,6 +1081,7 @@ _sfx:
antenna: "অ্যান্টেনাগুলি"
channel: "চ্যানেলের বিজ্ঞপ্তি"
_ago:
unknown: "অজানা"
future: "ভবিষ্যৎ"
justNow: "এইমাত্র"
secondsAgo: "{n} সেকেন্ড আগে"
@ -1138,7 +1125,6 @@ _2fa:
registerKey: "সিকিউরিটি কী নিবন্ধন করুন"
step1: "প্রথমে, আপনার ডিভাইসে {a} বা {b} এর মতো একটি অথেনটিকেশন অ্যাপ ইনস্টল করুন৷"
step2: "এরপরে, অ্যাপের সাহায্যে প্রদর্শিত QR কোডটি স্ক্যান করুন।"
step2Url: "ডেস্কটপ অ্যাপে, নিম্নলিখিত URL লিখুন:"
step3: "অ্যাপে প্রদর্শিত টোকেনটি লিখুন এবং আপনার কাজ শেষ।"
step4: "আপনাকে এখন থেকে লগ ইন করার সময়, এইভাবে টোকেন লিখতে হবে।"
securityKeyInfo: "আপনি একটি হার্ডওয়্যার সিকিউরিটি কী ব্যবহার করে লগ ইন করতে পারেন যা FIDO2 বা ডিভাইসের ফিঙ্গারপ্রিন্ট সেন্সর বা পিন সমর্থন করে৷"
@ -1622,8 +1608,6 @@ _notification:
youReceivedFollowRequest: "অনুসরণ করার জন্য অনুরোধ পাওয়া গেছে"
yourFollowRequestAccepted: "আপনার অনুসরণ করার অনুরোধ গৃহীত হয়েছে"
youWereInvitedToGroup: "আপনি একটি গ্রুপে আমন্ত্রিত হয়েছেন"
pollEnded: "পোলের ফলাফল দেখা যাবে"
emptyPushNotificationMessage: "আপডেট করা পুশ বিজ্ঞপ্তি"
_types:
all: "সকল"
follow: "অনুসরণ করা হচ্ছে"
@ -1633,20 +1617,16 @@ _notification:
quote: "উদ্ধৃতি"
reaction: "প্রতিক্রিয়া"
pollVote: "পোলে ভোট আছে"
pollEnded: "পোল শেষ"
receiveFollowRequest: "প্রাপ্ত অনুসরণের অনুরোধসমূহ"
followRequestAccepted: "গৃহীত অনুসরণের অনুরোধসমূহ"
groupInvited: "গ্রুপের আমন্ত্রনসমূহ"
app: "লিঙ্ক করা অ্যাপ থেকে বিজ্ঞপ্তি"
_actions:
followBack: "ফলো ব্যাক করেছে"
reply: "জবাব"
renote: "রিনোট"
_deck:
alwaysShowMainColumn: "সর্বদা মেইন কলাম দেখান"
columnAlign: "কলাম সাজান"
columnMargin: "কলামের মধ্যবর্তী মার্জিন"
columnHeaderHeight: "কলামের হেডারের উচ্চতা"
addColumn: "কলাম যুক্ত করুন"
configureColumn: "কলাম সেটিংস"
swapLeft: "বামে সরান"
swapRight: "ডানে সরান"
swapUp: "উপরে উঠান"

View File

@ -1,8 +1,6 @@
---
_lang_: "Català"
headlineMisskey: "Una xarxa connectada per notes"
introMisskey: "Benvingut! Misskey és un servei de microblogging descentralitzat de codi obert.\nCrea \"notes\" per compartir els teus pensaments amb tots els que t'envolten. 📡\nAmb \"reaccions\", també pots expressar ràpidament els teus sentiments sobre les notes de tothom. 👍\nExplorem un món nou! 🚀"
monthAndDay: "{day}/{month}"
search: "Cercar"
notifications: "Notificacions"
username: "Nom d'usuari"
@ -12,186 +10,17 @@ fetchingAsApObject: "Cercant en el Fediverse..."
ok: "OK"
gotIt: "Ho he entès!"
cancel: "Cancel·lar"
enterUsername: "Introdueix el teu nom d'usuari"
renotedBy: "Resignat per {usuari}"
noNotes: "Cap nota"
noNotifications: "Cap notificació"
instance: "Instàncies"
settings: "Preferències"
basicSettings: "Configuració bàsica"
otherSettings: "Configuració avançada"
openInWindow: "Obrir en una nova finestra"
profile: "Perfil"
timeline: "Línia de temps"
noAccountDescription: "Aquest usuari encara no ha escrit la seva biografia."
login: "Iniciar sessió"
loggingIn: "Identificant-se"
logout: "Tancar la sessió"
signup: "Registrar-se"
uploading: "Pujant..."
save: "Desar"
users: "Usuaris"
addUser: "Afegir un usuari"
favorite: "Afegir a preferits"
favorites: "Favorits"
unfavorite: "Eliminar dels preferits"
favorited: "Afegit als preferits."
alreadyFavorited: "Ja s'ha afegit als preferits."
cantFavorite: "No s'ha pogut afegir als preferits."
pin: "Fixar al perfil"
unpin: "Para de fixar del perfil"
copyContent: "Copiar el contingut"
copyLink: "Copiar l'enllaç"
delete: "Eliminar"
deleteAndEdit: "Esborrar i editar"
deleteAndEditConfirm: "Estàs segur que vols suprimir aquesta nota i editar-la? Perdràs totes les reaccions, notes i respostes."
addToList: "Afegir a una llista"
sendMessage: "Enviar un missatge"
copyUsername: "Copiar nom d'usuari"
searchUser: "Cercar usuaris"
reply: "Respondre"
loadMore: "Carregar més"
showMore: "Veure més"
youGotNewFollower: "t'ha seguit"
receiveFollowRequest: "Sol·licitud de seguiment rebuda"
followRequestAccepted: "Sol·licitud de seguiment acceptada"
mention: "Menció"
mentions: "Mencions"
directNotes: "Notes directes"
importAndExport: "Importar / Exportar"
import: "Importar"
export: "Exportar"
files: "Fitxers"
download: "Baixar"
driveFileDeleteConfirm: "Estàs segur que vols suprimir el fitxer \"{name}\"? Les notes associades a aquest fitxer adjunt també se suprimiran."
unfollowConfirm: "Estàs segur que vols deixar de seguir {name}?"
exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà a la teva unitat un cop completat."
importRequested: "Has sol·licitat una importació. Això pot trigar una estona."
lists: "Llistes"
noLists: "No tens cap llista"
note: "Nota"
notes: "Notes"
following: "Seguint"
followers: "Seguidors"
followsYou: "Et segueix"
createList: "Crear llista"
manageLists: "Gestionar les llistes"
error: "Error"
somethingHappened: "S'ha produït un error"
retry: "Torna-ho a intentar"
pageLoadError: "S'ha produït un error en carregar la pàgina"
pageLoadErrorDescription: "Això normalment es deu a errors de xarxa o a la memòria cau del navegador. Prova d'esborrar la memòria cau i torna-ho a provar després d'esperar una estona."
serverIsDead: "Aquest servidor no respon. Espera una estona i torna-ho a provar."
youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar el vostre client."
enterListName: "Introdueix un nom per a la llista"
privacy: "Privadesa"
makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació"
defaultNoteVisibility: "Visibilitat per defecte"
follow: "Seguint"
followRequest: "Enviar la sol·licitud de seguiment"
followRequests: "Sol·licituds de seguiment"
unfollow: "Deixar de seguir"
followRequestPending: "Sol·licituds de seguiment pendents"
enterEmoji: "Introduir un emoji"
renote: "Renotar"
unrenote: "Anul·lar renota"
renoted: "Renotat."
cantRenote: "Aquesta publicació no pot ser renotada."
cantReRenote: "Impossible renotar una renota."
quote: "Citar"
pinnedNote: "Nota fixada"
pinned: "Fixar al perfil"
you: "Tu"
clickToShow: "Fes clic per mostrar"
sensitive: "NSFW"
add: "Afegir"
reaction: "Reaccions"
reactionSetting: "Reaccions a mostrar al selector de reaccions"
reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem \"+\" per afegir."
rememberNoteVisibility: "Recorda la configuració de visibilitat de les notes"
attachCancel: "Eliminar el fitxer adjunt"
markAsSensitive: "Marcar com a NSFW"
unmarkAsSensitive: "Deixar de marcar com a sensible"
enterFileName: "Defineix nom del fitxer"
mute: "Silencia"
unmute: "Deixa de silenciar"
block: "Bloqueja"
unblock: "Desbloqueja"
suspend: "Suspèn"
unsuspend: "Deixa de suspendre"
instances: "Instàncies"
remove: "Eliminar"
nsfw: "NSFW"
pinnedNotes: "Nota fixada"
userList: "Llistes"
smtpUser: "Nom d'usuari"
smtpPass: "Contrasenya"
user: "Usuaris"
searchByGoogle: "Cercar"
file: "Fitxers"
_email:
_follow:
title: "t'ha seguit"
_mfm:
mention: "Menció"
quote: "Citar"
search: "Cercar"
_theme:
keys:
mention: "Menció"
renote: "Renotar"
_sfx:
note: "Notes"
notification: "Notificacions"
_2fa:
step2Url: "També pots inserir aquest enllaç i utilitzes una aplicació d'escriptori:"
_widgets:
notifications: "Notificacions"
timeline: "Línia de temps"
_cw:
show: "Carregar més"
_visibility:
followers: "Seguidors"
_profile:
username: "Nom d'usuari"
_exportOrImport:
followingList: "Seguint"
muteList: "Silencia"
blockingList: "Bloqueja"
userLists: "Llistes"
_pages:
script:
categories:
list: "Llistes"
blocks:
_join:
arg1: "Llistes"
_randomPick:
arg1: "Llistes"
_dailyRandomPick:
arg1: "Llistes"
_seedRandomPick:
arg2: "Llistes"
_pick:
arg1: "Llistes"
_listLen:
arg1: "Llistes"
types:
array: "Llistes"
_notification:
youWereFollowed: "t'ha seguit"
_types:
follow: "Seguint"
mention: "Menció"
renote: "Renotar"
quote: "Citar"
reaction: "Reaccions"
_actions:
reply: "Respondre"
renote: "Renotar"
_deck:
_columns:
notifications: "Notificacions"
tl: "Línia de temps"
list: "Llistes"
mentions: "Mencions"

View File

@ -52,10 +52,7 @@ searchUser: "Vyhledat uživatele"
reply: "Odpovědět"
loadMore: "Zobrazit více"
showMore: "Zobrazit více"
showLess: "Zavřít"
youGotNewFollower: "Máte nového následovníka"
receiveFollowRequest: "Žádost o sledování přijata"
followRequestAccepted: "Žádost o sledování přijata"
mention: "Zmínění"
mentions: "Zmínění"
importAndExport: "Import a export"
@ -63,9 +60,7 @@ import: "Importovat"
export: "Exportovat"
files: "Soubor(ů)"
download: "Stáhnout"
driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Poznámky, ke kterým je tento soubor připojen, budou také smazány."
unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?"
exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš Disk až bude dokončen."
importRequested: "Požádali jste o export. To může chvilku trvat."
lists: "Seznamy"
noLists: "Nemáte žádné seznamy"
@ -80,25 +75,13 @@ error: "Chyba"
somethingHappened: "Jejda. Něco se nepovedlo."
retry: "Opakovat"
pageLoadError: "Nepodařilo se načíst stránku"
serverIsDead: "Server neodpovídá. Počkejte chvíli a zkuste to znovu."
youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci klienta."
enterListName: "Jméno seznamu"
privacy: "Soukromí"
makeFollowManuallyApprove: "Žádosti o sledování vyžadují potvrzení"
defaultNoteVisibility: "Výchozí viditelnost"
follow: "Sledovaní"
followRequest: "Odeslat žádost o sledování"
followRequests: "Žádosti o sledování"
unfollow: "Přestat sledovat"
followRequestPending: "Čekající žádosti o sledování"
enterEmoji: "Vložte emoji"
renote: "Přeposlat"
unrenote: "Zrušit přeposlání"
renoted: "Přeposláno"
cantRenote: "Tento příspěvek nelze přeposlat."
cantReRenote: "Odpověď nemůže být odstraněna."
quote: "Citovat"
pinnedNote: "Připnutá poznámka"
pinned: "Připnout"
you: "Vy"
clickToShow: "Klikněte pro zobrazení"
@ -139,8 +122,6 @@ flagAsBot: "Tento účet je bot"
flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím s ostatními boty a upraví Misskey systém aby se choval k tomuhle účtu jako bot."
flagAsCat: "Tenhle účet je kočka"
flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka."
flagShowTimelineReplies: "Zobrazovat odpovědi na časové ose"
flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na poznámky jiných uživatelů na vaší časové ose."
autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete"
addAccount: "Přidat účet"
loginFailed: "Přihlášení se nezdařilo."
@ -149,16 +130,13 @@ general: "Obecně"
wallpaper: "Obrázek na pozadí"
setWallpaper: "Nastavení obrázku na pozadí"
removeWallpaper: "Odstranit pozadí"
searchWith: "Hledat: {q}"
youHaveNoLists: "Nemáte žádné seznamy"
followConfirm: "Jste si jisti, že chcete sledovat {name}?"
proxyAccount: "Proxy účet"
proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže místo toho bude uživatele sledovat účet proxy."
host: "Hostitel"
selectUser: "Vyberte uživatele"
recipient: "Pro"
annotation: "Komentáře"
federation: "Federace"
instances: "Instance"
registeredAt: "Registrován"
latestRequestSentAt: "Poslední požadavek poslán"
@ -168,7 +146,6 @@ storageUsage: "Využití úložiště"
charts: "Grafy"
perHour: "za hodinu"
perDay: "za den"
stopActivityDelivery: "Přestat zasílat aktivitu"
blockThisInstance: "Blokovat tuto instanci"
operations: "Operace"
software: "Software"
@ -206,7 +183,6 @@ instanceFollowers: "Následovníci na instanci"
instanceUsers: "Uživatelé této instance"
changePassword: "Změnit heslo"
security: "Zabezpečení"
retypedNotMatch: "Zadané údaje se neshodují."
currentPassword: "Současné heslo"
newPassword: "Nové heslo"
newPasswordRetype: "Nové heslo (znovu)"
@ -269,7 +245,6 @@ addFile: "Přidat soubor"
emptyFolder: "Tato složka je prázdná"
unableToDelete: "Nelze smazat"
inputNewFileName: "Zadejte nový název"
inputNewFolderName: "Zadejte název nové složky"
copyUrl: "Kopírovat URL"
rename: "Přejmenovat"
avatar: "Avatar"
@ -308,15 +283,11 @@ iconUrl: "Favicon URL"
bannerUrl: "Baner URL"
backgroundImageUrl: "Adresa URL obrázku pozadí"
basicInfo: "Základní informace"
pinnedUsers: "Připnutí uživatelé"
pinnedNotes: "Připnutá poznámka"
hcaptcha: "hCaptcha"
enableHcaptcha: "Aktivovat hCaptchu"
hcaptchaSiteKey: "Klíč stránky"
hcaptchaSecretKey: "Tajný Klíč (Secret Key)"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Zapnout ReCAPTCHu"
recaptchaSiteKey: "Klíč stránky"
recaptchaSecretKey: "Tajný Klíč (Secret Key)"
antennas: "Antény"
manageAntennas: "Spravovat Antény"
@ -325,10 +296,6 @@ antennaSource: "Zdroj Antény"
enableServiceworker: "Povolit ServiceWorker"
caseSensitive: "Rozlišuje malá a velká písmena"
connectedTo: "Následující účty jsou připojeny"
notesAndReplies: "Poznámky a odpovědi"
withFiles: "Včetně souborů"
popularUsers: "Populární uživatelé"
recentlyUpdatedUsers: "Nedávno aktívni uživatelé"
popularTags: "Populární tagy"
userList: "Seznamy"
about: "Informace"
@ -373,14 +340,10 @@ next: "Další"
retype: "Zadejte znovu"
noteOf: "{user} poznámky"
inviteToGroup: "Pozvat do skupiny"
quoteAttached: "Citace"
quoteQuestion: "Přiložit jako citaci?"
noMessagesYet: "Zatím tu nejsou žádné zprávy"
newMessageExists: "Máte novou zprávu"
onlyOneFileCanBeAttached: "Ke zprávě můžete přiložit jenom jeden soubor"
signinRequired: "Přihlašte se, prosím"
invitations: "Pozvat"
invitationCode: "Kód pozvánky"
checking: "Ověřuji"
available: "K dispozici"
unavailable: "Není k dispozici"
@ -394,7 +357,6 @@ passwordMatched: "Hesla se schodují"
passwordNotMatched: "Hesla se neschodují"
signinWith: "Přihlásit se s {x}"
signinFailed: "Nelze se přihlásit. Zkontrolujte prosím své uživatelské jméno a heslo."
tapSecurityKey: "Ťukněte na bezpečnostní klíč"
or: "Nebo"
language: "Jazyk"
uiLanguage: "Jazyk uživatelského rozhraní"
@ -424,20 +386,9 @@ accountSettings: "Nastavení účtu"
promotion: "Propagace"
promote: "Propagovat"
numberOfDays: "Počet dní"
objectStorageBaseUrl: "Base URL"
objectStorageBucket: "Bucket"
objectStoragePrefix: "Předpona"
objectStorageEndpoint: "Endpoint"
objectStorageRegion: "Región"
objectStorageUseSSL: "Použít SSL"
deleteAll: "Smazat vše"
showFixedPostForm: "Zobrazit formulář pro nové příspěvky nad časovou osou"
listen: "Poslouchat"
showInPage: "Zobrazit na stránce"
popout: "Pop-out"
volume: "Hlasitost"
masterVolume: "Celková hlasitost"
details: "Detaily"
chooseEmoji: "Vybrat emotikon"
unableToProcess: "Operace nebyla dokončena."
recentUsed: "Naposledy použité"
@ -458,20 +409,13 @@ deleteAllFiles: "Smazat všechny soubory"
deleteAllFilesConfirm: "Jste si jistí že chcete smazat všechny soubory?"
userSuspended: "Tomuto uživateli byl pozastaven účet."
menu: "Menu"
divider: "Dělící čára"
addItem: "Přidat položku"
relays: "Relay"
addRelay: "Přidat Relay"
inboxUrl: "Inbox URL"
deletedNote: "Odstraněné příspěvky"
invisibleNote: "Skryté příspěvky"
description: "Popis"
author: "Autor"
manage: "Administrace"
width: "Šířka"
height: "Výška"
large: "Velké"
medium: "Střední"
small: "Malé"
generateAccessToken: "Vygenerovat přístupový token"
permission: "Oprávnění"
@ -489,16 +433,11 @@ smtpPort: "Port"
smtpUser: "Uživatelské jméno"
smtpPass: "Heslo"
smtpSecureInfo: "Toto vypněte pokud používáte STARTTLS"
testEmail: "Otestovat doručení emailů"
makeActive: "Aktivovat"
display: "Zobrazit"
copy: "Kopírovat"
metrics: "Metriky"
overview: "Shrnutí"
logs: "Logy"
delayed: "Prodleva"
database: "Databáze"
channel: "Kanály"
create: "Vytvořit"
notificationSetting: "Nastavení oznámení"
useGlobalSetting: "Použít globální nastavení"
@ -506,421 +445,78 @@ other: "Ostatní"
fileIdOrUrl: "ID nebo URL souboru"
behavior: "Chování"
sample: "Ukázka"
send: "Odeslat"
openInNewTab: "Otevřít v nové kartě"
random: "Náhodně"
system: "Systém"
desktop: "Plocha"
clip: "Oříznout"
createNew: "Vytvořit nový"
optional: "Volitelné"
yes: "Ano"
no: "Ne"
notSet: "Není nastaveno"
emailVerified: "Váš e-mail byl ověřen"
contact: "Kontakt"
useSystemFont: "Použít výchozí font systému"
clips: "Oříznout"
experimentalFeatures: "Experimentální funkce"
developer: "Vývojář"
duplicate: "Duplikovat"
left: "Vlevo"
center: "Uprostřed"
wide: "Široké"
narrow: "Úzké"
clearCache: "Vyprázdnit mezipaměť"
nUsers: "{n} užívatelů"
nNotes: "{n} poznámek"
myTheme: "Moje vzhledy"
backgroundColor: "Pozadí"
accentColor: "Akcent"
textColor: "Barva textu"
saveAs: "Uložit jako…"
advanced: "Pokročilé"
value: "Hodnota"
createdAt: "Vytvořeno"
updatedAt: "Upraveno"
saveConfirm: "Uložit změny?"
deleteConfirm: "Opravdu smazat?"
invalidValue: "Neplatná hodnota."
registry: "Registr"
info: "Informace"
unknown: "Neznámý"
onlineStatus: "Online status"
hideOnlineStatus: "Skrýt Váš online status"
hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu některých funkcí, například vyhledávání."
online: "Online"
active: "Aktivní"
offline: "Offline"
notRecommended: "Nedoporučuje se"
botProtection: "Bot ochrana"
instanceBlocking: "Blokované instance"
selectAccount: "Vybrat účet"
switchAccount: "Přepnout účet"
enabled: "Zapnuto"
disabled: "Vypnuto"
quickAction: "Rychlé akce"
user: "Uživatelé"
administration: "Administrace"
accounts: "Účty"
switch: "Přepnout"
configure: "Nastavit"
gallery: "Galerie"
recentPosts: "Poslední příspěvky"
ads: "Reklamy"
memo: "Memo"
priority: "Priorita"
high: "Vysoká"
middle: "Střední"
low: "Nízká"
emailNotConfiguredWarning: "E-mailová adresa není nastavena."
ratio: "Poměr"
global: "Globální"
sent: "Odeslat"
hashtags: "Hashtagy"
troubleshooting: "Poradce při potížích"
whatIsNew: "Zobrazit změny"
translate: "Přeložit"
hide: "Skrýt"
smartphone: "Telefon"
tablet: "Tablet"
auto: "Auto"
size: "Velikost"
numberOfColumn: "Počet sloupců"
searchByGoogle: "Vyhledávání"
indefinitely: "Navždy"
tenMinutes: "10 minut"
oneHour: "1 hodina"
oneDay: "1 den"
oneWeek: "1 týden"
reflectMayTakeTime: "Může trvat nějakou dobu, než se projeví změny."
cropImage: "Oříznout obrázek"
file: "Soubor(ů)"
recentNHours: "Posledních {n} hodin"
recentNDays: "Posledních {n} dnů"
recommended: "Doporučeno"
deleteAccount: "Odstranit účet"
document: "Dokumentace"
logoutConfirm: "Opravdu se chcete odhlásit?"
pleaseSelect: "Vybrat možnost"
reverse: "Otočit"
colored: "Barevné"
type: "Typ"
speed: "Rychlost"
slow: "Pomalá"
fast: "Rychlá"
account: "Účty"
_ad:
back: "Zpět"
_gallery:
my: "Moje galerie"
_email:
_follow:
title: "Máte nového následovníka"
_plugin:
install: "Instalovat plugin"
manage: "Správce pluginů"
_preferencesBackups:
list: "Vytvořit backup"
loadFile: "Načíst ze souboru"
save: "Uložit změny"
_registry:
scope: "Rozsah"
key: "Klíč"
keys: "Klíče"
domain: "Doména"
createKey: "Vytvořit klíč"
_aboutMisskey:
allContributors: "Všichni přispěvatelé"
source: "Zdrojový kód"
_mfm:
mention: "Zmínění"
hashtag: "Hashtag"
link: "Odkaz"
bold: "Tučně"
quote: "Citovat"
emoji: "Vlastní emoji"
search: "Vyhledávání"
flip: "Otočit"
tada: "Animace (tadá)"
blur: "Rozmazání"
font: "Font"
rainbow: "Duha"
_channel:
featured: "Trendy"
_menuDisplay:
top: "Nahoru"
hide: "Skrýt"
_theme:
install: "Nainstalovat vzhled"
manage: "Správa vzhledů"
code: "Kód vzhledu"
description: "Popis"
installedThemes: "Nainstalované vzhledy"
constant: "Konstanta"
defaultValue: "Výchozí hodnota"
color: "Barva"
key: "Klíč"
func: "Funkce "
keys:
shadow: "Stín"
header: "Nadpis"
link: "Odkaz"
hashtag: "Hashtag"
mention: "Zmínění"
renote: "Přeposlat"
divider: "Dělící čára"
_sfx:
note: "Poznámky"
notification: "Oznámení"
chat: "Zprávy"
_ago:
future: "Budoucí"
justNow: "Teď"
_time:
second: "Sekund"
minute: "Minut"
hour: "Hodin"
_2fa:
registerDevice: "Přidat zařízení"
registerKey: "Přidat bezpečnostní klíč"
_weekday:
sunday: "Neděle"
monday: "Pondělí"
tuesday: "Úterý"
wednesday: "Středa"
thursday: "Čtvrtek"
friday: "Pátek"
saturday: "Sobota"
_widgets:
notifications: "Oznámení"
timeline: "Časová osa"
calendar: "Kalendář"
trends: "Trendy"
clock: "Hodiny"
rss: "RSS čtečka"
activity: "Aktivita"
photos: "Fotky"
digitalClock: "Digitální hodiny"
federation: "Federace"
slideshow: "Prezentace"
button: "Tlačítko"
onlineUsers: "Online uživatelé"
jobQueue: "Fronta úloh"
aiscript: "AiScript conzole"
aichan: "Ai"
_cw:
hide: "Skrýt"
show: "Zobrazit více"
_poll:
noMore: "Více už přidat nemůžete"
infinite: "Nikdy"
deadlineDate: "Datum ukončení"
deadlineTime: "Hodin"
duration: "Trvání"
_visibility:
home: "Domů"
followers: "Sledující"
_postForm:
_placeholders:
f: "Čekám, až něco napíšete..."
_profile:
name: "Jméno"
username: "Uživatelské jméno"
description: "O mně"
youCanIncludeHashtags: "V popisku o Vás můžete použít i hastagy."
metadata: "Doplňující informace"
metadataContent: "Obsah"
_exportOrImport:
allNotes: "Všechny poznámky"
followingList: "Sledovaní"
muteList: "Ztlumit"
blockingList: "Zablokovat"
userLists: "Seznamy"
_charts:
federation: "Federace"
apRequest: "Požadavek"
usersTotal: "Celkem uživatelů"
activeUsers: "Aktivní uživatelé"
notesTotal: "Celkový počet poznámek"
_timelines:
home: "Domů"
global: "Globální"
_pages:
newPage: "Vytvořit novou stránku"
editPage: "Upravit stránku"
created: "Stránka byla úspěšně vytvořena"
updated: "Stránka byla úspěšně aktualizována"
deleted: "Stránka byla úspěšně smazána"
pageSetting: "Nastavení stránky"
invalidNameText: "Ujistěte se že jméno stránky je vyplněno"
contents: "Obsah"
fontSerif: "Serif"
fontSansSerif: "Sans Serif"
chooseBlock: "Přidat blok"
selectType: "Vyberte typ"
contentBlocks: "Obsah"
inputBlocks: "Vstup"
specialBlocks: "Speciální"
blocks:
text: "Text"
textarea: "Textové pole"
section: "Sekce"
image: "Obrázky"
button: "Tlačítko"
if: "Pokud"
_if:
variable: "Proměnná"
_post:
text: "Obsah"
canvasId: "Canvas ID"
_textInput:
name: "Jméno proměnné"
text: "Titulek"
default: "Výchozí hodnota"
_textareaInput:
name: "Jméno proměnné"
text: "Titulek"
default: "Výchozí hodnota"
_numberInput:
name: "Jméno proměnné"
text: "Titulek"
default: "Výchozí hodnota"
canvas: "Canvas"
_canvas:
id: "Canvas ID"
width: "Šířka"
height: "Výška"
_switch:
name: "Jméno proměnné"
text: "Titulek"
default: "Výchozí hodnota"
_counter:
name: "Jméno proměnné"
text: "Titulek"
inc: "Krok"
_button:
text: "Titulek"
colored: "Barevné"
_action:
_dialog:
content: "Obsah"
_radioButton:
name: "Jméno proměnné"
default: "Výchozí hodnota"
script:
categories:
list: "Seznamy"
blocks:
text: "Text"
_strLen:
arg1: "Text"
_strPick:
arg1: "Text"
_strReplace:
arg1: "Text"
_strReverse:
arg1: "Text"
_join:
arg1: "Seznamy"
_subtract:
arg1: "A"
arg2: "B"
_multiply:
arg1: "A"
arg2: "B"
_divide:
arg1: "A"
arg2: "B"
_mod:
arg1: "A"
arg2: "B"
round: "Zaokrouhlení zlomku"
_round:
arg1: "Číselná hodnota"
eq: "A a B jsou stejné"
_eq:
arg1: "A"
arg2: "B"
notEq: "A a B jsou odlišné"
_notEq:
arg1: "A"
arg2: "B"
_and:
arg1: "A"
arg2: "B"
_or:
arg1: "A"
arg2: "B"
_lt:
arg1: "A"
arg2: "B"
_gt:
arg1: "A"
arg2: "B"
_ltEq:
arg1: "A"
arg2: "B"
_gtEq:
arg1: "A"
arg2: "B"
if: "Větev"
_if:
arg1: "Pokud"
arg2: "Potom"
arg3: "Nebo"
random: "Náhodně"
_random:
arg1: "Pravděpodobnost"
rannum: "Náhodné číslo"
_rannum:
arg1: "Minimální hodnota"
arg2: "Maximální hodnota"
_randomPick:
arg1: "Seznamy"
_dailyRandom:
arg1: "Pravděpodobnost"
_dailyRannum:
arg1: "Minimální hodnota"
arg2: "Maximální hodnota"
_dailyRandomPick:
arg1: "Seznamy"
_seedRandom:
arg2: "Pravděpodobnost"
_seedRannum:
arg2: "Minimální hodnota"
arg3: "Maximální hodnota"
_seedRandomPick:
arg2: "Seznamy"
_pick:
arg1: "Seznamy"
_listLen:
arg1: "Seznamy"
number: "Číselná hodnota"
_stringToNumber:
arg1: "Text"
_numberToString:
arg1: "Číselná hodnota"
_splitStrByLine:
arg1: "Text"
types:
string: "Text"
number: "Číselná hodnota"
array: "Seznamy"
_notification:
youWereFollowed: "Máte nového následovníka"
youWereInvitedToGroup: "Pozvat do skupiny"
_types:
all: "Vše"
follow: "Sledovaní"
mention: "Zmínění"
reply: "Odpovědi"
renote: "Přeposlat"
quote: "Citovat"
reaction: "Reakce"
_actions:
reply: "Odpovědět"
renote: "Přeposlat"
_deck:
_columns:
notifications: "Oznámení"

View File

@ -52,7 +52,6 @@ searchUser: "Nach einem Benutzer suchen"
reply: "Antworten"
loadMore: "Mehr laden"
showMore: "Mehr anzeigen"
showLess: "Schließen"
youGotNewFollower: "ist dir gefolgt"
receiveFollowRequest: "Follow-Anfrage erhalten"
followRequestAccepted: "Follow-Anfrage akzeptiert"
@ -204,7 +203,6 @@ done: "Fertig"
processing: "In Bearbeitung …"
preview: "Vorschau"
default: "Standard"
defaultValueIs: "Standardwert: {value}"
noCustomEmojis: "Keine benutzerdefinierten Emojis gefunden"
noJobs: "Keine Jobs vorhanden"
federating: "Wird föderiert"
@ -358,7 +356,7 @@ antennaExcludeKeywords: "Zu ignorierende Schlüsselwörter"
antennaKeywordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch trennen"
notifyAntenna: "Über neue Notizen benachrichtigen"
withFileAntenna: "Nur Notizen mit Dateien"
enableServiceworker: "Push-Benachrichtigungen im Browser aktivieren"
enableServiceworker: "ServiceWorker aktivieren"
antennaUsersDescription: "Benutzernamen getrennt durch Zeilenumbrüche angeben"
caseSensitive: "Groß-/Kleinschreibung unterscheiden"
withReplies: "Antworten beinhalten"
@ -383,7 +381,6 @@ administrator: "Administrator"
token: "Token"
twoStepAuthentication: "Zwei-Faktor-Authentifizierung"
moderator: "Moderator"
moderation: "Moderation"
nUsersMentioned: "Von {n} Benutzern erwähnt"
securityKey: "Sicherheitsschlüssel"
securityKeyName: "Schlüsselname"
@ -428,7 +425,7 @@ quoteQuestion: "Als Zitat anhängen?"
noMessagesYet: "Noch keine Nachrichten vorhanden"
newMessageExists: "Du hast eine neue Nachricht"
onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden"
signinRequired: "Bitte registriere oder melde dich an, um fortzufahren"
signinRequired: "Bitte melde dich an"
invitations: "Einladungen"
invitationCode: "Einladungscode"
checking: "Wird überprüft …"
@ -562,7 +559,6 @@ author: "Autor"
leaveConfirm: "Es gibt unspeicherte Änderungen. Möchtest du diese verwerfen?"
manage: "Verwaltung"
plugins: "Plugins"
preferencesBackups: "Einstellungsbackups"
deck: "Deck"
undeck: "Deck verlassen"
useBlurEffectForModal: "Weichzeichnungseffekt für Modals verwenden"
@ -647,8 +643,6 @@ clip: "Clip erstellen"
createNew: "Neu erstellen"
optional: "Optional"
createNewClip: "Neuen Clip erstellen"
unclip: "Aus Clip entfernen"
confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten. Möchtest du sie aus diesem Clip entfernen?"
public: "Öffentlich"
i18nInfo: "Misskey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen."
manageAccessTokens: "Zugriffstokens verwalten"
@ -836,7 +830,7 @@ auto: "Automatisch"
themeColor: "Farbe der Instanz-Information"
size: "Größe"
numberOfColumn: "Spaltenanzahl"
searchByGoogle: "Suchen"
searchByGoogle: "Googlen"
instanceDefaultLightTheme: "Instanzweites Standardfarbschema (Hell)"
instanceDefaultDarkTheme: "Instanzweites Standardfarbschema (Dunkel)"
instanceDefaultThemeDescription: "Gib den Farbschemencode im Objektformat ein."
@ -848,50 +842,6 @@ oneDay: "Einen Tag"
oneWeek: "Eine Woche"
reflectMayTakeTime: "Es kann etwas dauern, bis sich dies widerspiegelt."
failedToFetchAccountInformation: "Benutzerkontoinformationen konnten nicht abgefragt werden"
rateLimitExceeded: "Versuchsanzahl überschritten"
cropImage: "Bild zuschneiden"
cropImageAsk: "Möchtest du das Bild zuschneiden?"
file: "Datei"
recentNHours: "Letzten {n} Stunden"
recentNDays: "Letzten {n} Tage"
noEmailServerWarning: "Es ist kein Email-Server konfiguriert."
thereIsUnresolvedAbuseReportWarning: "Es liegen ungelöste Meldungen vor."
recommended: "Empfehlung"
check: "Check"
driveCapOverrideLabel: "Die Drive-Kapazität dieses Nutzers verändern"
driveCapOverrideCaption: "Gib einen Wert von 0 oder weniger ein, um die Kapazität auf den Standard zurückzusetzen."
requireAdminForView: "Melde dich mit einem Administratorkonto an, um dies einzusehen."
isSystemAccount: "Ein Benutzerkonto, dass durch das System erstellt und automatisch kontrolliert wird."
typeToConfirm: "Bitte gib zur Bestätigung {x} ein"
deleteAccount: "Benutzerkonto löschen"
document: "Dokumentation"
numberOfPageCache: "Seitencachegröße"
numberOfPageCacheDescription: "Das Erhöhen dieses Caches führt zu einer angenehmerern Benutzererfahrung, erhöht aber Serverlast und Arbeitsspeicherauslastung."
logoutConfirm: "Wirklich abmelden?"
lastActiveDate: "Zuletzt verwendet am"
statusbar: "Statusleiste"
pleaseSelect: "Wähle eine Option"
reverse: "Umkehren"
colored: "Farbig"
refreshInterval: "Aktualisierungsrate"
label: "Beschriftung"
type: "Art"
speed: "Geschwindigkeit"
slow: "Langsam"
fast: "Schnell"
localOnly: "Nur Lokal"
remoteOnly: "Nur für fremde Instanzen"
failedToUpload: "Hochladen fehlgeschlagen"
cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Anteile der Datei als möglicherweise NSFW festgestellt wurden."
cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein Drive-Speicherplatz aufgebraucht ist."
beta: "Beta"
enableAutoSensitive: "NSFW-Automarkierung"
enableAutoSensitiveDescription: "Setzt soweit möglich durch Verwendung von Machine Learning automatisch NSFW-Markierungen für Medien, die NSFW-Anteile beinhalten. Auch wenn du diese Option deaktiviert hast, ist sie möglicherweise auf Instanzebene aktiviert."
activeEmailValidationDescription: "Aktivert strengere Überprüfung von E-Mail-Adressen, d.h. Testen auf Wegwerfadressen und darauf, ob mit der Adresse tatsächlich kommuniziert werden kann. Ist dies deaktiviert, so wird nur das Format der E-Mail überprüft."
navbar: "Navigationsleiste"
shuffle: "Mischen"
account: "Benutzerkonto"
move: "Verschieben"
_emailUnavailable:
used: "Diese Email-Adresse wird bereits verwendet"
format: "Das Format dieser Email-Adresse ist ungültig"
@ -934,24 +884,6 @@ _plugin:
install: "Plugins installieren"
installWarn: "Installiere bitte nur vertrauenswürdige Plugins."
manage: "Plugins verwalten"
_preferencesBackups:
list: "Erstellte Backups"
saveNew: "Neu erstellen"
loadFile: "Von Datei laden"
apply: "Auf dieses Gerät anwenden"
save: "Speichern"
inputName: "Gib einen Namen für dieses Backup ein"
cannotSave: "Speichern fehlgeschlagen"
nameAlreadyExists: "Es existiert bereits ein Backup unter dem Namen \"{name}\". Bitte gib einen anderen Namen ein."
applyConfirm: "Wirklich das Backup \"{name}\" auf dieses Gerät anwenden? Bestehende Einstellungen darauf werden überschrieben."
saveConfirm: "Als {name} speichern?"
deleteConfirm: "Das Backup {name} löschen?"
renameConfirm: "Soll dieses Backup von \"{old}\" zu \"{new}\" umbenannt werden?"
noBackups: "Keine Backups existieren. Backups können über \"Neu erstellen\" erstelllt werden."
createdAt: "Erstellt am: {date} {time}"
updatedAt: "Aktualisiert am: {date} {time}"
cannotLoad: "Laden fehlgeschlagen"
invalidFile: "Ungültiges Dateiformat."
_registry:
scope: "Scope"
key: "Schlüssel"
@ -1035,8 +967,6 @@ _mfm:
sparkleDescription: "Verleiht Inhalt einen glitzernden Partikeleffekt."
rotate: "Drehen"
rotateDescription: "Dreht den Inhalt um einen angegebenen Winkel."
plain: "Schlicht"
plainDescription: "Deaktiviert jegliche MFM-Syntax, die sich innerhalb dieses MFM-Effekts befindet."
_instanceTicker:
none: "Nie anzeigen"
remote: "Für Benutzer fremder Instanzen anzeigen"
@ -1076,7 +1006,7 @@ _instanceMute:
heading: "Liste der stummzuschaltenden Instanzen"
_theme:
explore: "Farbschemata erforschen"
install: "Farbschemata installieren"
install: "Farbschmata installieren"
manage: "Farbschemaverwaltung"
code: "Farbschemencode"
description: "Beschreibung"
@ -1157,6 +1087,7 @@ _sfx:
antenna: "Antennen"
channel: "Kanalbenachrichtigung"
_ago:
unknown: "Unbekannt"
future: "Zukunft"
justNow: "Gerade eben"
secondsAgo: "vor {n} Sekunde(n)"
@ -1200,7 +1131,6 @@ _2fa:
registerKey: "Neuen Sicherheitsschlüssel registrieren"
step1: "Installiere zuerst eine Authentifizierungsapp (z.B. {a} oder {b}) auf deinem Gerät."
step2: "Dann, scanne den angezeigten QR-Code mit deinem Gerät."
step2Url: "Nutzt du ein Desktopprogramm kannst du alternativ diese URL eingeben:"
step3: "Gib zum Abschluss den Token ein, der von deiner App angezeigt wird."
step4: "Alle folgenden Anmeldungsversuche werden ab sofort die Eingabe eines solchen Tokens benötigen."
securityKeyInfo: "Du kannst neben Fingerabdruck- oder PIN-Authentifizierung auf deinem Gerät auch Anmeldung mit Hilfe eines FIDO2-kompatiblen Hardware-Sicherheitsschlüssels einrichten."
@ -1266,13 +1196,10 @@ _widgets:
trends: "Trends"
clock: "Uhr"
rss: "RSS-Reader"
rssTicker: "RSS-Ticker"
activity: "Aktivität"
photos: "Fotos"
digitalClock: "Digitaluhr"
unixClock: "UNIX-Uhr"
federation: "Föderation"
instanceCloud: "Instanzwolke"
postForm: "Notizfenster"
slideshow: "Diashow"
button: "Knopf"
@ -1686,9 +1613,8 @@ _notification:
youWereFollowed: "ist dir gefolgt"
youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten"
yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert"
youWereInvitedToGroup: "{userName} hat dich in eine Gruppe eingeladen"
youWereInvitedToGroup: "Du wurdest in eine Gruppe eingeladen"
pollEnded: "Umfrageergebnisse sind verfügbar"
emptyPushNotificationMessage: "Push-Benachrichtigungen wurden aktualisiert"
_types:
all: "Alle"
follow: "Neue Follower"
@ -1703,15 +1629,12 @@ _notification:
followRequestAccepted: "Akzeptierte Follow-Anfragen"
groupInvited: "Erhaltene Gruppeneinladungen"
app: "Benachrichtigungen von Apps"
_actions:
followBack: "folgt dir nun auch"
reply: "Antworten"
renote: "Renote"
_deck:
alwaysShowMainColumn: "Hauptspalte immer zeigen"
columnAlign: "Spaltenausrichtung"
columnMargin: "Spaltenabstand"
columnHeaderHeight: "Spaltenkopfhöhe"
addColumn: "Spalte hinzufügen"
configureColumn: "Spalteneinstellungen"
swapLeft: "Mit linker Spalte tauschen"
swapRight: "Mit rechter Spalte tauschen"
swapUp: "Mit oberer Spalte tauschen"
@ -1719,11 +1642,6 @@ _deck:
stackLeft: "Auf linke Spalte stapeln"
popRight: "Nach rechts vom Stapel nehmen"
profile: "Profil"
newProfile: "Neues Profil"
deleteProfile: "Profil löschen"
introduction: "Erstelle eine auf dich zugeschneiderte Benutzeroberfläche durch das Aneinanderreihen von Spalten!"
introduction2: "Klicke auf das + rechts um wann immer du möchtest neue Spalten hinzuzufügen."
widgetsIntroduction: "Drücke bitte \"Widgets bearbeiten\" im Spaltenmenü und füge ein Widget hinzu."
_columns:
main: "Hauptspalte"
widgets: "Widgets"

View File

@ -52,7 +52,6 @@ searchUser: "Search for a user"
reply: "Reply"
loadMore: "Load more"
showMore: "Show more"
showLess: "Close"
youGotNewFollower: "followed you"
receiveFollowRequest: "Follow request received"
followRequestAccepted: "Follow request accepted"
@ -204,7 +203,6 @@ done: "Done"
processing: "Processing..."
preview: "Preview"
default: "Default"
defaultValueIs: "Default: {value}"
noCustomEmojis: "There are no emoji"
noJobs: "There are no jobs"
federating: "Federating"
@ -358,7 +356,7 @@ antennaExcludeKeywords: "Keywords to exclude"
antennaKeywordsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition."
notifyAntenna: "Notify about new notes"
withFileAntenna: "Only notes with files"
enableServiceworker: "Enable Push-Notifications for your Browser"
enableServiceworker: "Enable ServiceWorker"
antennaUsersDescription: "List one username per line"
caseSensitive: "Case sensitive"
withReplies: "Include replies"
@ -383,7 +381,6 @@ administrator: "Administrator"
token: "Token"
twoStepAuthentication: "Two-factor authentication"
moderator: "Moderator"
moderation: "Moderation"
nUsersMentioned: "Mentioned by {n} users"
securityKey: "Security key"
securityKeyName: "Key name"
@ -428,7 +425,7 @@ quoteQuestion: "Append as quote?"
noMessagesYet: "No messages yet"
newMessageExists: "There are new messages"
onlyOneFileCanBeAttached: "You can only attach one file to a message"
signinRequired: "Please register or sign in before continuing"
signinRequired: "Please sign in"
invitations: "Invites"
invitationCode: "Invitation code"
checking: "Checking..."
@ -562,7 +559,6 @@ author: "Author"
leaveConfirm: "There are unsaved changes. Do you want to discard them?"
manage: "Management"
plugins: "Plugins"
preferencesBackups: "Preference backups"
deck: "Deck"
undeck: "Leave Deck"
useBlurEffectForModal: "Use blur effect for modals"
@ -647,8 +643,6 @@ clip: "Clip"
createNew: "Create new"
optional: "Optional"
createNewClip: "Create new clip"
unclip: "Unclip"
confirmToUnclipAlreadyClippedNote: "This note is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?"
public: "Public"
i18nInfo: "Misskey is being translated into various languages by volunteers. You can help at {link}."
manageAccessTokens: "Manage access tokens"
@ -837,7 +831,7 @@ auto: "Auto"
themeColor: "Instance Ticker Color"
size: "Size"
numberOfColumn: "Number of columns"
searchByGoogle: "Search"
searchByGoogle: "Google"
instanceDefaultLightTheme: "Instance-wide default light theme"
instanceDefaultDarkTheme: "Instance-wide default dark theme"
instanceDefaultThemeDescription: "Enter the theme code in object format."
@ -849,50 +843,6 @@ oneDay: "One day"
oneWeek: "One week"
reflectMayTakeTime: "It may take some time for this to be reflected."
failedToFetchAccountInformation: "Could not fetch account information"
rateLimitExceeded: "Rate limit exceeded"
cropImage: "Crop image"
cropImageAsk: "Do you want to crop this image?"
file: "File"
recentNHours: "Last {n} hours"
recentNDays: "Last {n} days"
noEmailServerWarning: "Email server not configured."
thereIsUnresolvedAbuseReportWarning: "There are unsolved reports."
recommended: "Recommended"
check: "Check"
driveCapOverrideLabel: "Change the drive capacity for this user"
driveCapOverrideCaption: "Reset the capacity to default by inputting a value of 0 or lower."
requireAdminForView: "You must log in with an administrator account to view this."
isSystemAccount: "An account created and automatically operated by the system."
typeToConfirm: "Please enter {x} to confirm"
deleteAccount: "Delete account"
document: "Documentation"
numberOfPageCache: "Number of cached pages"
numberOfPageCacheDescription: "Increasing this number will improve convenience for users but cause more server load as well as more memory to be used."
logoutConfirm: "Really log out?"
lastActiveDate: "Last used at"
statusbar: "Status bar"
pleaseSelect: "Select an option"
reverse: "Reverse"
colored: "Colored"
refreshInterval: "Update interval "
label: "Label"
type: "Type"
speed: "Speed"
slow: "Slow"
fast: "Fast"
localOnly: "Local only"
remoteOnly: "Remote only"
failedToUpload: "Upload failed"
cannotUploadBecauseInappropriate: "This file could not be uploaded because parts of it have been detected as potentially NSFW."
cannotUploadBecauseNoFreeSpace: "Upload failed due to lack of Drive capacity."
beta: "Beta"
enableAutoSensitive: "Automatic NSFW-Marking"
enableAutoSensitiveDescription: "Allows automatic detection and marking of NSFW media through Machine Learning where possible. Even if this option is disabled, it may be enabled instance-wide."
activeEmailValidationDescription: "Enables stricter validation of email addresses, which includes checking for disposable addresses and by whether it can actually be communicated with. When unchecked, only the format of the email is validated."
navbar: "Navigation bar"
shuffle: "Shuffle"
account: "Account"
move: "Move"
_emailUnavailable:
used: "This email address is already being used"
format: "The format of this email address is invalid"
@ -935,24 +885,6 @@ _plugin:
install: "Install plugins"
installWarn: "Please do not install untrustworthy plugins."
manage: "Manage plugins"
_preferencesBackups:
list: "Created backups"
saveNew: "Save new backup"
loadFile: "Load from file"
apply: "Apply to this device"
save: "Save changes"
inputName: "Please enter a name for this backup"
cannotSave: "Saving failed"
nameAlreadyExists: "A backup called \"{name}\" already exists. Please enter a different name."
applyConfirm: "Do you really want to apply the \"{name}\" backup to this device? Existing settings of this device will be overwritten."
saveConfirm: "Save backup as {name}?"
deleteConfirm: "Delete the {name} backup?"
renameConfirm: "Rename this backup from \"{old}\" to \"{new}\"?"
noBackups: "No backups exist. You may backup your client settings on this server by using \"Create new backup\"."
createdAt: "Created at: {date} {time}"
updatedAt: "Updated at: {date} {time}"
cannotLoad: "Loading failed"
invalidFile: "Invalid file format"
_registry:
scope: "Scope"
key: "Key"
@ -1036,8 +968,6 @@ _mfm:
sparkleDescription: "Gives content a sparkling particle effect."
rotate: "Rotate"
rotateDescription: "Turns content by a specified angle."
plain: "Plain"
plainDescription: "Deactivates the effects of all MFM contained within this MFM effect."
_instanceTicker:
none: "Never show"
remote: "Show for remote users"
@ -1158,6 +1088,7 @@ _sfx:
antenna: "Antennas"
channel: "Channel notifications"
_ago:
unknown: "Unknown"
future: "Future"
justNow: "Just now"
secondsAgo: "{n} second(s) ago"
@ -1201,7 +1132,6 @@ _2fa:
registerKey: "Register a security key"
step1: "First, install an authentication app (such as {a} or {b}) on your device."
step2: "Then, scan the QR code displayed on this screen."
step2Url: "You can also enter this URL if you're using a desktop program:"
step3: "Enter the token provided by your app to finish setup."
step4: "From now on, any future login attempts will ask for such a login token."
securityKeyInfo: "Besides fingerprint or PIN authentication, you can also setup authentication via hardware security keys that support FIDO2 to further secure your account."
@ -1267,13 +1197,10 @@ _widgets:
trends: "Trending"
clock: "Clock"
rss: "RSS reader"
rssTicker: "RSS-Ticker"
activity: "Activity"
photos: "Photos"
digitalClock: "Digital clock"
unixClock: "UNIX clock"
federation: "Federation"
instanceCloud: "Instance cloud"
postForm: "Posting form"
slideshow: "Slideshow"
button: "Button"
@ -1687,9 +1614,8 @@ _notification:
youWereFollowed: "followed you"
youReceivedFollowRequest: "You've received a follow request"
yourFollowRequestAccepted: "Your follow request was accepted"
youWereInvitedToGroup: "{userName} invited you to a group"
youWereInvitedToGroup: "You've been invited to a group"
pollEnded: "Poll results have become available"
emptyPushNotificationMessage: "Push notifications have been updated"
_types:
all: "All"
follow: "New followers"
@ -1704,15 +1630,12 @@ _notification:
followRequestAccepted: "Accepted follow requests"
groupInvited: "Group invitations"
app: "Notifications from linked apps"
_actions:
followBack: "followed you back"
reply: "Reply"
renote: "Renote"
_deck:
alwaysShowMainColumn: "Always show main column"
columnAlign: "Align columns"
columnMargin: "Margin between columns"
columnHeaderHeight: "Column header height"
addColumn: "Add column"
configureColumn: "Column settings"
swapLeft: "Swap with the left column"
swapRight: "Swap with the right column"
swapUp: "Swap with the above column"
@ -1720,11 +1643,6 @@ _deck:
stackLeft: "Stack with the left column"
popRight: "Pop column to the right"
profile: "Profile"
newProfile: "New profile"
deleteProfile: "Delete profile"
introduction: "Create the perfect interface for you by arranging columns freely!"
introduction2: "Click on the + on the right of the screen to add new colums whenever you want."
widgetsIntroduction: "Please select \"Edit widgets\" in the column menu and add a widget."
_columns:
main: "Main"
widgets: "Widgets"

View File

@ -1,16 +1,16 @@
---
_lang_: "Español"
headlineMisskey: "Red conectada por notas"
introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentralizado de código abierto.\nEscribe \"notas\" para compartir lo que te ocurre ahora o para contar sobre ti a todos 📡\nCon la función de \"reacciones\", puedes también añadir una reacción rápida a las notas de todos 👍\n¡Exploremos juntos un nuevo mundo! 🚀"
introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentralizado de código abierto.\nEscribe \"notas\" para compartir lo que te ocurre ahora o para contar sobre ti a todos 📡\nCon la función de \"reacciones\", puedes también añadir una reacción rápida a las notas de todos 👍\nExplora un nuevo mundo 🚀"
monthAndDay: "{day}/{month}"
search: "Buscar"
notifications: "Notificaciones"
username: "Nombre de usuario"
password: "Contraseña"
forgotPassword: "Olvidé mi Contraseña"
fetchingAsApObject: "Recuperando desde el Fediverso..."
fetchingAsApObject: "Buscando en el fediverso"
ok: "OK"
gotIt: "¡Lo tengo!"
gotIt: "Entendido"
cancel: "Cancelar"
enterUsername: "Introduce el nombre de usuario"
renotedBy: "Renotado por {user}"
@ -22,37 +22,36 @@ basicSettings: "Configuración Básica"
otherSettings: "Configuración avanzada"
openInWindow: "Abrir en una ventana"
profile: "Perfil"
timeline: "Línea de tiempo"
noAccountDescription: "Este usuario no ha escrito su biografía aún"
timeline: "Linea de tiempo"
noAccountDescription: "Este usuario no tiene una descripción"
login: "Iniciar sesión"
loggingIn: "Iniciando sesión"
logout: "Cerrar sesión"
signup: "Registrarse"
uploading: "Cargando..."
uploading: "Cargando"
save: "Guardar"
users: "Usuarios"
addUser: "Agregar usuario"
favorite: "Añadir a favoritos"
favorite: "Favorito"
favorites: "Favoritos"
unfavorite: "Quitar de favoritos"
favorited: "Añadido a favoritos."
favorited: "Añadido a favoritos"
alreadyFavorited: "Ya había sido añadido a favoritos"
cantFavorite: "No se puede añadir a favoritos."
pin: "Fijar al perfil"
cantFavorite: "No fue añadido a favoritos"
pin: "Fijar"
unpin: "Desfijar"
copyContent: "Copiar contenido"
copyLink: "Copiar enlace"
delete: "Borrar"
deleteAndEdit: "Borrar y editar"
deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta nota y editarla? Perderás todas las reacciones, renotas y respuestas."
deleteAndEditConfirm: "¿Quieres borrar y editar este nota? Las reacciones, renotes, respuestas y todo desaparecerán."
addToList: "Agregar a lista"
sendMessage: "Enviar un mensaje"
sendMessage: "Énviar mensaje"
copyUsername: "Copiar nombre de usuario"
searchUser: "Buscar un usuario"
searchUser: "Búsqueda de usuarios"
reply: "Responder"
loadMore: "Ver más"
showMore: "Ver más"
showLess: "Cerrar"
youGotNewFollower: "te ha seguido"
receiveFollowRequest: "Recibiste una solicitud de seguimiento"
followRequestAccepted: "La solicitud de seguimiento fue aceptada"
@ -88,11 +87,11 @@ enterListName: "Ingrese nombre de lista"
privacy: "Privacidad"
makeFollowManuallyApprove: "Aprobar manualmente las solicitudes de seguimiento"
defaultNoteVisibility: "Visibilidad por defecto"
follow: "Seguir"
followRequest: "Enviar solicitud de seguimiento"
follow: "Sigue"
followRequest: "Solicitud de seguimiento"
followRequests: "Solicitudes de seguimiento"
unfollow: "Dejar de seguir"
followRequestPending: "Solicitudes de seguimiento pendiente"
followRequestPending: "Solicitudes de seguimiento pendientes"
enterEmoji: "Ingresar emojis"
renote: "Renotar"
unrenote: "Quitar renota"
@ -101,7 +100,7 @@ cantRenote: "No se puede renotar este post"
cantReRenote: "No se puede renotar una renota"
quote: "Citar"
pinnedNote: "Nota fijada"
pinned: "Fijar al perfil"
pinned: "Fijar"
you: "Tú"
clickToShow: "Click para ver"
sensitive: "Marcado como sensible"
@ -142,8 +141,6 @@ flagAsBot: "Esta cuenta es un bot"
flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, active esta opción. Al hacerlo, esta opción servirá para otros desarrolladores para evitar cadenas infinitas de reacciones, y ajustará los sistemas internos de Misskey para que trate a esta cuenta como un bot."
flagAsCat: "Esta cuenta es un gato"
flagAsCatDescription: "En caso de que declare que esta cuenta es de un gato, active esta opción."
flagShowTimelineReplies: "Mostrar respuestas a las notas en la biografía"
flagShowTimelineRepliesDescription: "Cuando se marca, la línea de tiempo muestra respuestas a otras notas además de las notas del usuario"
autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de los usuarios que sigues"
addAccount: "Agregar Cuenta"
loginFailed: "Error al iniciar sesión."
@ -204,7 +201,6 @@ done: "Terminado"
processing: "Procesando"
preview: "Vista previa"
default: "Predeterminado"
defaultValueIs: "Predeterminado"
noCustomEmojis: "No hay emojis personalizados"
noJobs: "No hay trabajos"
federating: "Federando"
@ -239,8 +235,6 @@ resetAreYouSure: "¿Desea reestablecer?"
saved: "Guardado"
messaging: "Chat"
upload: "Subir"
keepOriginalUploading: "Mantener la imagen original"
keepOriginalUploadingDescription: "Mantener la versión original al cargar imágenes. Si está desactivado, el navegador generará imágenes para la publicación web en el momento de recargar la página"
fromDrive: "Desde el drive"
fromUrl: "Desde la URL"
uploadFromUrl: "Subir desde una URL"
@ -383,7 +377,6 @@ administrator: "Administrador"
token: "Token"
twoStepAuthentication: "Autenticación de dos factores"
moderator: "Moderador"
moderation: "Moderación"
nUsersMentioned: "{n} usuarios mencionados"
securityKey: "Clave de seguridad"
securityKeyName: "Nombre de la Clave"
@ -451,7 +444,6 @@ uiLanguage: "Idioma de visualización de la interfaz"
groupInvited: "Invitado al grupo"
aboutX: "Acerca de {x}"
useOsNativeEmojis: "Usa los emojis nativos de la plataforma"
disableDrawer: "No mostrar los menús en cajones"
youHaveNoGroups: "Sin grupos"
joinOrCreateGroup: "Obtenga una invitación para unirse al grupos o puede crear su propio grupo."
noHistory: "No hay datos en el historial"
@ -562,7 +554,6 @@ author: "Autor"
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
manage: "Administrar"
plugins: "Plugins"
preferencesBackups: "Respaldo de preferencias"
deck: "Deck"
undeck: "Quitar deck"
useBlurEffectForModal: "Usar efecto borroso en modales"
@ -596,8 +587,6 @@ smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP"
smtpSecureInfo: "Apagar cuando se use STARTTLS"
testEmail: "Prueba de envío"
wordMute: "Silenciar palabras"
regexpError: "Error de la expresión regular"
regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}"
instanceMute: "Instancias silenciadas"
userSaysSomething: "{name} dijo algo"
makeActive: "Activar"
@ -626,11 +615,6 @@ reportAbuse: "Reportar"
reportAbuseOf: "Reportar a {name}"
fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en particular, ingrese la URL de esta."
abuseReported: "Se ha enviado el reporte. Muchas gracias."
reporter: "Reportador"
reporteeOrigin: "Reportar a"
reporterOrigin: "Origen del reporte"
forwardReport: "Transferir un informe a una instancia remota"
forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá como una cuenta anónima del sistema"
send: "Enviar"
abuseMarkAsResolved: "Marcar reporte como resuelto"
openInNewTab: "Abrir en una Nueva Pestaña"
@ -647,8 +631,6 @@ clip: "Clip"
createNew: "Crear"
optional: "Opcional"
createNewClip: "Crear clip nuevo"
unclip: "Quitar clip"
confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\". ¿Quiere quitar la nota del clip?"
public: "Público"
i18nInfo: "Misskey está siendo traducido a varios idiomas gracias a voluntarios. Se puede colaborar traduciendo en {link}"
manageAccessTokens: "Administrar tokens de acceso"
@ -694,7 +676,6 @@ center: "Centrar"
wide: "Ancho"
narrow: "Estrecho"
reloadToApplySetting: "Esta configuración sólo se aplicará después de recargar la página. ¿Recargar ahora?"
needReloadToApply: "Se requiere un reinicio para la aplicar los cambios"
showTitlebar: "Mostrar la barra de título"
clearCache: "Limpiar caché"
onlineUsersCount: "{n} usuarios en línea"
@ -725,56 +706,19 @@ capacity: "Capacidad"
inUse: "Usado"
editCode: "Editar código"
apply: "Aplicar"
receiveAnnouncementFromInstance: "Recibir notificaciones de la instancia"
emailNotification: "Notificaciones por correo electrónico"
publish: "Publicar"
inChannelSearch: "Buscar en el canal"
useReactionPickerForContextMenu: "Haga clic con el botón derecho para abrir el menu de reacciones"
typingUsers: "{users} está escribiendo"
jumpToSpecifiedDate: "Saltar a una fecha específica"
showingPastTimeline: "Mostrar líneas de tiempo antiguas"
clear: "Limpiar"
markAllAsRead: "Marcar todo como leído"
goBack: "Deseleccionar"
unlikeConfirm: "¿Quitar como favorito?"
fullView: "Vista completa"
quitFullView: "quitar vista completa"
addDescription: "Agregar descripción"
userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú de notas individuales"
notSpecifiedMentionWarning: "Algunas menciones no están incluidas en el destino"
info: "Información"
userInfo: "Información del usuario"
unknown: "Desconocido"
onlineStatus: "En línea"
hideOnlineStatus: "mostrarse como desconectado"
hideOnlineStatusDescription: "Ocultar su estado en línea puede reducir la eficacia de algunas funciones, como la búsqueda"
online: "En línea"
active: "Activo"
offline: "Sin conexión"
notRecommended: "obsoleto"
botProtection: "Protección contra bots"
instanceBlocking: "Instancias bloqueadas"
selectAccount: "Elija una cuenta"
switchAccount: "Cambiar de cuenta"
enabled: "Activado"
disabled: "Desactivado"
quickAction: "Acciones rápidas"
user: "Usuarios"
administration: "Administrar"
accounts: "Cuentas"
switch: "Cambiar"
noMaintainerInformationWarning: "No se ha establecido la información del administrador"
noBotProtectionWarning: "La protección contra los bots no está configurada"
configure: "Configurar"
postToGallery: "Crear una nueva publicación en la galería"
gallery: "Galería"
recentPosts: "Posts recientes"
popularPosts: "Más vistos"
shareWithNote: "Compartir con una nota"
ads: "Anuncios"
expiration: "Termina el"
memo: "Notas"
priority: "Prioridad"
high: "Alta"
middle: "Mediano"
low: "Baja"
@ -804,7 +748,6 @@ pubSub: "Cuentas Pub/Sub"
lastCommunication: "Última comunicación"
resolved: "Resuelto"
unresolved: "Sin resolver"
breakFollow: "Dejar de seguir"
itsOn: "¡Está encendido!"
itsOff: "¡Está apagado!"
emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro de la cuenta"
@ -818,225 +761,43 @@ classic: "Clásico"
muteThread: "Ocultar hilo"
unmuteThread: "Mostrar hilo"
ffVisibility: "Visibilidad de seguidores y seguidos"
ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes te siguen"
continueThread: "Ver la continuación del hilo"
deleteAccountConfirm: "La cuenta será borrada. ¿Está seguro?"
incorrectPassword: "La contraseña es incorrecta"
voteConfirm: "¿Confirma su voto a {choice}?"
hide: "Ocultar"
leaveGroup: "Dejar el grupo"
leaveGroupConfirm: "¿Desea salir de {name}?"
useDrawerReactionPickerForMobile: "Mostrar panel de reacciones en móviles"
welcomeBackWithName: "Bienvenido otra vez, {name}"
clickToFinishEmailVerification: "Cliquée {ok} y verifique su correo"
overridedDeviceKind: "Tipo de dispositivo"
smartphone: "Teléfono smartphone"
tablet: "Tablet"
auto: "Automático"
themeColor: "Color del tema"
size: "Tamaño"
numberOfColumn: "Cantidad de columnas"
searchByGoogle: "Buscar"
instanceDefaultLightTheme: "Tema claro por defecto de la instancia"
instanceDefaultDarkTheme: "Tema oscuro por defecto de la instancia"
instanceDefaultThemeDescription: "Ingrese el código del tema en formato objeto"
mutePeriod: "Período de silenciamiento"
indefinitely: "Sin límite de tiempo"
tenMinutes: "10 minutos"
oneHour: "1 hora"
oneDay: "1 día"
oneWeek: "1 semana"
reflectMayTakeTime: "Puede pasar un tiempo hasta que se reflejen los cambios"
failedToFetchAccountInformation: "No se pudo obtener información de la cuenta"
rateLimitExceeded: "Se excedió el límite de peticiones"
cropImage: "Recortar imágen"
cropImageAsk: "¿Desea recortar la imagen?"
file: "Archivos"
recentNHours: "Últimas {n} horas"
recentNDays: "Últimos {n} días"
noEmailServerWarning: "No se ha configurado un servidor de correo electrónico."
thereIsUnresolvedAbuseReportWarning: "Hay reportes sin resolver"
recommended: "Recomendado"
check: "Verificar"
driveCapOverrideLabel: "Cambiar la capacidad de la unidad para este usuario"
driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando un valor de 0 o menos"
requireAdminForView: "Necesitas iniciar sesión como administrador para ver esto."
isSystemAccount: "Cuenta creada y operada automáticamente por el sistema"
typeToConfirm: "Ingrese {x} para confirmar"
deleteAccount: "Borrar cuenta"
document: "Documento"
numberOfPageCache: "Cantidad de páginas cacheadas"
numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien puede aumentar la carga y la memoria a usarse"
logoutConfirm: "¿Cerrar sesión?"
lastActiveDate: "Utilizado por última vez el"
statusbar: "Barra de estado"
pleaseSelect: "Selecciona una opción"
reverse: "Echar de un capirotazo"
colored: "Color"
refreshInterval: "Intervalo de actualización"
label: "Etiqueta"
type: "Tipo"
speed: "Velocidad"
slow: "Lento"
fast: "Rápido"
localOnly: "Solo local"
remoteOnly: "Sólo remoto"
failedToUpload: "La subida falló"
cannotUploadBecauseInappropriate: "Este archivo no se puede subir debido a que algunas partes han sido detectadas comoNSFW."
cannotUploadBecauseNoFreeSpace: "La subida falló debido a falta de espacio libre en la unidad del usuario."
beta: "Beta"
enableAutoSensitive: "Marcar automáticamente contenido NSFW"
enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está desactivada, puede ser activado para toda la instancia."
activeEmailValidationDescription: "Habilita la validación estricta de direcciones de correo electrónico, lo cual incluye la revisión de direcciones desechables y si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato de la dirección es validado."
navbar: "Barra de navegación"
shuffle: "Aleatorio"
account: "Cuentas"
move: "Mover"
_emailUnavailable:
used: "Ya fue usado"
format: "Formato no válido."
disposable: "No es un correo reutilizable"
mx: "Servidor de correo inválido"
smtp: "Servidor de correo no disponible"
_ffVisibility:
public: "Publicar"
followers: "Visible solo para seguidores"
private: "Privado"
_signup:
almostThere: "Ya falta poco"
emailAddressInfo: "Ingrese el correo electrónico que usa. Este no se hará público."
emailSent: "Se envió un correo de verificación a la dirección {email}. Acceda al link enviado en el correo para completar el ingreso."
_accountDelete:
accountDelete: "Eliminar Cuenta"
mayTakeTime: "La eliminación de la cuenta es un proceso que precisa de carga. Puede pasar un tiempo hasta que se complete si es mucho el contenido creado y los archivos subidos."
sendEmail: "Cuando se termine de borrar la cuenta, se enviará un correo a la dirección usada para el registro."
requestAccountDelete: "Pedir la eliminación de la cuenta."
started: "El proceso de eliminación ha comenzado."
inProgress: "La eliminación está en proceso."
_ad:
back: "Deseleccionar"
reduceFrequencyOfThisAd: "Mostrar menos este anuncio."
_forgotPassword:
enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link para resetear la contraseña."
ifNoEmail: "Si no utilizó un correo para crear la cuenta, contáctese con el administrador."
contactAdmin: "Esta instancia no admite el uso de direcciones de correo electrónico, póngase en contacto con el administrador de la instancia para restablecer su contraseña"
_gallery:
my: "Mi galería"
liked: "Publicaciones que me gustan"
like: "¡Muy bien!"
unlike: "Quitar me gusta"
_email:
_follow:
title: "te ha seguido"
_receiveFollowRequest:
title: "Has recibido una solicitud de seguimiento"
_plugin:
install: "Instalar plugins"
installWarn: "Por favor no instale plugins que no son de confianza"
manage: "Gestionar plugins"
_preferencesBackups:
list: "Respaldos creados"
saveNew: "Guardar nuevo respaldo"
loadFile: "Cargar desde archivo"
apply: "Aplicar a este dispositivo"
save: "Guardar cambios"
inputName: "Por favor, ingresa un nombre para este respaldo"
cannotSave: "Fallo al guardar"
nameAlreadyExists: "Un respaldo llamado \"{name}\" ya existe. Por favor ingresa un nombre diferente"
applyConfirm: "¿Realmente quieres aplicar los cambios desde el archivo \"{name}\" a este dispositivo? Las configuraciones existentes serán sobreescritas. "
saveConfirm: "¿Guardar respaldo como \"{name}\"?"
deleteConfirm: "¿Borrar el respaldo \"{name}\"?"
renameConfirm: "¿Renombrar este respaldo de \"{old}\" a \"{new}\"?"
noBackups: "No existen respaldos. Deberás respaldar las configuraciones del cliente en este servidor usando \"Crear nuevo respaldo\""
createdAt: "Creado: {date} {time}"
updatedAt: "Actualizado: {date} {time}"
cannotLoad: "La carga falló"
invalidFile: "Formato de archivo inválido"
_registry:
scope: "Alcance"
key: "Clave"
keys: "Clave"
domain: "Dominio"
createKey: "Crear una llave"
_aboutMisskey:
about: "Misskey es un software de código abierto, desarrollado por syuilo desde el 2014"
contributors: "Principales colaboradores"
allContributors: "Todos los colaboradores"
source: "Código fuente"
translation: "Traducir Misskey"
donate: "Donar a Misskey"
morePatrons: "Muchas más personas nos apoyan. Muchas gracias🥰"
patrons: "Patrocinadores"
_nsfw:
respect: "Ocultar medios NSFW"
ignore: "No esconder medios NSFW "
force: "Ocultar todos los medios"
_mfm:
cheatSheet: "Hoja de referencia de MFM"
intro: "MFM es un lenguaje de marcado dedicado que se puede usar en varios lugares dentro de Misskey. Aquí puede ver una lista de sintaxis disponibles en MFM."
dummy: "Misskey expande el mundo de la Fediverso"
mention: "Menciones"
mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar para notificar a un usuario en particular."
hashtag: "Hashtag"
hashtagDescription: "Puede especificar un hashtag con un numeral y el texto."
url: "URL"
urlDescription: "Se pueden mostrar las URL"
link: "Vínculo"
linkDescription: "Se pueden asociar partes de texto a la URL"
bold: "Negrita"
boldDescription: "Muestra el texto con las letras más gruesas"
small: "Pequeño"
smallDescription: "Muestra el texto más pequeño y delgado"
center: "Centrar"
centerDescription: "Muestra el texto centrado"
inlineCode: "Código (insertado)"
inlineCodeDescription: "Muestra el código de un programa resaltando su sintaxis"
blockCode: "Código (bloque)"
blockCodeDescription: "Código de resaltado de sintaxis, como programas de varias líneas con bloques."
inlineMath: "Fórmula (insertado)"
inlineMathDescription: "Muestra fórmulas (KaTeX) insertadas"
blockMath: "Fórmula (bloque)"
blockMathDescription: "Muestra fórmulas (KaTeX) de varias líneas en un bloque"
quote: "Citar"
quoteDescription: "Muestra el contenido como una cita"
emoji: "Emojis personalizados"
emojiDescription: "Muestra los emojis personalizados encerrados entre dos puntos."
search: "Buscar"
searchDescription: "Muestra una caja de búsqueda con texto pre-escrito"
flip: "Echar de un capirotazo"
flipDescription: "Voltea el contenido hacia arriba / abajo o hacia la izquierda / derecha."
jelly: "Animación (gelatina)"
jellyDescription: "Aplica un efecto de animación tipo gelatina"
tada: "Animación (tadá)"
tadaDescription: "Aplica un efecto de animación al estilo \"Tadá\""
jump: "Animación (saltar)"
jumpDescription: "Aplica un efecto de animación tipo salto"
bounce: "Animación (rebotar)"
bounceDescription: "Aplica un efecto de animación tipo rebote"
shake: "Animación (temblor)"
shakeDescription: "Aplica un efecto de animación tipo temblor"
twitch: "Animación (sacudida)"
twitchDescription: "Aplica un efecto de animación tipo sacudida"
spin: "Animación (giro)"
spinDescription: "Aplica un efecto de animación tipo rotación"
x2: "Grande"
x2Description: "Muestra el contenido más grande"
x3: "Muy grande"
x3Description: "Muestra el contenido mucho más grande"
x4: "Totalmente grande"
x4Description: "Muestra el contenido totalmente grande"
blur: "Desenfoque"
blurDescription: "Para desenfocar el contenido. Se muestra claramente al colocar el puntero encima."
font: "Fuente"
fontDescription: "Elegir la fuente del contenido"
rainbow: "Arcoíris"
rainbowDescription: "Muestra el contenido con los colores del arcoíris"
sparkle: "Parpadeante"
sparkleDescription: "Aplica un efecto de partículas parpadeantes"
rotate: "Rotar"
rotateDescription: "Rota el contenido a un ángulo especificado."
plain: "Plano"
plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto MFM."
_instanceTicker:
none: "No mostrar"
remote: "Mostrar a usuarios remotos"
@ -1058,7 +819,6 @@ _channel:
_menuDisplay:
sideFull: "Horizontal"
sideIcon: "Horizontal (ícono)"
top: "Arriba"
hide: "Ocultar"
_wordMute:
muteWords: "Palabras que silenciar"
@ -1081,8 +841,6 @@ _theme:
code: "Código del tema"
description: "Descripción"
installed: "{name} ha sido instalado"
installedThemes: "Temas instalados"
builtinThemes: "Temas integrados"
alreadyInstalled: "Este tema ya está instalado"
invalid: "El formato del tema no es válido"
make: "Crear tema"
@ -1157,6 +915,7 @@ _sfx:
antenna: "Antena receptora"
channel: "Notificaciones del canal"
_ago:
unknown: "Desconocido"
future: "Futuro"
justNow: "Recién ahora"
secondsAgo: "Hace {n} segundos"
@ -1200,7 +959,6 @@ _2fa:
registerKey: "Registrar clave"
step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o {b} u otra."
step2: "Luego, escanee con la aplicación el código QR mostrado en pantalla."
step2Url: "En una aplicación de escritorio se puede ingresar la siguiente URL:"
step3: "Para terminar, ingrese el token mostrado en la aplicación."
step4: "Ahora cuando inicie sesión, ingrese el mismo token"
securityKeyInfo: "Se puede configurar el inicio de sesión usando una clave de seguridad de hardware que soporte FIDO2 o con un certificado de huella digital o con un PIN"
@ -1233,10 +991,6 @@ _permissions:
"write:user-groups": "Administrar grupos de usuarios"
"read:channels": "Ver canal"
"write:channels": "Modificar canal"
"read:gallery": "Ver galería"
"write:gallery": "Editar galería"
"read:gallery-likes": "Ver favoritos de la galería"
"write:gallery-likes": "Editar favoritos de la galería"
_auth:
shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?"
shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder a su cuenta?"
@ -1266,21 +1020,13 @@ _widgets:
trends: "Tendencias"
clock: "Reloj"
rss: "Lector RSS"
rssTicker: "Ticker-RSS"
activity: "Actividad"
photos: "Fotos"
digitalClock: "Reloj digital"
unixClock: "Reloj UNIX"
federation: "Federación"
instanceCloud: "Nube de palabras de la instancia"
postForm: "Formulario"
slideshow: "Diapositivas"
button: "Botón"
onlineUsers: "Usuarios en linea"
jobQueue: "Cola de trabajos"
serverMetric: "Estadísticas del servidor"
aiscript: "Consola de AiScript"
aichan: "indigo"
_cw:
hide: "Ocultar"
show: "Ver más"
@ -1335,21 +1081,14 @@ _profile:
username: "Nombre de usuario"
description: "Descripción"
youCanIncludeHashtags: "Puedes añadir hashtags"
metadata: "información adicional"
metadataEdit: "Editar información adicional"
metadataDescription: "Muestra la información adicional en el perfil"
metadataLabel: "Etiqueta"
metadataContent: "Contenido"
changeAvatar: "Cambiar avatar"
changeBanner: "Cambiar banner"
_exportOrImport:
allNotes: "Todas las notas"
followingList: "Siguiendo"
muteList: "Silenciados"
blockingList: "Bloqueados"
userLists: "Listas"
excludeMutingUsers: "Excluir usuarios silenciados"
excludeInactiveUsers: "Excluir usuarios inactivos"
_charts:
federation: "Federación"
apRequest: "Pedidos"
@ -1388,7 +1127,6 @@ _pages:
created: "La página fue creada"
updated: "La página fue actualizada"
deleted: "La página borrada"
pageSetting: "Configurar página"
nameAlreadyExists: "La URL de la página especificada ya existe"
invalidNameTitle: "URL inválida"
invalidNameText: "Verifique que no tenga espacios en blanco"
@ -1399,7 +1137,6 @@ _pages:
unlike: "Quitar me gusta"
my: "Mis páginas"
liked: "Páginas que me gustan"
featured: "Popular"
inspector: "Inspector"
contents: "Contenido"
content: "Bloque de página"
@ -1455,11 +1192,6 @@ _pages:
id: "Lienzo ID"
width: "Ancho"
height: "Altura"
note: "Nota embebida"
_note:
id: "Id de la nota"
idDescription: "Pega la URL de la nota para configurarla"
detailed: "Ver Detalles"
switch: "Interruptor"
_switch:
name: "Nombre de variable"
@ -1687,8 +1419,6 @@ _notification:
youReceivedFollowRequest: "Has mandado una solicitud de seguimiento"
yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada"
youWereInvitedToGroup: "Invitado al grupo"
pollEnded: "Estan disponibles los resultados de la encuesta"
emptyPushNotificationMessage: "Se han actualizado las notificaciones push"
_types:
all: "Todo"
follow: "Siguiendo"
@ -1698,34 +1428,21 @@ _notification:
quote: "Citar"
reaction: "Reacción"
pollVote: "Votado en la encuesta"
pollEnded: "La encuesta terminó"
receiveFollowRequest: "Recibió una solicitud de seguimiento"
followRequestAccepted: "El seguimiento fue aceptado"
groupInvited: "Invitado al grupo"
app: "Notificaciones desde aplicaciones"
_actions:
followBack: "Te sigue de vuelta"
reply: "Responder"
renote: "Renotar"
_deck:
alwaysShowMainColumn: "Siempre mostrar la columna principal"
columnAlign: "Alinear columnas"
addColumn: "Agregar columna"
configureColumn: "Ajustes de columna"
swapLeft: "Mover a la izquierda"
swapRight: "Mover a la derecha"
swapUp: "Mover arriba"
swapDown: "Mover abajo"
stackLeft: "Apilar a la izquierda"
popRight: "Sacar a la derecha"
profile: "Perfil"
newProfile: "Nuevo perfil"
deleteProfile: "Eliminar perfil"
introduction: "¡Crea la interfaz perfecta para tí organizando las columnas libremente!"
introduction2: "Presiona en la + de la derecha de la pantalla para añadir nuevas columnas donde quieras."
widgetsIntroduction: "Por favor selecciona \"Editar Widgets\" en el menú columna y agrega un widget."
_columns:
main: "Principal"
widgets: "Widgets"
notifications: "Notificaciones"
tl: "Linea de tiempo"

View File

@ -52,7 +52,6 @@ searchUser: "Chercher un·e utilisateur·rice"
reply: "Répondre"
loadMore: "Afficher plus …"
showMore: "Afficher plus …"
showLess: "Fermer"
youGotNewFollower: "Vous suit"
receiveFollowRequest: "Demande dabonnement reçue"
followRequestAccepted: "La demande dabonnement a été acceptée"
@ -805,7 +804,7 @@ manageAccounts: "Gérer les comptes"
makeReactionsPublic: "Rendre les réactions publiques"
makeReactionsPublicDescription: "Ceci rendra la liste de toutes vos réactions données publique."
classic: "Classique"
muteThread: "Masquer cette discussion"
muteThread: "Mettre ce thread en sourdine"
unmuteThread: "Ne plus masquer le fil"
ffVisibility: "Visibilité des abonnés/abonnements"
ffVisibilityDescription: "Permet de configurer qui peut voir les personnes que tu suis et les personnes qui te suivent."
@ -816,7 +815,6 @@ voteConfirm: "Confirmez-vous votre vote pour « {choice} » ?"
hide: "Masquer"
leaveGroup: "Quitter le groupe"
leaveGroupConfirm: "Êtes vous sûr de vouloir quitter \"{name}\" ?"
useDrawerReactionPickerForMobile: "Afficher le sélecteur de réactions en tant que panneau sur mobile"
welcomeBackWithName: "Heureux de vous revoir, {name}"
clickToFinishEmailVerification: "Veuillez cliquer sur [{ok}] afin de compléter la vérification par courriel."
overridedDeviceKind: "Type dappareil"
@ -829,26 +827,15 @@ numberOfColumn: "Nombre de colonnes"
searchByGoogle: "Google"
instanceDefaultLightTheme: "Thème clair par défaut sur toute linstance"
instanceDefaultDarkTheme: "Thème sombre par défaut sur toute linstance"
instanceDefaultThemeDescription: "Saisissez le code du thème en format objet."
mutePeriod: "Durée de mise en sourdine"
indefinitely: "Illimité"
tenMinutes: "10 minutes"
oneHour: "1 heure"
oneDay: "1 jour"
oneWeek: "1 semaine"
rateLimitExceeded: "Limite de taux dépassée"
cropImage: "Recadrer l'image"
cropImageAsk: "Voulez-vous recadrer cette image ?"
file: "Fichiers"
reverse: "Inverser"
colored: "Coloré"
label: "Étiquette"
localOnly: "Local seulement"
account: "Comptes"
_emailUnavailable:
used: "Non disponible"
format: "Le format de cette adresse de courriel est invalide"
disposable: "Les adresses e-mail jetables ne peuvent pas être utilisées"
mx: "Ce serveur de courriels est invalide"
smtp: "Ce serveur de courriels ne répond pas"
_ffVisibility:
@ -1088,6 +1075,7 @@ _sfx:
antenna: "Réception de lantenne"
channel: "Notifications de canal"
_ago:
unknown: "Inconnu"
future: "Futur"
justNow: "à linstant"
secondsAgo: "Il y a {n}s"
@ -1131,7 +1119,6 @@ _2fa:
registerKey: "Enregistrer une clef"
step1: "Tout d'abord, installez une application d'authentification, telle que {a} ou {b}, sur votre appareil."
step2: "Ensuite, scannez le code QR affiché sur lécran."
step2Url: "Vous pouvez également saisir cette URL si vous utilisez un programme de bureau :"
step3: "Entrez le jeton affiché sur votre application pour compléter la configuration."
step4: "À partir de maintenant, ce même jeton vous sera demandé à chacune de vos connexions."
securityKeyInfo: "Vous pouvez configurer l'authentification WebAuthN pour sécuriser davantage le processus de connexion grâce à une clé de sécurité matérielle qui prend en charge FIDO2, ou bien en configurant l'authentification par empreinte digitale ou par code PIN sur votre appareil."
@ -1615,8 +1602,6 @@ _notification:
youReceivedFollowRequest: "Vous avez reçu une demande dabonnement"
yourFollowRequestAccepted: "Votre demande dabonnement a été accepté"
youWereInvitedToGroup: "Invité·e au groupe"
pollEnded: "Les résultats du sondage sont disponibles"
emptyPushNotificationMessage: "Les notifications push ont été mises à jour"
_types:
all: "Toutes"
follow: "Nouvel·le abonné·e"
@ -1630,13 +1615,11 @@ _notification:
followRequestAccepted: "Demande d'abonnement acceptée"
groupInvited: "Invitation à un groupe"
app: "Notifications provenant des apps"
_actions:
followBack: "Suivre"
reply: "Répondre"
renote: "Renoter"
_deck:
alwaysShowMainColumn: "Toujours afficher la colonne principale"
columnAlign: "Aligner les colonnes"
columnMargin: "Marge entre les colonnes"
columnHeaderHeight: "Taille de l'en-tête de colonne"
addColumn: "Ajouter une colonne"
swapLeft: "Déplacer à gauche"
swapRight: "Déplacer à droite"

View File

@ -52,7 +52,6 @@ searchUser: "Cari pengguna"
reply: "Balas"
loadMore: "Selebihnya"
showMore: "Selebihnya"
showLess: "Tutup"
youGotNewFollower: "Mengikuti kamu"
receiveFollowRequest: "Ingin mengikuti kamu"
followRequestAccepted: "Permintaan mengikuti telah disetujui"
@ -82,7 +81,7 @@ somethingHappened: "Terjadi kesalahan"
retry: "Coba lagi"
pageLoadError: "Gagal memuat halaman."
pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali."
serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat lagi."
serverIsDead: "Tidak ada respon dari server. Mohon tunggu dan coba beberapa saat lagi."
youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan klienmu."
enterListName: "Masukkan nama daftar"
privacy: "Privasi"
@ -295,8 +294,8 @@ rename: "Ubah nama"
avatar: "Avatar"
banner: "Banner"
nsfw: "Konten sensitif"
whenServerDisconnected: "Ketika kehilangan koneksi dengan peladen"
disconnectedFromServer: "Terputus koneksi dari peladen"
whenServerDisconnected: "Ketika kehilangan koneksi dengan server"
disconnectedFromServer: "Terputus koneksi dari server"
reload: "Muat ulang"
doNothing: "Abaikan"
reloadConfirm: "Apakah kamu ingin memuat ulang linimasa?"
@ -496,7 +495,7 @@ objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS unt
objectStorageUseProxy: "Hubungkan melalui Proxy"
objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk koneksi ObjectStorage"
objectStorageSetPublicRead: "Setel \"public-read\" disaat mengunggah"
serverLogs: "Log Peladen"
serverLogs: "Log Server"
deleteAll: "Hapus semua"
showFixedPostForm: "Tampilkan form posting di atas linimasa."
newNoteRecived: "Kamu mendapat catatan baru"
@ -534,7 +533,7 @@ removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon ja
userSuspended: "Pengguna ini telah dibekukan."
userSilenced: "Pengguna ini telah dibungkam."
yourAccountSuspendedTitle: "Akun ini dibekukan"
yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. Mohon untuk tidak membuat akun baru."
yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan layanan server atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. Mohon untuk tidak membuat akun baru."
menu: "Menu"
divider: "Pembagi"
addItem: "Tambahkan item"
@ -578,12 +577,12 @@ pluginTokenRequestedDescription: "Plugin ini dapat menggunakan setelan ijin disi
notificationType: "Jenis pemberitahuan"
edit: "Sunting"
useStarForReactionFallback: "Gunakan ★ sebagai fallback jika reaksi emoji tidak diketahui"
emailServer: "Peladen surel"
emailServer: "Server surel"
enableEmail: "Nyalakan distribusi surel"
emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa kata sandi"
email: "Surel"
emailAddress: "Alamat surel"
smtpConfig: "Konfigurasi peladen SMTP"
smtpConfig: "Konfigurasi server SMTP"
smtpHost: "Host"
smtpPort: "Port"
smtpUser: "Nama Pengguna"
@ -594,7 +593,6 @@ smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS"
testEmail: "Tes pengiriman surel"
wordMute: "Bisukan kata"
regexpError: "Kesalahan ekspresi reguler"
regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab} kata yang dibisukan:"
instanceMute: "Bisuka instansi"
userSaysSomething: "{name} mengatakan sesuatu"
makeActive: "Aktifkan"
@ -644,8 +642,6 @@ clip: "Klip"
createNew: "Buat baru"
optional: "Opsional"
createNewClip: "Buat klip baru"
unclip: "Batalkan klip"
confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\". Yakin ingin membatalkan catatan dari klip ini?"
public: "Publik"
i18nInfo: "Misskey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat ikut membantu di {link}."
manageAccessTokens: "Kelola access token"
@ -794,7 +790,7 @@ 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 peladen ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya."
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."
aiChanMode: "Mode Ai"
keepCw: "Biarkan Peringatan Konten"
pubSub: "Akun Pub/Sub"
@ -807,7 +803,7 @@ itsOff: "Nonaktif"
emailRequiredForSignup: "Membutuhkan alamat surel untuk mendaftar"
unread: "Belum dibaca"
filter: "Saring"
controlPanel: "Panel kendali"
controlPanel: "Panel kontrol"
manageAccounts: "Kelola Akun"
makeReactionsPublic: "Tampilkan riwayat reaksi ke publik"
makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi masa lalu kamu ditampilkan secara publik."
@ -843,23 +839,13 @@ tenMinutes: "10 Menit"
oneHour: "1 Jam"
oneDay: "1 Hari"
oneWeek: "1 Bulan"
reflectMayTakeTime: "Mungkin perlu beberapa saat untuk dicerminkan."
failedToFetchAccountInformation: "Gagal untuk mendapatkan informasi akun"
rateLimitExceeded: "Batas sudah terlampaui"
cropImage: "potong gambar"
cropImageAsk: "Ingin memotong gambar?"
file: "Berkas"
reverse: "Balik"
colored: "Diwarnai"
label: "Label"
localOnly: "Hanya lokal"
account: "Akun"
_emailUnavailable:
used: "Alamat surel ini telah digunakan"
format: "Format tidak valid."
disposable: "Alamat surel temporer tidak dapat digunakan"
mx: "Peladen alamat surel ini tidak valid"
smtp: "Peladen alamat surel ini tidak merespon"
mx: "Server alamat surel ini tidak valid"
smtp: "Server alamat surel ini tidak merespon"
_ffVisibility:
public: "Terbitkan"
followers: "Tampil untuk pengikut saja"
@ -1099,6 +1085,7 @@ _sfx:
antenna: "Penerimaan Antenna"
channel: "Pemberitahuan saluran"
_ago:
unknown: "Tidak diketahui"
future: "Masa depan"
justNow: "Baru saja"
secondsAgo: "{n} detik lalu"
@ -1142,7 +1129,6 @@ _2fa:
registerKey: "Daftarkan kunci keamanan baru"
step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat kamu."
step2: "Lalu, pindai kode QR yang ada di layar."
step2Url: "Di aplikasi desktop, masukkan URL berikut:"
step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan pemasangan."
step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi otentikasi kamu."
securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu."
@ -1217,7 +1203,7 @@ _widgets:
button: "Tombol"
onlineUsers: "Pengguna online"
jobQueue: "Antrian kerja"
serverMetric: "Statistik peladen"
serverMetric: "Statistik server"
aiscript: "Konsol AiScript"
aichan: "Ai"
_cw:
@ -1627,7 +1613,6 @@ _notification:
yourFollowRequestAccepted: "Permintaan mengikuti kamu telah diterima"
youWereInvitedToGroup: "Telah diundang ke grup"
pollEnded: "Hasil Kuesioner telah keluar"
emptyPushNotificationMessage: "Pembaruan notifikasi dorong"
_types:
all: "Semua"
follow: "Ikuti"
@ -1642,13 +1627,11 @@ _notification:
followRequestAccepted: "Permintaan mengikuti disetujui"
groupInvited: "Diundang ke grup"
app: "Pemberitahuan dari aplikasi"
_actions:
followBack: "Ikuti Kembali"
reply: "Balas"
renote: "Renote"
_deck:
alwaysShowMainColumn: "Selalu tampilkan kolom utama"
columnAlign: "Luruskan kolom"
columnMargin: "Batas antar kolom"
columnHeaderHeight: "Tinggi kolom header"
addColumn: "Tambahkan kolom"
swapLeft: "Pindah ke kiri"
swapRight: "Pindah ke kanan"

View File

@ -36,7 +36,6 @@ const languages = [
'sk-SK',
'ug-CN',
'uk-UA',
'vi-VN',
'zh-CN',
'zh-TW',
];

View File

@ -10,7 +10,7 @@ password: "Password"
forgotPassword: "Hai dimenticato la tua password?"
fetchingAsApObject: "Recuperando dal Fediverso..."
ok: "OK"
gotIt: "Ho capito"
gotIt: "Capito!"
cancel: "Annulla"
enterUsername: "Inserisci un nome utente"
renotedBy: "Rinotato da {user}"
@ -52,7 +52,6 @@ searchUser: "Cerca utente"
reply: "Rispondi"
loadMore: "Mostra di più"
showMore: "Mostra di più"
showLess: "Chiudi"
youGotNewFollower: "Ha iniziato a seguirti"
receiveFollowRequest: "Hai ricevuto una richiesta di follow."
followRequestAccepted: "Richiesta di follow accettata"
@ -768,7 +767,6 @@ customCss: "CSS personalizzato"
global: "Federata"
squareAvatars: "Mostra l'immagine del profilo come quadrato"
sent: "Inviare"
received: "Ricevuto"
searchResult: "Risultati della Ricerca"
hashtags: "Hashtag"
troubleshooting: "Risoluzione problemi"
@ -806,16 +804,6 @@ welcomeBackWithName: "Bentornato/a, {name}"
clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo email."
searchByGoogle: "Cerca"
indefinitely: "Non scade"
tenMinutes: "10 minuti"
oneHour: "1 ora"
oneDay: "1 giorno"
oneWeek: "1 settimana"
file: "Allegati"
reverse: "Inverti"
colored: "Colorato"
label: "Etichetta"
localOnly: "Soltanto locale"
account: "Account"
_emailUnavailable:
used: "Email già in uso"
format: "Formato email non valido"
@ -1011,6 +999,7 @@ _sfx:
antenna: "Ricezione dell'antenna"
channel: "Notifiche di canale"
_ago:
unknown: "Sconosciuto"
future: "Futuro"
justNow: "Ora"
secondsAgo: "{n}s fa"
@ -1444,12 +1433,11 @@ _notification:
followRequestAccepted: "Richiesta di follow accettata"
groupInvited: "Invito a un gruppo"
app: "Notifiche da applicazioni"
_actions:
reply: "Rispondi"
renote: "Rinota"
_deck:
alwaysShowMainColumn: "Mostra sempre la colonna principale"
columnAlign: "Allineare colonne"
columnMargin: "Margine tra le colonne"
columnHeaderHeight: "Dimensioni dell'intestazione della colonna"
addColumn: "Aggiungi colonna"
swapLeft: "Sposta a sinistra"
swapRight: "Sposta a destra"

View File

@ -52,7 +52,6 @@ searchUser: "ユーザーを検索"
reply: "返信"
loadMore: "もっと見る"
showMore: "もっと見る"
showLess: "閉じる"
youGotNewFollower: "フォローされました"
receiveFollowRequest: "フォローリクエストされました"
followRequestAccepted: "フォローが承認されました"
@ -204,7 +203,6 @@ done: "完了"
processing: "処理中"
preview: "プレビュー"
default: "デフォルト"
defaultValueIs: "デフォルト: {value}"
noCustomEmojis: "絵文字はありません"
noJobs: "ジョブはありません"
federating: "連合中"
@ -358,7 +356,7 @@ antennaExcludeKeywords: "除外キーワード"
antennaKeywordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります"
notifyAntenna: "新しいノートを通知する"
withFileAntenna: "ファイルが添付されたノートのみ"
enableServiceworker: "ブラウザへのプッシュ通知を有効にする"
enableServiceworker: "ServiceWorkerを有効にする"
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
caseSensitive: "大文字小文字を区別する"
withReplies: "返信を含む"
@ -383,7 +381,6 @@ administrator: "管理者"
token: "トークン"
twoStepAuthentication: "二段階認証"
moderator: "モデレーター"
moderation: "モデレーション"
nUsersMentioned: "{n}人が投稿"
securityKey: "セキュリティキー"
securityKeyName: "キーの名前"
@ -428,7 +425,7 @@ quoteQuestion: "引用として添付しますか?"
noMessagesYet: "まだチャットはありません"
newMessageExists: "新しいメッセージがあります"
onlyOneFileCanBeAttached: "メッセージに添付できるファイルはひとつです"
signinRequired: "続行する前に、サインアップまたはサインインが必要です"
signinRequired: "ログインしてください"
invitations: "招待"
invitationCode: "招待コード"
checking: "確認しています"
@ -544,7 +541,7 @@ relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
serviceworkerInfo: "プッシュ通知を行うには有効する必要があります。"
serviceworkerInfo: "プッシュ通知を行うには有効する必要があります。"
deletedNote: "削除された投稿"
invisibleNote: "非公開の投稿"
enableInfiniteScroll: "自動でもっと見る"
@ -562,7 +559,6 @@ author: "作者"
leaveConfirm: "未保存の変更があります。破棄しますか?"
manage: "管理"
plugins: "プラグイン"
preferencesBackups: "設定のバックアップ"
deck: "デッキ"
undeck: "デッキ解除"
useBlurEffectForModal: "モーダルにぼかし効果を使用"
@ -647,8 +643,6 @@ clip: "クリップ"
createNew: "新規作成"
optional: "任意"
createNewClip: "新しいクリップを作成"
unclip: "クリップ解除"
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれています。ノートをこのクリップから除外しますか?"
public: "パブリック"
i18nInfo: "Misskeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。"
manageAccessTokens: "アクセストークンの管理"
@ -849,50 +843,6 @@ oneDay: "1日"
oneWeek: "1週間"
reflectMayTakeTime: "反映されるまで時間がかかる場合があります。"
failedToFetchAccountInformation: "アカウント情報の取得に失敗しました"
rateLimitExceeded: "レート制限を超えました"
cropImage: "画像のクロップ"
cropImageAsk: "画像をクロップしますか?"
file: "ファイル"
recentNHours: "直近{n}時間"
recentNDays: "直近{n}日"
noEmailServerWarning: "メールサーバーの設定がされていません。"
thereIsUnresolvedAbuseReportWarning: "未対応の通報があります。"
recommended: "推奨"
check: "チェック"
driveCapOverrideLabel: "このユーザーのドライブ容量上限を変更"
driveCapOverrideCaption: "0以下を指定すると解除されます。"
requireAdminForView: "閲覧するには管理者アカウントでログインしている必要があります。"
isSystemAccount: "システムにより自動で作成・管理されているアカウントです。"
typeToConfirm: "この操作を行うには {x} と入力してください"
deleteAccount: "アカウント削除"
document: "ドキュメント"
numberOfPageCache: "ページキャッシュ数"
numberOfPageCacheDescription: "多くすると利便性が向上しますが、負荷とメモリ使用量が増えます。"
logoutConfirm: "ログアウトしますか?"
lastActiveDate: "最終利用日時"
statusbar: "ステータスバー"
pleaseSelect: "選択してください"
reverse: "反転"
colored: "色付き"
refreshInterval: "更新間隔"
label: "ラベル"
type: "タイプ"
speed: "速度"
slow: "遅い"
fast: "速い"
localOnly: "ローカルのみ"
remoteOnly: "リモートのみ"
failedToUpload: "アップロード失敗"
cannotUploadBecauseInappropriate: "不適切な内容を含む可能性があると判定されたためアップロードできません。"
cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いためアップロードできません。"
beta: "ベータ"
enableAutoSensitive: "自動NSFW判定"
enableAutoSensitiveDescription: "利用可能な場合は、機械学習を利用して自動でメディアにNSFWフラグを設定します。この機能をオフにしても、インスタンスによっては自動で設定されることがあります。"
activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかなどを判定しより積極的に行います。オフにすると単に文字列として正しいかどうかのみチェックされます。"
navbar: "ナビゲーションバー"
shuffle: "シャッフル"
account: "アカウント"
move: "移動"
_emailUnavailable:
used: "既に使用されています"
@ -945,25 +895,6 @@ _plugin:
installWarn: "信頼できないプラグインはインストールしないでください。"
manage: "プラグインの管理"
_preferencesBackups:
list: "作成したバックアップ"
saveNew: "新規保存"
loadFile: "ファイルを読み込み"
apply: "このデバイスに適用"
save: "上書き保存"
inputName: "バックアップ名を入力"
cannotSave: "保存できません"
nameAlreadyExists: "バックアップ名「{name}」は既に存在します。違う名前を指定してください。"
applyConfirm: "バックアップ「{name}」を現在のデバイスに適用しますか?現在のデバイス設定は失われます。"
saveConfirm: "{name}に上書き保存しますか?"
deleteConfirm: "{name}を削除しますか?"
renameConfirm: "「{old}」を「{new}」に変更しますか?"
noBackups: "バックアップはありません。「新規保存」で現在のクライアント設定をサーバーに保存できます。"
createdAt: "作成日時: {date} {time}"
updatedAt: "更新日時: {date} {time}"
cannotLoad: "読み込みできません"
invalidFile: "ファイル形式が違います。"
_registry:
scope: "スコープ"
key: "キー"
@ -1050,8 +981,6 @@ _mfm:
sparkleDescription: "キラキラしたパーティクルのエフェクトを追加します。"
rotate: "回転"
rotateDescription: "指定した角度で回転させます。"
plain: "プレーン"
plainDescription: "内側の構文を全て無効にします。"
_instanceTicker:
none: "表示しない"
@ -1182,6 +1111,7 @@ _sfx:
channel: "チャンネル通知"
_ago:
unknown: "謎"
future: "未来"
justNow: "たった今"
secondsAgo: "{n}秒前"
@ -1228,7 +1158,6 @@ _2fa:
registerKey: "キーを登録"
step1: "まず、{a}や{b}などの認証アプリをお使いのデバイスにインストールします。"
step2: "次に、表示されているQRコードをアプリでスキャンします。"
step2Url: "デスクトップアプリでは次のURLを入力します:"
step3: "アプリに表示されているトークンを入力して完了です。"
step4: "これからログインするときも、同じようにトークンを入力します。"
securityKeyInfo: "FIDO2をサポートするハードウェアセキュリティキーもしくは端末の指紋認証やPINを使用してログインするように設定できます。"
@ -1299,13 +1228,10 @@ _widgets:
trends: "トレンド"
clock: "時計"
rss: "RSSリーダー"
rssTicker: "RSSティッカー"
activity: "アクティビティ"
photos: "フォト"
digitalClock: "デジタル時計"
unixClock: "UNIX時計"
federation: "連合"
instanceCloud: "インスタンスクラウド"
postForm: "投稿フォーム"
slideshow: "スライドショー"
button: "ボタン"
@ -1743,9 +1669,8 @@ _notification:
youWereFollowed: "フォローされました"
youReceivedFollowRequest: "フォローリクエストが来ました"
yourFollowRequestAccepted: "フォローリクエストが承認されました"
youWereInvitedToGroup: "{userName}があなたをグループに招待しました"
youWereInvitedToGroup: "グループに招待されました"
pollEnded: "アンケートの結果が出ました"
emptyPushNotificationMessage: "プッシュ通知の更新をしました"
_types:
all: "すべて"
@ -1762,16 +1687,12 @@ _notification:
groupInvited: "グループに招待された"
app: "連携アプリからの通知"
_actions:
followBack: "フォローバック"
reply: "返信"
renote: "Renote"
_deck:
alwaysShowMainColumn: "常にメインカラムを表示"
columnAlign: "カラムの寄せ"
columnMargin: "カラム間のマージン"
columnHeaderHeight: "カラムのヘッダー幅"
addColumn: "カラムを追加"
configureColumn: "カラムの設定"
swapLeft: "左に移動"
swapRight: "右に移動"
swapUp: "上に移動"
@ -1779,11 +1700,6 @@ _deck:
stackLeft: "左に重ねる"
popRight: "右に出す"
profile: "プロファイル"
newProfile: "新規プロファイル"
deleteProfile: "プロファイルを削除"
introduction: "カラムを組み合わせて自分だけのインターフェイスを作りましょう!"
introduction2: "画面の右にある + を押して、いつでもカラムを追加できます。"
widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選択してウィジェットを追加してください"
_columns:
main: "メイン"

View File

@ -52,7 +52,6 @@ searchUser: "ユーザーを検索"
reply: "返事"
loadMore: "まだまだあるで!"
showMore: "まだまだあるで!"
showLess: "閉じる"
youGotNewFollower: "フォローされたで"
receiveFollowRequest: "フォローリクエストされたで"
followRequestAccepted: "フォローが承認されたで"
@ -204,7 +203,6 @@ done: "でけた"
processing: "処理しとる"
preview: "プレビュー"
default: "デフォルト"
defaultValueIs: "デフォルト"
noCustomEmojis: "絵文字はあらへん"
noJobs: "ジョブはあらへん"
federating: "連合しとる"
@ -319,8 +317,6 @@ monthX: "{month}月"
yearX: "{year}年"
pages: "ページ"
integration: "連携"
connectService: "つなげるで"
disconnectService: "切るで"
enableLocalTimeline: "ローカルタイムラインを使えるようにする"
enableGlobalTimeline: "グローバルタイムラインを使えるようにする"
disablingTimelinesInfo: "ここらへんのタイムラインを使えんようにしてしもても、管理者とモデレーターは使えるままになってるで、そうやなかったら不便やからな。"
@ -332,13 +328,10 @@ driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのド
inMb: "メガバイト単位"
iconUrl: "アイコン画像のURL"
bannerUrl: "バナー画像のURL"
backgroundImageUrl: "背景画像のURL"
basicInfo: "基本情報"
pinnedUsers: "ピン留めしたユーザー"
pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。"
pinnedPages: "ピン留めページ"
pinnedPagesDescription: "インスタンスのいっちゃん上にピン留めしたいページのパスを改行で区切って記述してな"
pinnedClipId: "ピン留めするクリップのID"
pinnedNotes: "ピン留めされとるノート"
hcaptcha: "hCaptchaキャプチャ"
enableHcaptcha: "hCaptchaキャプチャをつけとく"
@ -383,7 +376,6 @@ administrator: "管理者"
token: "トークン"
twoStepAuthentication: "二段階認証"
moderator: "モデレーター"
moderation: "モデレーション"
nUsersMentioned: "{n}人が投稿"
securityKey: "セキュリティキー"
securityKeyName: "キーの名前"
@ -443,17 +435,13 @@ strongPassword: "ええ感じのパスワード"
passwordMatched: "よし!一致や!"
passwordNotMatched: "一致しとらんで?"
signinWith: "{x}でログイン"
signinFailed: "ログインできんかったで。もっかいユーザー名とパスワードを確認してみてな。"
tapSecurityKey: "セキュリティキーにタッチしてな"
or: "それか"
language: "言語"
uiLanguage: "UIの表示言語"
groupInvited: "グループに招待されとるで"
aboutX: "{x}について"
useOsNativeEmojis: "OSネイティブの絵文字を使う"
disableDrawer: "メニューをドロワーで表示せぇへん"
youHaveNoGroups: "グループがあらへんねぇ。"
joinOrCreateGroup: "既存のグループに招待してもらうか、新しくグループ作ってからやってな"
noHistory: "履歴はあらへんねぇ。"
signinHistory: "ログイン履歴"
disableAnimatedMfm: "動きがやかましいMFMを止める"
@ -462,7 +450,6 @@ category: "カテゴリ"
tags: "タグ"
docSource: "このドキュメントのソース"
createAccount: "アカウントを作成"
existingAccount: "既存のアカウント"
regenerate: "再生成"
fontSize: "フォントサイズ"
noFollowRequests: "フォロー申請はあらへんで"
@ -486,15 +473,10 @@ useObjectStorage: "オブジェクトストレージを使う"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCSとかなら: 'https://storage.googleapis.com/<bucket>'。"
objectStorageBucket: "Bucket"
objectStorageBucketDesc: "使ってるサービスのbucket名を選んでな"
objectStoragePrefix: "Prefix"
objectStoragePrefixDesc: "このprefixのディレクトリ下に格納されるで"
objectStorageEndpoint: "Endpoint"
objectStorageEndpointDesc: "S3のときは空、それ以外は各サービスのendpointを指定してなー。'<host>'ってやるか'<host>:<port>'みたいに指定するんやで。"
objectStorageRegion: "Region"
objectStorageRegionDesc: "'xx-east-1'みたいなregionを指定したってやー。使ってるサービスにregionの概念がないときは、空か'us-east-1'にするんやで。"
objectStorageUseSSL: "SSLを使う"
objectStorageUseSSLDesc: "API接続にhttpsを使わん場合はオフにするんやで"
objectStorageUseProxy: "Proxyを使う"
objectStorageUseProxyDesc: "API接続にproxy使わんのやったら切ってくれへん"
objectStorageSetPublicRead: "アップロードした時に'public-read'を設定してや"
@ -535,52 +517,29 @@ removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのインスタンスが消えて無くなった時とかには便利な機能やで。"
userSuspended: "このユーザーは...凍結されとる。"
userSilenced: "このユーザーは...サイレンスされとる。"
yourAccountSuspendedTitle: "あんたのアカウント凍結されとるで"
yourAccountSuspendedDescription: "あんたのアカウントは、サーバーの利用規約に違反したとかの理由で、凍結されとるで。細かいことは管理者までお問い合わせたってなー。絶対に新しいアカウント作ったらあかんで。絶対やで。"
menu: "メニュー"
divider: "分割線"
addItem: "項目を追加"
relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
serviceworkerInfo: "プッシュ通知をするんなら有効にせなあかんで。"
deletedNote: "消された投稿"
invisibleNote: "非公開の投稿"
enableInfiniteScroll: "自動でもっと見る"
visibility: "公開範囲"
poll: "アンケート"
useCw: "内容を隠す"
enablePlayer: "プレイヤーを開く"
disablePlayer: "プレイヤーを閉じる"
expandTweet: "ツイートを展開する"
themeEditor: "テーマエディター"
description: "説明"
describeFile: "キャプションを付ける"
enterFileDescription: "キャプションを入力"
author: "作者"
leaveConfirm: "未保存の変更があるで!ほかしてええか?"
manage: "管理"
plugins: "プラグイン"
deck: "デッキ"
undeck: "デッキ解除"
useBlurEffectForModal: "モーダルにぼかし効果を使用"
useFullReactionPicker: "フル機能にリアクションピッカーを使用"
width: "幅"
height: "高さ"
large: "大"
medium: "中"
small: "小"
generateAccessToken: "アクセストークンの発行"
permission: "権限"
enableAll: "全部使えるようにする"
disableAll: "全部使えへんようにする"
tokenRequested: "アカウントへのアクセス許可"
pluginTokenRequestedDescription: "このプラグインはここで設定した権限を使えるようになるで。"
notificationType: "通知の種類"
edit: "編集"
useStarForReactionFallback: "リアクションがようわからん場合、★を使う"
emailServer: "メールサーバー"
enableEmail: "メール配信を受け取る"
emailConfigInfo: "メールアドレスの確認とかパスワードリセットの時に使うで"
email: "メール"
@ -592,12 +551,8 @@ smtpUser: "ユーザー名"
smtpPass: "パスワード"
emptyToDisableSmtpAuth: "ユーザー名とパスワードになんも入れんかったら、SMTP認証を無効化するで"
smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
smtpSecureInfo: "STARTTLS使っとる時はオフにするで。"
testEmail: "配信テスト"
wordMute: "ワードミュート"
regexpError: "正規表現エラー"
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが出てきたで:"
instanceMute: "インスタンスミュート"
userSaysSomething: "{name}が何か言ったようやで"
makeActive: "使うで"
display: "表示"
@ -612,24 +567,13 @@ create: "作成"
notificationSetting: "通知設定"
notificationSettingDesc: "表示する通知の種類えらんでや。"
useGlobalSetting: "グローバル設定を使ってや"
useGlobalSettingDesc: "オンにすると、アカウントの通知設定が使われるで。オフにすると、別々に設定できるようになるで。"
other: "その他"
regenerateLoginToken: "ログイントークンを再生成"
regenerateLoginTokenDescription: "ログインに使われる内部トークンをもっかい作るで。いつもならこれをやる必要はないで。もっかい作ると、全部のデバイスでログアウトされるで気ぃつけてなー。"
setMultipleBySeparatingWithSpace: "スペースで区切って複数設定できるで。"
fileIdOrUrl: "ファイルIDかURL"
behavior: "動作"
sample: "サンプル"
abuseReports: "通報"
reportAbuse: "通報"
reportAbuseOf: "{name}を通報する"
fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ートがある時はそのURLも書いといてなー。"
abuseReported: "無事内容が送信されたみたいやで。おおきに〜。"
reporter: "通報者"
reporteeOrigin: "通報先"
reporterOrigin: "通報元"
forwardReport: "リモートインスタンスに通報を転送するで"
forwardReportIsAnonymous: "リモートインスタンスからはあんたの情報は見れへんくって、匿名のシステムアカウントとして表示されるで。"
send: "送信"
abuseMarkAsResolved: "対応したで"
openInNewTab: "新しいタブで開く"
@ -643,57 +587,22 @@ system: "システム"
switchUi: "UI切り替え"
desktop: "デスクトップ"
clip: "クリップ"
createNew: "新しく作るで"
optional: "任意"
createNewClip: "新しいクリップを作るで"
unclip: "クリップ解除するで"
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?"
public: "パブリック"
i18nInfo: "Misskeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。"
manageAccessTokens: "アクセストークンの管理"
accountInfo: "アカウント情報"
notesCount: "ノートの数やで"
repliesCount: "返信した数やで"
renotesCount: "Renoteした数やで"
repliedCount: "返信された数やで"
renotedCount: "Renoteされた数やで"
followingCount: "フォロー数やで"
followersCount: "フォロワー数やで"
sentReactionsCount: "リアクションした数やで"
receivedReactionsCount: "リアクションされた数"
pollVotesCount: "アンケートに投票した数"
pollVotedCount: "アンケートに投票された数"
yes: "はい"
no: "いいえ"
driveFilesCount: "ドライブのファイル数"
driveUsage: "ドライブ使用量やで"
noCrawle: "クローラーによるインデックスを拒否するで"
noCrawleDescription: "検索エンジンにあんたのユーザーページ、ート、Pagesとかのコンテンツを登録(インデックス)せぇへんように頼むで。"
lockedAccountInfo: "フォローを承認制にしとっても、ノートの公開範囲を「フォロワー」にせぇへん限り、誰でもあんたのノートを見れるで。"
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで"
loadRawImages: "添付画像のサムネイルをオリジナル画質にするで"
disableShowingAnimatedImages: "アニメーション画像を再生しやへんで"
verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。"
notSet: "未設定"
emailVerified: "メールアドレスは確認されたで"
noteFavoritesCount: "お気に入りノートの数やで"
pageLikesCount: "Pageにええやんと思った数"
pageLikedCount: "Pageにええやんと思ってくれた数"
contact: "連絡先"
useSystemFont: "システムのデフォルトのフォントを使うで"
clips: "クリップ"
experimentalFeatures: "実験的機能やで"
developer: "開発者やで"
makeExplorable: "アカウントを見つけやすくするで"
makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。"
showGapBetweenNotesInTimeline: "タイムラインのノートを放して表示するで"
duplicate: "複製"
left: "左"
center: "中央"
wide: "広い"
narrow: "狭い"
reloadToApplySetting: "設定はページリロード後に反映されるで。今リロードしとくか?"
needReloadToApply: "反映には再起動せなあかんで"
showTitlebar: "タイトルバーを見せる"
clearCache: "キャッシュをほかす"
onlineUsersCount: "{n}人が起きとるで"
@ -712,7 +621,6 @@ createdAt: "作成した日"
updatedAt: "更新日時"
saveConfirm: "保存するで?"
deleteConfirm: "ホンマに削除するで?"
invalidValue: "有効な値じゃないみたいやで。"
registry: "レジストリ"
closeAccount: "アカウントを閉鎖する"
currentVersion: "現在のバージョン"
@ -726,7 +634,6 @@ editCode: "コードを編集"
apply: "適用"
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る"
emailNotification: "メール通知"
publish: "公開"
inChannelSearch: "チャンネル内検索"
useReactionPickerForContextMenu: "右クリックでリアクションピッカーを開くようにする"
typingUsers: "{users}が今書きよるで"
@ -735,114 +642,21 @@ showingPastTimeline: "過去のタイムラインを表示してるで"
clear: "クリア"
markAllAsRead: "もうみな読んでもうたわ"
goBack: "戻る"
unlikeConfirm: "いいね解除するんか?"
fullView: "フルビュー"
quitFullView: "フルビュー解除"
addDescription: "説明を追加するで"
userPagePinTip: "個々のノートのメニューから「ピン留め」を選んどくと、ここにノートを表示しておけるで。"
notSpecifiedMentionWarning: "宛先に含まれてへんメンションがあるで"
info: "情報"
userInfo: "ユーザー情報やで"
unknown: "不明"
onlineStatus: "オンライン状態"
hideOnlineStatus: "オンライン状態を隠すで"
hideOnlineStatusDescription: "オンライン状態を隠すと、検索とかの一部の機能で使いにくくなるかもしれんよ。"
online: "オンライン"
active: "アクティブ"
offline: "オフライン"
notRecommended: "あんま推奨しやんで"
botProtection: "Botプロテクション"
instanceBlocking: "インスタンスブロック"
selectAccount: "アカウントを選んでなー"
switchAccount: "アカウントを変えるで"
enabled: "有効"
disabled: "無効"
quickAction: "クイックアクション"
user: "ユーザー"
administration: "管理"
accounts: "アカウント"
switch: "切り替え"
noMaintainerInformationWarning: "管理者情報が設定されてへんで"
noBotProtectionWarning: "Botプロテクションが設定されてへんで。"
configure: "設定する"
postToGallery: "ギャラリーへ投稿"
gallery: "ギャラリー"
recentPosts: "最近の投稿"
popularPosts: "人気の投稿"
shareWithNote: "ノートで共有"
ads: "広告"
expiration: "期限"
memo: "メモ"
priority: "優先度"
high: "高い"
middle: "中"
low: "低い"
emailNotConfiguredWarning: "メアドの設定がされてへんで。"
ratio: "比率"
previewNoteText: "本文を下見するで"
customCss: "カスタムCSS"
customCssWarn: "この設定は必ず知識のある人がやらなあかんで。あんま良くない設定をしたるとクライアントがちゃんと使えへんくなってくで。"
global: "グローバル"
squareAvatars: "アイコンを四角形で表示するで"
sent: "送信"
received: "受信"
searchResult: "検索結果やで"
hashtags: "ハッシュタグ"
troubleshooting: "トラブルシューティング"
useBlurEffect: "UIにぼかし効果を使うで"
learnMore: "詳しく"
misskeyUpdated: "Misskeyが更新されたで\nモデレーターの人らに感謝せなあかんで"
whatIsNew: "更新情報を見るで"
translate: "翻訳"
translatedFrom: "{x}から翻訳するで"
accountDeletionInProgress: "アカウント削除しとるで待っとってなー"
usernameInfo: "サーバー上であんたのアカウントをあんたやと分かるようにするための名前やで。アルファベット(a~z, A~Z)、数字(0~9)、それとアンダーバー(_)が使って考えてな。この名前は後から変更することはできへんからちゃんと考えるんやで。"
aiChanMode: "藍モードやで"
keepCw: "CWを維持するで"
pubSub: "Pub/Subのアカウント"
lastCommunication: "直近の通信"
resolved: "解決したで"
unresolved: "まだ解決してないで"
breakFollow: "フォロワーを解除するで"
itsOn: "オンになっとるよ"
hide: "隠す"
searchByGoogle: "探す"
indefinitely: "無期限"
file: "ファイル"
requireAdminForView: "これを見るには管理者アカウントでログインしとらなあかんで。"
isSystemAccount: "システムが自動で作成・管理しとるアカウントやで。"
typeToConfirm: "この操作をやるんなら {x} と入力してなー"
deleteAccount: "アカウント削除するで"
document: "ドキュメント"
numberOfPageCache: "ページキャッシュ数やで"
numberOfPageCacheDescription: "増やすと使いやすくなる、負荷とメモリ使用量が増えてくで。一長一短やな。"
logoutConfirm: "ログアウトしまっか?"
lastActiveDate: "最後に使った日時"
statusbar: "ステータスバー"
pleaseSelect: "選択したってやー"
reverse: "反転"
colored: "色付き"
refreshInterval: "更新間隔"
label: "ラベル"
type: "タイプ"
speed: "速度"
slow: "遅い"
fast: "速い"
localOnly: "ローカルのみ"
remoteOnly: "リモートのみ"
failedToUpload: "アップロードに失敗したで"
cannotUploadBecauseInappropriate: "不適切な内容を含むかもしれへんって判定されたでアップロードできまへん。"
cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いでアップロードできまへん。"
beta: "ベータ"
enableAutoSensitive: "自動NSFW判定"
enableAutoSensitiveDescription: "使える時は、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、インスタンスによっては自動で設定されることがあるで。"
activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかとかを判定して積極的に行うで。オフにすると単に文字列として正しいかどうかだけチェックするで。"
navbar: "ナビゲーションバー"
shuffle: "シャッフルするで"
account: "アカウント"
move: "移動するで"
_ffVisibility:
public: "公開"
_ad:
back: "戻る"
_gallery:
@ -985,6 +799,7 @@ _sfx:
notification: "通知"
chat: "チャット"
_ago:
unknown: "わからん"
future: "未来"
justNow: "たった今"
secondsAgo: "{n}秒前"
@ -1387,12 +1202,11 @@ _notification:
reaction: "リアクション"
receiveFollowRequest: "フォロー許可してほしいみたいやで"
followRequestAccepted: "フォローが受理されたで"
_actions:
reply: "返事"
renote: "Renote"
_deck:
alwaysShowMainColumn: "いつもメインカラムを表示"
columnAlign: "カラムの寄せ"
columnMargin: "カラム間のマージン"
columnHeaderHeight: "カラムのヘッダー幅"
addColumn: "カラムを追加"
swapLeft: "左に移動"
swapRight: "右に移動"

View File

@ -56,8 +56,6 @@ emailNotification: "Ilɣa imayl"
selectAccount: "Fren amiḍan"
accounts: "Imiḍan"
searchByGoogle: "Nadi"
file: "Ifuyla"
account: "Imiḍan"
_email:
_follow:
title: "Yeṭṭafaṛ-ik·em-id"
@ -118,8 +116,6 @@ _notification:
_types:
follow: "Ig ṭṭafaṛ"
mention: "Bder"
_actions:
reply: "Err"
_deck:
_columns:
notifications: "Ilɣuyen"

View File

@ -60,7 +60,6 @@ smtpUser: "ಬಳಕೆಹೆಸರು"
smtpPass: "ಗುಪ್ತಪದ"
user: "ಬಳಕೆದಾರ"
searchByGoogle: "ಹುಡುಕು"
file: "ಕಡತಗಳು"
_email:
_follow:
title: "ಹಿಂಬಾಲಿಸಿದರು"
@ -77,8 +76,6 @@ _profile:
username: "ಬಳಕೆಹೆಸರು"
_notification:
youWereFollowed: "ಹಿಂಬಾಲಿಸಿದರು"
_actions:
reply: "ಉತ್ತರಿಸು"
_deck:
_columns:
notifications: "ಅಧಿಸೂಚನೆಗಳು"

View File

@ -52,7 +52,6 @@ searchUser: "사용자 검색"
reply: "답글"
loadMore: "더 보기"
showMore: "더 보기"
showLess: "닫기"
youGotNewFollower: "새로운 팔로워가 있습니다"
receiveFollowRequest: "새로운 팔로우 요청이 있습니다"
followRequestAccepted: "팔로우가 수락되었습니다"
@ -204,7 +203,6 @@ done: "완료"
processing: "처리중"
preview: "미리보기"
default: "기본값"
defaultValueIs: "기본값: {value}"
noCustomEmojis: "이모지가 없습니다"
noJobs: "작업이 없습니다"
federating: "연합 중"
@ -383,7 +381,6 @@ administrator: "관리자"
token: "토큰"
twoStepAuthentication: "2단계 인증"
moderator: "모더레이터"
moderation: "모더레이션"
nUsersMentioned: "{n}명이 언급함"
securityKey: "보안 키"
securityKeyName: "키 이름"
@ -562,7 +559,6 @@ author: "작성자"
leaveConfirm: "저장하지 않은 변경사항이 있습니다. 취소하시겠습니까?"
manage: "관리"
plugins: "플러그인"
preferencesBackups: "환경설정 백업"
deck: "덱"
undeck: "덱 해제"
useBlurEffectForModal: "모달에 흐림 효과 사용"
@ -596,8 +592,6 @@ smtpSecure: "SMTP 연결에 Implicit SSL/TTS 사용"
smtpSecureInfo: "STARTTLS 사용 시에는 해제합니다."
testEmail: "이메일 전송 테스트"
wordMute: "단어 뮤트"
regexpError: "정규 표현식 오류"
regexpErrorDescription: "{tab}단어 뮤트 {line}행의 정규 표현식에 오류가 발생했습니다:"
instanceMute: "인스턴스 뮤트"
userSaysSomething: "{name}님이 무언가를 말했습니다"
makeActive: "활성화"
@ -613,7 +607,7 @@ create: "생성"
notificationSetting: "알림 설정"
notificationSettingDesc: "표시할 알림의 종류를 선택해 주세요."
useGlobalSetting: "글로벌 설정을 사용하기"
useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용니다. 비활성화하면 개별적으로 설정할 수 있게 됩니다."
useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용니다. 비활성화하면 개별적으로 설정할 수 있게 됩니다."
other: "기타"
regenerateLoginToken: "로그인 토큰을 재생성"
regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다."
@ -647,8 +641,6 @@ clip: "클립"
createNew: "새로 만들기"
optional: "옵션"
createNewClip: "새 클립 만들기"
unclip: "클립 해제"
confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?"
public: "공개"
i18nInfo: "Misskey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다."
manageAccessTokens: "액세스 토큰 관리"
@ -833,64 +825,8 @@ overridedDeviceKind: "장치 유형"
smartphone: "스마트폰"
tablet: "태블릿"
auto: "자동"
themeColor: "테마 컬러"
size: "크기"
numberOfColumn: "한 줄에 보일 리액션의 수"
searchByGoogle: "검색"
instanceDefaultLightTheme: "인스턴스 기본 라이트 테마"
instanceDefaultDarkTheme: "인스턴스 기본 다크 테마"
instanceDefaultThemeDescription: "객체 형식의 테마 코드를 입력해 주세요."
mutePeriod: "뮤트할 기간"
indefinitely: "무기한"
tenMinutes: "10분"
oneHour: "1시간"
oneDay: "1일"
oneWeek: "일주일"
reflectMayTakeTime: "반영되기까지 시간이 걸릴 수 있습니다."
failedToFetchAccountInformation: "계정 정보를 가져오지 못했습니다"
rateLimitExceeded: "요청 제한 횟수를 초과하였습니다"
cropImage: "이미지 자르기"
cropImageAsk: "이미지를 자르시겠습니까?"
file: "파일"
recentNHours: "최근 {n}시간"
recentNDays: "최근 {n}일"
noEmailServerWarning: "메일 서버가 설정되어 있지 않습니다."
thereIsUnresolvedAbuseReportWarning: "해결되지 않은 신고가 있습니다."
recommended: "추천"
check: "체크"
driveCapOverrideLabel: "이 유저의 드라이브 용량을 변경"
driveCapOverrideCaption: "0 이하를 지정하면 해제됩니다."
requireAdminForView: "열람하려면 관리자 계정으로 로그인해야 합니다."
isSystemAccount: "시스템에 의해 자동으로 생성되어 관리되는 계정입니다."
typeToConfirm: "계속하시려면 {x} 을 입력하세요"
deleteAccount: "계정 삭제"
document: "문서"
numberOfPageCache: "페이지 캐시 수"
numberOfPageCacheDescription: "숫자가 클 수록 편리성이 높아지지만, 시스템 자원과 메모리를 더 많이 사용합니다."
logoutConfirm: "로그아웃 하시겠습니까?"
lastActiveDate: "마지막 이용"
pleaseSelect: "선택해 주세요"
reverse: "플립"
colored: "색 입히기"
refreshInterval: "업데이트 주기"
label: "라벨"
type: "종류"
speed: "속도"
slow: "느리게"
fast: "빠르게"
localOnly: "로컬에만"
remoteOnly: "리모트만"
failedToUpload: "업로드 실패"
cannotUploadBecauseInappropriate: "이 파일은 부적절한 내용을 포함한다고 판단되어 업로드할 수 없습니다."
cannotUploadBecauseNoFreeSpace: "드라이브 용량이 부족하여 업로드할 수 없습니다."
beta: "베타"
enableAutoSensitive: "자동 NSFW 탐지"
enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, 인스턴스 정책에 따라 자동으로 설정될 수 있습니다."
activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. 해제할 경우 이메일 형식에 대해서만 검사합니다."
navbar: "네비게이션 바"
shuffle: "셔플"
account: "계정"
move: "이동"
_emailUnavailable:
used: "이 메일 주소는 사용중입니다"
format: "형식이 올바르지 않습니다"
@ -933,24 +869,6 @@ _plugin:
install: "플러그인 설치"
installWarn: "신뢰할 수 없는 플러그인은 설치하지 않는 것이 좋습니다."
manage: "플러그인 관리"
_preferencesBackups:
list: "생성한 백업"
saveNew: "새 백업 만들기"
loadFile: "파일 가져오기"
apply: "이 기기에 적용"
save: "현재 설정으로 덮어쓰기"
inputName: "백업 이름을 입력하세요"
cannotSave: "저장하지 못했습니다"
nameAlreadyExists: "\"{name}\" 백업이 이미 존재합니다. 다른 이름을 설정하여 주십시오."
applyConfirm: "\"{name}\" 백업을 현재 기기에 적용하시겠습니까? 현재 설정은 덮어 씌워집니다."
saveConfirm: "{name} 을 덮어쓰시겠습니까?"
deleteConfirm: "{name} 을(를) 삭제하시겠습니까?"
renameConfirm: "\"{old}\" 백업을 \"{new}\"(으)로 바꾸시겠습니까?"
noBackups: "저장된 백업이 없습니다. \"새 백업 만들기\"를 눌러 현재 클라이언트 설정을 서버에 백업할 수 있습니다."
createdAt: "생성 날짜: {date} {time}"
updatedAt: "갱신 날짜: {date} {time}"
cannotLoad: "가져오기에 실패했습니다"
invalidFile: "파일 형식이 올바르지 않습니다."
_registry:
scope: "범위"
key: "키"
@ -1034,8 +952,6 @@ _mfm:
sparkleDescription: "반짝이는 파티클 효과를 추가합니다."
rotate: "회전"
rotateDescription: "지정한 각도로 회전시킵니다."
plain: "평문"
plainDescription: "안에 있는 MFM 구문을 모두 무시하고 평문으로 표시합니다."
_instanceTicker:
none: "보이지 않음"
remote: "리모트 유저에게만 보이기"
@ -1156,6 +1072,7 @@ _sfx:
antenna: "안테나 수신"
channel: "채널 알림"
_ago:
unknown: "알 수 없음"
future: "미래"
justNow: "방금 전"
secondsAgo: "{n}초 전"
@ -1199,7 +1116,6 @@ _2fa:
registerKey: "키를 등록"
step1: "먼저, {a}나 {b}등의 인증 앱을 사용 중인 디바이스에 설치합니다."
step2: "그 후, 표시되어 있는 QR코드를 앱으로 스캔합니다."
step2Url: "데스크톱 앱에서는 다음 URL을 입력하세요:"
step3: "앱에 표시된 토큰을 입력하시면 완료됩니다."
step4: "다음 로그인부터는 토큰을 입력해야 합니다."
securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 수 있습니다."
@ -1268,9 +1184,7 @@ _widgets:
activity: "활동"
photos: "사진"
digitalClock: "디지털 시계"
unixClock: "UNIX 시계"
federation: "연합"
instanceCloud: "인스턴스 구름"
postForm: "글 입력란"
slideshow: "슬라이드 쇼"
button: "버튼"
@ -1335,7 +1249,7 @@ _profile:
youCanIncludeHashtags: "해시 태그를 포함할 수 있습니다."
metadata: "추가 정보"
metadataEdit: "추가 정보 편집"
metadataDescription: "프로필에 추가 정보를 표시할 수 있어요"
metadataDescription: "프로필에 최대 4개의 추가 정보를 표시할 수 있어요"
metadataLabel: "라벨"
metadataContent: "내용"
changeAvatar: "아바타 이미지 변경"
@ -1685,8 +1599,6 @@ _notification:
youReceivedFollowRequest: "새로운 팔로우 요청이 있습니다"
yourFollowRequestAccepted: "팔로우 요청이 수락되었습니다"
youWereInvitedToGroup: "그룹에 초대되었습니다"
pollEnded: "투표 결과가 발표되었습니다"
emptyPushNotificationMessage: "푸시 알림이 갱신되었습니다"
_types:
all: "전부"
follow: "팔로잉"
@ -1696,20 +1608,16 @@ _notification:
quote: "인용"
reaction: "리액션"
pollVote: "투표 참여"
pollEnded: "투표가 종료됨"
receiveFollowRequest: "팔로우 요청을 받았을 때"
followRequestAccepted: "팔로우 요청이 승인되었을 때"
groupInvited: "그룹에 초대되었을 때"
app: "연동된 앱을 통한 알림"
_actions:
followBack: "팔로우"
reply: "답글"
renote: "Renote"
_deck:
alwaysShowMainColumn: "메인 칼럼 항상 표시"
columnAlign: "칼럼 정렬"
columnMargin: "칼럼 간 여백"
columnHeaderHeight: "칼럼 헤더 폭"
addColumn: "칼럼 추가"
configureColumn: "칼럼 설정"
swapLeft: "왼쪽으로 이동"
swapRight: "오른쪽으로 이동"
swapUp: "위로 이동"
@ -1717,11 +1625,6 @@ _deck:
stackLeft: "왼쪽에 쌓기"
popRight: "오른쪽으로 빼기"
profile: "프로파일"
newProfile: "새 프로파일"
deleteProfile: "프로파일 삭제"
introduction: "칼럼을 조합해서 나만의 인터페이스를 구성해 보아요!"
introduction2: "나중에라도 화면 우측의 + 버튼을 눌러 새 칼럼을 추가할 수 있습니다."
widgetsIntroduction: "칼럼 메뉴의 \"위젯 편집\"에서 위젯을 추가해 주세요"
_columns:
main: "메인"
widgets: "위젯"

View File

@ -303,9 +303,6 @@ muteThread: "Discussies dempen "
unmuteThread: "Dempen van discussie ongedaan maken"
hide: "Verbergen"
searchByGoogle: "Zoeken"
cropImage: "Afbeelding bijsnijden"
cropImageAsk: "Bijsnijdengevraagd"
file: "Bestanden"
_email:
_follow:
title: "volgde jou"
@ -374,9 +371,6 @@ _notification:
renote: "Herdelen"
quote: "Quote"
reaction: "Reacties"
_actions:
reply: "Antwoord"
renote: "Herdelen"
_deck:
_columns:
notifications: "Meldingen"

View File

@ -1,5 +1,5 @@
---
_lang_: "Polski"
_lang_: "język polski"
headlineMisskey: "Sieć połączona wpisami"
introMisskey: "Misskey jest serwisem mikroblogowym typu open source.\nMisskey to opensource'owy serwis mikroblogowy, w którym możesz tworzyć \"notatki\", aby dzielić się tym, co się dzieje i opowiadać wszystkim o sobie.\nMożesz również użyć funkcji \"Reakcje\", aby szybko dodać własne reakcje do notatek innych użytkowników👍.\nOdkrywaj nowy świat🚀!"
monthAndDay: "{month}-{day}"
@ -52,7 +52,6 @@ searchUser: "Wyszukiwanie użytkowników"
reply: "Odpowiedz"
loadMore: "Załaduj więcej"
showMore: "Załaduj więcej"
showLess: "Zamknij"
youGotNewFollower: "Zaobserwował(a) Cię"
receiveFollowRequest: "Otrzymano prośbę o możliwość obserwacji"
followRequestAccepted: "Zaakceptowano prośbę o możliwość obserwacji"
@ -88,7 +87,7 @@ enterListName: "Nazwa listy"
privacy: "Prywatność"
makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia"
defaultNoteVisibility: "Domyślna widoczność"
follow: "Obserwuj"
follow: "Obserwowani"
followRequest: "Poproś o możliwość obserwacji"
followRequests: "Prośby o możliwość obserwacji"
unfollow: "Przestań obserwować"
@ -127,7 +126,7 @@ unsuspendConfirm: "Czy na pewno chcesz cofnąć zawieszenie tego konta?"
selectList: "Wybierz listę"
selectAntenna: "Wybierz Antennę"
selectWidget: "Wybierz widżet"
editWidgets: "Edytuj widżety"
editWidgets: "Edytuj widżet"
editWidgetsExit: "Gotowe"
customEmojis: "Niestandardowe emoji"
emoji: "Emoji"
@ -142,7 +141,6 @@ flagAsBot: "To konto jest botem"
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne systemy Misskey, traktując konto jako bota."
flagAsCat: "To konto jest kotem"
flagAsCatDescription: "Przełącz tę opcję, aby konto było oznaczone jako kot."
flagShowTimelineReplies: "Pokazuj odpowiedzi na osi czasu"
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników, których obserwujesz"
addAccount: "Dodaj konto"
loginFailed: "Nie udało się zalogować"
@ -202,7 +200,6 @@ done: "Gotowe"
processing: "Przetwarzanie"
preview: "Podgląd"
default: "Domyślne"
defaultValueIs: "Domyślne: {value}"
noCustomEmojis: "Brak emoji"
noJobs: "Brak zadań"
federating: "Federowanie"
@ -237,7 +234,6 @@ resetAreYouSure: "Czy na pewno chcesz zresetować?"
saved: "Zapisano"
messaging: "Wiadomości"
upload: "Wyślij"
keepOriginalUploading: "Zachowaj oryginalny obraz"
fromDrive: "Z dysku"
fromUrl: "Z adresu URL"
uploadFromUrl: "Wyślij z adresu URL"
@ -380,7 +376,6 @@ administrator: "Admin"
token: "Token"
twoStepAuthentication: "Uwierzytelnianie dwuskładnikowe"
moderator: "Moderator"
moderation: "Moderacja"
nUsersMentioned: "{n} wspomnianych użytkowników"
securityKey: "Klucz bezpieczeństwa"
securityKeyName: "Nazwa klucza"
@ -448,13 +443,11 @@ uiLanguage: "Język wyświetlania UI"
groupInvited: "Zaproszony(-a) do grupy"
aboutX: "O {x}"
useOsNativeEmojis: "Używaj natywnych Emoji systemu"
disableDrawer: "Nie używaj menu w stylu szuflady"
youHaveNoGroups: "Nie masz żadnych grup"
joinOrCreateGroup: "Uzyskaj zaproszenie do dołączenia do grupy lub utwórz własną grupę."
noHistory: "Brak historii"
signinHistory: "Historia logowania"
disableAnimatedMfm: "Wyłącz MFM z animacją"
doing: "Przetwarzanie..."
category: "Kategoria"
tags: "Tagi"
docSource: "Źródło tego dokumentu"
@ -529,9 +522,6 @@ deleteAllFilesConfirm: "Czy na pewno chcesz usunąć wszystkie pliki?"
removeAllFollowingDescription: "Przestań obserwować wszystkie konta z {host}. Wykonaj to, jeżeli instancja już nie istnieje."
userSuspended: "To konto zostało zawieszone."
userSilenced: "Ten użytkownik został wyciszony."
yourAccountSuspendedTitle: "To konto jest zawieszone"
yourAccountSuspendedDescription: "To konto zostało zawieszone z powodu złamania regulaminu serwera lub innych podobnych. Skontaktuj się z administratorem, jeśli chciałbyś poznać bardziej szczegółowy powód. Proszę nie zakładać nowego konta."
menu: "Menu"
divider: "Rozdzielacz"
addItem: "Dodaj element"
relays: "Przekaźniki"
@ -550,7 +540,7 @@ disablePlayer: "Zamknij odtwarzacz wideo"
expandTweet: "Rozwiń tweet"
themeEditor: "Edytor motywu"
description: "Opis"
describeFile: "Dodaj podpis"
describeFile: "dodaj podpis"
enterFileDescription: "Wprowadź napis"
author: "Autor"
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
@ -587,7 +577,6 @@ emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć w
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
wordMute: "Wyciszenie słowa"
instanceMute: "Wyciszone instancje"
userSaysSomething: "{name} powiedział(-a) coś"
makeActive: "Aktywuj"
display: "Wyświetlanie"
@ -617,7 +606,6 @@ fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia. Jeżeli dotyczy
abuseReported: "Twoje zgłoszenie zostało wysłane. Dziękujemy."
reporteeOrigin: "Pochodzenie zgłoszonego"
reporterOrigin: "Pochodzenie zgłaszającego"
forwardReport: "Przekaż zgłoszenie do innej instancji"
send: "Wyślij"
abuseMarkAsResolved: "Oznacz zgłoszenie jako rozwiązane"
openInNewTab: "Otwórz w nowej karcie"
@ -630,12 +618,8 @@ random: "Losowe"
system: "System"
switchUi: "Przełącz interfejs użytkownika"
desktop: "Pulpit"
clip: "Klip"
createNew: "Utwórz nowy"
optional: "Nieobowiązkowe"
createNewClip: "Utwórz nowy klip"
unclip: "Odczep"
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?"
public: "Publiczny"
i18nInfo: "Misskey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}."
manageAccessTokens: "Zarządzaj tokenami dostępu"
@ -669,7 +653,6 @@ pageLikesCount: "Liczba otrzymanych polubień stron"
pageLikedCount: "Liczba polubionych stron"
contact: "Kontakt"
useSystemFont: "Używaj domyślnej czcionki systemu"
clips: "Klipy"
experimentalFeatures: "Eksperymentalne funkcje"
developer: "Programista"
makeExplorable: "Pokazuj konto na stronie „Eksploruj”"
@ -741,7 +724,6 @@ notRecommended: "Nie zalecane"
botProtection: "Zabezpieczenie przed botami"
instanceBlocking: "Zablokowane instancje"
selectAccount: "Wybierz konto"
switchAccount: "Przełącz konto"
enabled: "Właczono"
disabled: "Wyłączono"
quickAction: "Szybkie działania"
@ -773,100 +755,17 @@ global: "Globalna"
squareAvatars: "Wyświetlaj kwadratowe awatary"
sent: "Wyślij"
received: "Otrzymane"
searchResult: "Wyniki wyszukiwania"
hashtags: "Hashtag"
troubleshooting: "Rozwiązywanie problemów"
useBlurEffect: "Użyj efektów rozmycia w UI"
learnMore: "Dowiedz się więcej"
misskeyUpdated: "Misskey zostało zaktualizowane!"
whatIsNew: "Pokaż zmiany"
translate: "Przetłumacz"
translatedFrom: "Przetłumaczone z {x}"
accountDeletionInProgress: "Trwa usuwanie konta"
usernameInfo: "Nazwa, która identyfikuje Twoje konto spośród innych na tym serwerze. Możesz użyć alfabetu (a~z, A~Z), cyfr (0~9) lub podkreślników (_). Nazwy użytkownika nie mogą być później zmieniane."
aiChanMode: "Tryb Ai"
keepCw: "Zostaw ostrzeżenia o zawartości"
pubSub: "Konta Pub/Sub"
resolved: "Rozwiązane"
unresolved: "Nierozwiązane"
breakFollow: "Usuń obserwującego"
itsOn: "Włączone"
itsOff: "Wyłączone"
unread: "Nieodczytane"
filter: "Filtr"
controlPanel: "Panel sterowania"
manageAccounts: "Zarządzaj kontami"
makeReactionsPublic: "Ustawić historię reakcji jako publiczną"
makeReactionsPublicDescription: "To spowoduje, że lista wszystkich Twoich dotychczasowych reakcji będzie publicznie widoczna."
classic: "Klasyczny"
muteThread: "Wycisz wątek"
unmuteThread: "Wyłącz wyciszenie wątku"
ffVisibility: "Widoczność obserwowanych/obserwujących"
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz i kto Cię obserwuje."
continueThread: "Pokaż kontynuację wątku"
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
incorrectPassword: "Nieprawidłowe hasło."
voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
hide: "Ukryj"
leaveGroup: "Opuść grupę"
leaveGroupConfirm: "Czy na pewno chcesz opuścić \"{name}\"?"
useDrawerReactionPickerForMobile: "Wyświetlaj wybornik reakcji jako szufladę na urządzeniach mobilnych"
welcomeBackWithName: "Witaj z powrotem, {name}"
clickToFinishEmailVerification: "Kliknij [{ok}], aby zakończyć weryfikację e-mail."
overridedDeviceKind: "Typ urządzenia"
smartphone: "Smartfon"
tablet: "Tablet"
auto: "Automatycznie"
size: "Rozmiar"
numberOfColumn: "Liczba kolumn"
searchByGoogle: "Szukaj"
indefinitely: "Nigdy"
file: "Pliki"
logoutConfirm: "Czy na pewno chcesz się wylogować?"
lastActiveDate: "Ostatnio użyte w"
statusbar: "Pasek stanu"
pleaseSelect: "Wybierz opcję"
reverse: "Odwróć"
colored: "Kolorowe"
label: "Etykieta"
type: "Typ"
speed: "Prędkość"
localOnly: "Lokalne tylko"
failedToUpload: "Przesyłanie nie powiodło się"
cannotUploadBecauseInappropriate: "Nie można przesłać tego pliku, ponieważ jego części zostały wykryte jako potencjalnie nieodpowiednie."
cannotUploadBecauseNoFreeSpace: "Przesyłanie nie powiodło się z powodu braku miejsca na dysku."
beta: "Beta"
enableAutoSensitive: "Automatyczne oznaczanie NSFW"
enableAutoSensitiveDescription: "Umożliwia automatyczne wykrywanie i oznaczanie zawartości NSFW za pomocą uczenia maszynowego. Nawet jeśli ta opcja jest wyłączona, może być włączona w całej instancji."
navbar: "Pasek nawigacyjny"
account: "Konta"
move: "Przenieś"
_emailUnavailable:
used: "Ten adres e-mail jest już używany"
format: "Format tego adresu e-mail jest nieprawidłowy"
disposable: "Nie można używać jednorazowych adresów e-mail"
mx: "Ten serwer e-mail jest nieprawidłowy"
smtp: "Ten serwer e-mail nie odpowiada"
_ffVisibility:
public: "Publiczne"
followers: "Widoczne tylko dla obserwujących"
private: "Prywatne"
_signup:
almostThere: "Prawie na miejscu"
emailAddressInfo: "Podaj swój adres e-mail. Nie zostanie on upubliczniony."
emailSent: "E-mail z potwierdzeniem został wysłany na Twój adres e-mail ({email}). Kliknij dołączony link, aby dokończyć tworzenie konta."
_accountDelete:
accountDelete: "Usuń konto"
mayTakeTime: "Ponieważ usuwanie konta jest procesem wymagającym dużej ilości zasobów, jego ukończenie może zająć trochę czasu, w zależności od ilości utworzonej zawartości i liczby przesłanych plików."
sendEmail: "Po zakończeniu usuwania konta na adres e-mail zarejestrowany na tym koncie zostanie wysłana wiadomość e-mail."
requestAccountDelete: "Poproś o usunięcie konta"
started: "Usuwanie się rozpoczęło."
inProgress: "Usuwanie jest obecnie w toku"
public: "Publikuj"
_ad:
back: "Wróć"
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"
_forgotPassword:
enterEmail: "Wpisz adres e-mail użyty do rejestracji. Zostanie do niego wysłany link, za pomocą którego możesz zresetować hasło."
ifNoEmail: "Jeżeli nie podano adresu e-mail podczas rejestracji, skontaktuj się z administratorem zamiast tego."
contactAdmin: "Jeżeli Twoja instancja nie obsługuje adresów e-mail, skontaktuj się zamiast tego z administratorem, aby zresetować hasło."
_gallery:
@ -883,23 +782,6 @@ _plugin:
install: "Zainstaluj wtyczki"
installWarn: "Nie instaluj niezaufanych wtyczek."
manage: "Zarządzanie wtyczkami"
_preferencesBackups:
list: "Utworzone kopie zapasowe"
saveNew: "Zapisz nową kopię zapasową"
loadFile: "Załaduj z pliku"
apply: "Zastosuj do tego urządzenia"
save: "Zapisz zmiany"
inputName: "Proszę podać nazwę dla tej kopii zapasowej"
cannotSave: "Zapisanie nie powiodło się"
nameAlreadyExists: "Kopia zapasowa o nazwie \"{name}\" już istnieje. Proszę podać inną nazwę."
applyConfirm: "Czy na pewno chcesz zastosować kopię zapasową \"{name}\" na tym urządzeniu? Istniejące ustawienia tego urządzenia zostaną nadpisane."
saveConfirm: "Zapisać kopię zapasową jako {name}?"
deleteConfirm: "Usunąć kopię zapasową {name}?"
renameConfirm: "Zmienić nazwę kopii zapasowej z \"{old}\" na \"{new}\"?"
createdAt: "Utworzony w: {date} {time}"
updatedAt: "Zaktualizowano w: {date} {time}"
cannotLoad: "Ładowanie nie powiodło się"
invalidFile: "Nieprawidłowy format pliku"
_registry:
scope: "Zakres"
key: "Klucz"
@ -934,13 +816,10 @@ _mfm:
bold: "Pogrubienie"
boldDescription: "Wyróżnia litery pogrubiając je."
small: "Małe"
smallDescription: "Wyświetla treść jako małą i cienką."
center: "Wyśrodkowanie"
centerDescription: "Wyśrodkowuje zawartość."
inlineCode: "Kod (w wierszu)"
blockCode: "Kod (blok)"
blockCodeDescription: "Wyświetla kod z podświetlaną składnią składający się z wielu linii."
blockMath: "Matematyka (Blok)"
quote: "Cytuj"
quoteDescription: "Wyświetla treść jako cytat."
emoji: "Niestandardowe emoji"
@ -949,20 +828,6 @@ _mfm:
searchDescription: "Wyświetla pole wyszukiwania z wcześniej wpisanym tekstem."
flip: "Odwróć"
flipDescription: "Przerzuca treść poziomo lub pionowo."
jelly: "Animacja (Galaretka)"
jellyDescription: "Nadaje treści galaretowatą animację."
tada: "Animation (Tada)"
tadaDescription: "Nadaje treści animację podobną do \"Tada!\"."
jump: "Animacja (Skok)"
jumpDescription: "Nadaje treści animację skakania."
bounce: "Animacja (Odbijanie)"
bounceDescription: "Nadaje treści animację odbijania się."
shake: "Animacja (Wstrząsanie)"
shakeDescription: "Nadaje treści animację wstrząsania."
twitch: "Animacja (Drganie)"
twitchDescription: "Nadaje treści mocno drgającą animację."
spin: "Animacja (Obrót)"
spinDescription: "Nadaje treści animację obracania."
x2: "Duże"
x2Description: "Czyni treść większą."
x3: "Bardzo duże"
@ -970,17 +835,9 @@ _mfm:
x4: "Ogromne"
x4Description: "Czyni treść jeszcze większą niż jeszcze większa."
blur: "Rozmycie"
blurDescription: "Rozmywa treść. Zostanie wyraźnie wyświetlona po najechaniu."
font: "Czcionka"
fontDescription: "Wybiera czcionkę do wyświetlania treści."
rainbow: "Tęcza"
rainbowDescription: "Sprawia, że zawartość pojawia się w kolorach tęczy."
sparkle: "Blask"
sparkleDescription: "Nadaje zawartości efekt lśniącego brokatu."
rotate: "Obróć"
rotateDescription: "Obraca zawartość o określony kąt."
plain: "Zwyczajny"
plainDescription: "Wyłącza efekty wszystkich MFM zawartych w tym efekcie MFM."
_instanceTicker:
none: "Nigdy nie pokazuj"
remote: "Pokaż dla zdalnych użytkowników"
@ -1000,7 +857,6 @@ _channel:
usersCount: "{n} uczestnicy"
notesCount: "{n} wpisy"
_menuDisplay:
top: "Góra"
hide: "Ukryj"
_wordMute:
muteWords: "Słowo do wyciszenia"
@ -1008,9 +864,6 @@ _wordMute:
soft: "Łagodny"
hard: "Twardy"
mutedNotes: "Wyciszone wpisy"
_instanceMute:
title: "Ukrywa wpisy z wymienionych instancji."
heading: "Lista instancji do wyciszenia"
_theme:
explore: "Przeglądaj motywy"
install: "Zainstaluj motyw"
@ -1091,9 +944,9 @@ _sfx:
notification: "Powiadomienia"
chat: "Wiadomości"
chatBg: "Rozmowy (tło)"
antenna: "Anteny"
channel: "Powiadomienia kanału"
_ago:
unknown: "Nieznane"
future: "W przyszłości"
justNow: "Przed chwilą"
secondsAgo: "{n} sek. temu"
@ -1111,30 +964,12 @@ _time:
_tutorial:
title: "Jak korzystać z Misskey"
step1_1: "Witaj!"
step1_2: "Ta strona nazywa się „oś czasu”. Pokazuje chronologicznie uporządkowane wpisy osób, które „śledzisz”."
step1_3: "Twoja oś czasu jest jeszcze pusta, ponieważ nie opublikowałeś(-aś) jeszcze żadnych wpisów i nie obserwujesz jeszcze nikogo."
step2_1: "Ukończmy konfigurację profilu zanim utworzymy wpis lub zaczniemy kogoś obserwować."
step2_2: "Podanie pewnych informacji o tym, kim jesteś, ułatwi innym określenie, czy chcą widzieć Twoje wpisy lub Cię obserwować."
step3_1: "Zakończyłeś(-aś) konfigurację profilu?"
step3_2: "Następnie spróbujmy opublikować wpis. Możesz to zrobić, naciskając przycisk z ikoną ołówka na ekranie."
step3_3: "Wypełnij pole i kliknij przycisk w prawym górnym rogu by wysłać post."
step3_4: "Nie masz nic do powiedzenia? Spróbuj \"ustawiam swój misskey\"!"
step4_1: "Zakończyłeś publikowanie pierwszego wpisu?"
step4_2: "Hurra! Teraz Twój pierwszy wpis powinien być wyświetlany na Twojej osi czasu."
step5_1: "Teraz spróbujmy ożywić Twoją oś czasu, przez zaobserwowanie innych ludzi."
step5_2: "{featured} pokaże Ci popularne wpisy na tej instancji. {explore} pozwoli Ci znaleźć popularnych użytkowników. Spróbuj znaleźć tam osoby, które chcesz obserwować!"
step5_3: "Aby obserwować innych użytkowników, kliknij ich ikonę i naciśnij przycisk \"Obserwuj\" na ich profilu."
step5_4: "Jeśli inny użytkownik ma ikonę kłódki obok swojej nazwy, może minąć trochę czasu, zanim ten użytkownik ręcznie zatwierdzi Twoją prośbę o obserwowanie."
step6_1: "Powinieneś teraz widzieć wpisy innych użytkowników na swojej osi czasu."
step6_2: "Możesz także umieścić „reakcje” na wpisach innych osób, aby szybko na nie odpowiedzieć."
step6_3: "Aby dodać \"reakcję\", naciśnij znak \"+\" na wpisie innego użytkownika i wybierz emotikonę, którą chcesz zareagować."
step7_1: "Gratulacje! Ukończyłeś podstawowy samouczek Misskey."
step7_2: "Jeśli chcesz dowiedzieć się więcej o Misskey, wypróbuj sekcję {help}."
step7_3: "A teraz powodzenia i baw się dobrze z Misskey! 🚀"
_2fa:
alreadyRegistered: "Zarejestrowałeś już urządzenie do uwierzytelniania dwuskładnikowego."
registerDevice: "Zarejestruj nowe urządzenie"
registerKey: "Zarejestruj klucz bezpieczeństwa"
step1: "Najpierw, zainstaluj aplikację uwierzytelniającą (taką jak {a} lub {b}) na swoim urządzeniu."
step2: "Następnie, zeskanuje kod QR z ekranu."
step3: "Wprowadź token podany w aplikacji, aby ukończyć konfigurację."
@ -1150,7 +985,6 @@ _permissions:
"write:favorites": "Edycja Twojej listy ulubionych."
"read:following": "Wyświetlanie informacji o obserwowanych"
"write:following": "Obserwowanie lub cofanie obserwacji innych kont"
"read:messaging": "Zobacz swoje czaty"
"read:mutes": "Wyświetlanie listy osób, które wyciszyłeś(-aś)"
"write:mutes": "Edycja listy osób, które wyciszyłeś(-aś)"
"read:notifications": "Wyświetlanie powiadomień"
@ -1164,10 +998,6 @@ _permissions:
"write:page-likes": "Edycja polubień na stronach"
"read:user-groups": "Wyświetlanie grup użytkownika"
"write:user-groups": "Edycja lub usuwanie grup użytkownika"
"read:channels": "Zobacz swoje kanały"
"write:channels": "Edytuj swoje kanały"
"read:gallery": "Zobacz swoją galerię"
"write:gallery": "Edytuj swoją galerię"
_auth:
shareAccess: "Czy chcesz autoryzować „{name}” do dostępu do tego konta?"
permissionAsk: "Ta aplikacja wymaga następujących uprawnień:"
@ -1186,21 +1016,12 @@ _widgets:
calendar: "Kalendarz"
trends: "Na czasie"
clock: "Zegar"
rss: "Czytnik RSS"
activity: "Aktywność"
photos: "Zdjęcia"
digitalClock: "Zegar cyfrowy"
unixClock: "Zegar UNIX"
federation: "Federacja"
instanceCloud: "Chmura instancji"
postForm: "Formularz tworzenia wpisu"
slideshow: "Pokaz slajdów"
postForm: "Utwórz wpis"
button: "Przycisk"
onlineUsers: "Użytkownicy online"
jobQueue: "Kolejka zadań"
serverMetric: "Metryka serwera"
aiscript: "Konsola AiScript"
aichan: "Ai"
_cw:
hide: "Ukryj"
show: "Załaduj więcej"
@ -1567,11 +1388,9 @@ _notification:
youReceivedFollowRequest: "Otrzymałeś(-aś) prośbę o możliwość obserwacji"
yourFollowRequestAccepted: "Twoja prośba o możliwość obserwacji została przyjęta"
youWereInvitedToGroup: "Zaproszony(-a) do grupy"
pollEnded: "Wyniki ankiety stały się dostępne"
emptyPushNotificationMessage: "Powiadomienia push zostały zaktualizowane"
_types:
all: "Wszystkie"
follow: "Nowi obserwujący"
follow: "Obserwowani"
mention: "Wspomnij"
reply: "Odpowiedzi"
renote: "Udostępnij"
@ -1582,15 +1401,12 @@ _notification:
followRequestAccepted: "Przyjęto prośbę o możliwość obserwacji"
groupInvited: "Zaproszono do grup"
app: "Powiadomienia z aplikacji"
_actions:
followBack: "zaobserwował cię z powrotem"
reply: "Odpowiedz"
renote: "Udostępnij"
_deck:
alwaysShowMainColumn: "Zawsze pokazuj główną kolumnę"
columnAlign: "Wyrównaj kolumny"
columnMargin: "Odstęp między kolumnami"
columnHeaderHeight: "Wysokość nagłówka kolumny"
addColumn: "Dodaj kolumnę"
configureColumn: "Ustawienia kolumny"
swapLeft: "Przesuń w lewo"
swapRight: "Przesuń w prawo"
swapUp: "Zamień z powyższym"
@ -1598,9 +1414,6 @@ _deck:
stackLeft: "Przypnij do lewej"
popRight: "Odepnij w prawo"
profile: "Profil"
newProfile: "Nowy profil"
deleteProfile: "Usuń profil"
widgetsIntroduction: "Wybierz \"Edytuj widżety\" w menu kolumny i dodaj widżet."
_columns:
main: "Główna"
widgets: "Widżety"

View File

@ -1,9 +1,9 @@
---
_lang_: "Português"
headlineMisskey: "Uma rede ligada por notas"
headlineMisskey: "Rede conectada por notas"
introMisskey: "Bem-vindo! Misskey é um serviço de microblogue descentralizado de código aberto.\nCria \"notas\" e partilha o que te ocorre com todos à tua volta. 📡\nCom \"reações\" podes também expressar logo o que sentes às notas de todos. 👍\nExploremos um novo mundo! 🚀"
monthAndDay: "{day}/{month}"
search: "Buscar"
search: "Pesquisar"
notifications: "Notificações"
username: "Nome de usuário"
password: "Senha"
@ -37,697 +37,60 @@ favorites: "Favoritar"
unfavorite: "Remover dos favoritos"
favorited: "Adicionado aos favoritos."
alreadyFavorited: "Já adicionado aos favoritos."
cantFavorite: "Não foi possível adicionar aos favoritos."
pin: "Afixar no perfil"
unpin: "Desafixar do perfil"
copyContent: "Copiar conteúdos"
copyLink: "Copiar hiperligação"
delete: "Eliminar"
deleteAndEdit: "Eliminar e editar"
deleteAndEditConfirm: "Tens a certeza que pretendes eliminar esta nota e editá-la? Irás perder todas as suas reações, renotas e respostas."
addToList: "Adicionar a lista"
sendMessage: "Enviar uma mensagem"
copyUsername: "Copiar nome de utilizador"
searchUser: "Pesquisar utilizador"
reply: "Responder"
loadMore: "Carregar mais"
showMore: "Ver mais"
showLess: "Fechar"
youGotNewFollower: "Você tem um novo seguidor"
receiveFollowRequest: "Pedido de seguimento recebido"
followRequestAccepted: "Pedido de seguir aceito"
mention: "Menção"
mentions: "Menções"
directNotes: "Notas diretas"
importAndExport: "Importar/Exportar"
import: "Importar"
export: "Exportar"
files: "Ficheiros"
download: "Descarregar"
driveFileDeleteConfirm: "Tens a certeza que pretendes apagar o ficheiro \"{name}\"? As notas que tenham este ficheiro anexado serão também apagadas."
unfollowConfirm: "Tens a certeza que queres deixar de seguir {name}?"
exportRequested: "Pediste uma exportação. Este processo pode demorar algum tempo. Será adicionado à tua Drive após a conclusão do processo."
importRequested: "Pediste uma importação. Este processo pode demorar algum tempo."
lists: "Listas"
noLists: "Não tens nenhuma lista"
note: "Post"
notes: "Posts"
following: "Seguindo"
followers: "Seguidores"
followsYou: "Segue-te"
createList: "Criar lista"
manageLists: "Gerir listas"
error: "Erro"
somethingHappened: "Ocorreu um erro"
retry: "Tentar novamente"
pageLoadError: "Ocorreu um erro ao carregar a página."
pageLoadErrorDescription: "Isto é normalmente causado por erros de rede ou pela cache do browser. Experimenta limpar a cache e tenta novamente após algum tempo."
serverIsDead: "O servidor não está respondendo. Por favor espere um pouco e tente novamente."
youShouldUpgradeClient: "Para visualizar essa página, por favor recarregue-a para atualizar seu cliente."
enterListName: "Insira um nome para a lista"
privacy: "Privacidade"
makeFollowManuallyApprove: "Pedidos de seguimento precisam ser aprovados"
defaultNoteVisibility: "Visibilidade padrão"
follow: "Seguindo"
followRequest: "Mandar pedido de seguimento"
followRequests: "Pedidos de seguimento"
unfollow: "Deixar de seguir"
followRequestPending: "Pedido de seguimento pendente"
enterEmoji: "Inserir emoji"
renote: "Repostar"
unrenote: "Desmarcar"
renoted: "Repostado"
cantRenote: "Não pode repostar"
cantReRenote: "Não pode repostar este repost"
quote: "Citar"
pinnedNote: "Post fixado"
pinned: "Afixar no perfil"
you: "Você"
clickToShow: "Clique para ver"
sensitive: "Conteúdo sensível"
add: "Adicionar"
reaction: "Reações"
reactionSetting: "Quais reações a mostrar no selecionador de reações"
reactionSettingDescription2: "Arraste para reordenar, clique para excluir, pressione + para adicionar."
rememberNoteVisibility: "Lembrar das configurações de visibilidade de notas"
attachCancel: "Remover anexo"
markAsSensitive: "Marcar como sensível"
unmarkAsSensitive: "Desmarcar como sensível"
enterFileName: "Digite o nome do ficheiro"
mute: "Silenciar"
unmute: "Dessilenciar"
block: "Bloquear"
unblock: "Desbloquear"
suspend: "Suspender"
unsuspend: "Cancelar suspensão"
blockConfirm: "Tem certeza que gostaria de bloquear essa conta?"
unblockConfirm: "Tem certeza que gostaria de desbloquear essa conta?"
suspendConfirm: "Tem certeza que gostaria de suspender essa conta?"
unsuspendConfirm: "Tem certeza que gostaria de cancelar a suspensão dessa conta?"
selectList: "Escolhe uma lista"
selectAntenna: "Escolhe uma antena"
selectWidget: "Escolhe um widget"
editWidgets: "Editar widgets"
editWidgetsExit: "Pronto"
customEmojis: "Emoji personalizado"
emoji: "Emoji"
emojis: "Emojis"
emojiName: "Nome do Emoji"
emojiUrl: "URL do Emoji"
addEmoji: "Adicionar um Emoji"
settingGuide: "Guia de configuração"
cacheRemoteFiles: "Memória transitória de arquivos remotos"
cacheRemoteFilesDescription: "Se você desabilitar essa configuração, os arquivos remotos não serão armazenados em memória transitória e serão vinculados diretamente. Economiza o armazenamento do servidor, mas não gera miniaturas, o que aumenta o tráfego."
flagAsBot: "Marcar conta como robô"
flagAsBotDescription: "Se esta conta for operada por um programa, ative este sinalizador. Quando ativado, serve como um sinalizador para evitar o encadeamento de reações para outros programadores, e o manuseio do sistema do Misskey é adequado para bots."
flagAsCat: "Marcar conta como gato"
flagAsCatDescription: "Ative essa opção para marcar essa conta como gato."
flagShowTimelineReplies: "Mostrar respostas na linha de tempo"
flagShowTimelineRepliesDescription: "Quando ativado, a linha do tempo mostra as respostas às outras notas do utilizador, além da nota do utilizador."
autoAcceptFollowed: "Aprove automaticamente os seguidores dos seguintes utilizadores"
addAccount: "Adicionar Conta"
loginFailed: "Não consegui logar"
showOnRemote: "Exibir remotamente"
general: "Geral"
wallpaper: "Papel de parede"
setWallpaper: "Definir papel de parede"
removeWallpaper: "Remover papel de parede"
searchWith: "Buscar: {q}"
youHaveNoLists: "Não tem nenhuma lista"
followConfirm: "Tem certeza que quer deixar de seguir {name}?"
proxyAccount: "Conta proxy"
proxyAccountDescription: "Uma conta proxy é uma conta que atua como seguidora remota para utilizadores sob determinadas condições. Por exemplo, quando um utilizador lista um utilizador remoto, a atividade não será entregue à instância, a menos que alguém esteja seguindo o utilizador listado, portanto, a conta proxy deve seguir."
host: "hospedeiro"
selectUser: "Selecionar utilizador"
recipient: "Morada"
annotation: "Anotação"
federation: "União"
instances: "Instância"
registeredAt: "Registrado em"
latestRequestSentAt: "Enviar a solicitação mais recente"
latestRequestReceivedAt: "Recebeu a última solicitação"
latestStatus: "Status mais recente"
storageUsage: "Uso de armazenamento"
charts: "gráfico"
perHour: "por hora"
perDay: "por dia"
stopActivityDelivery: "Parar a entrega de atividades"
blockThisInstance: "Bloquear esta instância"
operations: "operar"
software: "Programas"
version: "versão"
metadata: "Metadados"
withNFiles: "{n} Um arquivo"
monitor: "monitor"
jobQueue: "Fila de trabalhos"
cpuAndMemory: "CPU e memória"
network: "rede"
disk: "disco"
instanceInfo: "Informações da instância"
statistics: "Estatisticas"
clearQueue: "Limpar a fila"
clearQueueConfirmTitle: "Quer limpar a fila?"
clearQueueConfirmText: "Postagens não entregues não serão mais entregues. Normalmente você não precisa fazer isso."
clearCachedFiles: "Limpar memória transitória"
clearCachedFilesConfirm: "Tem certeza de que deseja excluir todos os arquivos remotos armazenados em memória transitória?"
blockedInstances: "Instância bloqueada"
blockedInstancesDescription: "Defina os anfitriões das instâncias que deseja bloquear, separados por quebras de linha. Uma instância bloqueada não poderá interagir com esta instância."
muteAndBlock: "Silenciar e bloquear"
mutedUsers: "Silenciar utilizador"
blockedUsers: "Utilizadores bloqueados"
noUsers: "Sem usuários"
editProfile: "Editar Perfil"
noteDeleteConfirm: "Deseja excluir esta nota?"
pinLimitExceeded: "Não consigo mais fixar"
intro: "A instalação do Misskey está completa! Crie uma conta de administrador."
done: "Concluído"
processing: "Em Progresso"
preview: "Pré-visualizar"
default: "Padrão"
noCustomEmojis: "Não há emojis"
noJobs: "Sem trabalho"
federating: "federar"
blocked: "Bloqueado"
suspended: "Cancelar subscrição"
all: "Todos"
subscribing: "Subscrito"
publishing: "Executando"
notResponding: "Sem resposta"
instanceFollowing: "Seguir a instância"
instanceFollowers: "Seguidores da instância"
instanceUsers: "Utilizador da instância"
changePassword: "Mudar senha"
security: "Segurança"
retypedNotMatch: "As entradas não coincidem."
currentPassword: "Palavra-passe atual"
newPassword: "Nova palavra-passe"
newPasswordRetype: "Nova senha (redigite)"
attachFile: "Anexar arquivo"
more: "Mais!"
featured: "Destaques"
usernameOrUserId: "Nome de utilizador ou ID de utilizador"
noSuchUser: "Utilizador não encontrado"
lookup: "Buscando"
announcements: "Notícia"
imageUrl: "URL da imagem"
remove: "Eliminar"
removed: "Foi deletado"
removeAreYouSure: "Deseja excluir \"{x}\"?"
deleteAreYouSure: "Deseja excluir \"{x}\"?"
resetAreYouSure: "Redefinir agora?"
saved: "Salvo"
messaging: "Chat"
upload: "Enviando"
keepOriginalUploading: "Manter a imagem original"
keepOriginalUploadingDescription: "Mantenha a versão original ao carregar a imagem. Quando desligado, a imagem para publicação na web será gerada no navegador no momento do upload."
fromDrive: "\nDa unidade"
fromUrl: "Da URL"
uploadFromUrl: "Carregamento de URL"
uploadFromUrlDescription: "URL do arquivo que você deseja enviar"
uploadFromUrlRequested: "Upload solicitado"
uploadFromUrlMayTakeTime: "Pode levar algum tempo para que o upload seja concluído."
explore: "Explorar"
messageRead: "Lida"
noMoreHistory: "Sem mais história"
startMessaging: "Iniciar conversação"
nUsersRead: "{n} Pessoas leem"
agreeTo: "Eu concordo com {0}"
tos: "Termos de serviço"
start: "começar"
home: "casa"
remoteUserCaution: "As informações estão incompletas porque é um utilizador remoto."
activity: "atividade"
images: "imagem"
birthday: "aniversário"
yearsOld: "{age} anos"
registeredDate: "Data de registro"
location: "Lugar, colocar"
theme: "tema"
themeForLightMode: "Temas usados no modo de luz"
themeForDarkMode: "Temas usados no modo escuro"
light: "Claro"
dark: "Escuro"
lightThemes: "Tema claro"
darkThemes: "Tema escuro"
syncDeviceDarkMode: "Sincronize com o modo escuro do dispositivo"
drive: "Unidades"
fileName: "Nome do Ficheiro"
selectFile: "Selecione os arquivos"
selectFiles: "Selecione os arquivos"
selectFolder: "Selecionar uma pasta"
selectFolders: "Selecionar uma pasta"
renameFile: "Renomear ficheiro"
folderName: "Nome da pasta"
createFolder: "Criar pasta"
renameFolder: "Renomear Pasta"
deleteFolder: "Eliminar Pasta"
addFile: "Adicionar arquivo"
emptyDrive: "A unidade está vazia"
emptyFolder: "A pasta está vazia"
unableToDelete: "Não é possível eliminar"
inputNewFileName: "Por favor, digite um novo nome para a pasta!"
inputNewDescription: "Insira uma nova legenda"
inputNewFolderName: "Por favor, digite um novo nome para a pasta!"
circularReferenceFolder: "A pasta de destino é uma subpasta da pasta que você deseja mover."
hasChildFilesOrFolders: "Esta pasta não está vazia e não pode ser excluída."
copyUrl: "Copiar URL"
rename: "Renomear"
avatar: "Avatar"
banner: "Capa"
nsfw: "Conteúdo sensível"
whenServerDisconnected: "Quando a conexão com o servidor é perdida"
disconnectedFromServer: "Desconectado do servidor"
reload: "Recarregar"
doNothing: "Nenhuma ação adicional"
reloadConfirm: "Quer recarregar?"
watch: "ver"
unwatch: "Não observar"
accept: "Aceitar"
reject: "Rejeitar"
normal: "Normal"
instanceName: "Nome da instância"
instanceDescription: "Descrição da instância"
maintainerName: "Nome do administrador"
maintainerEmail: "E-mail do Administrador:"
tosUrl: "URL dos Termos de Uso"
thisYear: "Este ano"
thisMonth: "Este mês"
today: "Hoje"
dayX: " Dia {day}"
monthX: "mês de {month}"
yearX: "Ano {year}"
pages: "Páginas"
integration: "Integração"
connectService: "Conectar"
disconnectService: "Desconectar"
enableLocalTimeline: "Ativar linha do tempo local"
enableGlobalTimeline: "Ativar linha do tempo global"
disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores e moderadores ainda poderão usá-las por conveniência."
registration: "Registar"
enableRegistration: "Permitir que qualquer pessoa se registre"
invite: "Convidar"
driveCapacityPerLocalAccount: "Capacidade da unidade por utilizador local"
driveCapacityPerRemoteAccount: "Capacidade da unidade por utilizador remoto"
inMb: "Em megabytes"
iconUrl: "URL da imagem do ícone (favicon, etc.)"
bannerUrl: "URL da imagem do banner"
backgroundImageUrl: "URL da imagem de fundo"
basicInfo: "Informações básicas"
pinnedUsers: "Utilizador fixado"
pinnedUsersDescription: "Descreva os utilizadores que você deseja fixar na página \"Localizar\", etc., separados por quebras de linha."
pinnedPages: "Página fixada"
pinnedPagesDescription: "Descreva o caminho da página que você deseja fixar na página superior da instância, separada por quebras de linha."
pinnedClipId: "ID do clipe a ser fixado"
pinnedNotes: "Post fixado"
hcaptcha: "hCaptcha"
enableHcaptcha: "Ativar hCaptcha"
hcaptchaSiteKey: "Chave do sítio web"
hcaptchaSecretKey: "Chave secreta"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Habilitar reCAPTCHA"
recaptchaSiteKey: "Chave do sítio web"
recaptchaSecretKey: "Chave secreta"
avoidMultiCaptchaConfirm: "O uso de vários captchas pode causar interferência. Deseja desativar outros captchas? Você também pode cancelar e deixar vários captchas ativados."
antennas: "Antenas"
manageAntennas: "Gestão de antena"
name: "Nome"
antennaSource: "Origem de entrada"
antennaKeywords: "Palavras-chave recebidas"
antennaExcludeKeywords: "Palavras-chave negativas"
antennaKeywordsDescription: "Se você separá-lo com um espaço, será uma especificação AND, e se você separá-lo com uma quebra de linha, será uma especificação OR."
notifyAntenna: "Notificar novas notas"
withFileAntenna: "Apenas notas com arquivos anexados"
enableServiceworker: "Ative as notificações push para o seu navegador"
antennaUsersDescription: "Especificar nomes de utilizador separados por quebras de linha"
caseSensitive: "Maiúsculas e minúsculas"
withReplies: "Incluindo resposta"
connectedTo: "Você está conectado à seguinte conta"
notesAndReplies: "Publicações e respostas"
withFiles: "Com arquivo"
silence: "Silenciado"
silenceConfirm: "Quer silenciar?"
unsilence: "Liberar silenciar"
unsilenceConfirm: "Quer liberar o silêncio?"
popularUsers: "Utilizadores populares"
recentlyUpdatedUsers: "Utilizadores postados recentemente"
recentlyRegisteredUsers: "Utilizadores registrados recentemente"
recentlyDiscoveredUsers: "Utilizadores descobertos recentemente"
exploreUsersCount: "Há um utilizador de {count}"
exploreFediverse: "Explorar Fediverse"
popularTags: "Tags populares"
userList: "Listas"
about: "Informações"
aboutMisskey: "Sobre Misskey"
administrator: "Administrador"
token: "Símbolo"
twoStepAuthentication: "Verificação em duas etapas"
moderator: "Moderador"
nUsersMentioned: "Postado por {n} pessoas"
securityKey: "Chave de segurança"
securityKeyName: "Nome chave"
registerSecurityKey: "Registre a chave de segurança"
lastUsed: "Último uso"
unregister: "Cancelar registro"
passwordLessLogin: "Entrar sem senha"
resetPassword: "Redefinir senha"
newPasswordIs: "A nova senha é \"{password}\""
reduceUiAnimation: "Reduzir a animação da interface do utilizador"
share: "Compartilhar"
notFound: "Não encontrado"
notFoundDescription: "Não havia página correspondente ao URL especificado."
uploadFolder: "Destino de upload padrão"
cacheClear: "Excluir memória transitória"
markAsReadAllNotifications: "Marcar todas as notificações como lidas"
markAsReadAllUnreadNotes: "Marcar todas as postagens como lidas"
markAsReadAllTalkMessages: "Marcar todas as conversas como lidas"
help: "Ajuda"
inputMessageHere: "Escrever mensagem aqui"
close: "Fechar"
group: "Grupos"
groups: "Grupos"
createGroup: "Criar grupo"
ownedGroups: "Grupo próprio"
invites: "Convidar"
invitations: "Convidar"
tags: "Etiquetas"
docSource: "Fonte deste documento"
createAccount: "Criar conta"
existingAccount: "Contas existentes"
regenerate: "Gerar novamente"
fontSize: "Tamanho do texto"
noFollowRequests: "Não há aplicação de acompanhamento"
openImageInNewTab: "Abrir a imagem numa nova aba"
dashboard: "Painel de controle"
local: "Local"
remote: "Remoto"
total: "Total"
weekOverWeekChanges: "Em comparação com a semana anterior"
dayOverDayChanges: "Dia anterior"
appearance: "Aparência"
clientSettings: "Configurações do cliente"
accountSettings: "Configurações da conta"
promotion: "Promoção"
promote: "Promover"
numberOfDays: "Dias"
hideThisNote: "Ocultar esta nota"
showFeaturedNotesInTimeline: "Mostrar notas recomendadas na linha do tempo"
objectStorage: "Armazenamento de objetos"
useObjectStorage: "Usar armazenamento de objetos"
objectStorageBaseUrl: "URL base"
objectStorageBaseUrlDesc: "O URL usado para referência. Se você estiver usando um CDN ou Proxy, seu URL, S3:'https: // <bucket> .s3.amazonaws.com', GCS, etc .:'https://storage.googleapis.com/ <bucket>' ."
objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Especifique o nome do bucket do serviço a ser usado."
objectStoragePrefix: "Prefixo"
objectStoragePrefixDesc: "Ele é armazenado neste diretório de prefixo."
objectStorageEndpoint: "Ponto final"
objectStorageEndpointDesc: "Especifique vazio para S3, caso contrário, especifique o ponto final para cada serviço. Especifique como'<host>'ou'<host>: <port>'."
objectStorageRegion: "Região"
objectStorageRegionDesc: "Especifique uma região como 'xx-east-1'. Caso seu serviço não tenha o conceito de região, ele deve estar vazio ou 'us-east-1'."
objectStorageUseSSL: "Usar SSL"
objectStorageUseSSLDesc: "Desative-o se não quiser usar https para conexões de API"
objectStorageUseProxy: "Usar proxy"
objectStorageUseProxyDesc: "Se você não usa proxy para conexão de API, desative-o."
objectStorageSetPublicRead: "Definir 'public-read' ao fazer o upload"
serverLogs: "Registro do servidor"
deleteAll: "Apagar Tudo"
showFixedPostForm: "Exibir o formulário de postagem na parte superior da linha do tempo"
newNoteRecived: "Nova nota recebida"
sounds: "Sons"
listen: "Ouvir"
none: "Nenhum"
showInPage: "Ver na página"
popout: "Sair"
volume: "Volume"
masterVolume: "volume principal"
details: "Detalhes"
output: "Resultado"
smtpHost: "hospedeiro"
smtpUser: "Nome de usuário"
smtpPass: "Senha"
clearCache: "Limpar memória transitória"
info: "Informações"
user: "Usuários"
searchByGoogle: "Buscar"
file: "Ficheiros"
searchByGoogle: "Pesquisar"
_email:
_follow:
title: "Você tem um novo seguidor"
_mfm:
mention: "Menção"
quote: "Citar"
emoji: "Emoji personalizado"
search: "Buscar"
search: "Pesquisar"
_theme:
keys:
mention: "Menção"
renote: "Repostar"
_sfx:
note: "Posts"
notification: "Notificações"
chat: "Chat"
_widgets:
notifications: "Notificações"
timeline: "Timeline"
activity: "atividade"
federation: "União"
jobQueue: "Fila de trabalhos"
_cw:
show: "Carregar mais"
_visibility:
home: "casa"
followers: "Seguidores"
_profile:
name: "Nome"
username: "Nome de usuário"
_exportOrImport:
followingList: "Seguindo"
muteList: "Silenciar"
blockingList: "Bloquear"
userLists: "Listas"
_charts:
federation: "União"
_timelines:
home: "casa"
_pages:
blocks:
image: "imagem"
_button:
_action:
_pushEvent:
event: "Nome do evento"
message: "Mostrar mensagem quando ativado"
variable: "Variável a mandar"
no-variable: "Nenhum"
callAiScript: "Invocar AiScript"
_callAiScript:
functionName: "Nome da função"
radioButton: "Escolha"
_radioButton:
values: "Lista de escolhas separadas por quebras de texto"
script:
categories:
logical: "Operação lógica"
operation: "Cálculos"
comparison: "Comparação"
list: "Listas"
blocks:
_strReplace:
arg2: "Texto que irá ser substituído"
arg3: "Substituir com"
strReverse: "Virar texto"
join: "Sequência de texto"
_join:
arg1: "Listas"
arg2: "Separador"
add: "Somar"
_add:
arg1: "A"
arg2: "B"
subtract: "Subtrair"
_subtract:
arg1: "A"
arg2: "B"
multiply: "Multiplicar"
_multiply:
arg1: "A"
arg2: "B"
divide: "Dividir"
_divide:
arg1: "A"
arg2: "B"
mod: "O resto de"
_mod:
arg1: "A"
arg2: "B"
round: "Arredondar decimal"
_round:
arg1: "Numérico"
eq: "A e B são iguais"
_eq:
arg1: "A"
arg2: "B"
notEq: "A e B são diferentes"
_notEq:
arg1: "A"
arg2: "B"
and: "A e B"
_and:
arg1: "A"
arg2: "B"
or: "A OU B"
_or:
arg1: "A"
arg2: "B"
lt: "< A é menor do que B"
_lt:
arg1: "A"
arg2: "B"
gt: "> A é maior do que B"
_gt:
arg1: "A"
arg2: "B"
ltEq: "<= A é maior ou igual a B"
_ltEq:
arg1: "A"
arg2: "B"
gtEq: ">= A é maior ou igual a B"
_gtEq:
arg1: "A"
arg2: "B"
if: "Galho"
_if:
arg1: "Se"
arg2: "Então"
arg3: "Se não"
not: "NÃO"
_not:
arg1: "NÃO"
random: "Aleatório"
_random:
arg1: "Probabilidade"
rannum: "Numeral aleatório"
_rannum:
arg1: "Valor mínimo"
arg2: "Valor máximo"
randomPick: "Escolher aleatoriamente de uma lista"
_randomPick:
arg1: "Listas"
dailyRandom: "Aleatório (Muda uma vez por dia para cada usuário)"
_dailyRandom:
arg1: "Probabilidade"
dailyRannum: "Numeral aleatório (Muda uma vez por dia para cada usuário)"
_dailyRannum:
arg1: "Valor mínimo"
arg2: "Valor máximo"
dailyRandomPick: "Escolher aleatoriamente de uma lista (Muda uma vez por dia para cada usuário)"
_dailyRandomPick:
arg1: "Listas"
seedRandom: "Aleatório (com semente)"
_seedRandom:
arg1: "Semente"
arg2: "Probabilidade"
seedRannum: "Número aleatório (com semente)"
_seedRannum:
arg1: "Semente"
arg2: "Valor mínimo"
arg3: "Valor máximo"
seedRandomPick: "Escolher aleatoriamente de uma lista (com uma semente)"
_seedRandomPick:
arg1: "Semente"
arg2: "Listas"
DRPWPM: "Escolher aleatoriamente de uma lista ponderada (Muda uma vez por dia para cada usuário)"
_DRPWPM:
arg1: "Lista de texto"
pick: "Escolhe a partir da lista"
_pick:
arg1: "Listas"
arg2: "Posição"
listLen: "Pegar comprimento da lista"
_listLen:
arg1: "Listas"
number: "Numérico"
stringToNumber: "Texto para numérico"
_stringToNumber:
arg1: "Texto"
numberToString: "Numérico para texto"
_numberToString:
arg1: "Numérico"
splitStrByLine: "Dividir texto por quebras"
_splitStrByLine:
arg1: "Texto"
ref: "Variável"
aiScriptVar: "Variável AiScript"
fn: "Função"
_fn:
slots: "Espaços"
slots-info: "Separar cada espaço com uma quebra de texto"
arg1: "Resultado"
for: "Repetição 'for'"
_for:
arg1: "Número de repetições"
arg2: "Ação"
typeError: "Espaço {slot} aceita valores de tipo \"{expect}\", mas o valor dado é do tipo \"{actual}\"!"
thereIsEmptySlot: "O espaço {slot} está vazio!"
types:
string: "Texto"
number: "Numérico"
array: "Listas"
stringArray: "Lista de texto"
emptySlot: "Espaço vazio"
enviromentVariables: "Variáveis de ambiente"
pageVariables: "Variáveis de página"
_relayStatus:
requesting: "Pendente"
accepted: "Aprovado"
rejected: "Recusado"
_notification:
fileUploaded: "Carregamento de arquivo efetuado com sucesso"
youGotMention: "{name} te mencionou"
youGotReply: "{name} te respondeu"
youGotQuote: "{name} te citou"
youGotPoll: "{name} votou em sua enquete"
youGotMessagingMessageFromUser: "{name} te mandou uma mensagem de bate-papo"
youGotMessagingMessageFromGroup: "Uma mensagem foi mandada para o grupo {name}"
youWereFollowed: "Você tem um novo seguidor"
youReceivedFollowRequest: "Você recebeu um pedido de seguimento"
yourFollowRequestAccepted: "Seu pedido de seguimento foi aceito"
youWereInvitedToGroup: "{userName} te convidou para um grupo"
pollEnded: "Os resultados da enquete agora estão disponíveis"
emptyPushNotificationMessage: "As notificações de alerta foram atualizadas"
_types:
all: "Todos"
follow: "Seguindo"
mention: "Menção"
reply: "Respostas"
renote: "Repostar"
quote: "Citar"
reaction: "Reações"
pollVote: "Votações em enquetes"
pollEnded: "Enquetes terminando"
receiveFollowRequest: "Recebeu pedidos de seguimento"
followRequestAccepted: "Aceitou pedidos de seguimento"
groupInvited: "Convites de grupo"
app: "Notificações de aplicativos conectados"
_actions:
followBack: "te seguiu de volta"
reply: "Responder"
renote: "Repostar"
_deck:
alwaysShowMainColumn: "Sempre mostrar a coluna principal"
columnAlign: "Alinhar colunas"
addColumn: "Adicionar coluna"
swapLeft: "Trocar de posição com a coluna à esquerda"
swapRight: "Trocar de posição com a coluna à direita"
swapUp: "Trocar de posição com a coluna acima"
swapDown: "Trocar de posição com a coluna abaixo"
popRight: "Acoplar coluna à direita"
profile: "Perfil"
_columns:
main: "Principal"
widgets: "Widgets"
notifications: "Notificações"
tl: "Timeline"
antenna: "Antenas"
list: "Listas"
mentions: "Menções"
direct: "Notas diretas"

View File

@ -52,7 +52,6 @@ searchUser: "Caută un utilizator"
reply: "Răspunde"
loadMore: "Incarcă mai mult"
showMore: "Arată mai mult"
showLess: "Închide"
youGotNewFollower: "te-a urmărit"
receiveFollowRequest: "Cerere de urmărire primită"
followRequestAccepted: "Cerere de urmărire acceptată"
@ -563,89 +562,14 @@ plugins: "Pluginuri"
deck: "Deck"
undeck: "Părăsește Deck"
useBlurEffectForModal: "Folosește efect de blur pentru modale"
width: "Lăţime"
height: "Înălţime"
large: "Mare"
medium: "Mediu"
small: "Mic"
generateAccessToken: "Generează token de acces"
permission: "Permisiuni"
enableAll: "Actevează tot"
disableAll: "Dezactivează tot"
tokenRequested: "Acordă acces la cont"
pluginTokenRequestedDescription: "Acest plugin va putea să folosească permisiunile setate aici."
notificationType: "Tipul notificării"
edit: "Editează"
useStarForReactionFallback: "Folosește ★ ca fallback dacă emoji-ul este necunoscut"
emailServer: "Server email"
enableEmail: "Activează distribuția de emailuri"
emailConfigInfo: "Folosit pentru a confirma emailul tău în timpul logări dacă îți uiți parola"
email: "Email"
emailAddress: "Adresă de email"
smtpConfig: "Configurare Server SMTP"
smtpHost: "Gazdă"
smtpPort: "Port"
smtpUser: "Nume de utilizator"
smtpPass: "Parolă"
emptyToDisableSmtpAuth: "Lasă username-ul și parola necompletate pentru a dezactiva verificarea SMTP"
smtpSecure: "Folosește SSL/TLS implicit pentru conecțiunile SMTP"
smtpSecureInfo: "Oprește opțiunea asta dacă STARTTLS este folosit"
testEmail: "Testează livrarea emailurilor"
wordMute: "Cuvinte pe mut"
regexpError: "Eroare de Expresie Regulată"
regexpErrorDescription: "A apărut o eroare în expresia regulată pe linia {line} al cuvintelor {tab} setate pe mut:"
instanceMute: "Instanțe pe mut"
userSaysSomething: "{name} a spus ceva"
makeActive: "Activează"
display: "Arată"
copy: "Copiază"
metrics: "Metrici"
overview: "Privire de ansamblu"
logs: "Log-uri"
delayed: "Întârziate"
database: "Baza de date"
channel: "Canale"
create: "Crează"
notificationSetting: "Setări notificări"
notificationSettingDesc: "Selectează tipurile de notificări care să fie arătate"
useGlobalSetting: "Folosește setările globale"
useGlobalSettingDesc: "Dacă opțiunea e pornită, notificările contului tău vor fi folosite. Dacă e oprită, configurația va fi individuală."
other: "Altele"
regenerateLoginToken: "Regenerează token de login"
regenerateLoginTokenDescription: "Regenerează token-ul folosit intern în timpul logări. În mod normal asta nu este necesar. Odată regenerat, toate dispozitivele vor fi delogate."
setMultipleBySeparatingWithSpace: "Separă mai multe intrări cu spații."
fileIdOrUrl: "Introdu ID sau URL"
behavior: "Comportament"
sample: "exemplu"
abuseReports: "Rapoarte"
reportAbuse: "Raportează"
reportAbuseOf: "Raportează {name}"
fillAbuseReportDescription: "Te rog scrie detaliile legate de acest raport. Dacă este despre o notă specifică, te rog introdu URL-ul ei."
abuseReported: "Raportul tău a fost trimis. Mulțumim."
reporter: "Raportorul"
reporteeOrigin: "Originea raportatului"
reporterOrigin: "Originea raportorului"
forwardReport: "Redirecționează raportul către instanța externă"
forwardReportIsAnonymous: "În locul contului tău, va fi afișat un cont anonim, de sistem, ca raportor către instanța externă."
send: "Trimite"
abuseMarkAsResolved: "Marchează raportul ca rezolvat"
openInNewTab: "Deschide în tab nou"
openInSideView: "Deschide în vedere laterală"
defaultNavigationBehaviour: "Comportament de navigare implicit"
editTheseSettingsMayBreakAccount: "Editarea acestor setări îți pot defecta contul."
waitingFor: "Așteptând pentru {x}"
random: "Aleator"
system: "Sistem"
switchUi: "Schimbă UI"
desktop: "Desktop"
clearCache: "Golește cache-ul"
info: "Despre"
user: "Utilizatori"
administration: "Gestionare"
middle: "Mediu"
sent: "Trimite"
searchByGoogle: "Caută"
file: "Fișiere"
_email:
_follow:
title: "te-a urmărit"
@ -717,9 +641,6 @@ _notification:
renote: "Re-notează"
quote: "Citează"
reaction: "Reacție"
_actions:
reply: "Răspunde"
renote: "Re-notează"
_deck:
_columns:
notifications: "Notificări"

View File

@ -52,7 +52,6 @@ searchUser: "Поиск людей"
reply: "Ответить"
loadMore: "Показать еще"
showMore: "Показать еще"
showLess: "Закрыть"
youGotNewFollower: "Новый подписчик"
receiveFollowRequest: "Получен запрос на подписку"
followRequestAccepted: "Запрос на подписку принят"
@ -142,8 +141,6 @@ flagAsBot: "Аккаунт бота"
flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит системе Misskey учитывать это, а также поможет разработчикам других ботов предотвратить бесконечные циклы взаимодействия."
flagAsCat: "Аккаунт кота"
flagAsCatDescription: "Включите, и этот аккаунт будет помечен как кошачий."
flagShowTimelineReplies: "Показывать ответы на заметки в ленте"
flagShowTimelineRepliesDescription: "Если этот параметр включен, то в ленте, в дополнение к заметкам пользователя, отображаются ответы на другие заметки пользователя."
autoAcceptFollowed: "Принимать подписчиков автоматически"
addAccount: "Добавить учётную запись"
loginFailed: "Неудачная попытка входа"
@ -204,7 +201,6 @@ done: "Готово"
processing: "Обработка"
preview: "Предпросмотр"
default: "По умолчанию"
defaultValueIs: "По умолчанию: {value}"
noCustomEmojis: "Собственные эмодзи отсутствуют"
noJobs: "Нет заданий"
federating: "Федерируется"
@ -240,7 +236,6 @@ saved: "Сохранено"
messaging: "Сообщения"
upload: "Загрузить"
keepOriginalUploading: "Сохранить исходное изображение"
keepOriginalUploadingDescription: "Сохраняет исходную версию при загрузке изображений. Если выключить, то при загрузке браузер генерирует изображение для публикации."
fromDrive: "С «диска»"
fromUrl: "По ссылке"
uploadFromUrl: "Загрузить по ссылке"
@ -383,7 +378,6 @@ administrator: "Администратор"
token: "Токен"
twoStepAuthentication: "Двухфакторная аутентификация"
moderator: "Модератор"
moderation: "Модерация"
nUsersMentioned: "Упомянуло пользователей: {n}"
securityKey: "Ключ безопасности"
securityKeyName: "Имя ключа"
@ -562,7 +556,6 @@ author: "Автор"
leaveConfirm: "Вы не сохранили изменения. Хотите выйти и потерять их?"
manage: "Управление"
plugins: "Расширения"
preferencesBackups: "Резервная копия"
deck: "Пульт"
undeck: "Покинуть пульт"
useBlurEffectForModal: "Размывка под формой поверх всего"
@ -596,7 +589,6 @@ smtpSecure: "Использовать SSL/TLS для SMTP-соединений"
smtpSecureInfo: "Выключите при использовании STARTTLS."
testEmail: "Проверка доставки электронной почты"
wordMute: "Скрытие слов"
regexpError: "Ошибка в регулярном выражении"
instanceMute: "Глушение инстансов"
userSaysSomething: "{name} что-то сообщает"
makeActive: "Активировать"
@ -627,8 +619,6 @@ fillAbuseReportDescription: "Опишите, пожалуйста, причин
abuseReported: "Жалоба отправлена. Большое спасибо за информацию."
reporteeOrigin: "О ком сообщено"
reporterOrigin: "Кто сообщил"
forwardReport: "Перенаправление отчета на инстант."
forwardReportIsAnonymous: "Удаленный инстант не сможет увидеть вашу информацию и будет отображаться как анонимная системная учетная запись."
send: "Отправить"
abuseMarkAsResolved: "Отметить жалобу как решённую"
openInNewTab: "Открыть в новой вкладке"
@ -640,7 +630,7 @@ waitingFor: "Ждём, когда {x} ответит"
random: "Случайные"
system: "Система"
switchUi: "Выбор вида"
desktop: "Компьютер"
desktop: "Стол"
clip: "Подборка"
createNew: "Новый документ"
optional: "Необязательно"
@ -825,29 +815,8 @@ leaveGroupConfirm: "Покинуть группу «{name}»?"
useDrawerReactionPickerForMobile: "Выдвижная палитра на мобильном устройстве"
welcomeBackWithName: "С возвращением, {name}!"
clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение адреса электронной почты."
overridedDeviceKind: "Тип устройства"
smartphone: "Смартфон"
tablet: "Планшет"
auto: "Автоматически"
themeColor: "Цвет темы"
size: "Размер"
numberOfColumn: "Количество столбцов"
searchByGoogle: "Поиск"
instanceDefaultLightTheme: "Светлая тема по умолчанию"
instanceDefaultDarkTheme: "Темная тема по умолчанию"
indefinitely: "вечно"
file: "Файлы"
recommended: "Рекомендуем"
check: "Проверить"
driveCapOverrideLabel: "Изменение лимита дискового пространства для этого пользователя"
reverse: "Переворот"
colored: "Выделена цветом"
label: "Метка"
localOnly: "Локально"
beta: "Бета"
enableAutoSensitive: "Автоматическое определение NSFW"
enableAutoSensitiveDescription: "Если доступно, используйте машинное обучение для автоматической установки флага NSFW на носителе. Даже если эта функция отключена, она может быть установлена ​​автоматически в зависимости от инстанта."
account: "Учётные записи"
_emailUnavailable:
used: "Уже используется"
format: "Неверный формат"
@ -1090,6 +1059,7 @@ _sfx:
antenna: "Антенна"
channel: "Канал"
_ago:
unknown: "Когда-то"
future: "Из будущего"
justNow: "Только что"
secondsAgo: "{n} с назад"
@ -1629,14 +1599,12 @@ _notification:
followRequestAccepted: "Запрос на подписку одобрен"
groupInvited: "Приглашение в группы"
app: "Уведомления из приложений"
_actions:
reply: "Ответить"
renote: "Репост"
_deck:
alwaysShowMainColumn: "Всегда показывать главную колонку"
columnAlign: "Выравнивание колонок"
columnMargin: "Расстояние между колонками"
columnHeaderHeight: "Высота заголовка колонки"
addColumn: "Добавить колонку"
configureColumn: "Настройки колонок"
swapLeft: "Переставить левее"
swapRight: "Переставить правее"
swapUp: "Переставить выше"

View File

@ -52,7 +52,6 @@ searchUser: "Hľadať používateľov"
reply: "Odpovedať"
loadMore: "Zobraziť viac"
showMore: "Zobraziť viac"
showLess: "Zavrieť"
youGotNewFollower: "Máte nového sledujúceho"
receiveFollowRequest: "Žiadosť o sledovanie prijatá"
followRequestAccepted: "Žiadosť o sledovanie akceptovaná"
@ -204,7 +203,6 @@ done: "Hotovo"
processing: "Pracujem..."
preview: "Náhľad"
default: "Predvolené"
defaultValueIs: "Predvolené: {value}"
noCustomEmojis: "Žiadne emoji"
noJobs: "Žiadne úlohy"
federating: "Federácia"
@ -383,7 +381,6 @@ administrator: "Administrátor"
token: "Token"
twoStepAuthentication: "Dvojfaktorová autentifikácia"
moderator: "Moderátor"
moderation: "Moderovanie"
nUsersMentioned: "{n} používateľov spomenulo"
securityKey: "Bezpečnostný kľúč"
securityKeyName: "Názov kľúča"
@ -562,7 +559,6 @@ author: "Autor"
leaveConfirm: "Máte neuložené zmeny. Chcete ich zahodiť?"
manage: "Administrácia"
plugins: "Pluginy"
preferencesBackups: "Zálohy nastavení"
deck: "Deck"
useBlurEffectForModal: "Použiť efekt rozmazania na okná"
useFullReactionPicker: "Použiť plnú veľkosť výberu reakcií"
@ -646,8 +642,6 @@ clip: "Klip"
createNew: "Vytvoriť nový"
optional: "Voliteľné"
createNewClip: "Vytvoriť nový klip"
unclip: "Odopnúť"
confirmToUnclipAlreadyClippedNote: "Táto poznámka je už pripnutá ako \"{name}\". Naozaj ju chcete odopnúť?"
public: "Verejné"
i18nInfo: "Misskey je prekladaný do rôznych jazykov dobrovoľníkmi. Pomôcť môžete na {link}."
manageAccessTokens: "Spravovať prístupové tokeny"
@ -847,46 +841,6 @@ oneDay: "1 deň"
oneWeek: "1 týždeň"
reflectMayTakeTime: "Zmeny môžu chvíľu trvať kým sa prejavia."
failedToFetchAccountInformation: "Nepodarilo sa načítať informácie o účte."
rateLimitExceeded: "Prekročený limit rýchlosti"
cropImage: "Orezanie obrázku"
cropImageAsk: "Chcete orezať obrázok?"
file: "Súbor/y"
recentNHours: "Posledných {n} hodín"
recentNDays: "Posledných {n} dní"
noEmailServerWarning: "Nie je nastavený emailový server."
thereIsUnresolvedAbuseReportWarning: "Existuje nevyriešené nahlásenie zneužitia."
recommended: "Odporúčané"
driveCapOverrideLabel: "Zmena limitu úložiska pre tohoto používateľa"
driveCapOverrideCaption: "Ak je zadaná hodnota menšia alebo rovná 0, zruší sa."
isSystemAccount: "Tieto účty automaticky vytvoril a spravuje systém."
typeToConfirm: "Ak chcete vykonať túto operáciu, napíšte {x}"
deleteAccount: "Vymazať účet"
document: "Dokument"
numberOfPageCache: "Počet cachí pre stránky"
numberOfPageCacheDescription: "Zvýši rýchlosť ale tiež nároky na pamäť."
logoutConfirm: "Naozaj sa chcete odhlásiť?"
statusbar: "Stavový riadok"
pleaseSelect: "Prosím vyberte"
reverse: "Preklopiť"
colored: "Farebné"
refreshInterval: "Interval obnovenia"
label: "Popisok"
type: "Typ"
speed: "Rýchlosť"
slow: "Pomaly"
fast: "Rýchlo"
localOnly: "Iba lokálne"
remoteOnly: "Len vzdialené"
failedToUpload: "Nahrávanie zlyhalo"
cannotUploadBecauseInappropriate: "Nemožno nahrať, pretože pravdepodobne obsahuje nevhodný obsah."
cannotUploadBecauseNoFreeSpace: "Nemožno nahrať kvôli nedostatku voľného úložiska."
beta: "Beta"
enableAutoSensitive: "Automatická detekcia NSFW"
enableAutoSensitiveDescription: "Ak je zapnuté, príznak NSFW sa na médiách automaticky nastaví pomocou strojového učenia. Aj keď je táto funkcia vypnutá, v niektorých prípadoch sa môže nastaviť automaticky."
activeEmailValidationDescription: "Dôkladnejšie overí e-mailovú adresu používateľa tým, že zistí, či ide o vyradenú e-mailovú adresu a či sa s ňou dá skutočne komunikovať. Ak nie je začiarknuté, e-mailová adresa sa kontroluje len ako text."
navbar: "Navigačný panel"
account: "Účty"
move: "Pohyb"
_emailUnavailable:
used: "Táto emailová adresa sa už používa"
format: "Formát emailovej adresy je nesprávny"
@ -929,24 +883,6 @@ _plugin:
install: "Inštalova pluginy"
installWarn: "Prosím neinštalujte nedôveryhodné pluginy."
manage: "Spravovanie pluginov"
_preferencesBackups:
list: "Vytvorené zálohy"
saveNew: "Uložiť novú"
loadFile: "Nahrať súbor"
apply: "Použiť na toto zariadenie"
save: "Uložiť"
inputName: "Názov zálohy"
cannotSave: "Nedá sa uložiť"
nameAlreadyExists: "Záloha s názvom \"{name}\" už existuje. Zadajte iný názov."
applyConfirm: "Chcete použiť zálohu '{name}' na aktuálne zariadenie? Aktuálne nastavenia zariadenia sa stratia."
saveConfirm: "Chcete prepísať {name}?"
deleteConfirm: "Naozaj chcete odstrániť \"{name}\"?"
renameConfirm: "Chcete zmeniť \"{old}\" na \"{new}\"?"
noBackups: "Nie je k dispozícii žiadna záloha. \"Uložiť novú\" umožňuje uložiť aktuálnu konfiguráciu zariadenia na server."
createdAt: "Dátum vytvorenia: {date} {time}"
updatedAt: "Dátum úpravy: {date} {time}"
cannotLoad: "Nedá sa nahrať"
invalidFile: "Neplatný formát súboru"
_registry:
scope: "Oblasť"
key: "Kľúč"
@ -1030,8 +966,6 @@ _mfm:
sparkleDescription: "Obsahu dodá trblietajúci efekt."
rotate: "Otáčať"
rotateDescription: "Otočí obsah o určitý uhol."
plain: "Obyčajné"
plainDescription: "Bez akejkoľvej syntaxe"
_instanceTicker:
none: "Nikdy nezobrazovať"
remote: "Zobraziť pre vzdialených používateľov"
@ -1152,6 +1086,7 @@ _sfx:
antenna: "Antény"
channel: "Upozornenia kanála"
_ago:
unknown: "Neznáme"
future: "Budúcnosť"
justNow: "Teraz"
secondsAgo: "pred {n} sekundami"
@ -1195,7 +1130,6 @@ _2fa:
registerKey: "Registrovať bezpečnostný kľúč"
step1: "Najprv si nainštalujte autentifikačnú aplikáciu (napríklad {a} alebo {b}) na svoje zariadenie."
step2: "Potom, naskenujte QR kód zobrazený na obrazovke."
step2Url: "Do aplikácie zadajte nasledujúcu URL adresu:"
step3: "Nastavenie dokončíte zadaním tokenu z vašej aplikácie."
step4: "Od teraz, všetky ďalšie prihlásenia budú vyžadovať prihlasovací token."
securityKeyInfo: "Okrem odtlačku prsta alebo PIN autentifikácie si môžete nastaviť autentifikáciu cez hardvérový bezpečnostný kľúč podporujúci FIDO2 a tak ešte viac zabezpečiť svoj účet."
@ -1261,13 +1195,10 @@ _widgets:
trends: "Trendy"
clock: "Hodiny"
rss: "RSS čítačka"
rssTicker: "RSS Ticker"
activity: "Aktivita"
photos: "Fotky"
digitalClock: "Digitálne hodiny"
unixClock: "UNIX čas"
federation: "Federácia"
instanceCloud: "Cloud serverov"
postForm: "Napísať poznámku"
slideshow: "Prezentácia"
button: "Tlačidlo"
@ -1683,7 +1614,6 @@ _notification:
yourFollowRequestAccepted: "Vaša žiadosť o sledovanie bola prijatá"
youWereInvitedToGroup: "Pozvať do skupiny"
pollEnded: "Výsledky hlasovania sú k dispozícii."
emptyPushNotificationMessage: "Push notifikácie aktualizované"
_types:
all: "Všetky"
follow: "Sledujete"
@ -1698,15 +1628,12 @@ _notification:
followRequestAccepted: "Schválené žiadosti o sledovanie"
groupInvited: "Pozvánky do skupín"
app: "Oznámenia z prepojených aplikácií"
_actions:
followBack: "Sledovať späť\n"
reply: "Odpovedať"
renote: "Preposlať"
_deck:
alwaysShowMainColumn: "Vždy zobraziť v hlavnom stĺpci"
columnAlign: "Zarovnať stĺpce"
columnMargin: "Rozostup medzi stĺpcami"
columnHeaderHeight: "Výška hlavičky stĺpca"
addColumn: "Pridať stĺpec"
configureColumn: "Nastavenie stĺpcov"
swapLeft: "Vymeniť vľavo"
swapRight: "Vymeniť vpravo"
swapUp: "Vymeniť hore"
@ -1714,11 +1641,6 @@ _deck:
stackLeft: "Priložiť do ľavého stĺpca"
popRight: "Vybrať napravo"
profile: "Profil"
newProfile: "Nový profil"
deleteProfile: "Odstrániť profil"
introduction: "Kombinujte stĺpce a vytvorte si svoje vlastné rozhranie!"
introduction2: "Stlačením tlačidla + v pravej časti obrazovky môžete kedykoľvek pridať stĺpce."
widgetsIntroduction: "V ponuke stĺpca vyberte možnosť \"Upraviť widget\" a pridajte widget"
_columns:
main: "Hlavný"
widgets: "Widgety"

View File

@ -1,321 +0,0 @@
---
_lang_: "Svenska"
headlineMisskey: "Ett nätverk kopplat av noter"
introMisskey: "Välkommen! Misskey är en öppen och decentraliserad mikrobloggningstjänst.\nSkapa en \"not\" och dela dina tankar med alla runtomkring dig. 📡\nMed \"reaktioner\" kan du snabbt uttrycka dina känslor kring andras noter.👍\nLåt oss utforska en nya värld!🚀"
monthAndDay: "{day}/{month}"
search: "Sök"
notifications: "Notifikationer"
username: "Användarnamn"
password: "Lösenord"
forgotPassword: "Glömt lösenord"
fetchingAsApObject: "Hämtar från Fediversum..."
ok: "OK"
gotIt: "Uppfattat!"
cancel: "Avbryt"
enterUsername: "Ange användarnamn"
renotedBy: "Omnoterad av {user}"
noNotes: "Inga noteringar"
noNotifications: "Inga aviseringar"
instance: "Instanser"
settings: "Inställningar"
basicSettings: "Basinställningar"
otherSettings: "Andra inställningar"
openInWindow: "Öppna i ett fönster"
profile: "Profil"
timeline: "Tidslinje"
noAccountDescription: "Användaren har inte skrivit en biografi än."
login: "Logga in"
loggingIn: "Loggar in"
logout: "Logga ut"
signup: "Registrera"
uploading: "Uppladdning sker..."
save: "Spara"
users: "Användare"
addUser: "Lägg till användare"
favorite: "Lägg till i favoriter"
favorites: "Favoriter"
unfavorite: "Avfavorisera"
favorited: "Tillagd i favoriter."
alreadyFavorited: "Redan tillagd i favoriter."
cantFavorite: "Gick inte att lägga till i favoriter."
pin: "Fäst till profil"
unpin: "Lossa från profil"
copyContent: "Kopiera innehåll"
copyLink: "Kopiera länk"
delete: "Radera"
deleteAndEdit: "Radera och ändra"
deleteAndEditConfirm: "Är du säker att du vill radera denna not och ändra den? Du kommer förlora alla reaktioner, omnoteringar och svar till den."
addToList: "Lägg till i lista"
sendMessage: "Skicka ett meddelande"
copyUsername: "Kopiera användarnamn"
searchUser: "Sök användare"
reply: "Svara"
loadMore: "Ladda mer"
showMore: "Visa mer"
youGotNewFollower: "följde dig"
receiveFollowRequest: "Följarförfrågan mottagen"
followRequestAccepted: "Följarförfrågan accepterad"
mention: "Nämn"
mentions: "Omnämningar"
directNotes: "Direktnoter"
importAndExport: "Importera / Exportera"
import: "Importera"
export: "Exportera"
files: "Filer"
download: "Nedladdning"
driveFileDeleteConfirm: "Är du säker att du vill radera filen \"{name}\"? Noter med denna fil bifogad kommer också raderas."
unfollowConfirm: "Är du säker att du vill avfölja {name}?"
exportRequested: "Du har begärt en export. Detta kan ta lite tid. Den kommer läggas till i din Drive när den blir klar."
importRequested: "Du har begärt en import. Detta kan ta lite tid."
lists: "Listor"
noLists: "Du har inga listor"
note: "Not"
notes: "Noter"
following: "Följer"
followers: "Följare"
followsYou: "Följer dig"
createList: "Skapa lista"
manageLists: "Hantera lista"
error: "Fel!"
somethingHappened: "Ett fel har uppstått"
retry: "Försök igen"
pageLoadError: "Det gick inte att ladda sidan."
pageLoadErrorDescription: "Detta händer oftast p.g.a. nätverksfel eller din webbläsarcache. Försök tömma din cache och testa sedan igen efter en liten stund."
serverIsDead: "Servern svarar inte. Vänta ett litet tag och försök igen."
youShouldUpgradeClient: "För att kunna se denna sida, vänligen ladda om sidan för att uppdatera din klient."
enterListName: "Skriv ett namn till listan"
privacy: "Integritet"
makeFollowManuallyApprove: "Följarförfrågningar kräver manuellt godkännande"
defaultNoteVisibility: "Standardsynlighet"
follow: "Följ"
followRequest: "Skicka följarförfrågan"
followRequests: "Följarförfrågningar"
unfollow: "Avfölj"
followRequestPending: "Följarförfrågning avvaktar för svar"
enterEmoji: "Skriv en emoji"
renote: "Omnotera"
unrenote: "Ta tillbaka omnotering"
renoted: "Omnoterad."
cantRenote: "Inlägget kunde inte bli omnoterat."
cantReRenote: "En omnotering kan inte bli omnoterad."
quote: "Citat"
pinnedNote: "Fästad not"
pinned: "Fäst till profil"
you: "Du"
clickToShow: "Klicka för att visa"
sensitive: "Känsligt innehåll"
add: "Lägg till"
reaction: "Reaktioner"
reactionSetting: "Reaktioner som ska visas i reaktionsväljaren"
reactionSettingDescription2: "Dra för att omordna, klicka för att radera, tryck \"+\" för att lägga till."
rememberNoteVisibility: "Komihåg notvisningsinställningar"
attachCancel: "Ta bort bilaga"
markAsSensitive: "Markera som känsligt innehåll"
unmarkAsSensitive: "Avmarkera som känsligt innehåll"
enterFileName: "Ange filnamn"
mute: "Tysta"
unmute: "Avtysta"
block: "Blockera"
unblock: "Avblockera"
suspend: "Suspendera"
unsuspend: "Ta bort suspenderingen"
blockConfirm: "Är du säker att du vill blockera kontot?"
unblockConfirm: "Är du säkert att du vill avblockera kontot?"
suspendConfirm: "Är du säker att du vill suspendera detta konto?"
unsuspendConfirm: "Är du säker att du vill avsuspendera detta konto?"
selectList: "Välj lista"
selectAntenna: "Välj en antenn"
selectWidget: "Välj en widget"
editWidgets: "Redigera widgets"
editWidgetsExit: "Avsluta redigering"
customEmojis: "Anpassa emoji"
emoji: "Emoji"
emojis: "Emoji"
emojiName: "Emoji namn"
emojiUrl: "Emoji länk"
addEmoji: "Lägg till emoji"
settingGuide: "Rekommenderade inställningar"
cacheRemoteFiles: "Spara externa filer till cachen"
cacheRemoteFilesDescription: "När denna inställning är avstängd kommer externa filer laddas direkt från den externa instansen. Genom att stänga av detta kommer lagringsutrymme minska i användning men kommer öka datatrafiken eftersom miniatyrer inte kommer genereras."
flagAsBot: "Markera konto som bot"
flagAsBotDescription: "Aktivera det här alternativet om kontot är kontrollerat av ett program. Om aktiverat kommer den fungera som en flagga för andra utvecklare för att hindra ändlösa kedjor med andra bottar. Det kommer också få Misskeys interna system att hantera kontot som en bot."
flagAsCat: "Markera konto som katt"
flagAsCatDescription: "Aktivera denna inställning för att markera kontot som en katt."
flagShowTimelineReplies: "Visa svar i tidslinje"
flagShowTimelineRepliesDescription: "Visar användarsvar till andra användares noter i tidslinjen om påslagen."
autoAcceptFollowed: "Godkänn följarförfrågningar från användare du följer automatiskt"
addAccount: "Lägg till konto"
loginFailed: "Inloggningen misslyckades"
showOnRemote: "Se på extern instans"
general: "Allmänt"
wallpaper: "Bakgrundsbild"
setWallpaper: "Välj bakgrund"
removeWallpaper: "Ta bort bakgrund"
searchWith: "Sök: {q}"
youHaveNoLists: "Du har inga listor"
followConfirm: "Är du säker att du vill följa {name}?"
proxyAccount: "Proxykonto"
proxyAccountDescription: "Ett proxykonto är ett konto som agerar som en extern följare för användare under vissa villkor. Till exempel, när en användare lägger till en extern användare till en lista så kommer den externa användarens aktivitet inte levireras till instansen om ingen lokal användare följer det kontot, så proxykontot används istället."
host: "Värd"
selectUser: "Välj användare"
recipient: "Mottagare"
annotation: "Kommentarer"
federation: "Federation"
instances: "Instanser"
registeredAt: "Registrerad på"
latestRequestSentAt: "Senaste förfrågan skickad"
latestRequestReceivedAt: "Senaste begäran mottagen"
latestStatus: "Senaste status"
storageUsage: "Använt lagringsutrymme"
charts: "Diagram"
perHour: "Per timme"
perDay: "Per dag"
stopActivityDelivery: "Sluta skicka aktiviteter"
blockThisInstance: "Blockera instans"
operations: "Operationer"
software: "Mjukvara"
version: "Version"
metadata: "Metadata"
withNFiles: "{n} fil(er)"
monitor: "Övervakning"
jobQueue: "Jobbkö"
cpuAndMemory: "CPU och minne"
network: "Nätverk"
disk: "Disk"
instanceInfo: "Instansinformation"
statistics: "Statistik"
clearQueue: "Rensa kö"
clearQueueConfirmTitle: "Är du säker att du vill rensa kön?"
clearQueueConfirmText: "Om någon not är olevererad i kön kommer den inte federeras. Vanligtvis behövs inte denna handling."
clearCachedFiles: "Rensa cache"
clearCachedFilesConfirm: "Är du säker att du vill radera alla cachade externa filer?"
blockedInstances: "Blockerade instanser"
blockedInstancesDescription: "Lista adressnamn av instanser som du vill blockera. Listade instanser kommer inte längre kommunicera med denna instans."
muteAndBlock: "Tystningar och blockeringar"
mutedUsers: "Tystade användare"
blockedUsers: "Blockerade användare"
noUsers: "Det finns inga användare"
editProfile: "Redigera profil"
noteDeleteConfirm: "Är du säker på att du vill ta bort denna not?"
pinLimitExceeded: "Du kan inte fästa fler noter"
intro: "Misskey har installerats! Vänligen skapa en adminanvändare."
done: "Klar"
processing: "Bearbetar..."
preview: "Förhandsvisning"
default: "Standard"
defaultValueIs: "Standard: {value}"
noCustomEmojis: "Det finns ingen emoji"
noJobs: "Det finns inga jobb"
federating: "Federerar"
blocked: "Blockerad"
suspended: "Suspenderad"
all: "Allt"
subscribing: "Prenumererar"
publishing: "Publiceras"
notResponding: "Svarar inte"
instanceFollowing: "Följer på instans"
instanceFollowers: "Följare av instans"
instanceUsers: "Användare av denna instans"
changePassword: "Ändra lösenord"
security: "Säkerhet"
retypedNotMatch: "Inmatningen matchar inte"
currentPassword: "Nuvarande lösenord"
newPassword: "Nytt lösenord"
newPasswordRetype: "Bekräfta lösenord"
attachFile: "Bifoga filer"
more: "Mer!"
featured: "Utvalda"
usernameOrUserId: "Användarnamn eller användar-id"
noSuchUser: "Kan inte hitta användaren"
lookup: "Sökning"
announcements: "Nyheter"
imageUrl: "Bild-URL"
remove: "Radera"
removed: "Borttaget"
removeAreYouSure: "Är du säker att du vill radera \"{x}\"?"
deleteAreYouSure: "Är du säker att du vill radera \"{x}\"?"
resetAreYouSure: "Vill du återställa?"
saved: "Sparad"
messaging: "Chatt"
upload: "Ladda upp"
keepOriginalUploading: "Behåll originalbild"
nsfw: "Känsligt innehåll"
pinnedNotes: "Fästad not"
userList: "Listor"
smtpHost: "Värd"
smtpUser: "Användarnamn"
smtpPass: "Lösenord"
clearCache: "Rensa cache"
user: "Användare"
searchByGoogle: "Sök"
file: "Filer"
_email:
_follow:
title: "följde dig"
_mfm:
mention: "Nämn"
quote: "Citat"
emoji: "Anpassa emoji"
search: "Sök"
_theme:
keys:
mention: "Nämn"
renote: "Omnotera"
_sfx:
note: "Noter"
notification: "Notifikationer"
chat: "Chatt"
_widgets:
notifications: "Notifikationer"
timeline: "Tidslinje"
federation: "Federation"
jobQueue: "Jobbkö"
_cw:
show: "Ladda mer"
_visibility:
followers: "Följare"
_profile:
username: "Användarnamn"
_exportOrImport:
followingList: "Följer"
muteList: "Tysta"
blockingList: "Blockera"
userLists: "Listor"
_charts:
federation: "Federation"
_pages:
script:
categories:
list: "Listor"
blocks:
_join:
arg1: "Listor"
_randomPick:
arg1: "Listor"
_dailyRandomPick:
arg1: "Listor"
_seedRandomPick:
arg2: "Listor"
_pick:
arg1: "Listor"
_listLen:
arg1: "Listor"
types:
array: "Listor"
_notification:
youWereFollowed: "följde dig"
_types:
follow: "Följer"
mention: "Nämn"
renote: "Omnotera"
quote: "Citat"
reaction: "Reaktioner"
_actions:
reply: "Svara"
renote: "Omnotera"
_deck:
_columns:
notifications: "Notifikationer"
tl: "Tidslinje"
list: "Listor"
mentions: "Omnämningar"

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,6 @@ search: "Пошук"
notifications: "Сповіщення"
username: "Ім'я користувача"
password: "Пароль"
forgotPassword: "Я забув пароль"
fetchingAsApObject: "Отримуємо з федіверсу..."
ok: "OK"
gotIt: "Зрозуміло!"
@ -52,7 +51,6 @@ searchUser: "Пошук користувачів"
reply: "Відповісти"
loadMore: "Показати більше"
showMore: "Показати більше"
showLess: "Закрити"
youGotNewFollower: "Новий підписник"
receiveFollowRequest: "Отримано запит на підписку"
followRequestAccepted: "Підписка прийнята"
@ -82,8 +80,6 @@ somethingHappened: "Щось пішло не так"
retry: "Спробувати знову"
pageLoadError: "Помилка при завантаженні сторінки"
pageLoadErrorDescription: "Зазвичай це пов’язано з помилками мережі або кешем браузера. Очистіть кеш або почекайте трохи й спробуйте ще раз."
serverIsDead: "Відповіді від сервера немає. Зачекайте деякий час і повторіть спробу."
youShouldUpgradeClient: "Перезавантажте та використовуйте нову версію клієнта, щоб переглянути цю сторінку."
enterListName: "Введіть назву списку"
privacy: "Конфіденційність"
makeFollowManuallyApprove: "Підтверджувати підписників уручну"
@ -107,7 +103,6 @@ clickToShow: "Натисніть для перегляду"
sensitive: "NSFW"
add: "Додати"
reaction: "Реакції"
reactionSetting: "Налаштування реакцій"
reactionSettingDescription2: "Перемістити щоб змінити порядок, Клацнути мишою щоб видалити, Натиснути \"+\" щоб додати."
rememberNoteVisibility: "Пам’ятати параметри видимісті"
attachCancel: "Видалити вкладення"
@ -142,10 +137,7 @@ flagAsBot: "Акаунт бота"
flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну інтеракцію між ботами а також відповідного підлаштування Misskey."
flagAsCat: "Акаунт кота"
flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком."
flagShowTimelineReplies: "Показувати відповіді на нотатки на часовій шкалі"
flagShowTimelineRepliesDescription: "Показує відповіді користувачів на нотатки інших користувачів на часовій шкалі."
autoAcceptFollowed: "Автоматично приймати запити на підписку від користувачів, на яких ви підписані"
addAccount: "Додати акаунт"
loginFailed: "Не вдалося увійти"
showOnRemote: "Переглянути в оригіналі"
general: "Загальне"
@ -156,7 +148,6 @@ searchWith: "Пошук: {q}"
youHaveNoLists: "У вас немає списків"
followConfirm: "Підписатися на {name}?"
proxyAccount: "Проксі-акаунт"
proxyAccountDescription: "Обліковий запис проксі це обліковий запис, який діє як віддалений підписник для користувачів за певних умов. Наприклад, коли користувач додає віддаленого користувача до списку, активність віддаленого користувача не буде доставлена на сервер, якщо жоден локальний користувач не стежить за цим користувачем, то замість нього буде використовуватися обліковий запис проксі-сервера."
host: "Хост"
selectUser: "Виберіть користувача"
recipient: "Отримувач"
@ -238,8 +229,6 @@ resetAreYouSure: "Справді скинути?"
saved: "Збережено"
messaging: "Чати"
upload: "Завантажити"
keepOriginalUploading: "Зберегти оригінальне зображення"
keepOriginalUploadingDescription: "Зберігає початково завантажене зображення як є. Якщо вимкнено, версія для відображення в Інтернеті буде створена під час завантаження."
fromDrive: "З диска"
fromUrl: "З посилання"
uploadFromUrl: "Завантажити з посилання"
@ -286,7 +275,6 @@ emptyDrive: "Диск порожній"
emptyFolder: "Тека порожня"
unableToDelete: "Видалення неможливе"
inputNewFileName: "Введіть ім'я нового файлу"
inputNewDescription: "Введіть новий заголовок"
inputNewFolderName: "Введіть ім'я нової теки"
circularReferenceFolder: "Ви намагаєтесь перемістити папку в її підпапку."
hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена"
@ -318,8 +306,6 @@ monthX: "{month}"
yearX: "{year}"
pages: "Сторінки"
integration: "Інтеграція"
connectService: "Під’єднати"
disconnectService: "Відключитися"
enableLocalTimeline: "Увімкнути локальну стрічку"
enableGlobalTimeline: "Увімкнути глобальну стрічку"
disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх стрічок, навіть якщо вони вимкнуті."
@ -331,7 +317,6 @@ driveCapacityPerRemoteAccount: "Об'єм диска на одного відд
inMb: "В мегабайтах"
iconUrl: "URL аватара"
bannerUrl: "URL банера"
backgroundImageUrl: "URL-адреса фонового зображення"
basicInfo: "Основна інформація"
pinnedUsers: "Закріплені користувачі"
pinnedUsersDescription: "Впишіть в список користувачів, яких хочете закріпити на сторінці \"Знайти\", ім'я в стовпчик."
@ -347,7 +332,6 @@ recaptcha: "reCAPTCHA"
enableRecaptcha: "Увімкнути reCAPTCHA"
recaptchaSiteKey: "Ключ сайту"
recaptchaSecretKey: "Секретний ключ"
avoidMultiCaptchaConfirm: "Використання кількох систем Captcha може спричинити перешкоди між ними. Бажаєте вимкнути інші активні системи Captcha? Якщо ви хочете, щоб вони залишалися ввімкненими, натисніть «Скасувати»."
antennas: "Антени"
manageAntennas: "Налаштування антен"
name: "Ім'я"
@ -444,12 +428,10 @@ signinWith: "Увійти за допомогою {x}"
signinFailed: "Не вдалося увійти. Введені ім’я користувача або пароль неправильнi."
tapSecurityKey: "Торкніться ключа безпеки"
or: "або"
language: "Мова"
uiLanguage: "Мова інтерфейсу"
groupInvited: "Запрошення до групи"
aboutX: "Про {x}"
useOsNativeEmojis: "Використовувати емодзі ОС"
disableDrawer: "Не використовувати висувні меню"
youHaveNoGroups: "Немає груп"
joinOrCreateGroup: "Отримуйте запрошення до груп або створюйте свої власні групи."
noHistory: "Історія порожня"
@ -460,7 +442,6 @@ category: "Категорія"
tags: "Теги"
docSource: "Джерело цього документа"
createAccount: "Створити акаунт"
existingAccount: "Існуючий обліковий запис"
regenerate: "Оновити"
fontSize: "Розмір шрифту"
noFollowRequests: "Немає запитів на підписку"
@ -482,7 +463,6 @@ showFeaturedNotesInTimeline: "Показувати популярні нотат
objectStorage: "Object Storage"
useObjectStorage: "Використовувати object storage"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "Це початкова частина адреси, що використовується CDN або проксі, наприклад для S3: https://<bucket>.s3.amazonaws.com, або GCS: 'https://storage.googleapis.com/<bucket>'"
objectStorageBucket: "Bucket"
objectStorageBucketDesc: "Будь ласка вкажіть назву відра в налаштованому сервісі."
objectStoragePrefix: "Prefix"
@ -533,9 +513,6 @@ removeAllFollowing: "Скасувати всі підписки"
removeAllFollowingDescription: "Скасувати підписку на всі акаунти з {host}. Будь ласка, робіть це, якщо інстанс більше не існує."
userSuspended: "Обліковий запис заблокований."
userSilenced: "Обліковий запис приглушений."
yourAccountSuspendedTitle: "Цей обліковий запис заблоковано"
yourAccountSuspendedDescription: "Цей обліковий запис було заблоковано через порушення умов надання послуг сервера. Зв'яжіться з адміністратором, якщо ви хочете дізнатися докладнішу причину. Будь ласка, не створюйте новий обліковий запис."
menu: "Меню"
divider: "Розділювач"
addItem: "Додати елемент"
relays: "Ретранслятори"
@ -554,8 +531,6 @@ disablePlayer: "Закрити відеоплеєр"
expandTweet: "Розгорнути твіт"
themeEditor: "Редактор тем"
description: "Опис"
describeFile: "Додати підпис"
enterFileDescription: "Введіть підпис"
author: "Автор"
leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?"
manage: "Управління"
@ -578,7 +553,6 @@ pluginTokenRequestedDescription: "Цей плагін зможе викорис
notificationType: "Тип сповіщення"
edit: "Редагувати"
useStarForReactionFallback: "Використовувати ★ як запасний варіант, якщо емодзі реакції невідомий"
emailServer: "Сервер електронної пошти"
enableEmail: "Увімкнути функцію доставки пошти"
emailConfigInfo: "Використовується для підтвердження електронної пошти підчас реєстрації, а також для відновлення паролю."
email: "E-mail"
@ -593,9 +567,6 @@ smtpSecure: "Використовувати безумовне шифруван
smtpSecureInfo: "Вимкніть при використанні STARTTLS "
testEmail: "Тестовий email"
wordMute: "Блокування слів"
regexpError: "Помилка регулярного виразу"
regexpErrorDescription: "Сталася помилка в регулярному виразі в рядку {line} вашого слова {tab} слова що ігноруються:"
instanceMute: "Приглушення інстансів"
userSaysSomething: "{name} щось сказав(ла)"
makeActive: "Активувати"
display: "Відображення"
@ -623,11 +594,6 @@ reportAbuse: "Поскаржитись"
reportAbuseOf: "Поскаржитись на {name}"
fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги. Якщо скарга стосується запису, вкажіть посилання на нього."
abuseReported: "Дякуємо, вашу скаргу було відправлено. "
reporter: "Репортер"
reporteeOrigin: "Про кого повідомлено"
reporterOrigin: "Хто повідомив"
forwardReport: "Переслати звіт на віддалений інстанс"
forwardReportIsAnonymous: "Замість вашого облікового запису анонімний системний обліковий запис буде відображатися як доповідач на віддаленому інстансі"
send: "Відправити"
abuseMarkAsResolved: "Позначити скаргу як вирішену"
openInNewTab: "Відкрити в новій вкладці"
@ -689,7 +655,6 @@ center: "Центр"
wide: "Широкий"
narrow: "Вузький"
reloadToApplySetting: "Налаштування ввійде в дію при перезавантаженні. Перезавантажити?"
needReloadToApply: "Зміни набудуть чинності після перезавантаження сторінки."
showTitlebar: "Показати титульний рядок"
clearCache: "Очистити кеш"
onlineUsersCount: "{n} користувачів онлайн"
@ -704,28 +669,12 @@ textColor: "Текст"
saveAs: "Зберегти як…"
advanced: "Розширені"
value: "Значення"
createdAt: "Створено"
updatedAt: "Останнє оновлення"
saveConfirm: "Зберегти зміни?"
deleteConfirm: "Ви дійсно бажаєте це видалити?"
invalidValue: "Некоректне значення."
registry: "Реєстр"
closeAccount: "Закрити обліковий запис"
currentVersion: "Версія, що використовується"
latestVersion: "Сама свіжа версія"
youAreRunningUpToDateClient: "У вас найсвіжіша версія клієнта."
newVersionOfClientAvailable: "Доступніша свіжа версія клієнта."
usageAmount: "Використане"
capacity: "Ємність"
inUse: "Зайнято"
editCode: "Редагувати вихідний текст"
apply: "Застосувати"
receiveAnnouncementFromInstance: "Отримувати оповіщення з інстансу"
emailNotification: "Сповіщення електронною поштою"
publish: "Опублікувати"
inChannelSearch: "Пошук за каналом"
useReactionPickerForContextMenu: "Відкривати палітру реакцій правою кнопкою"
typingUsers: "Стук клавіш. Це {users}…"
goBack: "Назад"
info: "Інформація"
user: "Користувачі"
@ -738,13 +687,6 @@ hashtags: "Хештеґ"
hide: "Сховати"
searchByGoogle: "Пошук"
indefinitely: "Ніколи"
file: "Файли"
reverse: "Перевернути"
colored: "Кольоровий"
label: "Назва"
localOnly: "Локально"
_ffVisibility:
public: "Опублікувати"
_ad:
back: "Назад"
_gallery:
@ -925,6 +867,7 @@ _sfx:
antenna: "Прийом антени"
channel: "Повідомлення каналу"
_ago:
unknown: "Невідомо"
future: "Майбутнє"
justNow: "Щойно"
secondsAgo: "{n}с тому"
@ -1434,12 +1377,11 @@ _notification:
followRequestAccepted: "Прийняті підписки"
groupInvited: "Запрошення до груп"
app: "Сповіщення від додатків"
_actions:
reply: "Відповісти"
renote: "Поширити"
_deck:
alwaysShowMainColumn: "Завжди показувати головну колонку"
columnAlign: "Вирівняти стовпці"
columnMargin: "Відступ між стовпцями"
columnHeaderHeight: "Висота заголовку колони"
addColumn: "Додати стовпець"
swapLeft: "Пересунути ліворуч"
swapRight: "Пересунути праворуч"

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ notifications: "通知"
username: "用户名"
password: "密码"
forgotPassword: "忘记密码"
fetchingAsApObject: "在联邦宇宙查询中..."
fetchingAsApObject: "在联邦宇宙查询中..."
ok: "OK"
gotIt: "我明白了"
cancel: "取消"
@ -52,7 +52,6 @@ searchUser: "搜索用户"
reply: "回复"
loadMore: "查看更多"
showMore: "查看更多"
showLess: "关闭"
youGotNewFollower: "你有新的关注者"
receiveFollowRequest: "您收到了关注请求"
followRequestAccepted: "您的关注请求被通过了"
@ -70,7 +69,7 @@ exportRequested: "导出请求已提交,这可能需要花一些时间,导
importRequested: "导入请求已提交,这可能需要花一点时间。"
lists: "列表"
noLists: "列表为空"
note: ""
note: "帖"
notes: "帖子"
following: "关注中"
followers: "关注者"
@ -97,7 +96,7 @@ enterEmoji: "输入表情符号"
renote: "转发"
unrenote: "取消转发"
renoted: "已转发。"
cantRenote: "该帖无法转发。"
cantRenote: "该帖无法转发。"
cantReRenote: "转发无法被再次转发。"
quote: "引用"
pinnedNote: "已置顶的帖子"
@ -141,7 +140,7 @@ cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远
flagAsBot: "这是一个机器人账号"
flagAsBotDescription: "如果此帐户由程序控制请启用此项。启用后此标志可以帮助其他开发人员防止机器人之间产生无限互动的行为并让Misskey的内部系统将此帐户识别为机器人。"
flagAsCat: "将这个账户设定为一只猫"
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。\n开启后会在您的头像上出现猫耳朵并将你的帖子中的「na」替换为「nya」日文同理。"
flagAsCatDescription: "如果您想表明此帐户是一只猫,请打开此标志。"
flagShowTimelineReplies: "在时间线上显示帖子的回复"
flagShowTimelineRepliesDescription: "启用时,时间线除了显示用户的帖子外,还会显示其他用户对帖子的回复。"
autoAcceptFollowed: "自动允许关注者的关注"
@ -156,7 +155,7 @@ searchWith: "搜索:{q}"
youHaveNoLists: "列表为空"
followConfirm: "你确定要关注{name}吗?"
proxyAccount: "代理账户"
proxyAccountDescription: "代理账户是在某些情况下充当用户的远程关注者的账户。 例如,当一个用户列出一个远程用户时,如果没有人跟随该列出的用户,则该活动将不会传递到该实例,因此将代之以代理户。"
proxyAccountDescription: "代理帐户是在某些情况下充当用户的远程关注者的帐户。 例如,当一个用户列出一个远程用户时,如果没有人跟随该列出的用户,则该活动将不会传递到该实例,因此将代之以代理户。"
host: "主机名"
selectUser: "选择用户"
recipient: "收件人"
@ -172,7 +171,7 @@ charts: "图表"
perHour: "每小时"
perDay: "每天"
stopActivityDelivery: "停止发送活动"
blockThisInstance: "阻止此实例向本实例推流"
blockThisInstance: "阻止此实例"
operations: "操作"
software: "软件"
version: "版本"
@ -204,7 +203,6 @@ done: "完成"
processing: "正在处理"
preview: "预览"
default: "默认"
defaultValueIs: "默认值: {value}"
noCustomEmojis: "没有自定义表情符号"
noJobs: "没有任务"
federating: "联合中"
@ -252,7 +250,7 @@ messageRead: "已读"
noMoreHistory: "没有更多的历史记录"
startMessaging: "添加聊天"
nUsersRead: "{n}人已读"
agreeTo: "勾选则表示已阅读并同意{0}"
agreeTo: "{0}人同意"
tos: "服务条款"
start: "开始"
home: "首页"
@ -323,7 +321,7 @@ connectService: "连接"
disconnectService: "断开连接"
enableLocalTimeline: "启用本地时间线功能"
enableGlobalTimeline: "启用全局时间线"
disablingTimelinesInfo: "即使时间线功能被禁用,出于便,管理员和数据图表也可以继续使用。"
disablingTimelinesInfo: "即使时间线功能被禁用,出于便利性的原因,管理员和数据图表也可以继续使用。"
registration: "注册"
enableRegistration: "允许新用户注册"
invite: "邀请"
@ -338,7 +336,7 @@ pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
pinnedPages: "固定页面"
pinnedPagesDescription: "输入您要固定到实例首页的页面路径,以换行符分隔。"
pinnedClipId: "置顶的便签ID"
pinnedClipId: "置顶的签ID"
pinnedNotes: "已置顶的帖子"
hcaptcha: "hCaptcha"
enableHcaptcha: "启用 hCaptcha"
@ -383,7 +381,6 @@ administrator: "管理员"
token: "Token (令牌)"
twoStepAuthentication: "两步验证"
moderator: "监察员"
moderation: "管理"
nUsersMentioned: "{n} 被提到"
securityKey: "安全密钥"
securityKeyName: "密钥名称"
@ -443,7 +440,7 @@ strongPassword: "密码强度:强"
passwordMatched: "密码一致"
passwordNotMatched: "密码不一致"
signinWith: "以{x}登录"
signinFailed: "无法登录,请检查您的用户名和密码是否正确。"
signinFailed: "无法登录,请检查您的用户名和密码。"
tapSecurityKey: "轻触硬件安全密钥"
or: "或者"
language: "语言"
@ -462,7 +459,7 @@ category: "类别"
tags: "标签"
docSource: "文件来源"
createAccount: "注册账户"
existingAccount: "现有的户"
existingAccount: "现有的户"
regenerate: "重新生成"
fontSize: "字体大小"
noFollowRequests: "没有关注申请"
@ -484,13 +481,13 @@ showFeaturedNotesInTimeline: "在时间线上显示热门推荐"
objectStorage: "对象存储"
useObjectStorage: "使用对象存储"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "用于引用的URL。如果您正在使用CDN或反向代理请指定其URL例如S3“https://<bucket>.s3.amazonaws.com”GCS“https://storage.googleapis.com/<bucket>”"
objectStorageBaseUrlDesc: "URL前缀用于构造URL到对象媒体的引用如果您使用的是CDN或反向代理请指定其URL否则请根据您使用的服务指定可公开访问的地址。例如“https://<bucket>.s3.amazonaws.com”用于AWS S3“https://storage.googleapis.com/<bucket>”用于GCS"
objectStorageBucket: "存储桶"
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
objectStoragePrefix: "前缀"
objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
objectStorageEndpoint: "端点"
objectStorageEndpointDesc: "如果你使用AWS S3请留空。否则请根据你使用的服务商的说明来进行设置,指定端点形式为“<host>”或“<host>:<port>”。"
objectStorageEndpointDesc: "如果你希望使用AWS S3请留空。否则请根据你使用的服务来进行设置指定端点形式为“<host>”或“<host>:<port>”。"
objectStorageRegion: "可用区"
objectStorageRegionDesc: "指定一个可用区例如“xx-east-1”。 如果您的对象存储服务没有可用区概念请将其留空或填写“us-east-1”。"
objectStorageUseSSL: "使用SSL"
@ -536,7 +533,7 @@ removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存
userSuspended: "该用户已被冻结。"
userSilenced: "该用户已被禁言。"
yourAccountSuspendedTitle: "账户已被冻结"
yourAccountSuspendedDescription: "由于违反了服务器的服务条款或其他原因,该账户已被冻结。 您可以与管理员联系以了解更多信息。 请不要创建一个新的户。"
yourAccountSuspendedDescription: "由于违反了服务器的服务条款或其他原因,该账户已被冻结。 您可以与管理员联系以了解更多信息。 请不要创建一个新的户。"
menu: "菜单"
divider: "分割线"
addItem: "添加项目"
@ -562,7 +559,6 @@ author: "作者"
leaveConfirm: "存在未保存的更改。要放弃更改吗?"
manage: "管理"
plugins: "插件"
preferencesBackups: "备份设置"
deck: "Deck"
undeck: "取消Deck"
useBlurEffectForModal: "对话框使用模糊效果"
@ -613,7 +609,7 @@ create: "创建"
notificationSetting: "通知设置"
notificationSettingDesc: "选择要显示的通知类型。"
useGlobalSetting: "使用全局设置"
useGlobalSettingDesc: "启用时,将使用户通知设置。关闭时,则可以单独设置。"
useGlobalSettingDesc: "启用时,将使用户通知设置。关闭时,则可以单独设置。"
other: "其他"
regenerateLoginToken: "重新生成登录令牌"
regenerateLoginTokenDescription: "重新生成用于登录的内部令牌。通常您不需要这样做。重新生成后,您将在所有设备上登出。"
@ -625,12 +621,12 @@ abuseReports: "举报"
reportAbuse: "举报"
reportAbuseOf: "举报{name}"
fillAbuseReportDescription: "请填写举报的详细原因。如果有对方发的帖子请同时填写URL地址。"
abuseReported: "内容已发送。感谢您提交信息。"
reporter: "报者"
abuseReported: "内容已发送。感谢您的报告。"
reporter: "者"
reporteeOrigin: "举报来源"
reporterOrigin: "举报者来源"
forwardReport: "将该举报信息转发给远程实例"
forwardReportIsAnonymous: "勾选则在远程实例上显示的报者是匿名的系统账号,而不是您的账号。"
forwardReport: "将报告转发给远程实例"
forwardReportIsAnonymous: "在远程实例上显示的报者是匿名的系统账号,而不是您的账号。"
send: "发送"
abuseMarkAsResolved: "处理完毕"
openInNewTab: "在新标签页中打开"
@ -643,16 +639,14 @@ random: "随机"
system: "系统"
switchUi: "切换界面"
desktop: "桌面"
clip: "便签"
clip: "签"
createNew: "新建"
optional: "可选"
createNewClip: "新建便签"
unclip: "移除便签"
confirmToUnclipAlreadyClippedNote: "本帖已包含在便签\"{name}\"里。您想要将本帖从该便签中移除吗?"
createNewClip: "新建书签"
public: "公开"
i18nInfo: "Misskey已经被志愿者们翻译了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。"
i18nInfo: "Misskey已经被志愿者们翻译到了各种语言。如果你也有兴趣可以通过{link}帮助翻译。"
manageAccessTokens: "管理 Access Tokens"
accountInfo: "户信息"
accountInfo: "户信息"
notesCount: "帖子数量"
repliesCount: "回复数量"
renotesCount: "转帖数量"
@ -668,7 +662,7 @@ yes: "是"
no: "否"
driveFilesCount: "网盘的文件数"
driveUsage: "网盘的空间用量"
noCrawle: "要求搜索引擎不索引该用户"
noCrawle: "拒绝搜索引擎的索引"
noCrawleDescription: "要求搜索引擎不要收录(索引)您的用户页面,帖子,页面等。"
lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成“关注者”,任何人都可以看到您的帖子。"
alwaysMarkSensitive: "默认将媒体文件标记为敏感内容"
@ -682,7 +676,7 @@ pageLikesCount: "页面点赞次数"
pageLikedCount: "页面被点赞次数"
contact: "联系人"
useSystemFont: "使用系统默认字体"
clips: "便签"
clips: "签"
experimentalFeatures: "实验性功能"
developer: "开发者"
makeExplorable: "使账号可见。"
@ -747,7 +741,7 @@ userInfo: "用户信息"
unknown: "未知"
onlineStatus: "在线状态"
hideOnlineStatus: "隐藏在线状态"
hideOnlineStatusDescription: "隐藏在线状态后,可能会降低搜索等功能的便利性。"
hideOnlineStatusDescription: "隐藏在线状态后,可能会降低例如搜索等功能的便利性。"
online: "在线"
active: "活动"
offline: "离线"
@ -848,50 +842,6 @@ oneDay: "1天"
oneWeek: "1周"
reflectMayTakeTime: "可能需要一些时间才能体现出效果。"
failedToFetchAccountInformation: "获取账户信息失败"
rateLimitExceeded: "已超過速率限制"
cropImage: "剪裁图像"
cropImageAsk: "是否要裁剪图像?"
file: "文件"
recentNHours: "最近{n}小时"
recentNDays: "最近{n}天"
noEmailServerWarning: "电子邮件服务器未设置。"
thereIsUnresolvedAbuseReportWarning: "有未解决的报告"
recommended: "推荐"
check: "检查"
driveCapOverrideLabel: "變更此用戶的雲端硬碟容量上限"
driveCapOverrideCaption: "设定为 0 以下则会解除此限制。"
requireAdminForView: "需要使用管理员账户登录才能查看。"
isSystemAccount: "该账号由系统自动创建和管理。"
typeToConfirm: "输入 {x} 以确认操作。"
deleteAccount: "删除账户"
document: "文档"
numberOfPageCache: "缓存页数"
numberOfPageCacheDescription: "设置较高的值会更方便用户,但设备的负载和内存使用量会增加。"
logoutConfirm: "是否确认登出?"
lastActiveDate: "最后活跃时间"
statusbar: "状态栏"
pleaseSelect: "请选择"
reverse: "翻转"
colored: "彩色"
refreshInterval: "刷新间隔"
label: "标签"
type: "类型"
speed: "速度"
slow: "慢"
fast: "快"
localOnly: "仅限本地"
remoteOnly: "仅远程"
failedToUpload: "上传失败"
cannotUploadBecauseInappropriate: "因为可能含有不适宜的内容,无法上传。"
cannotUploadBecauseNoFreeSpace: "因为已无可用空间,无法上传。"
beta: "测试"
enableAutoSensitive: "自动 NSFW 识别"
enableAutoSensitiveDescription: "如果可用,请使用机器学习在媒体上自动设置 NSFW 标志。即使关闭此功能,也可能会根据实例自动设置。"
activeEmailValidationDescription: "积极地验证用户的电子邮件地址,判断它是一次性的电子邮件地址,还是可以实际通信的地址。关闭时,则只检查字符串是否正确。"
navbar: "导航栏"
shuffle: "随机"
account: "账户"
move: "移动"
_emailUnavailable:
used: "已经被使用过"
format: "无效的格式"
@ -934,24 +884,6 @@ _plugin:
install: "安装插件"
installWarn: "请不要安装不可信的插件。"
manage: "管理插件..."
_preferencesBackups:
list: "已创建的备份"
saveNew: "另存为"
loadFile: "导入文件"
apply: "应用于本设备"
save: "覆盖存档"
inputName: "请输入备份的名称"
cannotSave: "无法保存"
nameAlreadyExists: "备份名称\"{name}\"已经存在,请指定其他名称。"
applyConfirm: "您是否要将备份\"{name}\"应用到当前设备上?当前设备现有配置将被丢弃。"
saveConfirm: "您确定要覆盖保存 {name} 吗?"
deleteConfirm: "您确定要删除 {name} 吗?"
renameConfirm: "您确定要把“{old}”改为“{new}”吗?"
noBackups: "当前没有备份,“另存为”允许您在服务器上保存当前客户端的配置。"
createdAt: "创建日期:{date} {time}"
updatedAt: "更新日期:{date} {time}"
cannotLoad: "无法加载"
invalidFile: "无效的的文件格式。"
_registry:
scope: "范围"
key: "主要"
@ -1035,8 +967,6 @@ _mfm:
sparkleDescription: "添加发光粒子效果。"
rotate: "旋转"
rotateDescription: "旋转指定的角度。"
plain: "简洁"
plainDescription: "禁用所有内部语法。"
_instanceTicker:
none: "不显示"
remote: "仅远程用户"
@ -1157,6 +1087,7 @@ _sfx:
antenna: "天线接收"
channel: "频道通知"
_ago:
unknown: "未知"
future: "未来"
justNow: "最近"
secondsAgo: "{n}秒前"
@ -1200,7 +1131,6 @@ _2fa:
registerKey: "注册密钥"
step1: "首先,在您的设备上安装验证应用,例如{a}或{b}。"
step2: "然后,扫描屏幕上显示的二维码。"
step2Url: "在桌面应用程序中输入以下URL"
step3: "输入您的应用提供的动态口令以完成设置。"
step4: "从现在开始,任何登录操作都将要求您提供动态口令。"
securityKeyInfo: "您可以设置使用支持FIDO2的硬件安全密钥、设备上的指纹或PIN来保护您的登录过程。"
@ -1266,13 +1196,10 @@ _widgets:
trends: "趋势"
clock: "时钟"
rss: "RSS阅读器"
rssTicker: "RSS Ticker"
activity: "活动"
photos: "照片"
digitalClock: "数字时钟"
unixClock: "UNIX时钟"
federation: "联邦宇宙"
instanceCloud: "实例云"
postForm: "投稿窗口"
slideshow: "幻灯片展示"
button: "按钮"
@ -1688,7 +1615,6 @@ _notification:
yourFollowRequestAccepted: "您的关注请求已通过"
youWereInvitedToGroup: "您有新的群组邀请"
pollEnded: "问卷调查结果已生成。"
emptyPushNotificationMessage: "推送通知已更新"
_types:
all: "全部"
follow: "关注中"
@ -1703,27 +1629,19 @@ _notification:
followRequestAccepted: "关注请求已通过"
groupInvited: "加入群组邀请"
app: "关联应用的通知"
_actions:
followBack: "回关"
reply: "回复"
renote: "转发"
_deck:
alwaysShowMainColumn: "总是显示主列"
columnAlign: "列对齐"
columnMargin: "列间距"
columnHeaderHeight: "列标题高度"
addColumn: "添加列"
configureColumn: "列设置"
swapLeft: "向左移动"
swapRight: "向右移动"
swapUp: "向上移动"
swapDown: "向下移动"
stackLeft: "向左折叠"
popRight: "向右弹出"
profile: "配置文件"
newProfile: "新建配置文件"
deleteProfile: "删除配置文件"
introduction: "将各列进行组合以创建您自己的界面!"
introduction2: "您可以随时通过屏幕右侧的 + 来添加列"
widgetsIntroduction: "从列菜单中,选择“小工具编辑”来添加小工具"
profile: "个人资料"
_columns:
main: "主列"
widgets: "小工具"

View File

@ -1,7 +1,7 @@
---
_lang_: "繁體中文"
headlineMisskey: "貼文連繫網路"
introMisskey: "歡迎! Misskey是一個開放原始碼且去中心化的社群網路。\n透過「貼文」分享周邊新鮮事並告訴其他人您的想法📡\n透過「反應」功能,對大家的貼文表達情感!👍\n一起來探索這個新的世界吧🚀"
introMisskey: "歡迎! Misskey是一個開放原始碼且去中心化的社群網路。\n透過「貼文」分享周邊新鮮事並告訴其他人您的想法📡\n透過「情感」功能,對大家的貼文表達情感!👍\n一起來探索這個新的世界吧🚀"
monthAndDay: "{month}月 {day}日"
search: "搜尋"
notifications: "通知"
@ -52,7 +52,6 @@ searchUser: "搜尋使用者"
reply: "回覆"
loadMore: "載入更多"
showMore: "載入更多"
showLess: "關閉"
youGotNewFollower: "您有新的追隨者"
receiveFollowRequest: "您有新的追隨請求"
followRequestAccepted: "追隨請求已接受"
@ -136,14 +135,13 @@ emojiName: "表情符號名稱"
emojiUrl: "表情符號URL"
addEmoji: "加入表情符號"
settingGuide: "推薦設定"
cacheRemoteFiles: "快取遠端檔案"
cacheRemoteFiles: "緩存非遠程檔案"
cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外連接數據。"
flagAsBot: "此使用者是機器人"
flagAsBotDescription: "如果本帳戶是由程式控制請啟用此選項。啟用後會作為標示幫助其他開發者防止機器人之間產生無限互動的行為並會調整Misskey內部系統將本帳戶識別為機器人"
flagAsCat: "此使用者是貓"
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示"
flagShowTimelineReplies: "在時間軸上顯示貼文的回覆"
flagShowTimelineRepliesDescription: "啟用時,時間線除了顯示用戶的貼文以外,還會顯示用戶對其他貼文的回覆。"
autoAcceptFollowed: "自動追隨中使用者的追隨請求"
addAccount: "添加帳戶"
loginFailed: "登入失敗"
@ -155,8 +153,8 @@ removeWallpaper: "移除桌布"
searchWith: "搜尋: {q}"
youHaveNoLists: "你沒有任何清單"
followConfirm: "你真的要追隨{name}嗎?"
proxyAccount: "代理帳"
proxyAccountDescription: "代理帳戶是在某些情況下充當其他伺服器用戶的帳戶。例如,當使用者將一個來自其他伺服器的帳戶放在列表中時,由於沒有其他使用者追蹤該帳戶,該指令不會傳送到該伺服器上,因此會由代理帳戶追蹤。"
proxyAccount: "代理帳"
proxyAccountDescription: "代理帳號是在某些情況下充當其他伺服器用戶的帳號。例如,當使用者將一個來自其他伺服器的帳號放在列表中時,由於沒有其他使用者關注該帳號,該指令不會傳送到該伺服器上,因此會由代理帳戶關注。"
host: "主機"
selectUser: "選取使用者"
recipient: "收件人"
@ -199,12 +197,11 @@ noUsers: "沒有任何使用者"
editProfile: "編輯個人檔案"
noteDeleteConfirm: "確定刪除此貼文嗎?"
pinLimitExceeded: "不能置頂更多貼文了"
intro: "Misskey 部署完成!請建立管理員帳戶。"
intro: "Misskey 部署完成!請建立管理員帳號!"
done: "完成"
processing: "處理中"
preview: "預覽"
default: "預設"
defaultValueIs: "預設值:{value}"
noCustomEmojis: "沒有自訂的表情符號"
noJobs: "沒有任務"
federating: "整合搜索中"
@ -239,8 +236,6 @@ resetAreYouSure: "確定要重設嗎?"
saved: "已儲存"
messaging: "傳送訊息"
upload: "上傳"
keepOriginalUploading: "保留原圖"
keepOriginalUploadingDescription: "上傳圖片時保留原始圖片。關閉時瀏覽器會在上傳時生成一張用於web發布的圖片。"
fromDrive: "從雲端空間"
fromUrl: "從URL"
uploadFromUrl: "從網址上傳"
@ -362,7 +357,7 @@ enableServiceworker: "開啟 ServiceWorker"
antennaUsersDescription: "指定用換行符分隔的用戶名"
caseSensitive: "區分大小寫"
withReplies: "包含回覆"
connectedTo: "您的帳戶已連接到以下社交帳戶"
connectedTo: "您的帳號已連接到以下社交帳號"
notesAndReplies: "貼文與回覆"
withFiles: "附件"
silence: "禁言"
@ -383,7 +378,6 @@ administrator: "管理員"
token: "權杖"
twoStepAuthentication: "兩階段驗證"
moderator: "板主"
moderation: "言論調節"
nUsersMentioned: "提到了{n}"
securityKey: "安全金鑰"
securityKeyName: "金鑰名稱"
@ -451,7 +445,6 @@ uiLanguage: "介面語言"
groupInvited: "您有新的群組邀請"
aboutX: "關於{x}"
useOsNativeEmojis: "使用OS原生表情符號"
disableDrawer: "不顯示下拉式選單"
youHaveNoGroups: "找不到群組"
joinOrCreateGroup: "請加入現有群組,或創建新群組。"
noHistory: "沒有歷史紀錄"
@ -475,7 +468,7 @@ weekOverWeekChanges: "與上週相比"
dayOverDayChanges: "與前一日相比"
appearance: "外觀"
clientSettings: "用戶端設定"
accountSettings: "帳設定"
accountSettings: "帳設定"
promotion: "推廣"
promote: "推廣"
numberOfDays: "有效天數"
@ -484,7 +477,6 @@ showFeaturedNotesInTimeline: "在時間軸上顯示熱門推薦"
objectStorage: "Object Storage (物件儲存)"
useObjectStorage: "使用Object Storage"
objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理请指定其URL例如S3“https://<bucket>.s3.amazonaws.com”GCS“https://storage.googleapis.com/<bucket>”"
objectStorageBucket: "儲存空間Bucket"
objectStorageBucketDesc: "請指定您正在使用的服務的存儲桶名稱。 "
objectStoragePrefix: "前綴"
@ -492,11 +484,8 @@ objectStoragePrefixDesc: "它存儲在此前綴目錄下。"
objectStorageEndpoint: "端點Endpoint"
objectStorageEndpointDesc: "如要使用AWS S3請留空。否則請依照你使用的服務商的說明書進行設定以'<host>'或 '<host>:<port>'的形式設定端點Endpoint。"
objectStorageRegion: "地域Region"
objectStorageRegionDesc: "指定一個分區例如“xx-east-1”。 如果您使用的服務沒有分區的概念請留空或填寫“us-east-1”。"
objectStorageUseSSL: "使用SSL"
objectStorageUseSSLDesc: "如果不使用https進行API連接請關閉"
objectStorageUseProxy: "使用網路代理"
objectStorageUseProxyDesc: "如果不使用代理進行API連接請關閉"
objectStorageSetPublicRead: "上傳時設定為\"public-read\""
serverLogs: "伺服器日誌"
deleteAll: "刪除所有記錄"
@ -524,7 +513,6 @@ sort: "排序"
ascendingOrder: "昇冪"
descendingOrder: "降冪"
scratchpad: "暫存記憶體"
scratchpadDescription: "AiScript控制台為AiScript提供了實驗環境。您可以在此編寫、執行和確認代碼與Misskey互動的结果。"
output: "輸出"
script: "腳本"
disablePagesScript: "停用頁面的AiScript腳本"
@ -535,9 +523,6 @@ removeAllFollowing: "解除所有追蹤"
removeAllFollowingDescription: "解除{host}所有的追蹤。在實例不再存在時執行。"
userSuspended: "該使用者已被停用"
userSilenced: "該用戶已被禁言。"
yourAccountSuspendedTitle: "帳戶已被凍結"
yourAccountSuspendedDescription: "由於違反了伺服器的服務條款或其他原因,該帳戶已被凍結。 您可以與管理員連繫以了解更多訊息。 請不要創建一個新的帳戶。"
menu: "選單"
divider: "分割線"
addItem: "新增項目"
relays: "中繼"
@ -561,8 +546,7 @@ enterFileDescription: "輸入標題 "
author: "作者"
leaveConfirm: "有未保存的更改。要放棄嗎?"
manage: "管理"
plugins: "外掛"
preferencesBackups: "備份設定檔"
plugins: "插件"
deck: "多欄模式"
undeck: "取消多欄模式"
useBlurEffectForModal: "在模態框使用模糊效果"
@ -572,12 +556,10 @@ height: "高度"
large: "大"
medium: "中"
small: "小"
generateAccessToken: "發行存取權杖"
permission: "權限"
enableAll: "啟用全部"
disableAll: "停用全部"
tokenRequested: "允許存取帳戶"
pluginTokenRequestedDescription: "此外掛將擁有在此設定的權限。"
tokenRequested: "允許存取帳號"
notificationType: "通知形式"
edit: "編輯"
useStarForReactionFallback: "以★代替未知的表情符號"
@ -592,13 +574,8 @@ smtpPort: "埠"
smtpUser: "使用者名稱"
smtpPass: "密碼"
emptyToDisableSmtpAuth: "留空使用者名稱和密碼以關閉SMTP驗證。"
smtpSecure: "在 SMTP 連接中使用隱式 SSL/TLS"
smtpSecureInfo: "使用STARTTLS時關閉。"
testEmail: "測試郵件發送"
wordMute: "被靜音的文字"
regexpError: "正規表達式錯誤"
regexpErrorDescription: "{tab} 靜音文字的第 {line} 行的正規表達式有錯誤:"
instanceMute: "實例的靜音"
wordMute: "靜音文字"
userSaysSomething: "{name}說了什麼"
makeActive: "啟用"
display: "檢視"
@ -629,8 +606,6 @@ abuseReported: "回報已送出。感謝您的報告。"
reporter: "檢舉者"
reporteeOrigin: "檢舉來源"
reporterOrigin: "檢舉者來源"
forwardReport: "將報告轉送給遠端實例"
forwardReportIsAnonymous: "在遠端實例上看不到您的資訊,顯示的報告者是匿名的系统帳戶。"
send: "發送"
abuseMarkAsResolved: "處理完畢"
openInNewTab: "在新分頁中開啟"
@ -647,8 +622,6 @@ clip: "摘錄"
createNew: "新建"
optional: "可選"
createNewClip: "建立新摘錄"
unclip: "解除摘錄"
confirmToUnclipAlreadyClippedNote: "此貼文已包含在摘錄「{name}」中。 你想將貼文從這個摘錄中排除嗎?"
public: "公開"
i18nInfo: "Misskey已經被志願者們翻譯成各種語言版本如果想要幫忙的話可以進入{link}幫助翻譯。"
manageAccessTokens: "管理存取權杖"
@ -694,7 +667,6 @@ center: "置中"
wide: "寬"
narrow: "窄"
reloadToApplySetting: "設定將會在頁面重新載入之後生效。要現在就重載頁面嗎?"
needReloadToApply: "必須重新載入才會生效。"
showTitlebar: "顯示標題列"
clearCache: "清除快取資料"
onlineUsersCount: "{n}人正在線上"
@ -729,7 +701,7 @@ receiveAnnouncementFromInstance: "接收由本實例發出的電郵通知"
emailNotification: "郵件通知"
publish: "發佈"
inChannelSearch: "頻道内搜尋"
useReactionPickerForContextMenu: "點擊右鍵開啟應工具欄"
useReactionPickerForContextMenu: "點擊右鍵開啟應工具欄"
typingUsers: "{users}輸入中..."
jumpToSpecifiedDate: "跳轉到特定日期"
showingPastTimeline: "顯示過往的時間線"
@ -755,7 +727,6 @@ notRecommended: "不推薦"
botProtection: "Bot防護"
instanceBlocking: "已封鎖的實例"
selectAccount: "選擇帳戶"
switchAccount: "切換帳戶"
enabled: "已啟用"
disabled: "已停用"
quickAction: "快捷操作"
@ -782,136 +753,32 @@ emailNotConfiguredWarning: "沒有設定電子郵件地址"
ratio: "%"
previewNoteText: "預覽文本"
customCss: "自定義 CSS"
customCssWarn: "這個設定必須由具備相關知識的人員操作,不當的設定可能导致客戶端無法正常使用。"
global: "公開"
squareAvatars: "頭像以方形顯示"
sent: "發送"
received: "收取"
searchResult: "搜尋結果"
hashtags: "#tag"
troubleshooting: "故障排除"
useBlurEffect: "在 UI 上使用模糊效果"
learnMore: "更多資訊"
misskeyUpdated: "Misskey 更新完成!"
whatIsNew: "顯示更新資訊"
translate: "翻譯"
translatedFrom: "從 {x} 翻譯"
accountDeletionInProgress: "正在刪除帳戶"
usernameInfo: "在伺服器上您的帳戶是唯一的識別名稱。您可以使用字母 (a ~ z, A ~ Z)、數字 (0 ~ 9) 和下底線 (_)。之後帳戶名是不能更改的。"
aiChanMode: "小藍模式"
keepCw: "保持CW"
pubSub: "Pub/Sub 帳戶"
lastCommunication: "最近的通信"
resolved: "已解決"
unresolved: "未解決"
breakFollow: "移除追蹤者"
itsOn: "已開啟"
itsOff: "已關閉"
emailRequiredForSignup: "註冊帳戶需要電子郵件地址"
unread: "未讀"
filter: "篩選"
controlPanel: "控制台"
manageAccounts: "管理帳戶"
makeReactionsPublic: "將反應設為公開"
makeReactionsPublicDescription: "將您做過的反應設為公開可見。"
classic: "經典"
muteThread: "將貼文串設為靜音"
unmuteThread: "將貼文串的靜音解除"
ffVisibility: "連接的公開範圍"
ffVisibilityDescription: "您可以設定您的關注/關注者資訊的公開範圍"
continueThread: "查看更多貼文"
deleteAccountConfirm: "將要刪除帳戶。是否確定?"
incorrectPassword: "密碼錯誤。"
voteConfirm: "確定投給「{choice}」?"
hide: "隱藏"
leaveGroup: "離開群組"
leaveGroupConfirm: "確定離開「{name}」?"
useDrawerReactionPickerForMobile: "在移動設備上使用抽屜顯示"
welcomeBackWithName: "歡迎回來,{name}"
clickToFinishEmailVerification: "點擊 [{ok}] 完成電子郵件地址認證。"
overridedDeviceKind: "裝置類型"
smartphone: "智慧型手機"
tablet: "平板"
auto: "自動"
themeColor: "主題顏色"
size: "大小"
numberOfColumn: "列數"
searchByGoogle: "搜尋"
instanceDefaultLightTheme: "實例預設的淺色主題"
instanceDefaultDarkTheme: "實例預設的深色主題"
instanceDefaultThemeDescription: "輸入物件形式的主题代碼"
mutePeriod: "靜音的期限"
indefinitely: "無期限"
tenMinutes: "10分鐘"
oneHour: "1小時"
oneDay: "1天"
oneWeek: "1週"
reflectMayTakeTime: "可能需要一些時間才會出現效果。"
failedToFetchAccountInformation: "取得帳戶資訊失敗"
rateLimitExceeded: "已超過速率限制"
cropImage: "圖片裁剪"
cropImageAsk: "要剪裁圖片嗎?"
file: "檔案"
recentNHours: "過去{n}小時"
recentNDays: "過去{n}天"
noEmailServerWarning: "尚未設定電子郵件伺服器。"
thereIsUnresolvedAbuseReportWarning: "有尚未處理的檢舉。"
recommended: "推薦"
check: "檢查"
driveCapOverrideLabel: "更改這個使用者的雲端硬碟容量上限"
driveCapOverrideCaption: "如果指定0以下的值就會被取消。"
requireAdminForView: "必須以管理者帳號登入才可以檢視。"
isSystemAccount: "由系統自動建立與管理的帳號。"
typeToConfirm: "要執行這項操作,請輸入 {x} "
deleteAccount: "刪除帳號"
document: "文件"
numberOfPageCache: "快取頁面數"
numberOfPageCacheDescription: "增加數量會提高便利性,但也會增加負荷與記憶體使用量。"
logoutConfirm: "確定要登出嗎?"
lastActiveDate: "上次使用日期及時間"
statusbar: "狀態列"
pleaseSelect: "請選擇"
reverse: "翻轉"
colored: "彩色"
refreshInterval: "更新間隔"
label: "標籤"
type: "類型"
speed: "速度"
slow: "慢"
fast: "快"
localOnly: "僅限本地"
remoteOnly: "僅限遠端"
failedToUpload: "上傳失敗"
cannotUploadBecauseInappropriate: "由於判定可能包含不適當的內容,因此無法上傳。"
cannotUploadBecauseNoFreeSpace: "由於雲端硬碟沒有可用空間,因此無法上傳。"
beta: "Beta"
enableAutoSensitive: "自動NSFW判定"
enableAutoSensitiveDescription: "如果可用,請利用機器學習在媒體上自動設置 NSFW 旗標。 即使關閉此功能,依實例而定也可能會自動設置。"
activeEmailValidationDescription: "積極地驗證用戶的電子郵件地址,判斷它是否為免洗地址,或者它是否可以通信。 若關閉,則只會檢查字元是否正確。"
navbar: "導覽列"
shuffle: "隨機"
account: "帳戶"
move: "移動 "
_emailUnavailable:
used: "已經在使用中"
format: "格式無效"
disposable: "不是永久可用的地址"
mx: "郵件伺服器不正確"
smtp: "郵件伺服器沒有應答"
_ffVisibility:
public: "發佈"
followers: "只有關注你的用戶能看到"
private: "私密"
_signup:
almostThere: "即將完成"
emailAddressInfo: "請輸入您所使用的電子郵件地址。電子郵件地址不會被公開。"
emailSent: "已將確認郵件發送至您輸入的電子郵件地址 ({email})。請開啟電子郵件中的連結以完成帳戶創建。"
_accountDelete:
accountDelete: "刪除帳戶"
mayTakeTime: "刪除帳戶的處理負荷較大,如果帳戶產生的內容數量上傳的檔案數量較多的話,就需要花费一段時間才能完成。"
sendEmail: "帳戶删除完成後,將向註冊地電子郵件地址發送通知。"
requestAccountDelete: "刪除帳戶請求"
started: "已開始刪除作業。"
inProgress: "正在刪除"
_ad:
back: "返回"
@ -933,25 +800,7 @@ _email:
_plugin:
install: "安裝外掛組件"
installWarn: "請不要安裝來源不明的外掛組件。"
manage: "管理外掛"
_preferencesBackups:
list: "已備份的設定檔"
saveNew: "另存新檔"
loadFile: "讀取檔案"
apply: "套用在此裝置"
save: "覆蓋存檔"
inputName: "輸入備份檔名稱"
cannotSave: "無法儲存"
nameAlreadyExists: "備份檔名稱「{name}」已經存在。請指定不同的名稱。"
applyConfirm: "將備份檔「{name}」套用在現在的裝置嗎?現在的裝置設定將會消失。"
saveConfirm: "要覆蓋存檔{name}嗎?"
deleteConfirm: "要刪除{name}嗎?"
renameConfirm: "要將「{old}」變更為「{new}」嗎?"
noBackups: "沒有備份檔。您可以用「另存新檔」將現在的客戶端設定儲存在伺服器上。"
createdAt: "建立日期:{date} {time}"
updatedAt: "更新日期:{date} {time}"
cannotLoad: "無法讀取"
invalidFile: "檔案形式錯誤。"
manage: "管理插件"
_registry:
scope: "範圍"
key: "機碼"
@ -984,21 +833,14 @@ _mfm:
link: "鏈接"
linkDescription: "您可以將特定範圍的文章與 URL 相關聯。 "
bold: "粗體"
boldDescription: "可以將文字顯示为粗體来強調。"
small: "縮小"
smallDescription: "可以使內容文字變小、變淡。"
center: "置中"
centerDescription: "可以將內容置中顯示。"
inlineCode: "程式碼(内嵌)"
inlineCodeDescription: "在行內用高亮度顯示,例如程式碼語法。"
blockCode: "程式碼(區塊)"
blockCodeDescription: "在區塊中用高亮度顯示,例如複數行的程式碼語法。"
inlineMath: "數學公式(內嵌)"
inlineMathDescription: "顯示內嵌的KaTex數學公式。"
blockMath: "數學公式(方塊)"
blockMathDescription: "以區塊顯示複數行的KaTex數學式。"
quote: "引用"
quoteDescription: "可以用來表示引用的内容。"
emoji: "自訂表情符號"
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。 "
search: "搜尋"
@ -1007,36 +849,22 @@ _mfm:
flipDescription: "將內容上下或左右翻轉。"
jelly: "動畫(果凍)"
jellyDescription: "顯示果凍一樣的動畫效果。"
tada: "動畫(鏘~)"
tadaDescription: "顯示「鏘~!」這種感覺的動畫效果。"
jump: "動畫(跳動)"
jumpDescription: "顯示跳動的動畫效果。"
bounce: "動畫(反彈)"
bounceDescription: "顯示有彈性的動畫效果。"
shake: "動畫(搖晃)"
shakeDescription: "顯示顫抖的動畫效果。"
twitch: "動畫(顫抖)"
twitchDescription: "顯示強烈顫抖的動畫效果。"
spin: "動畫(旋轉)"
spinDescription: "顯示旋轉的動畫效果。"
x2: "大"
x2Description: "放大顯示內容。"
x3: "較大"
x3Description: "放大顯示內容。"
x4: "最大"
x4Description: "將顯示內容放至最大。"
blur: "模糊"
blurDescription: "產生模糊效果。将游標放在上面即可將内容顯示出來。"
font: "字型"
fontDescription: "您可以設定顯示內容的字型"
rainbow: "彩虹"
rainbowDescription: "用彩虹色來顯示內容。"
sparkle: "閃閃發光"
sparkleDescription: "添加閃閃發光的粒子效果。"
rotate: "旋轉"
rotateDescription: "以指定的角度旋轉。"
plain: "簡潔"
plainDescription: "停用全部的內部語法。"
_instanceTicker:
none: "隱藏"
remote: "向遠端使用者顯示"
@ -1056,24 +884,11 @@ _channel:
usersCount: "有{n}人參與"
notesCount: "有{n}個貼文"
_menuDisplay:
sideFull: "側向"
sideIcon: "側向(圖示)"
top: "頂部"
hide: "隱藏"
_wordMute:
muteWords: "加入靜音文字"
muteWordsDescription: "用空格分隔指定AND用換行分隔指定OR。"
muteWordsDescription2: "將關鍵字用斜線括起來表示正規表達式。"
softDescription: "隱藏時間軸中指定條件的貼文。"
hardDescription: "具有指定條件的貼文將不添加到時間軸。 即使您更改條件,未被添加的貼文也會被排除在外。"
soft: "軟性靜音"
hard: "硬性靜音"
mutedNotes: "已靜音的貼文"
_instanceMute:
instanceMuteDescription: "包括對被靜音實例上的用戶的回覆,被設定的實例上所有貼文及轉發都會被靜音。"
instanceMuteDescription2: "設定時以換行進行分隔"
title: "被設定的實例,貼文將被隱藏。"
heading: "將實例靜音"
_theme:
explore: "取得佈景主題"
install: "安裝佈景主題"
@ -1087,12 +902,10 @@ _theme:
invalid: "主題格式錯誤"
make: "製作主題"
base: "基於"
addConstant: "添加常數"
constant: "常數"
defaultValue: "預設值"
color: "顏色"
refProp: "查看屬性 "
refConst: "查看常數"
key: "按鍵"
func: "函数"
funcKind: "功能類型"
@ -1101,9 +914,6 @@ _theme:
alpha: "透明度"
darken: "暗度"
lighten: "亮度"
inputConstantName: "請輸入常數的名稱"
importInfo: "您可以在此貼上主題代碼,將其匯入編輯器中"
deleteConstantConfirm: "確定要删除常數{const}嗎?"
keys:
accent: "重點色彩"
bg: "背景"
@ -1123,7 +933,6 @@ _theme:
mention: "提到"
mentionMe: "提到了我"
renote: "轉發貼文"
modalBg: "對話框背景"
divider: "分割線"
scrollbarHandle: "捲動條"
scrollbarHandleHover: "捲動條 (漂浮)"
@ -1157,6 +966,7 @@ _sfx:
antenna: "天線接收"
channel: "頻道通知"
_ago:
unknown: "未知"
future: "未來"
justNow: "剛剛"
secondsAgo: "{n}秒前"
@ -1200,13 +1010,9 @@ _2fa:
registerKey: "註冊鍵"
step1: "首先,在您的設備上安裝二步驗證程式,例如{a}或{b}。"
step2: "然後掃描螢幕上的QR code。"
step2Url: "在桌面版應用中請輸入以下的URL"
step3: "輸入您的App提供的權杖以完成設定。"
step4: "從現在開始,任何登入操作都將要求您提供權杖。"
securityKeyInfo: "您可以設定使用支援FIDO2的硬體安全鎖、終端設備的指纹認證或者PIN碼來登入。"
_permissions:
"read:account": "查看我的帳戶資訊"
"write:account": "更改我的帳戶資訊"
"read:account": "查看帳戶信息"
"write:account": "更改帳戶信息"
"read:blocks": "已封鎖用戶名單"
"write:blocks": "編輯已封鎖用戶名單"
"read:drive": "存取雲端硬碟"
@ -1233,10 +1039,6 @@ _permissions:
"write:user-groups": "編輯使用者群組"
"read:channels": "已查看的頻道"
"write:channels": "編輯頻道"
"read:gallery": "瀏覽圖庫"
"write:gallery": "操作圖庫"
"read:gallery-likes": "讀取喜歡的圖片"
"write:gallery-likes": "操作喜歡的圖片"
_auth:
shareAccess: "要授權「“{name}”」存取您的帳戶嗎?"
shareAccessAsk: "您確定要授權這個應用程式使用您的帳戶嗎?"
@ -1266,21 +1068,16 @@ _widgets:
trends: "發燒貼文"
clock: "時鐘"
rss: "RSS閱讀器"
rssTicker: "RSS跑馬燈"
activity: "動態"
photos: "照片"
digitalClock: "電子時鐘"
unixClock: "UNIX時間"
federation: "聯邦宇宙"
instanceCloud: "實例雲"
postForm: "發佈窗口"
slideshow: "幻燈片"
button: "按鈕"
onlineUsers: "線上的用戶"
jobQueue: "佇列"
serverMetric: "服務器指標 "
aiscript: "AiScript控制台"
aichan: "小藍"
_cw:
hide: "隱藏"
show: "瀏覽更多"
@ -1306,15 +1103,12 @@ _poll:
closed: "已結束"
remainingDays: "{d}天{h}小時後結束"
remainingHours: "{h}小時{m}分後結束"
remainingMinutes: "{m}分{s}秒後結束"
remainingSeconds: "{s}秒後截止"
_visibility:
public: "公開"
publicDescription: "發布給所有用戶 "
home: "首頁"
homeDescription: "僅發送至首頁的時間軸"
followers: "追隨者"
followersDescription: "僅發送至關注者"
specified: "指定使用者"
specifiedDescription: "僅發送至指定使用者"
localOnly: "僅限本地"
@ -1337,7 +1131,6 @@ _profile:
youCanIncludeHashtags: "你也可以在「關於我」中加上 #tag"
metadata: "進階資訊"
metadataEdit: "編輯進階資訊"
metadataDescription: "可以在個人資料中以表格形式顯示其他資訊。"
metadataLabel: "標籤"
metadataContent: "内容"
changeAvatar: "更換大頭貼"
@ -1348,8 +1141,6 @@ _exportOrImport:
muteList: "靜音"
blockingList: "封鎖"
userLists: "清單"
excludeMutingUsers: "排除被靜音的用戶"
excludeInactiveUsers: "排除不活躍帳戶"
_charts:
federation: "站台聯邦"
apRequest: "請求"
@ -1627,7 +1418,6 @@ _pages:
_seedRandomPick:
arg1: "種子"
arg2: "清單"
DRPWPM: "从機率列表中隨機選擇(每個用户每天)"
_DRPWPM:
arg1: "字串串列"
pick: "從清單中選取"
@ -1658,8 +1448,6 @@ _pages:
_for:
arg1: "重複次數"
arg2: "處理"
typeError: "槽參數{slot}需要傳入“{expect}”,但是實際傳入為“{actual}”!"
thereIsEmptySlot: "參數{slot}是空的!"
types:
string: "字串"
number: "数值"
@ -1682,13 +1470,10 @@ _notification:
youRenoted: "{name} 轉發了你的貼文"
youGotPoll: "{name}已投票"
youGotMessagingMessageFromUser: "{name}發送給您的訊息"
youGotMessagingMessageFromGroup: "{name}發送給您的訊息"
youWereFollowed: "您有新的追隨者"
youReceivedFollowRequest: "您有新的追隨請求"
yourFollowRequestAccepted: "您的追隨請求已通過"
youWereInvitedToGroup: "您有新的群組邀請"
pollEnded: "問卷調查已產生結果"
emptyPushNotificationMessage: "推送通知已更新"
_types:
all: "全部 "
follow: "追隨中"
@ -1698,20 +1483,16 @@ _notification:
quote: "引用"
reaction: "反應"
pollVote: "統計已投票數"
pollEnded: "問卷調查結束"
receiveFollowRequest: "已收到追隨請求"
followRequestAccepted: "追隨請求已接受"
groupInvited: "加入社群邀請"
app: "應用程式通知"
_actions:
followBack: "回關"
reply: "回覆"
renote: "轉發"
_deck:
alwaysShowMainColumn: "總是顯示主欄"
columnAlign: "對齊欄位"
columnMargin: "列之間的邊距"
columnHeaderHeight: "欄位標題高度"
addColumn: "新增欄位"
configureColumn: "欄位的設定"
swapLeft: "向左移動"
swapRight: "向右移動"
swapUp: "往上移動"
@ -1719,11 +1500,6 @@ _deck:
stackLeft: "向左折疊"
popRight: "向右彈出"
profile: "個人檔案"
newProfile: "新建個人檔案"
deleteProfile: "刪除個人檔案"
introduction: "組合欄位來製作屬於自己的介面吧!"
introduction2: "您可以隨時透過按畫面右方的 + 來添加欄位。"
widgetsIntroduction: "請從欄位的選單中,選擇「編輯小工具」來添加小工具"
_columns:
main: "主列"
widgets: "小工具"

View File

@ -1,6 +1,6 @@
{
"name": "misskey",
"version": "12.119.0+birb4",
"version": "12.110.1+birb3-2",
"codename": "indigo",
"repository": {
"type": "git",
@ -19,10 +19,10 @@
"watch": "npm run dev",
"dev": "node ./scripts/dev.js",
"lint": "node ./scripts/lint.js",
"cy:open": "cypress open --browser --e2e --config-file=cypress.config.ts",
"cy:open": "cypress open",
"cy:run": "cypress run",
"e2e": "start-server-and-test start:test http://localhost:61812 cy:run",
"mocha": "cd packages/backend && cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" npx mocha",
"mocha": "cd packages/backend && cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" npx mocha",
"test": "npm run mocha",
"format": "gulp format",
"clean": "node ./scripts/clean.js",
@ -30,6 +30,8 @@
"cleanall": "npm run clean-all"
},
"dependencies": {
"@types/gulp": "4.0.9",
"@types/gulp-rename": "2.0.1",
"execa": "5.1.1",
"gulp": "4.0.2",
"gulp-cssnano": "2.1.3",
@ -39,12 +41,10 @@
"js-yaml": "4.1.0"
},
"devDependencies": {
"@types/gulp": "4.0.9",
"@types/gulp-rename": "2.0.1",
"@typescript-eslint/parser": "5.36.2",
"@typescript-eslint/parser": "5.18.0",
"cross-env": "7.0.3",
"cypress": "10.7.0",
"cypress": "9.5.3",
"start-server-and-test": "1.14.0",
"typescript": "4.8.3"
"typescript": "4.6.3"
}
}

View File

@ -6,27 +6,4 @@ module.exports = {
extends: [
'../shared/.eslintrc.js',
],
rules: {
'import/order': ['warn', {
'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'],
'pathGroups': [
{
'pattern': '@/**',
'group': 'external',
'position': 'after'
}
],
}],
'no-restricted-globals': [
'error',
{
'name': '__dirname',
'message': 'Not in ESModule. Use `import.meta.url` instead.'
},
{
'name': '__filename',
'message': 'Not in ESModule. Use `import.meta.url` instead.'
}
]
},
};

View File

@ -5,6 +5,6 @@
"loader=./test/loader.js"
],
"slow": 1000,
"timeout": 30000,
"timeout": 35000,
"exit": true
}

View File

@ -2,9 +2,5 @@
"typescript.tsdk": "node_modules\\typescript\\lib",
"path-intellisense.mappings": {
"@": "${workspaceRoot}/packages/backend/src/"
},
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true
}
}

View File

@ -1,5 +0,0 @@
Font Awesome Icons
-------------------------
Ⓒ Font Awesome
CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 991 B

View File

@ -1,89 +0,0 @@
export class foreignKeyReports1651224615271 {
name = 'foreignKeyReports1651224615271'
async up(queryRunner) {
await Promise.all([
queryRunner.query(`ALTER INDEX "public"."IDX_seoignmeoprigmkpodgrjmkpormg" RENAME TO "IDX_c8cc87bd0f2f4487d17c651fbf"`),
queryRunner.query(`DROP INDEX "public"."IDX_note_on_channelId_and_id_desc"`),
// remove unnecessary default null, see also down
queryRunner.query(`ALTER TABLE "user" ALTER COLUMN "followersUri" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "access_token" ALTER COLUMN "session" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "access_token" ALTER COLUMN "appId" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "access_token" ALTER COLUMN "name" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "access_token" ALTER COLUMN "description" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "access_token" ALTER COLUMN "iconUrl" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "softwareName" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "softwareVersion" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "name" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "description" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "maintainerName" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "maintainerEmail" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "iconUrl" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "faviconUrl" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "instance" ALTER COLUMN "themeColor" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "clip" ALTER COLUMN "description" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "note" ALTER COLUMN "channelId" DROP DEFAULT`),
queryRunner.query(`ALTER TABLE "abuse_user_report" ALTER COLUMN "comment" DROP DEFAULT`),
queryRunner.query(`CREATE INDEX "IDX_315c779174fe8247ab324f036e" ON "drive_file" ("isLink")`),
queryRunner.query(`CREATE INDEX "IDX_f22169eb10657bded6d875ac8f" ON "note" ("channelId")`),
//queryRunner.query(`CREATE INDEX "IDX_a9021cc2e1feb5f72d3db6e9f5" ON "abuse_user_report" ("targetUserId")`),
//queryRunner.query(`DELETE FROM "abuse_user_report" WHERE "targetUserId" NOT IN (SELECT "id" FROM "user")`).then(() => {
// queryRunner.query(`ALTER TABLE "abuse_user_report" ADD CONSTRAINT "FK_a9021cc2e1feb5f72d3db6e9f5f" FOREIGN KEY ("targetUserId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
//}),
queryRunner.query(`ALTER TABLE "poll" ADD CONSTRAINT "UQ_da851e06d0dfe2ef397d8b1bf1b" UNIQUE ("noteId")`),
queryRunner.query(`ALTER TABLE "user_keypair" ADD CONSTRAINT "UQ_f4853eb41ab722fe05f81cedeb6" UNIQUE ("userId")`),
queryRunner.query(`ALTER TABLE "user_profile" ADD CONSTRAINT "UQ_51cb79b5555effaf7d69ba1cff9" UNIQUE ("userId")`),
queryRunner.query(`ALTER TABLE "user_publickey" ADD CONSTRAINT "UQ_10c146e4b39b443ede016f6736d" UNIQUE ("userId")`),
queryRunner.query(`ALTER TABLE "promo_note" ADD CONSTRAINT "UQ_e263909ca4fe5d57f8d4230dd5c" UNIQUE ("noteId")`),
queryRunner.query(`ALTER TABLE "page" RENAME CONSTRAINT "FK_3126dd7c502c9e4d7597ef7ef10" TO "FK_a9ca79ad939bf06066b81c9d3aa"`),
queryRunner.query(`ALTER TYPE "public"."user_profile_mutingnotificationtypes_enum" ADD VALUE 'pollEnded' AFTER 'pollVote'`),
]);
}
async down(queryRunner) {
await Promise.all([
// There is no ALTER TYPE REMOVE VALUE query, so the reverse operation is a bit more complex
queryRunner.query(`UPDATE "user_profile" SET "mutingNotificationTypes" = array_remove("mutingNotificationTypes", 'pollEnded')`)
.then(() =>
queryRunner.query(`CREATE TYPE "public"."user_profile_mutingnotificationtypes_enum_old" AS ENUM('follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited', 'app')`)
).then(() =>
queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "mutingNotificationTypes" DROP DEFAULT`)
).then(() =>
queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "mutingNotificationTypes" TYPE "public"."user_profile_mutingnotificationtypes_enum_old"[] USING "mutingNotificationTypes"::"text"::"public"."user_profile_mutingnotificationtypes_enum_old"[]`)
).then(() =>
queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "mutingNotificationTypes" SET DEFAULT '{}'`)
).then(() =>
queryRunner.query(`DROP TYPE "public"."user_profile_mutingnotificationtypes_enum"`)
).then(() =>
queryRunner.query(`ALTER TYPE "public"."user_profile_mutingnotificationtypes_enum_old" RENAME TO "user_profile_mutingnotificationtypes_enum"`)
),
queryRunner.query(`ALTER TABLE "page" RENAME CONSTRAINT "FK_a9ca79ad939bf06066b81c9d3aa" TO "FK_3126dd7c502c9e4d7597ef7ef10"`),
queryRunner.query(`ALTER TABLE "promo_note" DROP CONSTRAINT "UQ_e263909ca4fe5d57f8d4230dd5c"`),
queryRunner.query(`ALTER TABLE "user_publickey" DROP CONSTRAINT "UQ_10c146e4b39b443ede016f6736d"`),
queryRunner.query(`ALTER TABLE "user_profile" DROP CONSTRAINT "UQ_51cb79b5555effaf7d69ba1cff9"`),
queryRunner.query(`ALTER TABLE "user_keypair" DROP CONSTRAINT "UQ_f4853eb41ab722fe05f81cedeb6"`),
queryRunner.query(`ALTER TABLE "poll" DROP CONSTRAINT "UQ_da851e06d0dfe2ef397d8b1bf1b"`),
queryRunner.query(`ALTER TABLE "abuse_user_report" ALTER COLUMN "comment" SET DEFAULT '{}'`),
queryRunner.query(`ALTER TABLE "abuse_user_report" DROP CONSTRAINT "FK_a9021cc2e1feb5f72d3db6e9f5f"`),
queryRunner.query(`DROP INDEX "public"."IDX_a9021cc2e1feb5f72d3db6e9f5"`),
queryRunner.query(`DROP INDEX "public"."IDX_f22169eb10657bded6d875ac8f"`),
queryRunner.query(`DROP INDEX "public"."IDX_315c779174fe8247ab324f036e"`),
/* DEFAULT's are not set again because if the column can be NULL, then DEFAULT NULL is not necessary.
see also https://github.com/typeorm/typeorm/issues/7579#issuecomment-835423615 */
queryRunner.query(`CREATE INDEX "IDX_note_on_channelId_and_id_desc" ON "note" ("id", "channelId") `),
queryRunner.query(`ALTER INDEX "public"."IDX_c8cc87bd0f2f4487d17c651fbf" RENAME TO "IDX_seoignmeoprigmkpodgrjmkpormg"`),
]);
}
}

View File

@ -1,36 +0,0 @@
import tinycolor from 'tinycolor2';
export class uniformThemecolor1652859567549 {
name = 'uniformThemecolor1652859567549'
async up(queryRunner) {
const formatColor = (color) => {
let tc = new tinycolor(color);
if (tc.isValid()) {
return tc.toHexString();
} else {
return null;
}
};
await queryRunner.query('SELECT "id", "themeColor" FROM "instance" WHERE "themeColor" IS NOT NULL')
.then(instances => Promise.all(instances.map(instance => {
// update theme color to uniform format, e.g. #00ff00
// invalid theme colors get set to null
return queryRunner.query('UPDATE "instance" SET "themeColor" = $1 WHERE "id" = $2', [formatColor(instance.themeColor), instance.id]);
})));
// also fix own theme color
await queryRunner.query('SELECT "themeColor" FROM "meta" WHERE "themeColor" IS NOT NULL LIMIT 1')
.then(metas => {
if (metas.length > 0) {
return queryRunner.query('UPDATE "meta" SET "themeColor" = $1', [formatColor(metas[0].themeColor)]);
}
});
}
async down(queryRunner) {
// The original representation is not stored, so migrating back is not possible.
// The new format also works in older versions so this is not a problem.
}
}

View File

@ -1,27 +0,0 @@
import { genRsaKeyPair } from '../built/misc/gen-key-pair.js';
export class channelActors1653237040103 {
name = 'channelActors1653237040103'
async up(queryRunner) {
await queryRunner.query(`CREATE TABLE "channel_keypair" ("channelId" character varying(32) NOT NULL, "publicKey" character varying(4096) NOT NULL, "privateKey" character varying(4096) NOT NULL, CONSTRAINT "REL_7be19c4d7a902ff9fd664ca9ae" UNIQUE ("channelId"), CONSTRAINT "PK_f771c2d8b4078218f64014c7cb" PRIMARY KEY ("channelId"))`);
await queryRunner.query(`ALTER TABLE "channel" ADD COLUMN "emojis" character varying(128) array NOT NULL DEFAULT '{}'::varchar[]`);
await queryRunner.query(`ALTER TABLE "channel" ADD COLUMN "tags" character varying(128) array NOT NULL DEFAULT '{}'::varchar[]`);
const channels = await queryRunner.query(`SELECT id FROM "channel"`);
for (let i = 0; i < channels.length; i++) {
let channelId = channels[i].id;
console.log(channelId);
const keypair = await genRsaKeyPair(4096);
await queryRunner.query(`INSERT INTO "channel_keypair" ("publicKey", "privateKey", "channelId") VALUES ('${keypair.publicKey}', '${keypair.privateKey}', '${channelId}')`)
}
}
async down(queryRunner) {
await queryRunner.query(`DROP TABLE "channel_keypair"`);
await queryRunner.query(`ALTER TABLE "channel" DROP COLUMN "emojis"`);
await queryRunner.query(`ALTER TABLE "channel" DROP COLUMN "tags"`);
}
}

View File

@ -1,13 +0,0 @@
export class driveCapacityOverrideMb1655813815729 {
name = 'driveCapacityOverrideMb1655813815729'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "user" ADD "driveCapacityOverrideMb" integer`);
await queryRunner.query(`COMMENT ON COLUMN "user"."driveCapacityOverrideMb" IS 'Overrides user drive capacity limit'`);
}
async down(queryRunner) {
await queryRunner.query(`COMMENT ON COLUMN "user"."driveCapacityOverrideMb" IS 'Overrides user drive capacity limit'`);
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "driveCapacityOverrideMb"`);
}
}

View File

@ -1,17 +0,0 @@
export class userIp1655918165614 {
name = 'userIp1655918165614'
async up(queryRunner) {
await queryRunner.query(`CREATE TABLE "user_ip" ("id" SERIAL NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "userId" character varying(32) NOT NULL, "ip" character varying(128) NOT NULL, CONSTRAINT "PK_2c44ddfbf7c0464d028dcef325e" PRIMARY KEY ("id"))`);
await queryRunner.query(`CREATE INDEX "IDX_7f7f1c66f48e9a8e18a33bc515" ON "user_ip" ("userId") `);
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_361b500e06721013c124b7b6c5" ON "user_ip" ("userId", "ip") `);
await queryRunner.query(`ALTER TABLE "user_ip" ADD CONSTRAINT "FK_7f7f1c66f48e9a8e18a33bc5150" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_ip" DROP CONSTRAINT "FK_7f7f1c66f48e9a8e18a33bc5150"`);
await queryRunner.query(`DROP INDEX "public"."IDX_361b500e06721013c124b7b6c5"`);
await queryRunner.query(`DROP INDEX "public"."IDX_7f7f1c66f48e9a8e18a33bc515"`);
await queryRunner.query(`DROP TABLE "user_ip"`);
}
}

View File

@ -1,13 +0,0 @@
export class fileIp1656122560740 {
name = 'fileIp1656122560740'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "drive_file" ADD "requestHeaders" jsonb DEFAULT '{}'`);
await queryRunner.query(`ALTER TABLE "drive_file" ADD "requestIp" character varying(128)`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "requestIp"`);
await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "requestHeaders"`);
}
}

View File

@ -1,13 +0,0 @@
export class ip21656328812281 {
name = 'ip21656328812281'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_ip" DROP CONSTRAINT "FK_7f7f1c66f48e9a8e18a33bc5150"`);
await queryRunner.query(`ALTER TABLE "meta" ADD "enableIpLogging" boolean NOT NULL DEFAULT false`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableIpLogging"`);
await queryRunner.query(`ALTER TABLE "user_ip" ADD CONSTRAINT "FK_7f7f1c66f48e9a8e18a33bc5150" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
}

View File

@ -1,11 +0,0 @@
export class userModerationNote1656772790599 {
name = 'userModerationNote1656772790599'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "moderationNote" character varying(8192) NOT NULL DEFAULT ''`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "moderationNote"`);
}
}

View File

@ -1,11 +0,0 @@
export class activeEmailValidation1657346559800 {
name = 'activeEmailValidation1657346559800'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" ADD "enableActiveEmailValidation" boolean NOT NULL DEFAULT true`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableActiveEmailValidation"`);
}
}

View File

@ -6,7 +6,7 @@
"build": "tsc -p tsconfig.json || echo done. && tsc-alias -p tsconfig.json",
"watch": "node watch.mjs",
"lint": "eslint --quiet \"src/**/*.ts\"",
"mocha": "cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
"mocha": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
"test": "npm run mocha"
},
"resolutions": {
@ -14,122 +14,22 @@
"lodash": "^4.17.21"
},
"dependencies": {
"@bull-board/koa": "4.2.2",
"@discordapp/twemoji": "14.0.2",
"@discordapp/twemoji": "13.1.1",
"@elastic/elasticsearch": "7.11.0",
"@koa/cors": "3.1.0",
"@koa/multer": "3.0.0",
"@koa/router": "9.0.1",
"@peertube/http-signature": "1.7.0",
"@sinonjs/fake-timers": "9.1.2",
"@sinonjs/fake-timers": "9.1.1",
"@syuilo/aiscript": "0.11.1",
"ajv": "8.11.0",
"archiver": "5.3.1",
"autobind-decorator": "2.4.0",
"autwh": "0.1.0",
"aws-sdk": "2.1213.0",
"bcryptjs": "2.4.3",
"blurhash": "1.1.5",
"bull": "4.9.0",
"cacheable-lookup": "6.1.0",
"cbor": "8.1.0",
"chalk": "5.0.1",
"chalk-template": "0.4.0",
"chokidar": "3.5.3",
"cli-highlight": "2.1.11",
"color-convert": "2.0.1",
"content-disposition": "0.5.4",
"date-fns": "2.29.2",
"deep-email-validator": "0.1.21",
"escape-regexp": "0.0.1",
"feed": "4.2.2",
"file-type": "17.1.6",
"fluent-ffmpeg": "2.1.2",
"got": "12.3.1",
"hpagent": "0.1.2",
"ioredis": "4.28.5",
"ip-cidr": "3.0.10",
"is-svg": "4.3.2",
"js-yaml": "4.1.0",
"jsdom": "20.0.0",
"json5": "2.2.1",
"json5-loader": "4.0.1",
"jsonld": "6.0.0",
"jsrsasign": "10.5.27",
"koa": "2.13.4",
"koa-bodyparser": "4.3.0",
"koa-favicon": "2.1.0",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.1",
"koa-mount": "4.0.0",
"koa-send": "5.0.1",
"koa-slow": "2.1.0",
"koa-views": "7.0.2",
"mfm-js": "0.23.0",
"mime-types": "2.1.35",
"misskey-js": "0.0.14",
"mocha": "10.0.0",
"ms": "3.0.0-canary.1",
"multer": "1.4.4",
"nested-property": "4.0.0",
"node-fetch": "3.2.10",
"nodemailer": "6.7.8",
"os-utils": "0.0.14",
"parse5": "7.1.1",
"pg": "8.8.0",
"private-ip": "2.3.4",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
"pug": "3.0.2",
"punycode": "2.1.1",
"pureimage": "0.3.14",
"qrcode": "1.5.1",
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.17.7",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"rename": "1.0.4",
"rndstr": "1.0.0",
"rss-parser": "3.12.0",
"s-age": "1.1.2",
"sanitize-html": "2.7.1",
"semver": "7.3.7",
"sharp": "0.29.3",
"speakeasy": "2.0.0",
"strict-event-emitter-types": "2.0.0",
"stringz": "2.1.0",
"summaly": "2.7.0",
"syslog-pro": "1.0.0",
"systeminformation": "5.12.6",
"tinycolor2": "1.4.2",
"tmp": "0.2.1",
"ts-loader": "9.3.1",
"ts-node": "10.9.1",
"tsc-alias": "1.7.0",
"tsconfig-paths": "4.1.0",
"twemoji-parser": "14.0.0",
"typeorm": "0.3.9",
"ulid": "2.3.0",
"unzipper": "0.10.11",
"uuid": "9.0.0",
"web-push": "3.5.0",
"websocket": "1.0.34",
"ws": "8.8.1",
"xev": "3.0.2"
},
"devDependencies": {
"@redocly/openapi-core": "1.0.0-beta.108",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.15.9",
"@types/bull": "3.15.8",
"@types/cbor": "6.0.0",
"@types/escape-regexp": "0.0.1",
"@types/fluent-ffmpeg": "2.1.20",
"@types/is-url": "1.2.30",
"@types/js-yaml": "4.0.5",
"@types/jsdom": "20.0.0",
"@types/jsdom": "16.2.14",
"@types/jsonld": "1.5.6",
"@types/jsrsasign": "10.5.2",
"@types/koa": "2.13.5",
"@types/koa": "2.13.4",
"@types/koa-bodyparser": "4.3.7",
"@types/koa-cors": "0.0.2",
"@types/koa-favicon": "2.0.21",
@ -140,21 +40,22 @@
"@types/koa__cors": "3.1.1",
"@types/koa__multer": "2.0.4",
"@types/koa__router": "8.0.11",
"@types/mocha": "9.1.1",
"@types/node": "18.7.16",
"@types/mocha": "9.1.0",
"@types/node": "17.0.23",
"@types/node-fetch": "3.0.3",
"@types/nodemailer": "6.4.5",
"@types/nodemailer": "6.4.4",
"@types/oauth": "0.9.1",
"@types/parse5": "6.0.3",
"@types/portscanner": "2.1.1",
"@types/pug": "2.0.6",
"@types/punycode": "2.1.0",
"@types/qrcode": "1.5.0",
"@types/qrcode": "1.4.2",
"@types/random-seed": "0.3.3",
"@types/ratelimiter": "3.4.3",
"@types/redis": "4.0.11",
"@types/rename": "1.0.4",
"@types/sanitize-html": "2.6.2",
"@types/semver": "7.3.12",
"@types/sharp": "0.30.5",
"@types/sharp": "0.30.1",
"@types/sinonjs__fake-timers": "8.1.2",
"@types/speakeasy": "2.0.7",
"@types/tinycolor2": "1.4.3",
@ -163,12 +64,116 @@
"@types/web-push": "3.3.2",
"@types/websocket": "1.0.5",
"@types/ws": "8.5.3",
"@typescript-eslint/eslint-plugin": "5.36.2",
"@typescript-eslint/parser": "5.36.2",
"cross-env": "7.0.3",
"eslint": "8.23.0",
"@typescript-eslint/eslint-plugin": "5.18.0",
"@typescript-eslint/parser": "5.18.0",
"@bull-board/koa": "3.10.3",
"abort-controller": "3.0.0",
"ajv": "8.11.0",
"archiver": "5.3.0",
"autobind-decorator": "2.4.0",
"autwh": "0.1.0",
"aws-sdk": "2.1111.0",
"bcryptjs": "2.4.3",
"blurhash": "1.1.5",
"broadcast-channel": "4.10.0",
"bull": "4.8.1",
"cacheable-lookup": "6.0.4",
"cafy": "15.2.1",
"cbor": "8.1.0",
"chalk": "5.0.1",
"chalk-template": "0.4.0",
"cli-highlight": "2.1.11",
"color-convert": "2.0.1",
"content-disposition": "0.5.4",
"date-fns": "2.28.0",
"deep-email-validator": "0.1.21",
"escape-regexp": "0.0.1",
"eslint": "8.13.0",
"eslint-plugin-import": "2.26.0",
"execa": "6.1.0",
"typescript": "4.8.3"
"feed": "4.2.2",
"file-type": "17.1.1",
"fluent-ffmpeg": "2.1.2",
"got": "12.0.3",
"hpagent": "0.1.2",
"http-signature": "1.3.6",
"ip-cidr": "3.0.4",
"is-svg": "4.3.2",
"js-yaml": "4.1.0",
"jsdom": "19.0.0",
"json5": "2.2.1",
"json5-loader": "4.0.1",
"jsonld": "5.2.0",
"jsrsasign": "8.0.20",
"koa": "2.13.4",
"koa-bodyparser": "4.3.0",
"koa-favicon": "2.1.0",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.1",
"koa-mount": "4.0.0",
"koa-send": "5.0.1",
"koa-slow": "2.1.0",
"koa-views": "7.0.2",
"mfm-js": "0.21.0",
"mime-types": "2.1.35",
"misskey-js": "0.0.14",
"mocha": "9.2.2",
"ms": "3.0.0-canary.1",
"multer": "1.4.4",
"nested-property": "4.0.0",
"node-fetch": "3.2.3",
"nodemailer": "6.7.3",
"os-utils": "0.0.14",
"parse5": "6.0.1",
"pg": "8.7.3",
"portscanner": "2.2.0",
"private-ip": "2.3.3",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
"pug": "3.0.2",
"punycode": "2.1.1",
"pureimage": "0.3.8",
"qrcode": "1.5.0",
"random-seed": "0.3.0",
"ratelimiter": "3.4.1",
"re2": "1.17.4",
"redis": "3.1.2",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"rename": "1.0.4",
"require-all": "3.0.0",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sanitize-html": "2.7.0",
"semver": "7.3.6",
"sharp": "0.30.3",
"speakeasy": "2.0.0",
"strict-event-emitter-types": "2.0.0",
"stringz": "2.1.0",
"style-loader": "3.3.1",
"summaly": "2.5.0",
"syslog-pro": "1.0.0",
"systeminformation": "5.11.9",
"tinycolor2": "1.4.2",
"tmp": "0.2.1",
"ts-loader": "9.2.8",
"ts-node": "10.7.0",
"tsc-alias": "1.4.1",
"tsconfig-paths": "3.14.1",
"twemoji-parser": "14.0.0",
"typeorm": "0.3.5",
"typescript": "4.6.3",
"ulid": "2.3.0",
"unzipper": "0.10.11",
"uuid": "8.3.2",
"web-push": "3.4.5",
"websocket": "1.0.34",
"ws": "8.5.0",
"xev": "2.0.1"
},
"devDependencies": {
"@redocly/openapi-core": "1.0.0-beta.93",
"@types/fluent-ffmpeg": "2.1.20",
"cross-env": "7.0.3",
"execa": "6.1.0"
}
}

View File

@ -1,5 +1,5 @@
declare module '@peertube/http-signature' {
import { IncomingMessage, ClientRequest } from 'node:http';
declare module 'http-signature' {
import { IncomingMessage, ClientRequest } from 'http';
interface ISignature {
keyId: string;

View File

@ -0,0 +1,800 @@
// Attention: Partial Type Definition
declare module 'jsrsasign' {
//// HELPER TYPES
/**
* Attention: The value might be changed by the function.
*/
type Mutable<T> = T;
/**
* Deprecated: The function might be deleted in future release.
*/
type Deprecated<T> = T;
//// COMMON TYPES
/**
* byte number
*/
type ByteNumber = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255;
/**
* hexadecimal string /[0-9A-F]/
*/
type HexString = string;
/**
* binary string /[01]/
*/
type BinString = string;
/**
* base64 string /[A-Za-z0-9+/]=+/
*/
type Base64String = string;
/**
* base64 URL encoded string /[A-Za-z0-9_-]/
*/
type Base64URLString = string;
/**
* time value (ex. "151231235959Z")
*/
type TimeValue = string;
/**
* OID string (ex. '1.2.3.4.567')
*/
type OID = string;
/**
* OID name
*/
type OIDName = string;
/**
* PEM formatted string
*/
type PEM = string;
//// ASN1 TYPES
class ASN1Object {
public isModified: boolean;
public hTLV: ASN1TLV;
public hT: ASN1T;
public hL: ASN1L;
public hV: ASN1V;
public getLengthHexFromValue(): HexString;
public getEncodedHex(): ASN1TLV;
public getValueHex(): ASN1V;
public getFreshValueHex(): ASN1V;
}
class DERAbstractStructured extends ASN1Object {
constructor(params?: Partial<Record<'array', ASN1Object[]>>);
public setByASN1ObjectArray(asn1ObjectArray: ASN1Object[]): void;
public appendASN1Object(asn1Object: ASN1Object): void;
}
class DERSequence extends DERAbstractStructured {
constructor(params?: Partial<Record<'array', ASN1Object[]>>);
public getFreshValueHex(): ASN1V;
}
//// ASN1HEX TYPES
/**
* ASN.1 DER encoded data (hexadecimal string)
*/
type ASN1S = HexString;
/**
* index of something
*/
type Idx<T extends { [idx: string]: unknown } | { [idx: number]: unknown }> = ASN1S extends { [idx: string]: unknown } ? string : ASN1S extends { [idx: number]: unknown } ? number : never;
/**
* byte length of something
*/
type ByteLength<T extends { length: unknown }> = T['length'];
/**
* ASN.1 L(length) (hexadecimal string)
*/
type ASN1L = HexString;
/**
* ASN.1 T(tag) (hexadecimal string)
*/
type ASN1T = HexString;
/**
* ASN.1 V(value) (hexadecimal string)
*/
type ASN1V = HexString;
/**
* ASN.1 TLV (hexadecimal string)
*/
type ASN1TLV = HexString;
/**
* ASN.1 object string
*/
type ASN1ObjectString = string;
/**
* nth
*/
type Nth = number;
/**
* ASN.1 DER encoded OID value (hexadecimal string)
*/
type ASN1OIDV = HexString;
class ASN1HEX {
public static getLblen(s: ASN1S, idx: Idx<ASN1S>): ByteLength<ASN1L>;
public static getL(s: ASN1S, idx: Idx<ASN1S>): ASN1L;
public static getVblen(s: ASN1S, idx: Idx<ASN1S>): ByteLength<ASN1V>;
public static getVidx(s: ASN1S, idx: Idx<ASN1S>): Idx<ASN1V>;
public static getV(s: ASN1S, idx: Idx<ASN1S>): ASN1V;
public static getTLV(s: ASN1S, idx: Idx<ASN1S>): ASN1TLV;
public static getNextSiblingIdx(s: ASN1S, idx: Idx<ASN1S>): Idx<ASN1ObjectString>;
public static getChildIdx(h: ASN1S, pos: Idx<ASN1S>): Idx<ASN1ObjectString>[];
public static getNthChildIdx(h: ASN1S, idx: Idx<ASN1S>, nth: Nth): Idx<ASN1ObjectString>;
public static getIdxbyList(h: ASN1S, currentIndex: Idx<ASN1ObjectString>, nthList: Mutable<Nth[]>, checkingTag?: string): Idx<Mutable<Nth[]>>;
public static getTLVbyList(h: ASN1S, currentIndex: Idx<ASN1ObjectString>, nthList: Mutable<Nth[]>, checkingTag?: string): ASN1TLV;
// eslint:disable-next-line:bool-param-default
public static getVbyList(h: ASN1S, currentIndex: Idx<ASN1ObjectString>, nthList: Mutable<Nth[]>, checkingTag?: string, removeUnusedbits?: boolean): ASN1V;
public static hextooidstr(hex: ASN1OIDV): OID;
public static dump(hexOrObj: ASN1S | ASN1Object, flags?: Record<string, unknown>, idx?: Idx<ASN1S>, indent?: string): string;
public static isASN1HEX(hex: string): hex is HexString;
public static oidname(oidDotOrHex: OID | ASN1OIDV): OIDName;
}
//// BIG INTEGER TYPES (PARTIAL)
class BigInteger {
constructor(a: null);
constructor(a: number, b: SecureRandom);
constructor(a: number, b: number, c: SecureRandom);
constructor(a: unknown);
constructor(a: string, b: number);
public am(i: number, x: number, w: number, j: number, c: number, n: number): number;
public DB: number;
public DM: number;
public DV: number;
public FV: number;
public F1: number;
public F2: number;
protected copyTo(r: Mutable<BigInteger>): void;
protected fromInt(x: number): void;
protected fromString(s: string, b: number): void;
protected clamp(): void;
public toString(b: number): string;
public negate(): BigInteger;
public abs(): BigInteger;
public compareTo(a: BigInteger): number;
public bitLength(): number;
protected dlShiftTo(n: number, r: Mutable<BigInteger>): void;
protected drShiftTo(n: number, r: Mutable<BigInteger>): void;
protected lShiftTo(n: number, r: Mutable<BigInteger>): void;
protected rShiftTo(n: number, r: Mutable<BigInteger>): void;
protected subTo(a: BigInteger, r: Mutable<BigInteger>): void;
protected multiplyTo(a: BigInteger, r: Mutable<BigInteger>): void;
protected squareTo(r: Mutable<BigInteger>): void;
protected divRemTo(m: BigInteger, q: Mutable<BigInteger>, r: Mutable<BigInteger>): void;
public mod(a: BigInteger): BigInteger;
protected invDigit(): number;
protected isEven(): boolean;
protected exp(e: number, z: Classic | Montgomery): BigInteger;
public modPowInt(e: number, m: BigInteger): BigInteger;
public static ZERO: BigInteger;
public static ONE: BigInteger;
}
class Classic {
constructor(m: BigInteger);
public convert(x: BigInteger): BigInteger;
public revert(x: BigInteger): BigInteger;
public reduce(x: Mutable<BigInteger>): void;
public mulTo(x: BigInteger, r: Mutable<BigInteger>): void;
public sqrTo(x: BigInteger, y: BigInteger, r: Mutable<BigInteger>): void;
}
class Montgomery {
constructor(m: BigInteger);
public convert(x: BigInteger): BigInteger;
public revert(x: BigInteger): BigInteger;
public reduce(x: Mutable<BigInteger>): void;
public mulTo(x: BigInteger, r: Mutable<BigInteger>): void;
public sqrTo(x: BigInteger, y: BigInteger, r: Mutable<BigInteger>): void;
}
//// KEYUTIL TYPES
type DecryptAES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type Decrypt3DES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type DecryptDES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type EncryptAES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type Encrypt3DES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type EncryptDES = (dataHex: HexString, keyHex: HexString, ivHex: HexString) => HexString;
type AlgList = {
'AES-256-CBC': { 'proc': DecryptAES; 'eproc': EncryptAES; keylen: 32; ivlen: 16; };
'AES-192-CBC': { 'proc': DecryptAES; 'eproc': EncryptAES; keylen: 24; ivlen: 16; };
'AES-128-CBC': { 'proc': DecryptAES; 'eproc': EncryptAES; keylen: 16; ivlen: 16; };
'DES-EDE3-CBC': { 'proc': Decrypt3DES; 'eproc': Encrypt3DES; keylen: 24; ivlen: 8; };
'DES-CBC': { 'proc': DecryptDES; 'eproc': EncryptDES; keylen: 8; ivlen: 8; };
};
type AlgName = keyof AlgList;
type PEMHeadAlgName = 'RSA' | 'EC' | 'DSA';
type GetKeyRSAParam = RSAKey | {
n: BigInteger;
e: number;
} | Record<'n' | 'e', HexString> | Record<'n' | 'e', HexString> & Record<'d' | 'p' | 'q' | 'dp' | 'dq' | 'co', HexString | null> | {
n: BigInteger;
e: number;
d: BigInteger;
} | {
kty: 'RSA';
} & Record<'n' | 'e', Base64URLString> | {
kty: 'RSA';
} & Record<'n' | 'e' | 'd' | 'p' | 'q' | 'dp' | 'dq' | 'qi', Base64URLString> | {
kty: 'RSA';
} & Record<'n' | 'e' | 'd', Base64URLString>;
type GetKeyECDSAParam = KJUR.crypto.ECDSA | {
curve: KJUR.crypto.CurveName;
xy: HexString;
} | {
curve: KJUR.crypto.CurveName;
d: HexString;
} | {
kty: 'EC';
crv: KJUR.crypto.CurveName;
x: Base64URLString;
y: Base64URLString;
} | {
kty: 'EC';
crv: KJUR.crypto.CurveName;
x: Base64URLString;
y: Base64URLString;
d: Base64URLString;
};
type GetKeyDSAParam = KJUR.crypto.DSA | Record<'p' | 'q' | 'g', BigInteger> & Record<'y', BigInteger | null> | Record<'p' | 'q' | 'g' | 'x', BigInteger> & Record<'y', BigInteger | null>;
type GetKeyParam = GetKeyRSAParam | GetKeyECDSAParam | GetKeyDSAParam | string;
class KEYUTIL {
public version: '1.0.0';
public parsePKCS5PEM(sPKCS5PEM: PEM): Partial<Record<'type' | 's', string>> & (Record<'cipher' | 'ivsalt', string> | Record<'cipher' | 'ivsalt', undefined>);
public getKeyAndUnusedIvByPasscodeAndIvsalt(algName: AlgName, passcode: string, ivsaltHex: HexString): Record<'keyhex' | 'ivhex', HexString>;
public decryptKeyB64(privateKeyB64: Base64String, sharedKeyAlgName: AlgName, sharedKeyHex: HexString, ivsaltHex: HexString): Base64String;
public getDecryptedKeyHex(sEncryptedPEM: PEM, passcode: string): HexString;
public getEncryptedPKCS5PEMFromPrvKeyHex(pemHeadAlg: PEMHeadAlgName, hPrvKey: string, passcode: string, sharedKeyAlgName?: AlgName | null, ivsaltHex?: HexString | null): PEM;
public parseHexOfEncryptedPKCS8(sHEX: HexString): {
ciphertext: ASN1V;
encryptionSchemeAlg: 'TripleDES';
encryptionSchemeIV: ASN1V;
pbkdf2Salt: ASN1V;
pbkdf2Iter: number;
};
public getPBKDF2KeyHexFromParam(info: ReturnType<this['parseHexOfEncryptedPKCS8']>, passcode: string): HexString;
private _getPlainPKCS8HexFromEncryptedPKCS8PEM(pkcs8PEM: PEM, passcode: string): HexString;
public getKeyFromEncryptedPKCS8PEM(prvKeyHex: HexString): ReturnType<this['getKeyFromPlainPrivatePKCS8Hex']>;
public parsePlainPrivatePKCS8Hex(pkcs8PrvHex: HexString): {
algparam: ASN1V | null;
algoid: ASN1V;
keyidx: Idx<ASN1V>;
};
public getKeyFromPlainPrivatePKCS8PEM(prvKeyHex: HexString): ReturnType<this['getKeyFromPlainPrivatePKCS8Hex']>;
public getKeyFromPlainPrivatePKCS8Hex(prvKeyHex: HexString): RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA;
private _getKeyFromPublicPKCS8Hex(h: HexString): RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA;
public parsePublicRawRSAKeyHex(pubRawRSAHex: HexString): Record<'n' | 'e', ASN1V>;
public parsePublicPKCS8Hex(pkcs8PubHex: HexString): {
algparam: ASN1V | Record<'p' | 'q' | 'g', ASN1V> | null;
algoid: ASN1V;
key: ASN1V;
};
public static getKey(param: GetKeyRSAParam): RSAKey;
public static getKey(param: GetKeyECDSAParam): KJUR.crypto.ECDSA;
public static getKey(param: GetKeyDSAParam): KJUR.crypto.DSA;
public static getKey(param: string, passcode?: string, hextype?: string): RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA;
public static generateKeypair(alg: 'RSA', keylen: number): Record<'prvKeyObj' | 'pubKeyObj', RSAKey>;
public static generateKeypair(alg: 'EC', curve: KJUR.crypto.CurveName): Record<'prvKeyObj' | 'pubKeyObj', KJUR.crypto.ECDSA>;
public static getPEM(keyObjOrHex: RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA, formatType?: 'PKCS1PRV' | 'PKCS5PRV' | 'PKCS8PRV', passwd?: string, encAlg?: 'DES-CBC' | 'DES-EDE3-CBC' | 'AES-128-CBC' | 'AES-192-CBC' | 'AES-256-CBC', hexType?: string, ivsaltHex?: HexString): object; // To Do
public static getKeyFromCSRPEM(csrPEM: PEM): RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA;
public static getKeyFromCSRHex(csrHex: HexString): RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA;
public static parseCSRHex(csrHex: HexString): Record<'p8pubkeyhex', ASN1TLV>;
public static getJWKFromKey(keyObj: RSAKey): {
kty: 'RSA';
} & Record<'n' | 'e' | 'd' | 'p' | 'q' | 'dp' | 'dq' | 'qi', Base64URLString> | {
kty: 'RSA';
} & Record<'n' | 'e', Base64URLString>;
public static getJWKFromKey(keyObj: KJUR.crypto.ECDSA): {
kty: 'EC';
crv: KJUR.crypto.CurveName;
x: Base64URLString;
y: Base64URLString;
d: Base64URLString;
} | {
kty: 'EC';
crv: KJUR.crypto.CurveName;
x: Base64URLString;
y: Base64URLString;
};
}
//// KJUR NAMESPACE (PARTIAL)
namespace KJUR {
namespace crypto {
type CurveName = 'secp128r1' | 'secp160k1' | 'secp160r1' | 'secp192k1' | 'secp192r1' | 'secp224r1' | 'secp256k1' | 'secp256r1' | 'secp384r1' | 'secp521r1';
class DSA {
public p: BigInteger | null;
public q: BigInteger | null;
public g: BigInteger | null;
public y: BigInteger | null;
public x: BigInteger | null;
public type: 'DSA';
public isPrivate: boolean;
public isPublic: boolean;
public setPrivate(p: BigInteger, q: BigInteger, g: BigInteger, y: BigInteger | null, x: BigInteger): void;
public setPrivateHex(hP: HexString, hQ: HexString, hG: HexString, hY: HexString | null, hX: HexString): void;
public setPublic(p: BigInteger, q: BigInteger, g: BigInteger, y: BigInteger): void;
public setPublicHex(hP: HexString, hQ: HexString, hG: HexString, hY: HexString): void;
public signWithMessageHash(sHashHex: HexString): HexString;
public verifyWithMessageHash(sHashHex: HexString, hSigVal: HexString): boolean;
public parseASN1Signature(hSigVal: HexString): [BigInteger, BigInteger];
public readPKCS5PrvKeyHex(h: HexString): void;
public readPKCS8PrvKeyHex(h: HexString): void;
public readPKCS8PubKeyHex(h: HexString): void;
public readCertPubKeyHex(h: HexString, nthPKI: number): void;
}
class ECDSA {
constructor(params?: {
curve?: CurveName;
prv?: HexString;
pub?: HexString;
});
public p: BigInteger | null;
public q: BigInteger | null;
public g: BigInteger | null;
public y: BigInteger | null;
public x: BigInteger | null;
public type: 'EC';
public isPrivate: boolean;
public isPublic: boolean;
public getBigRandom(limit: BigInteger): BigInteger;
public setNamedCurve(curveName: CurveName): void;
public setPrivateKeyHex(prvKeyHex: HexString): void;
public setPublicKeyHex(pubKeyHex: HexString): void;
public getPublicKeyXYHex(): Record<'x' | 'y', HexString>;
public getShortNISTPCurveName(): 'P-256' | 'P-384' | null;
public generateKeyPairHex(): Record<'ecprvhex' | 'ecpubhex', HexString>;
public signWithMessageHash(hashHex: HexString): HexString;
public signHex(hashHex: HexString, privHex: HexString): HexString;
public verifyWithMessageHash(sHashHex: HexString, hSigVal: HexString): boolean;
public parseASN1Signature(hSigVal: HexString): [BigInteger, BigInteger];
public readPKCS5PrvKeyHex(h: HexString): void;
public readPKCS8PrvKeyHex(h: HexString): void;
public readPKCS8PubKeyHex(h: HexString): void;
public readCertPubKeyHex(h: HexString, nthPKI: number): void;
public static parseSigHex(sigHex: HexString): Record<'r' | 's', BigInteger>;
public static parseSigHexInHexRS(sigHex: HexString): Record<'r' | 's', ASN1V>;
public static asn1SigToConcatSig(asn1Sig: HexString): HexString;
public static concatSigToASN1Sig(concatSig: HexString): ASN1TLV;
public static hexRSSigToASN1Sig(hR: HexString, hS: HexString): ASN1TLV;
public static biRSSigToASN1Sig(biR: BigInteger, biS: BigInteger): ASN1TLV;
public static getName(s: CurveName | HexString): 'secp256r1' | 'secp256k1' | 'secp384r1' | null;
}
class Signature {
constructor(params?: ({
alg: string;
prov?: string;
} | {}) & ({
psssaltlen: number;
} | {}) & ({
prvkeypem: PEM;
prvkeypas?: never;
} | {}));
private _setAlgNames(): void;
private _zeroPaddingOfSignature(hex: HexString, bitLength: number): HexString;
public setAlgAndProvider(alg: string, prov: string): void;
public init(key: GetKeyParam, pass?: string): void;
public updateString(str: string): void;
public updateHex(hex: HexString): void;
public sign(): HexString;
public signString(str: string): HexString;
public signHex(hex: HexString): HexString;
public verify(hSigVal: string): boolean | 0;
}
}
}
//// RSAKEY TYPES
class RSAKey {
public n: BigInteger | null;
public e: number;
public d: BigInteger | null;
public p: BigInteger | null;
public q: BigInteger | null;
public dmp1: BigInteger | null;
public dmq1: BigInteger | null;
public coeff: BigInteger | null;
public type: 'RSA';
public isPrivate?: boolean;
public isPublic?: boolean;
//// RSA PUBLIC
protected doPublic(x: BigInteger): BigInteger;
public setPublic(N: BigInteger, E: number): void;
public setPublic(N: HexString, E: HexString): void;
public encrypt(text: string): HexString | null;
public encryptOAEP(text: string, hash?: string | ((s: string) => string), hashLen?: number): HexString | null;
//// RSA PRIVATE
protected doPrivate(x: BigInteger): BigInteger;
public setPrivate(N: BigInteger, E: number, D: BigInteger): void;
public setPrivate(N: HexString, E: HexString, D: HexString): void;
public setPrivateEx(N: HexString, E: HexString, D?: HexString | null, P?: HexString | null, Q?: HexString | null, DP?: HexString | null, DQ?: HexString | null, C?: HexString | null): void;
public generate(B: number, E: HexString): void;
public decrypt(ctext: HexString): string;
public decryptOAEP(ctext: HexString, hash?: string | ((s: string) => string), hashLen?: number): string | null;
//// RSA PEM
public getPosArrayOfChildrenFromHex(hPrivateKey: PEM): Idx<ASN1ObjectString>[];
public getHexValueArrayOfChildrenFromHex(hPrivateKey: PEM): Idx<ASN1ObjectString>[];
public readPrivateKeyFromPEMString(keyPEM: PEM): void;
public readPKCS5PrvKeyHex(h: HexString): void;
public readPKCS8PrvKeyHex(h: HexString): void;
public readPKCS5PubKeyHex(h: HexString): void;
public readPKCS8PubKeyHex(h: HexString): void;
public readCertPubKeyHex(h: HexString, nthPKI: Nth): void;
//// RSA SIGN
public sign(s: string, hashAlg: string): HexString;
public signWithMessageHash(sHashHex: HexString, hashAlg: string): HexString;
public signPSS(s: string, hashAlg: string, sLen: number): HexString;
public signWithMessageHashPSS(hHash: HexString, hashAlg: string, sLen: number): HexString;
public verify(sMsg: string, hSig: HexString): boolean | 0;
public verifyWithMessageHash(sHashHex: HexString, hSig: HexString): boolean | 0;
public verifyPSS(sMsg: string, hSig: HexString, hashAlg: string, sLen: number): boolean;
public verifyWithMessageHashPSS(hHash: HexString, hSig: HexString, hashAlg: string, sLen: number): boolean;
public static SALT_LEN_HLEN: -1;
public static SALT_LEN_MAX: -2;
public static SALT_LEN_RECOVER: -2;
}
/// RNG TYPES
class SecureRandom {
public nextBytes(ba: Mutable<ByteNumber[]>): void;
}
//// X509 TYPES
type ExtInfo = {
critical: boolean;
oid: OID;
vidx: Idx<ASN1V>;
};
type ExtAIAInfo = Record<'ocsp' | 'caissuer', string>;
type ExtCertificatePolicy = {
id: OIDName;
} & Partial<{
cps: string;
} | {
unotice: string;
}>;
class X509 {
public hex: HexString | null;
public version: number;
public foffset: number;
public aExtInfo: null;
public getVersion(): number;
public getSerialNumberHex(): ASN1V;
public getSignatureAlgorithmField(): OIDName;
public getIssuerHex(): ASN1TLV;
public getIssuerString(): HexString;
public getSubjectHex(): ASN1TLV;
public getSubjectString(): HexString;
public getNotBefore(): TimeValue;
public getNotAfter(): TimeValue;
public getPublicKeyHex(): ASN1TLV;
public getPublicKeyIdx(): Idx<Mutable<Nth[]>>;
public getPublicKeyContentIdx(): Idx<Mutable<Nth[]>>;
public getPublicKey(): RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA;
public getSignatureAlgorithmName(): OIDName;
public getSignatureValueHex(): ASN1V;
public verifySignature(pubKey: GetKeyParam): boolean | 0;
public parseExt(): void;
public getExtInfo(oidOrName: OID | string): ExtInfo | undefined;
public getExtBasicConstraints(): ExtInfo | {} | {
cA: true;
pathLen?: number;
};
public getExtKeyUsageBin(): BinString;
public getExtKeyUsageString(): string;
public getExtSubjectKeyIdentifier(): ASN1V | undefined;
public getExtAuthorityKeyIdentifier(): {
kid: ASN1V;
} | undefined;
public getExtExtKeyUsageName(): OIDName[] | undefined;
public getExtSubjectAltName(): Deprecated<string[]>;
public getExtSubjectAltName2(): ['MAIL' | 'DNS' | 'DN' | 'URI' | 'IP', string][] | undefined;
public getExtCRLDistributionPointsURI(): string[] | undefined;
public getExtAIAInfo(): ExtAIAInfo | undefined;
public getExtCertificatePolicies(): ExtCertificatePolicy[] | undefined;
public readCertPEM(sCertPEM: PEM): void;
public readCertHex(sCertHex: HexString): void;
public getInfo(): string;
public static hex2dn(hex: HexString, idx?: Idx<HexString>): string;
public static hex2rdn(hex: HexString, idx?: Idx<HexString>): string;
public static hex2attrTypeValue(hex: HexString, idx?: Idx<HexString>): string;
public static getPublicKeyFromCertPEM(sCertPEM: PEM): RSAKey | KJUR.crypto.ECDSA | KJUR.crypto.DSA;
public static getPublicKeyInfoPropOfCertPEM(sCertPEM: PEM): {
algparam: ASN1V | null;
leyhex: ASN1V;
algoid: ASN1V;
};
}
}

View File

@ -1,6 +1,6 @@
import cluster from 'node:cluster';
import chalk from 'chalk';
import Xev from 'xev';
import { default as Xev } from 'xev';
import Logger from '@/services/logger.js';
import { envOption } from '../env.js';
@ -12,7 +12,7 @@ import { workerMain } from './worker.js';
const logger = new Logger('core', 'cyan');
const clusterLogger = logger.createSubLogger('cluster', 'orange', false);
const ev = new Xev();
const ev = new Xev.default();
/**
* Init process

View File

@ -5,6 +5,7 @@ import * as os from 'node:os';
import cluster from 'node:cluster';
import chalk from 'chalk';
import chalkTemplate from 'chalk-template';
import * as portscanner from 'portscanner';
import semver from 'semver';
import Logger from '@/services/logger.js';
@ -47,6 +48,11 @@ function greet() {
bootLogger.info(`Misskey v${meta.version}`, null, true);
}
function isRoot() {
// maybe process.getuid will be undefined under not POSIX environment (e.g. Windows)
return process.getuid != null && process.getuid() === 0;
}
/**
* Init master process
*/
@ -61,6 +67,7 @@ export async function masterMain() {
showNodejsVersion();
config = loadConfigBoot();
await connectDb();
await validatePort(config);
} catch (e) {
bootLogger.error('Fatal error occurred during initialization', null, true);
process.exit(1);
@ -90,6 +97,8 @@ function showEnvironment(): void {
logger.warn('The environment is not in production mode.');
logger.warn('DO NOT USE FOR PRODUCTION PURPOSE!', null, true);
}
logger.info(`You ${isRoot() ? '' : 'do not '}have root privileges`);
}
function showNodejsVersion(): void {
@ -143,6 +152,29 @@ async function connectDb(): Promise<void> {
}
}
async function validatePort(config: Config): Promise<void> {
const isWellKnownPort = (port: number) => port < 1024;
async function isPortAvailable(port: number): Promise<boolean> {
return await portscanner.checkPortStatus(port, '127.0.0.1') === 'closed';
}
if (config.port == null || Number.isNaN(config.port)) {
bootLogger.error('The port is not configured. Please configure port.', null, true);
process.exit(1);
}
if (process.platform === 'linux' && isWellKnownPort(config.port) && !isRoot()) {
bootLogger.error('You need root privileges to listen on well-known port on Linux', null, true);
process.exit(1);
}
if (!await isPortAvailable(config.port)) {
bootLogger.error(`Port ${config.port} is already in use`, null, true);
process.exit(1);
}
}
async function spawnWorkers(limit: number = 1) {
const workers = Math.min(limit, os.cpus().length);
bootLogger.info(`Starting ${workers} worker${workers === 1 ? '' : 's'}...`);
@ -154,10 +186,6 @@ function spawnWorker(): Promise<void> {
return new Promise(res => {
const worker = cluster.fork();
worker.on('message', message => {
if (message === 'listenFailed') {
bootLogger.error(`The server Listen failed due to the previous error.`);
process.exit(1);
}
if (message !== 'ready') return;
res();
});

View File

@ -25,7 +25,6 @@ const path = process.env.NODE_ENV === 'test'
export default function load() {
const meta = JSON.parse(fs.readFileSync(`${_dirname}/../../../../built/meta.json`, 'utf-8'));
const clientManifest = JSON.parse(fs.readFileSync(`${_dirname}/../../../../built/_client_dist_/manifest.json`, 'utf-8'));
const config = yaml.load(fs.readFileSync(path, 'utf-8')) as Source;
const mixin = {} as Mixin;
@ -46,7 +45,6 @@ export default function load() {
mixin.authUrl = `${mixin.scheme}://${mixin.host}/auth`;
mixin.driveUrl = `${mixin.scheme}://${mixin.host}/files`;
mixin.userAgent = `Misskey/${meta.version} (${config.url})`;
mixin.clientEntry = clientManifest['src/init.ts'];
if (!config.redis.prefix) config.redis.prefix = mixin.host;

View File

@ -19,7 +19,6 @@ export type Source = {
redis: {
host: string;
port: number;
family?: number;
pass: string;
db?: number;
prefix?: string;
@ -81,7 +80,6 @@ export type Mixin = {
authUrl: string;
driveUrl: string;
userAgent: string;
clientEntry: string;
};
export type Config = Source & Mixin;

View File

@ -1,7 +1,7 @@
import Xev from 'xev';
import { default as Xev } from 'xev';
import { deliverQueue, inboxQueue } from '../queue/queues.js';
const ev = new Xev();
const ev = new Xev.default();
const interval = 10000;

View File

@ -1,8 +1,8 @@
import si from 'systeminformation';
import Xev from 'xev';
import { default as Xev } from 'xev';
import * as osUtils from 'os-utils';
const ev = new Xev();
const ev = new Xev.default();
const interval = 2000;

View File

@ -5,6 +5,9 @@ pg.types.setTypeParser(20, Number);
import { Logger, DataSource } from 'typeorm';
import * as highlight from 'cli-highlight';
import config from '@/config/index.js';
import { envOption } from '../env.js';
import { dbLogger } from './logger.js';
import { User } from '@/models/entities/user.js';
import { DriveFile } from '@/models/entities/drive-file.js';
@ -64,18 +67,13 @@ import { MutedNote } from '@/models/entities/muted-note.js';
import { Channel } from '@/models/entities/channel.js';
import { ChannelFollowing } from '@/models/entities/channel-following.js';
import { ChannelNotePining } from '@/models/entities/channel-note-pining.js';
import { ChannelKeypair } from '@/models/entities/channel-keypair.js';
import { RegistryItem } from '@/models/entities/registry-item.js';
import { Ad } from '@/models/entities/ad.js';
import { PasswordResetRequest } from '@/models/entities/password-reset-request.js';
import { UserPending } from '@/models/entities/user-pending.js';
import { Webhook } from '@/models/entities/webhook.js';
import { UserIp } from '@/models/entities/user-ip.js';
import { entities as charts } from '@/services/chart/entities.js';
import { envOption } from '../env.js';
import { dbLogger } from './logger.js';
import { redisClient } from './redis.js';
import { Webhook } from '@/models/entities/webhook.js';
const sqlLogger = dbLogger.createSubLogger('sql', 'gray', false);
@ -170,13 +168,11 @@ export const entities = [
Channel,
ChannelFollowing,
ChannelNotePining,
ChannelKeypair,
RegistryItem,
Ad,
PasswordResetRequest,
UserPending,
Webhook,
UserIp,
...charts,
];
@ -196,13 +192,12 @@ export const db = new DataSource({
synchronize: process.env.NODE_ENV === 'test',
dropSchema: process.env.NODE_ENV === 'test',
cache: !config.db.disableCache ? {
type: 'ioredis',
type: 'redis',
options: {
host: config.redis.host,
port: config.redis.port,
family: config.redis.family == null ? 0 : config.redis.family,
password: config.redis.pass,
keyPrefix: `${config.redis.prefix}:query:`,
prefix: `${config.redis.prefix}:query:`,
db: config.redis.db || 0,
},
} : false,
@ -213,25 +208,16 @@ export const db = new DataSource({
migrations: ['../../migration/*.js'],
});
export async function initDb(force = false) {
if (force) {
if (db.isInitialized) {
await db.destroy();
}
await db.initialize();
return;
}
export async function initDb() {
if (db.isInitialized) {
// nop
} else {
await db.initialize();
await db.connect();
}
}
export async function resetDb() {
const reset = async () => {
await redisClient.flushdb();
const tables = await db.query(`SELECT relname AS "table"
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')

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