mirror of
https://github.com/kokonect-link/cherrypick
synced 2024-12-21 10:08:19 +09:00
commit
c107f6e402
@ -2,3 +2,4 @@
|
||||
POSTGRES_PASSWORD=example-cherrypick-pass
|
||||
POSTGRES_USER=example-cherrypick-user
|
||||
POSTGRES_DB=cherrypick
|
||||
DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}"
|
||||
|
@ -2,6 +2,63 @@
|
||||
# CherryPick configuration
|
||||
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
# ┌──────────────────────────────┐
|
||||
#───┘ a boring but important thing └────────────────────────────
|
||||
|
||||
#
|
||||
# First of all, let me tell you a story that may possibly be
|
||||
# boring to you and possibly important to you.
|
||||
#
|
||||
# CherryPick is licensed under the AGPLv3 license. This license is
|
||||
# known to be often misunderstood. Please read the following
|
||||
# instructions carefully and select the appropriate option so
|
||||
# that you do not negligently cause a license violation.
|
||||
#
|
||||
|
||||
# --------
|
||||
# Option 1: If you host CherryPick AS-IS (without any changes to
|
||||
# the source code. forks are not included).
|
||||
#
|
||||
# Step 1: Congratulations! You don't need to do anything.
|
||||
|
||||
# --------
|
||||
# Option 2: If you have made changes to the source code (forks
|
||||
# are included) and publish a Git repository of source
|
||||
# code. There should be no access restrictions on
|
||||
# this repository. Strictly speaking, it doesn't have
|
||||
# to be a Git repository, but you'll probably use Git!
|
||||
#
|
||||
# Step 1: Build and run the CherryPick server first.
|
||||
# Step 2: Open <https://your.cherrypick.example/admin/settings> in
|
||||
# your browser with the administrator account.
|
||||
# Step 3: Enter the URL of your Git repository in the
|
||||
# "Repository URL" field.
|
||||
|
||||
# --------
|
||||
# Option 3: If neither of the above applies to you.
|
||||
# (In this case, the source code should be published
|
||||
# on the CherryPick interface. IT IS NOT ENOUGH TO
|
||||
# DISCLOSE THE SOURCE CODE WEHN A USER REQUESTS IT BY
|
||||
# E-MAIL OR OTHER MEANS. If you are not satisfied
|
||||
# with this, it is recommended that you read the
|
||||
# license again carefully. Anyway, enabling this
|
||||
# option will automatically generate and publish a
|
||||
# tarball at build time, protecting you from
|
||||
# inadvertent license violations. (There is no legal
|
||||
# guarantee, of course.) The tarball will generated
|
||||
# from the root directory of your codebase. So it is
|
||||
# also recommended to check <built/tarball> directory
|
||||
# once after building and before activating the server
|
||||
# to avoid ACCIDENTAL LEAKING OF SENSITIVE INFORMATION.
|
||||
# To prevent certain files from being included in the
|
||||
# tarball, add a glob pattern after line 15 in
|
||||
# <scripts/tarball.mjs>. DO NOT FORGET TO BUILD AFTER
|
||||
# ENABLING THIS OPTION!)
|
||||
#
|
||||
# Step 1: Uncomment the following line.
|
||||
#
|
||||
# publishTarballInsteadOfProvideRepositoryUrl: true
|
||||
|
||||
# ┌─────┐
|
||||
#───┘ URL └─────────────────────────────────────────────────────
|
||||
|
||||
@ -160,14 +217,14 @@ id: 'aidx'
|
||||
# Job concurrency per worker
|
||||
#deliverJobConcurrency: 128
|
||||
#inboxJobConcurrency: 16
|
||||
#relashionshipJobConcurrency: 16
|
||||
# What's relashionshipJob?:
|
||||
#relationshipJobConcurrency: 16
|
||||
# What's relationshipJob?:
|
||||
# Follow, unfollow, block and unblock(ings) while following-imports, etc. or account migrations.
|
||||
|
||||
# Job rate limiter
|
||||
#deliverJobPerSec: 128
|
||||
#inboxJobPerSec: 32
|
||||
#relashionshipJobPerSec: 64
|
||||
#relationshipJobPerSec: 64
|
||||
|
||||
# Job attempts
|
||||
#deliverJobMaxAttempts: 12
|
||||
|
30
.github/dependabot.yml
vendored
30
.github/dependabot.yml
vendored
@ -17,16 +17,32 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
# PNPM has an issue with dependabot. See:
|
||||
# https://github.com/dependabot/dependabot-core/issues/7258
|
||||
# https://github.com/pnpm/pnpm/issues/6530
|
||||
# TODO: Restore this when the issue is solved
|
||||
open-pull-requests-limit: 0
|
||||
open-pull-requests-limit: 10
|
||||
# List dependencies required to be updated together, sharing the same version numbers.
|
||||
# Those who simply have the common owner (e.g. @fastify) don't need to be listed.
|
||||
groups:
|
||||
swc:
|
||||
aws-sdk:
|
||||
patterns:
|
||||
- "@swc/*"
|
||||
- "@aws-sdk/*"
|
||||
bull-board:
|
||||
patterns:
|
||||
- "@bull-board/*"
|
||||
nestjs:
|
||||
patterns:
|
||||
- "@nestjs/*"
|
||||
slacc:
|
||||
patterns:
|
||||
- "slacc-*"
|
||||
storybook:
|
||||
patterns:
|
||||
- "storybook*"
|
||||
- "@storybook/*"
|
||||
swc-core:
|
||||
patterns:
|
||||
- "@swc/core*"
|
||||
typescript-eslint:
|
||||
patterns:
|
||||
- "@typescript-eslint/*"
|
||||
tensorflow:
|
||||
patterns:
|
||||
- "@tensorflow/*"
|
||||
|
10
.github/workflows/api-cherrypick-js.yml
vendored
10
.github/workflows/api-cherrypick-js.yml
vendored
@ -1,6 +1,12 @@
|
||||
name: API report (cherrypick.js)
|
||||
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- packages/cherrypick-js/**
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/cherrypick-js/**
|
||||
|
||||
jobs:
|
||||
report:
|
||||
@ -14,7 +20,7 @@ jobs:
|
||||
- run: corepack enable
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
|
43
.github/workflows/changelog-check.yml
vendored
Normal file
43
.github/workflows/changelog-check.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
name: Check the description in CHANGELOG.md
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
check-changelog:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout head
|
||||
uses: actions/checkout@v4.1.1
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
|
||||
- name: Checkout base
|
||||
run: |
|
||||
mkdir _base
|
||||
cp -r .git _base/.git
|
||||
cd _base
|
||||
git fetch --depth 1 origin ${{ github.base_ref }}
|
||||
git checkout origin/${{ github.base_ref }} CHANGELOG.md
|
||||
|
||||
- name: Copy to Checker directory for CHANGELOG-base.md
|
||||
run: cp _base/CHANGELOG.md scripts/changelog-checker/CHANGELOG-base.md
|
||||
- name: Copy to Checker directory for CHANGELOG-head.md
|
||||
run: cp CHANGELOG.md scripts/changelog-checker/CHANGELOG-head.md
|
||||
- name: diff
|
||||
continue-on-error: true
|
||||
run: diff -u CHANGELOG-base.md CHANGELOG-head.md
|
||||
working-directory: scripts/changelog-checker
|
||||
|
||||
- name: Setup Checker
|
||||
run: npm install
|
||||
working-directory: scripts/changelog-checker
|
||||
- name: Run Checker
|
||||
run: npm run run
|
||||
working-directory: scripts/changelog-checker
|
134
.github/workflows/check-cherrypick-js-autogen.yml
vendored
Normal file
134
.github/workflows/check-cherrypick-js-autogen.yml
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
name: Check CherryPick JS autogen
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
|
||||
jobs:
|
||||
check-cherrypick-js-autogen:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
env:
|
||||
api_json_name: "api-head.json"
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
submodules: true
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: setup pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
|
||||
- name: setup node
|
||||
id: setup-node
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: pnpm
|
||||
|
||||
- name: install dependencies
|
||||
run: pnpm i --frozen-lockfile
|
||||
|
||||
- name: wait get-api-diff
|
||||
uses: lewagon/wait-on-check-action@v1.3.3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
check-regexp: get-from-cherrypick .+
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
wait-interval: 30
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
|
||||
const workflows = await github.rest.actions.listWorkflowRunsForRepo({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
head_sha: `${{ github.event.pull_request.head.sha }}`
|
||||
}).then(x => x.data.workflow_runs);
|
||||
|
||||
console.log(workflows.map(x => ({name: x.name, title: x.display_title})));
|
||||
|
||||
const run_id = workflows.find(x => x.name.includes("Get api.json from CherryPick")).id;
|
||||
|
||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: run_id,
|
||||
});
|
||||
|
||||
let matchArtifacts = allArtifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name.startsWith("api-artifact-") || artifact.name == "api-artifact"
|
||||
});
|
||||
|
||||
await Promise.all(matchArtifacts.map(async (artifact) => {
|
||||
let download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: artifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
await fs.promises.writeFile(`${process.env.GITHUB_WORKSPACE}/${artifact.name}.zip`, Buffer.from(download.data));
|
||||
}));
|
||||
|
||||
- name: unzip artifacts
|
||||
run: |-
|
||||
find . -mindepth 1 -maxdepth 1 -type f -name '*.zip' -exec unzip {} -d . ';'
|
||||
ls -la
|
||||
|
||||
- name: get head checksum
|
||||
run: |-
|
||||
checksum=$(realpath head_checksum)
|
||||
|
||||
cd packages/cherrypick-js/src
|
||||
find autogen -type f -exec sh -c 'echo $(sed -E "s/^\s+\*\s+generatedAt:.+$//" {} | sha256sum | cut -d" " -f 1) {}' \; > $checksum
|
||||
cd ../../..
|
||||
|
||||
- name: build autogen
|
||||
run: |-
|
||||
checksum=$(realpath ${api_json_name}_checksum)
|
||||
mv $api_json_name packages/cherrypick-js/generator/api.json
|
||||
|
||||
cd packages/cherrypick-js/generator
|
||||
pnpm run generate
|
||||
cd built
|
||||
find autogen -type f -exec sh -c 'echo $(sed -E "s/^\s+\*\s+generatedAt:.+$//" {} | sha256sum | cut -d" " -f 1) {}' \; > $checksum
|
||||
cd ../../../..
|
||||
|
||||
- name: check update for type definitions
|
||||
run: diff head_checksum ${api_json_name}_checksum
|
||||
|
||||
- name: send message
|
||||
if: failure()
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
comment_tag: check-cherrypick-js-autogen
|
||||
message: |-
|
||||
Thank you for sending us a great Pull Request! 👍
|
||||
Please regenerate cherrypick-js type definitions! 🙏
|
||||
|
||||
example:
|
||||
```sh
|
||||
pnpm run build-cherrypick-js-with-types
|
||||
```
|
||||
|
||||
- name: send message
|
||||
if: success()
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
comment_tag: check-cherrypick-js-autogen
|
||||
mode: delete
|
||||
message: "Thank you!"
|
||||
create_if_not_exists: false
|
28
.github/workflows/check-misskey-js-version.yml
vendored
Normal file
28
.github/workflows/check-misskey-js-version.yml
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
name: Check CherryPick JS version
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/cherrypick-js/package.json
|
||||
- package.json
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/cherrypick-js/package.json
|
||||
- package.json
|
||||
|
||||
jobs:
|
||||
check-version:
|
||||
# ルートの package.json と packages/cherrypick-js/package.json のバージョンが一致しているかを確認する
|
||||
name: Check version
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
- name: Check version
|
||||
run: |
|
||||
if [ "$(jq -r '.version' package.json)" != "$(jq -r '.version' packages/cherrypick-js/package.json)" ]; then
|
||||
echo "Version mismatch!"
|
||||
exit 1
|
||||
fi
|
87
.github/workflows/deploy-test-environment.yml
vendored
Normal file
87
.github/workflows/deploy-test-environment.yml
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
name: deploy-test-environment
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
repository:
|
||||
description: 'Repository to deploy (optional, use the repository where this workflow is stored by default)'
|
||||
required: false
|
||||
default: ''
|
||||
branch_or_hash:
|
||||
description: 'Branch or Commit hash to deploy (optional, use the branch where this workflow is stored by default)'
|
||||
required: false
|
||||
default: ''
|
||||
wait_time:
|
||||
description: 'Time to wait in seconds (optional, 1800 seconds by default)'
|
||||
required: false
|
||||
default: ''
|
||||
|
||||
jobs:
|
||||
get-pr-ref:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/preview')
|
||||
outputs:
|
||||
is-allowed-user: ${{ steps.check-allowed-users.outputs.is-allowed-user }}
|
||||
pr-ref: ${{ steps.get-ref.outputs.pr-ref }}
|
||||
wait_time: ${{ steps.get-wait-time.outputs.wait_time }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Check allowed users
|
||||
id: check-allowed-users
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
ORG_ID: ${{ github.repository_owner_id }}
|
||||
COMMENT_AUTHOR: ${{ github.event.comment.user.login }}
|
||||
run: |
|
||||
MEMBERSHIP_STATUS=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
"https://api.github.com/organizations/$ORG_ID/public_members/$COMMENT_AUTHOR" \
|
||||
-o /dev/null -w '%{http_code}\n' -s)
|
||||
if [ "$MEMBERSHIP_STATUS" -eq 204 ]; then
|
||||
echo "is-allowed-user=true" > $GITHUB_OUTPUT
|
||||
else
|
||||
echo "is-allowed-user=false" > $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Get PR ref
|
||||
id: get-ref
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
PR_NUMBER=$(jq --raw-output .issue.number $GITHUB_EVENT_PATH)
|
||||
PR_REF=$(gh pr view $PR_NUMBER --json headRefName -q '.headRefName')
|
||||
echo "pr-ref=$PR_REF" > $GITHUB_OUTPUT
|
||||
|
||||
- name: Extract wait time
|
||||
id: get-wait-time
|
||||
env:
|
||||
COMMENT_BODY: ${{ github.event.comment.body }}
|
||||
run: |
|
||||
WAIT_TIME=$(echo "$COMMENT_BODY" | grep -oP '(?<=/preview\s)\d+' || echo "1800")
|
||||
echo "wait_time=$WAIT_TIME" > $GITHUB_OUTPUT
|
||||
|
||||
deploy-test-environment-pr-comment:
|
||||
needs: get-pr-ref
|
||||
if: needs.get-pr-ref.outputs.is-allowed-user == 'true'
|
||||
uses: joinmisskey/misskey-tga/.github/workflows/deploy-test-environment.yml@main
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
branch_or_hash: ${{ needs.get-pr-ref.outputs.pr-ref }}
|
||||
wait_time: ${{ needs.get-pr-ref.outputs.wait_time }}
|
||||
secrets:
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
|
||||
deploy-test-environment-wd:
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
uses: joinmisskey/misskey-tga/.github/workflows/deploy-test-environment.yml@main
|
||||
with:
|
||||
repository: ${{ inputs.repository || github.repository }}
|
||||
branch_or_hash: ${{ inputs.branch_or_hash || github.ref_name }}
|
||||
wait_time: ${{ inputs.wait_time || '1800' }}
|
||||
secrets:
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
75
.github/workflows/docker-develop.yml
vendored
75
.github/workflows/docker-develop.yml
vendored
@ -6,10 +6,20 @@ on:
|
||||
- develop
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
REGISTRY_IMAGE: noridev/cherrypick
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
# see https://docs.docker.com/build/ci/github-actions/multi-platform/#distribute-build-across-multiple-runners
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
if: github.repository == 'kokonect-link/cherrypick'
|
||||
steps:
|
||||
- name: Free Disk Space
|
||||
@ -23,32 +33,67 @@ jobs:
|
||||
haskell: true
|
||||
large-packages: true
|
||||
swap-storage: true
|
||||
- name: Prepare
|
||||
run: |
|
||||
platform=${{ matrix.platform }}
|
||||
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4.1.1
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3.0.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: noridev/cherrypick
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
- name: Build and push by digest
|
||||
id: build
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: .
|
||||
push: true
|
||||
platforms: ${{ steps.buildx.outputs.platforms }}
|
||||
platforms: ${{ matrix.platform }}
|
||||
provenance: false
|
||||
tags: noridev/cherrypick:develop
|
||||
labels: develop
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
|
||||
- name: Export digest
|
||||
run: |
|
||||
mkdir -p /tmp/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "/tmp/digests/${digest#sha256:}"
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: digests-${{ env.PLATFORM_PAIR }}
|
||||
path: /tmp/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: /tmp/digests
|
||||
pattern: digests-*
|
||||
merge-multiple: true
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Create manifest list and push
|
||||
working-directory: /tmp/digests
|
||||
run: |
|
||||
docker buildx imagetools create --tag ${{ env.REGISTRY_IMAGE }}:develop \
|
||||
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
|
||||
- name: Inspect image
|
||||
run: |
|
||||
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:develop
|
||||
|
94
.github/workflows/docker.yml
vendored
94
.github/workflows/docker.yml
vendored
@ -5,11 +5,27 @@ on:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
REGISTRY_IMAGE: noridev/cherrypick
|
||||
TAGS: |
|
||||
type=edge
|
||||
type=ref,event=pr
|
||||
type=ref,event=branch
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
|
||||
jobs:
|
||||
# see https://docs.docker.com/build/ci/github-actions/multi-platform/#distribute-build-across-multiple-runners
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
steps:
|
||||
- name: Free Disk Space
|
||||
uses: jlumbroso/free-disk-space@main
|
||||
@ -22,39 +38,79 @@ jobs:
|
||||
haskell: true
|
||||
large-packages: true
|
||||
swap-storage: true
|
||||
- name: Prepare
|
||||
run: |
|
||||
platform=${{ matrix.platform }}
|
||||
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4.1.1
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3.0.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: noridev/cherrypick
|
||||
tags: |
|
||||
type=edge
|
||||
type=ref,event=pr
|
||||
type=ref,event=branch
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
images: ${{ env.REGISTRY_IMAGE }}
|
||||
tags: ${{ env.TAGS }}
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
id: build
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: .
|
||||
push: true
|
||||
platforms: ${{ steps.buildx.outputs.platforms }}
|
||||
platforms: ${{ matrix.platform }}
|
||||
provenance: false
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
|
||||
- name: Export digest
|
||||
run: |
|
||||
mkdir -p /tmp/digests
|
||||
digest="${{ steps.build.outputs.digest }}"
|
||||
touch "/tmp/digests/${digest#sha256:}"
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: digests-${{ env.PLATFORM_PAIR }}
|
||||
path: /tmp/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: /tmp/digests
|
||||
pattern: digests-*
|
||||
merge-multiple: true
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.REGISTRY_IMAGE }}
|
||||
tags: ${{ env.TAGS }}
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Create manifest list and push
|
||||
working-directory: /tmp/digests
|
||||
run: |
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
|
||||
- name: Inspect image
|
||||
run: |
|
||||
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
|
||||
|
4
.github/workflows/get-api-diff.yml
vendored
4
.github/workflows/get-api-diff.yml
vendored
@ -32,12 +32,12 @@ jobs:
|
||||
ref: ${{ matrix.ref }}
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
|
26
.github/workflows/lint.yml
vendored
26
.github/workflows/lint.yml
vendored
@ -5,7 +5,19 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
- packages/frontend/**
|
||||
- packages/sw/**
|
||||
- packages/cherrypick-js/**
|
||||
- packages/shared/.eslintrc.js
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/backend/**
|
||||
- packages/frontend/**
|
||||
- packages/sw/**
|
||||
- packages/cherrypick-js/**
|
||||
- packages/shared/.eslintrc.js
|
||||
|
||||
jobs:
|
||||
pnpm_install:
|
||||
@ -15,11 +27,11 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
@ -42,11 +54,11 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
@ -68,11 +80,11 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
@ -80,4 +92,6 @@ jobs:
|
||||
- run: pnpm i --frozen-lockfile
|
||||
- run: pnpm --filter cherrypick-js run build
|
||||
if: ${{ matrix.workspace == 'backend' }}
|
||||
- run: pnpm --filter misskey-reversi run build:tsc
|
||||
if: ${{ matrix.workspace == 'backend' }}
|
||||
- run: pnpm --filter ${{ matrix.workspace }} run typecheck
|
||||
|
2
.github/workflows/ok-to-test.yml
vendored
2
.github/workflows/ok-to-test.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
||||
private_key: ${{ secrets.DEPLOYBOT_PRIVATE_KEY }}
|
||||
|
||||
- name: Slash Command Dispatch
|
||||
uses: peter-evans/slash-command-dispatch@v3
|
||||
uses: peter-evans/slash-command-dispatch@v4
|
||||
env:
|
||||
TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||
with:
|
||||
|
45
.github/workflows/on-release-created.yml
vendored
Normal file
45
.github/workflows/on-release-created.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
name: On Release Created (Publish cherrypick-js)
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
publish-cherrypick-js:
|
||||
name: Publish cherrypick-js
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
- name: Publish package
|
||||
run: |
|
||||
corepack enable
|
||||
pnpm i --frozen-lockfile
|
||||
pnpm build
|
||||
pnpm --filter cherrypick-js publish --access public --no-git-checks --provenance
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
6
.github/workflows/pr-preview-deploy.yml
vendored
6
.github/workflows/pr-preview-deploy.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
||||
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@v7
|
||||
- uses: actions/github-script@v7.0.1
|
||||
id: check-id
|
||||
env:
|
||||
number: ${{ github.event.client_payload.pull_request.number }}
|
||||
@ -37,7 +37,7 @@ jobs:
|
||||
|
||||
return check[0].id;
|
||||
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v7.0.1
|
||||
env:
|
||||
check_id: ${{ steps.check-id.outputs.result }}
|
||||
details_url: ${{ github.server_url }}/${{ github.repository }}/runs/${{ github.run_id }}
|
||||
@ -72,7 +72,7 @@ jobs:
|
||||
timeout: 15m
|
||||
|
||||
# Update check run called "integration-fork"
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v7.0.1
|
||||
id: update-check-run
|
||||
if: ${{ always() }}
|
||||
env:
|
||||
|
2
.github/workflows/pr-preview-destroy.yml
vendored
2
.github/workflows/pr-preview-destroy.yml
vendored
@ -10,7 +10,7 @@ jobs:
|
||||
destroy-preview-environment:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v7.0.1
|
||||
id: check-conclusion
|
||||
env:
|
||||
number: ${{ github.event.number }}
|
||||
|
2
.github/workflows/report-api-diff.yml
vendored
2
.github/workflows/report-api-diff.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
||||
# api-artifact
|
||||
steps:
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
|
113
.github/workflows/storybook.yml
vendored
Normal file
113
.github/workflows/storybook.yml
vendored
Normal file
@ -0,0 +1,113 @@
|
||||
name: Storybook
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
- dev/storybook8 # for testing
|
||||
pull_request_target:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
NODE_OPTIONS: "--max_old_space_size=7168"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
if: github.event_name != 'pull_request_target'
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- uses: actions/checkout@v4.1.1
|
||||
if: github.event_name == 'pull_request_target'
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
ref: "refs/pull/${{ github.event.number }}/merge"
|
||||
- name: Checkout actual HEAD
|
||||
if: github.event_name == 'pull_request_target'
|
||||
id: rev
|
||||
run: |
|
||||
echo "base=$(git rev-list --parents -n1 HEAD | cut -d" " -f2)" >> $GITHUB_OUTPUT
|
||||
git checkout $(git rev-list --parents -n1 HEAD | cut -d" " -f3)
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js 20.x
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
- name: Check pnpm-lock.yaml
|
||||
run: git diff --exit-code pnpm-lock.yaml
|
||||
- name: Build cherrypick-js
|
||||
run: pnpm --filter cherrypick-js build
|
||||
- name: Build storybook
|
||||
run: pnpm --filter frontend build-storybook
|
||||
- name: Publish to Chromatic
|
||||
if: github.event_name != 'pull_request_target' && github.ref == 'refs/heads/master'
|
||||
run: pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static
|
||||
env:
|
||||
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
|
||||
- name: Publish to Chromatic
|
||||
if: github.event_name != 'pull_request_target' && github.ref != 'refs/heads/master'
|
||||
id: chromatic_push
|
||||
run: |
|
||||
DIFF="${{ github.event.before }} HEAD"
|
||||
if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then
|
||||
DIFF="HEAD"
|
||||
fi
|
||||
CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r $(echo "$DIFF") | xargs))"
|
||||
if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then
|
||||
echo "skip=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
if pnpm --filter frontend chromatic -d storybook-static $(echo "$CHROMATIC_PARAMETER"); then
|
||||
echo "success=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "success=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
env:
|
||||
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
|
||||
- name: Publish to Chromatic
|
||||
if: github.event_name == 'pull_request_target'
|
||||
id: chromatic_pull_request
|
||||
run: |
|
||||
DIFF="${{ steps.rev.outputs.base }} HEAD"
|
||||
if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then
|
||||
DIFF="HEAD"
|
||||
fi
|
||||
CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r $(echo "$DIFF") | xargs))"
|
||||
if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then
|
||||
echo "skip=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
BRANCH="${{ github.event.pull_request.head.user.login }}:${{ github.event.pull_request.head.ref }}"
|
||||
if [ "$BRANCH" = "kokonect-link:${{ github.event.pull_request.head.ref }}" ]; then
|
||||
BRANCH="${{ github.event.pull_request.head.ref }}"
|
||||
fi
|
||||
pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static --branch-name $BRANCH $(echo "$CHROMATIC_PARAMETER")
|
||||
env:
|
||||
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
|
||||
- name: Notify that Chromatic detects changes
|
||||
uses: actions/github-script@v7.0.1
|
||||
if: github.event_name != 'pull_request_target' && steps.chromatic_push.outputs.success == 'false'
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
github.rest.repos.createCommitComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
commit_sha: context.sha,
|
||||
body: 'Chromatic detects changes. Please [review the changes on Chromatic](https://www.chromatic.com/builds?appId=6428f7d7b962f0b79f97d6e4).'
|
||||
})
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: storybook
|
||||
path: packages/frontend/storybook-static
|
70
.github/workflows/test-backend.yml
vendored
70
.github/workflows/test-backend.yml
vendored
@ -5,10 +5,18 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
# for permissions
|
||||
- packages/cherrypick-js/**
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/backend/**
|
||||
# for permissions
|
||||
- packages/cherrypick-js/**
|
||||
|
||||
jobs:
|
||||
jest:
|
||||
unit:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
@ -33,12 +41,12 @@ jobs:
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@ -51,9 +59,59 @@ jobs:
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
- name: Test
|
||||
run: pnpm jest-and-coverage
|
||||
- name: Upload Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
run: pnpm --filter backend test-and-coverage
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/backend/coverage/coverage-final.json
|
||||
|
||||
e2e:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-cherrypick
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
redis:
|
||||
image: redis:7
|
||||
ports:
|
||||
- 56312:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
- name: Check pnpm-lock.yaml
|
||||
run: git diff --exit-code pnpm-lock.yaml
|
||||
- name: Copy Configure
|
||||
run: cp .github/cherrypick/test.yml .config
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
- name: Test
|
||||
run: pnpm --filter backend test-and-coverage:e2e
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/backend/coverage/coverage-final.json
|
||||
|
8
.github/workflows/test-cherrypick-js.yml
vendored
8
.github/workflows/test-cherrypick-js.yml
vendored
@ -6,8 +6,12 @@ name: Test (cherrypick.js)
|
||||
on:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/cherrypick-js/**
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/cherrypick-js/**
|
||||
|
||||
jobs:
|
||||
test:
|
||||
@ -26,7 +30,7 @@ jobs:
|
||||
- run: corepack enable
|
||||
|
||||
- name: Setup Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@ -46,7 +50,7 @@ jobs:
|
||||
CI: true
|
||||
|
||||
- name: Upload Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/cherrypick-js/coverage/coverage-final.json
|
||||
|
24
.github/workflows/test-frontend.yml
vendored
24
.github/workflows/test-frontend.yml
vendored
@ -5,7 +5,20 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/frontend/**
|
||||
# for permissions
|
||||
- packages/cherrypick-js/**
|
||||
# for e2e
|
||||
- packages/backend/**
|
||||
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/frontend/**
|
||||
# for permissions
|
||||
- packages/cherrypick-js/**
|
||||
# for e2e
|
||||
- packages/backend/**
|
||||
|
||||
jobs:
|
||||
vitest:
|
||||
@ -20,12 +33,12 @@ jobs:
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@ -40,7 +53,7 @@ jobs:
|
||||
- name: Test
|
||||
run: pnpm --filter frontend test-and-coverage
|
||||
- name: Upload Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/frontend/coverage/coverage-final.json
|
||||
@ -78,12 +91,12 @@ jobs:
|
||||
#- uses: browser-actions/setup-firefox@latest
|
||||
# if: ${{ matrix.browser == 'firefox' }}
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@ -102,6 +115,7 @@ jobs:
|
||||
run: pnpm exec cypress install
|
||||
- name: Cypress run
|
||||
uses: cypress-io/github-action@v6
|
||||
timeout-minutes: 15
|
||||
with:
|
||||
install: false
|
||||
start: pnpm start:test
|
||||
|
4
.github/workflows/test-production.yml
vendored
4
.github/workflows/test-production.yml
vendored
@ -23,12 +23,12 @@ jobs:
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
|
47
.github/workflows/validate-api-json.yml
vendored
Normal file
47
.github/workflows/validate-api-json.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
name: Test (backend)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/backend/**
|
||||
|
||||
jobs:
|
||||
validate-api-json:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v3
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
- name: Install Redocly CLI
|
||||
run: npm i -g @redocly/cli
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
- name: Check pnpm-lock.yaml
|
||||
run: git diff --exit-code pnpm-lock.yaml
|
||||
- name: Copy Configure
|
||||
run: cp .config/example.yml .config/default.yml
|
||||
- name: Build and generate
|
||||
run: pnpm build && pnpm --filter backend generate-api-json
|
||||
- name: Validation
|
||||
run: npx @redocly/cli lint --extends=minimal ./packages/backend/built/api.json
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -41,6 +41,7 @@ docker-compose.yml
|
||||
# cherrypick
|
||||
/build
|
||||
built
|
||||
built-test
|
||||
/data
|
||||
/.cache-loader
|
||||
/db
|
||||
@ -57,6 +58,7 @@ api-docs.json
|
||||
ormconfig.json
|
||||
temp
|
||||
/packages/frontend/src/**/*.stories.ts
|
||||
tsdoc-metadata.json
|
||||
|
||||
# blender backups
|
||||
*.blend1
|
||||
|
107
CHANGELOG.md
107
CHANGELOG.md
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
## 2023.x.x (unreleased)
|
||||
## 202x.x.x (unreleased)
|
||||
|
||||
### General
|
||||
-
|
||||
@ -11,12 +11,116 @@
|
||||
-
|
||||
|
||||
-->
|
||||
## 202x.x.x (unreleased)
|
||||
|
||||
### General
|
||||
|
||||
### Client
|
||||
- Enhance: ノート作成画面のファイル添付メニューの区切り線の位置を調整
|
||||
- Fix: syuilo/misskeyの時代からあるインスタンスが改変されたバージョンであると誤認識される問題
|
||||
- Fix: MFMのオートコンプリートが出るべき状況で出ないことがある問題を修正
|
||||
- Fix: チャートのラベルが消えている問題を修正
|
||||
- Fix: 画面表示後最初の音声再生が爆音になることがある問題を修正
|
||||
|
||||
### Server
|
||||
- Fix: nodeinfoにenableMcaptchaとenableTurnstileが無いのを修正
|
||||
|
||||
## 2024.2.0
|
||||
|
||||
### Note
|
||||
- 外部サイトからプラグインをインストールする場合のパスが`/install-extentions`から`/install-extensions`に変わります。以前のパスからは自動でリダイレクトされるようになっていますが、新しいパスに変更することをお勧めします。
|
||||
|
||||
### General
|
||||
- Feat: [mCaptcha](https://github.com/mCaptcha/mCaptcha)のサポートを追加
|
||||
- Feat: Add support for TrueMail
|
||||
- Feat: AGPLv3ライセンスに誤って違反するのを防止する機能を追加
|
||||
- 管理者がrepositoryUrlを変更したり、またはソースコードを直接頒布することを選択できるようになります
|
||||
- 本体のソースコードに改変を加えた際に、ライセンスに基づく適切な案内を表示します
|
||||
- Enhance: モデレーターはすべてのユーザーのリアクション一覧を見られるように
|
||||
- Fix: リストライムラインの「リノートを表示」が正しく機能しない問題を修正
|
||||
- Fix: リモートユーザーのリアクション一覧がすべて見えてしまうのを修正
|
||||
* すべてのリモートユーザーのリアクション一覧を見えないようにします
|
||||
- Fix: 特定のキーワード及び正規表現にマッチする文字列を含むノートが投稿された際、エラーに出来るような設定項目を追加 #13207
|
||||
* デフォルトは空欄なので適用前と同等の動作になります
|
||||
|
||||
### Client
|
||||
- Feat: 新しいゲームを追加
|
||||
- Feat: 音声・映像プレイヤーを追加
|
||||
- Feat: 絵文字の詳細ダイアログを追加
|
||||
- Feat: 枠線をつけるMFM`$[border.width=1,style=solid,color=fff,radius=0 ...]`を追加
|
||||
- デフォルトで枠線からはみ出る部分が隠されるようにしました。初期と同じ挙動にするには`$[border.noclip`が必要です
|
||||
- Feat: スワイプでタブを切り替えられるように
|
||||
- Enhance: MFM等のコードブロックに全文コピー用のボタンを追加
|
||||
- Enhance: ハッシュタグ入力時に、本文の末尾の行に何も書かれていない場合は新たにスペースを追加しないように
|
||||
- Enhance: チャンネルノートのピン留めをノートのメニューからできるように
|
||||
- Enhance: 管理者の場合はAPI tokenの発行画面で管理機能に関する権限を付与できるように
|
||||
- Enhance: AiScriptを0.17.0に更新 [CHANGELOG](https://github.com/aiscript-dev/aiscript/blob/bb89d132b633a622d3cb0eff0d0cc7e476c0cfdd/CHANGELOG.md)
|
||||
- 配列の範囲外・非整数のインデックスへの代入が完全禁止になるので注意
|
||||
- Enhance: 絵文字ピッカー・オートコンプリートで、完全一致した絵文字を優先的に表示するように
|
||||
- Enhance: Playの説明欄にMFMを使えるように
|
||||
- Enhance: チャンネルノートの場合は詳細ページからその前後のノートを見れるように
|
||||
- Enhance: 季節に応じた画面の演出を南半球でも利用できるように
|
||||
- Enhance: タイムラインフィルターの設定をすべて保持できるように
|
||||
- 今までの「TLに他の人への返信を含める」設定は一旦リセットされます
|
||||
- Enhance: タイムラインフィルターに「センシティブなファイルを含むノートを表示」を追加
|
||||
- Enhance: ノート作成画面のファイル添付メニューから直接ファイルを削除できるように
|
||||
- Enhance: MFMの属性でオートコンプリートが使用できるように #12735
|
||||
- Enhance: 絵文字編集ダイアログをモーダルではなくウィンドウで表示するように
|
||||
- Enhance: リモートのユーザーはメニューから直接リモートで表示できるように
|
||||
- Enhance: リモートへの引用リノートと同一のリンクにはリンクプレビューを表示しないように
|
||||
- Enhance: コードのシンタックスハイライトにテーマを適用できるように
|
||||
- Enhance: リアクション権限がない場合、ハートにフォールバックするのではなくリアクションピッカーなどから打てないように
|
||||
- リモートのユーザーにローカルのみのカスタム絵文字をリアクションしようとした場合
|
||||
- センシティブなリアクションを認めていないユーザーにセンシティブなカスタム絵文字をリアクションしようとした場合
|
||||
- ロールが必要な絵文字をリアクションしようとした場合
|
||||
- Enhance: ページ遷移時にPlayerを閉じるように
|
||||
- Enhance: 通報ページのユーザをクリックした際にユーザをウィンドウで開くように
|
||||
- Enhance: ノートの通報時にリモートのノートであっても自インスタンスにおけるノートのリンクを含むように
|
||||
- Enhance: オフライン表示のデザインを改善・多言語対応
|
||||
- Fix: ネイティブモードの絵文字がモノクロにならないように
|
||||
- Fix: v2023.12.0で追加された「モデレーターがユーザーのアイコンもしくはバナー画像を未設定状態にできる機能」が管理画面上で正しく表示されていない問題を修正
|
||||
- Fix: AiScriptの`readline`関数が不正な値を返すことがある問題のv2023.12.0時点での修正がPlay以外に適用されていないのを修正
|
||||
- Fix: v2023.12.1で追加された`$[clickable ...]`および`onClickEv`が正しく機能していないのを修正
|
||||
- Fix: Renoteのキーボードショートカットが機能していなかった問題を修正
|
||||
- Fix: 投稿フォームでアンケートの日時指定をした状態で再読み込みをすると期日が復元されない問題を修正
|
||||
- Fix: アンケートを設定したノートを「削除して編集」をするとアンケートの期日が引き継がれず、リセットされてしまう問題を修正
|
||||
- Fix: デッキのプロファイル作成時に名前を空にできる問題を修正
|
||||
- Fix: テーマ作成時に名称が空欄でも作成できてしまう問題を修正
|
||||
- Fix: プラグインで`Plugin:register_note_post_interruptor`を使用すると、ノートが投稿できなくなる問題を修正
|
||||
- Fix: iOSで大きな画像を変換してアップロードできない問題を修正
|
||||
- Fix: 「アニメーション画像を再生しない」もしくは「データセーバー(アイコン)」を有効にしていても、アイコンデコレーションのアニメーションが停止されない問題を修正
|
||||
- Fix: 画像をクロップするとクロップ後の解像度が異様に低くなる問題の修正
|
||||
- Fix: 画像をクロップ時、正常に完了できない問題の修正
|
||||
- Fix: キャプションが空の画像をクロップするとキャプションにnullという文字列が入ってしまう問題の修正
|
||||
- Fix: プロフィールを編集してもリロードするまで反映されない問題を修正
|
||||
- Fix: エラー画像URLを設定した後解除すると,デフォルトの画像が表示されない問題の修正
|
||||
- Fix: MkCodeEditorで行がずれていってしまう問題の修正
|
||||
- Fix: Summaly proxy利用時にプレイヤーが動作しないことがあるのを修正 #13196
|
||||
|
||||
### Server
|
||||
- Enhance: 連合先のレートリミットを超過した際にリトライするようになりました
|
||||
- Enhance: ActivityPub Deliver queueでBodyを事前処理するように (#12916)
|
||||
- Enhance: クリップをエクスポートできるように
|
||||
- Enhance: `/files`のファイルに対してHTTP Rangeリクエストを行えるように
|
||||
- Enhance: `api.json`のOpenAPI Specificationを3.1.0に更新
|
||||
- Enhance: 連合向けのノート配信を軽量化 #13192
|
||||
- Fix: `drive/files/update`でファイル名のバリデーションが機能していない問題を修正
|
||||
- Fix: `notes/create`で、`text`が空白文字のみで構成されているか`null`であって、かつ`text`だけであるリクエストに対するレスポンスが400になるように変更
|
||||
- Fix: `notes/create`で、`text`が空白文字のみで構成されていてかつリノート、ファイルまたは投票を含んでいるリクエストに対するレスポンスの`text`が`""`から`null`になるように変更
|
||||
- Fix: ipv4とipv6の両方が利用可能な環境でallowedPrivateNetworksが設定されていた場合プライベートipの検証ができていなかった問題を修正
|
||||
- Fix: properly handle cc followers
|
||||
- Fix: ジョブに関する設定の名前を修正 relashionshipJobPerSec -> relationshipJobPerSec
|
||||
- Fix: コントロールパネル->モデレーション->「誰でも新規登録できるようにする」の初期値をONからOFFに変更 #13122
|
||||
- Fix: リモートユーザーが復活してもキャッシュにより該当ユーザーのActivityが受け入れられないのを修正 #13273
|
||||
|
||||
## 2023.12.2
|
||||
|
||||
### General
|
||||
- v2023.12.1でDockerを利用してサーバーを起動できない問題を修正
|
||||
|
||||
### Client
|
||||
- Enhance: 検索画面においてEnterキー押下で検索できるように
|
||||
|
||||
## 2023.12.1
|
||||
|
||||
### Note
|
||||
@ -124,7 +228,6 @@
|
||||
- Fix: WebKitブラウザー上でも「デバイスの画面を常にオンにする」機能が効くように
|
||||
- Fix: ページ一覧ページの表示がモバイル環境において崩れているのを修正
|
||||
- Fix: MFMでルビの中のテキストがnyaizeされない問題を修正
|
||||
- Enhance: 検索画面においてEnterキー押下で検索できるように
|
||||
|
||||
### Server
|
||||
- Enhance: MFM `$[ruby ]` が他ソフトウェアと連合されるように
|
||||
|
@ -1,8 +1,8 @@
|
||||
<!--
|
||||
## 4.x.x
|
||||
출시일: unreleased<br>
|
||||
기반 Misskey 버전: 2023.x.x<br>
|
||||
Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023xx](CHANGELOG.md#2023xx) 문서를 참고하십시오.
|
||||
기반 Misskey 버전: 2024.x.x<br>
|
||||
Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2024xx](CHANGELOG.md#2024xx) 문서를 참고하십시오.
|
||||
|
||||
## NOTE
|
||||
-
|
||||
@ -23,13 +23,30 @@ Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023xx](CHANGE
|
||||
# 릴리즈 노트
|
||||
이 문서는 CherryPick의 변경 사항만 포함합니다.
|
||||
|
||||
## 4.7.0
|
||||
출시일: 2024/3/19<br>
|
||||
기반 Misskey 버전: 2024.2.0<br>
|
||||
Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#202420](CHANGELOG.md#202420) 문서를 참고하십시오.
|
||||
|
||||
### Client
|
||||
- Feat: 리노트 공개 범위를 지정할 수 있음 (kokonect-link/cherrypick#406)
|
||||
- 이 기능은 '리노트 공개 범위 옵션 표시' 기능이 꺼져있어야 합니다.
|
||||
- Enhance: 빌트인 테마를 설치하려고 할 때 오류 메시지 개선
|
||||
- Enhance: '노트를 클릭하여 자세히 표시' 기능 개선
|
||||
- 노트를 두 번 클릭해서 열 수 있음
|
||||
- Fix: 장식 추가로 일부 태그를 추가할 수 없음
|
||||
- Fix: 알림 위젯 필터링이 작동하지 않을 수 있음 (kokonect-link/cherrypick#404)
|
||||
- Fix: 노트 자세히 보기에서 노트 작성 폼을 클릭하면 내용이 초기화될 수 있음 (kokonect-link/cherrypick#410)
|
||||
- Fix: '설정 - 타임라인' 페이지가 표시되지 않음
|
||||
- Fix: '노트 - 리액션 목록' 기능이 작동하지 않음
|
||||
|
||||
---
|
||||
|
||||
## 4.6.0
|
||||
출시일: 2024/1/08<br>
|
||||
출시일: 2024/1/8<br>
|
||||
기반 Misskey 버전: 2023.12.2<br>
|
||||
Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023122](CHANGELOG.md#2023122) 문서를 참고하십시오.
|
||||
|
||||
> Misskey에서의 마이그레이션 문제를 해결하기 위해, 기존 CherryPick 서버에서는 이 버전으로 업데이트 후 노트 편집 시각 기록이 모두 삭제됩니다.
|
||||
|
||||
### General
|
||||
- Change: 노트를 번역할 때 유저가 고양이로 설정되어 있으면 nyaize를 적용
|
||||
- Change: Misskey 또는 CherryPick v4.3.0 이전 버전에서 마이그레이션 시, 마이그레이션 관련 대화 상자가 표시됨
|
||||
@ -113,7 +130,6 @@ Misskey의 전체 변경 사항을 확인하려면, [CHANGELOG.md#2023122](CHANG
|
||||
- Fix: redisForJobQueue의 maxRetriesPerRequest를 null로 설정 (MisskeyIO/misskey#272)
|
||||
- Fix: Inbox 또는 Deliver 큐에 data 필드가 비어 있는 작업이 등록되지 않도록 (MisskeyIO/misskey#307)
|
||||
- Fix: Misskey에서 CherryPick으로 마이그레이션 하면 타임라인이 표시되지 않음
|
||||
- 이 변경으로 인해 기존 CherryPick 서버에서 노트 편집 시각 기록이 모두 삭제됩니다.
|
||||
|
||||
---
|
||||
|
||||
|
@ -122,6 +122,19 @@ command.
|
||||
If you have not changed it from the default, it will be "http://localhost:3000".
|
||||
If "port" in .config/default.yml is set to something other than 3000, you need to change the proxy settings in packages/frontend/vite.config.local-dev.ts.
|
||||
|
||||
### `CP_DEV_PREFER=backend pnpm dev`
|
||||
pnpm dev has another mode with `CP_DEV_PREFER=backend`.
|
||||
|
||||
```
|
||||
CP_DEV_PREFER=backend pnpm dev
|
||||
```
|
||||
|
||||
- This mode is closer to the production environment than the default mode.
|
||||
- Vite runs behind the backend (the backend will proxy Vite at /vite).
|
||||
- You can see CherryPick by accessing `http://localhost:3000` (Replace `3000` with the port configured with `port` in .config/default.yml).
|
||||
- To change the port of Vite, specify with `VITE_PORT` environment variable.
|
||||
- HMR may not work in some environments such as Windows.
|
||||
|
||||
### Dev Container
|
||||
Instead of running `pnpm` locally, you can use Dev Container to set up your development environment.
|
||||
To use Dev Container, open the project directory on VSCode with Dev Containers installed.
|
||||
@ -293,12 +306,10 @@ export const argTypes = {
|
||||
Also, you can use msw to mock API requests in the storybook. Creating a `MyComponent.stories.msw.ts` file to define the mock handlers.
|
||||
|
||||
```ts
|
||||
import { rest } from 'msw';
|
||||
import { HttpResponse, http } from 'msw';
|
||||
export const handlers = [
|
||||
rest.post('/api/notes/timeline', (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.json([]),
|
||||
);
|
||||
http.post('/api/notes/timeline', ({ request }) => {
|
||||
return HttpResponse.json([]);
|
||||
}),
|
||||
];
|
||||
```
|
||||
|
14
Dockerfile
14
Dockerfile
@ -24,14 +24,16 @@ COPY --link ["packages/backend/package.json", "./packages/backend/"]
|
||||
COPY --link ["packages/frontend/package.json", "./packages/frontend/"]
|
||||
COPY --link ["packages/sw/package.json", "./packages/sw/"]
|
||||
COPY --link ["packages/cherrypick-js/package.json", "./packages/cherrypick-js/"]
|
||||
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
||||
COPY --link ["packages/misskey-bubble-game/package.json", "./packages/misskey-bubble-game/"]
|
||||
|
||||
ARG NODE_ENV=production
|
||||
|
||||
RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \
|
||||
pnpm i --frozen-lockfile --aggregate-output
|
||||
|
||||
COPY --link . ./
|
||||
|
||||
ARG NODE_ENV=production
|
||||
|
||||
RUN git submodule update --init
|
||||
RUN pnpm build
|
||||
RUN rm -rf .git/
|
||||
@ -52,6 +54,10 @@ COPY --link ["pnpm-lock.yaml", "pnpm-workspace.yaml", "package.json", "./"]
|
||||
COPY --link ["scripts", "./scripts"]
|
||||
COPY --link ["packages/backend/package.json", "./packages/backend/"]
|
||||
COPY --link ["packages/cherrypick-js/package.json", "./packages/cherrypick-js/"]
|
||||
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
||||
COPY --link ["packages/misskey-bubble-game/package.json", "./packages/misskey-bubble-game/"]
|
||||
|
||||
ARG NODE_ENV=production
|
||||
|
||||
RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \
|
||||
pnpm i --frozen-lockfile --aggregate-output
|
||||
@ -79,8 +85,12 @@ WORKDIR /cherrypick
|
||||
COPY --chown=cherrypick:cherrypick --from=target-builder /cherrypick/node_modules ./node_modules
|
||||
COPY --chown=cherrypick:cherrypick --from=target-builder /cherrypick/packages/backend/node_modules ./packages/backend/node_modules
|
||||
COPY --chown=cherrypick:cherrypick --from=target-builder /cherrypick/packages/cherrypick-js/node_modules ./packages/cherrypick-js/node_modules
|
||||
COPY --chown=cherrypick:cherrypick --from=target-builder /cherrypick/packages/misskey-reversi/node_modules ./packages/misskey-reversi/node_modules
|
||||
COPY --chown=cherrypick:cherrypick --from=target-builder /cherrypick/packages/misskey-bubble-game/node_modules ./packages/misskey-bubble-game/node_modules
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/built ./built
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/packages/cherrypick-js/built ./packages/cherrypick-js/built
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/packages/misskey-reversi/built ./packages/misskey-reversi/built
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/packages/misskey-bubble-game/built ./packages/misskey-bubble-game/built
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/packages/backend/built ./packages/backend/built
|
||||
COPY --chown=cherrypick:cherrypick --from=native-builder /cherrypick/fluent-emojis /cherrypick/fluent-emojis
|
||||
COPY --chown=cherrypick:cherrypick . ./
|
||||
|
@ -6,6 +6,7 @@ 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)~~ → Done ✔️
|
||||
- Make the number of type errors zero (frontend)
|
||||
- Improve CI
|
||||
- ~~Fix tests~~ → Done ✔️
|
||||
- Fix random test failures - https://github.com/misskey-dev/misskey/issues/7985 and https://github.com/misskey-dev/misskey/issues/7986
|
||||
|
@ -161,11 +161,13 @@ describe('After user signed in', () => {
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get('[data-cy-user-setup-continue]').should('be.visible');
|
||||
// 表示に時間がかかるのでデフォルト秒数だとタイムアウトする
|
||||
cy.get('[data-cy-user-setup-continue]', { timeout: 30000 }).should('be.visible');
|
||||
});
|
||||
|
||||
it('account setup wizard', () => {
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
// 表示に時間がかかるのでデフォルト秒数だとタイムアウトする
|
||||
cy.get('[data-cy-user-setup-continue]', { timeout: 30000 }).click();
|
||||
|
||||
cy.get('[data-cy-user-setup-user-name] input').type('ありす');
|
||||
cy.get('[data-cy-user-setup-user-description] textarea').type('ほげ');
|
||||
@ -214,7 +216,8 @@ describe('After user setup', () => {
|
||||
cy.login('alice', 'alice1234');
|
||||
|
||||
// アカウント初期設定ウィザード
|
||||
cy.get('[data-cy-user-setup] [data-cy-modal-window-close]').click();
|
||||
// 表示に時間がかかるのでデフォルト秒数だとタイムアウトする
|
||||
cy.get('[data-cy-user-setup] [data-cy-modal-window-close]', { timeout: 30000 }).click();
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
});
|
||||
|
||||
|
30
cypress/e2e/router.cy.js
Normal file
30
cypress/e2e/router.cy.js
Normal file
@ -0,0 +1,30 @@
|
||||
describe('Router transition', () => {
|
||||
describe('Redirect', () => {
|
||||
// サーバの初期化。ルートのテストに関しては各describeごとに1度だけ実行で十分だと思う(使いまわした方が早い)
|
||||
before(() => {
|
||||
cy.resetState();
|
||||
|
||||
// インスタンス初期セットアップ
|
||||
cy.registerUser('admin', 'pass', true);
|
||||
|
||||
// ユーザー作成
|
||||
cy.registerUser('alice', 'alice1234');
|
||||
|
||||
cy.login('alice', 'alice1234');
|
||||
|
||||
// アカウント初期設定ウィザード
|
||||
// 表示に時間がかかるのでデフォルト秒数だとタイムアウトする
|
||||
cy.get('[data-cy-user-setup] [data-cy-modal-window-close]', { timeout: 30000 }).click();
|
||||
cy.wait(500);
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
});
|
||||
|
||||
it('redirect to user profile', () => {
|
||||
// テストのためだけに用意されたリダイレクト用ルートに飛ぶ
|
||||
cy.visit('/redirect-test');
|
||||
|
||||
// プロフィールページのURLであることを確認する
|
||||
cy.url().should('include', '/@alice')
|
||||
});
|
||||
});
|
||||
});
|
@ -7,6 +7,7 @@ services:
|
||||
links:
|
||||
- db
|
||||
- redis
|
||||
# - mcaptcha
|
||||
# - meilisearch
|
||||
depends_on:
|
||||
db:
|
||||
@ -48,6 +49,36 @@ services:
|
||||
interval: 5s
|
||||
retries: 20
|
||||
|
||||
# mcaptcha:
|
||||
# restart: always
|
||||
# image: mcaptcha/mcaptcha:latest
|
||||
# networks:
|
||||
# internal_network:
|
||||
# external_network:
|
||||
# aliases:
|
||||
# - localhost
|
||||
# ports:
|
||||
# - 7493:7493
|
||||
# env_file:
|
||||
# - .config/docker.env
|
||||
# environment:
|
||||
# PORT: 7493
|
||||
# MCAPTCHA_redis_URL: "redis://mcaptcha_redis/"
|
||||
# depends_on:
|
||||
# db:
|
||||
# condition: service_healthy
|
||||
# mcaptcha_redis:
|
||||
# condition: service_healthy
|
||||
#
|
||||
# mcaptcha_redis:
|
||||
# image: mcaptcha/cache:latest
|
||||
# networks:
|
||||
# - internal_network
|
||||
# healthcheck:
|
||||
# test: "redis-cli ping"
|
||||
# interval: 5s
|
||||
# retries: 20
|
||||
|
||||
# meilisearch:
|
||||
# restart: always
|
||||
# image: getmeili/meilisearch:v1.3.4
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
# SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
PORT=$(grep '^port:' /cherrypick/.config/default.yml | awk 'NR==1{print $2; exit}')
|
||||
|
@ -360,6 +360,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "فعّل hCaptcha"
|
||||
hcaptchaSiteKey: "مفتاح الموقع"
|
||||
hcaptchaSecretKey: "المفتاح السري"
|
||||
mcaptchaSiteKey: "مفتاح الموقع"
|
||||
mcaptchaSecretKey: "المفتاح السري"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "تمكين reCAPTCHA"
|
||||
recaptchaSiteKey: "مفتاح الموقع"
|
||||
@ -1023,7 +1025,9 @@ expired: "منتهية صلاحيته"
|
||||
icon: "الصورة الرمزية"
|
||||
replies: "رد"
|
||||
renotes: "أعد النشر"
|
||||
sourceCode: "الشفرة المصدرية"
|
||||
flip: "اقلب"
|
||||
lastNDays: "آخر {n} أيام"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "نجح إنشاء حسابك!"
|
||||
letsStartAccountSetup: "إذا كنت جديدًا لنعدّ حسابك الشخصي."
|
||||
@ -1430,6 +1434,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "كل الملاحظات"
|
||||
favoritedNotes: " الملاحظات المفضلة"
|
||||
clips: "مِشبك"
|
||||
followingList: "المتابَعون"
|
||||
muteList: "المستخدمون المكتومون"
|
||||
blockingList: "المستخدمون المحجوبون"
|
||||
@ -1579,3 +1584,6 @@ _moderationLogTypes:
|
||||
suspend: "علِق"
|
||||
resetPassword: "أعد تعيين كلمتك السرية"
|
||||
createInvitation: "ولِّد دعوة"
|
||||
_reversi:
|
||||
total: "المجموع"
|
||||
|
||||
|
@ -357,6 +357,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptcha চালু করুন"
|
||||
hcaptchaSiteKey: "সাইট কী"
|
||||
hcaptchaSecretKey: "সিক্রেট কী"
|
||||
mcaptchaSiteKey: "সাইট কী"
|
||||
mcaptchaSecretKey: "সিক্রেট কী"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA চালু করুন"
|
||||
recaptchaSiteKey: "সাইট কী"
|
||||
@ -866,6 +868,7 @@ youFollowing: "অনুসরণ করা হচ্ছে"
|
||||
icon: "প্রোফাইল ছবি"
|
||||
replies: "জবাব"
|
||||
renotes: "রিনোট"
|
||||
sourceCode: "সোর্স কোড"
|
||||
flip: "উল্টান"
|
||||
_role:
|
||||
priority: "অগ্রাধিকার"
|
||||
@ -1293,6 +1296,7 @@ _profile:
|
||||
changeBanner: "ব্যানার পরিবর্তন করুন"
|
||||
_exportOrImport:
|
||||
allNotes: "সকল নোট"
|
||||
clips: "ক্লিপ"
|
||||
followingList: "অনুসরণ করা হচ্ছে"
|
||||
muteList: "মিউট"
|
||||
blockingList: "ব্লক"
|
||||
@ -1446,3 +1450,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "স্থগিত করা"
|
||||
resetPassword: "পাসওয়ার্ড রিসেট করুন"
|
||||
_reversi:
|
||||
total: "মোট"
|
||||
|
||||
|
1609
locales/ca-ES.yml
1609
locales/ca-ES.yml
File diff suppressed because it is too large
Load Diff
@ -366,6 +366,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Aktivovat hCaptchu"
|
||||
hcaptchaSiteKey: "Klíč stránky"
|
||||
hcaptchaSecretKey: "Tajný Klíč (Secret Key)"
|
||||
mcaptchaSiteKey: "Klíč stránky"
|
||||
mcaptchaSecretKey: "Tajný Klíč (Secret Key)"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Zapnout ReCAPTCHu"
|
||||
recaptchaSiteKey: "Klíč stránky"
|
||||
@ -1003,6 +1005,7 @@ resetPasswordConfirm: "Opravdu chcete resetovat heslo?"
|
||||
sensitiveWords: "Citlivá slova"
|
||||
sensitiveWordsDescription: "Viditelnost všech poznámek obsahujících některé z nakonfigurovaných slov bude automaticky nastavena na \"Domů\". Můžete jich uvést více tak, že je oddělíte pomocí řádků."
|
||||
sensitiveWordsDescription2: "Použití mezer vytvoří výrazy AND a obklopení klíčových slov lomítky je změní na regulární výraz."
|
||||
prohibitedWordsDescription2: "Použití mezer vytvoří výrazy AND a obklopení klíčových slov lomítky je změní na regulární výraz."
|
||||
notesSearchNotAvailable: "Vyhledávání poznámek je nedostupné."
|
||||
license: "Licence"
|
||||
unfavoriteConfirm: "Opravdu chcete odstranit z oblíbených?"
|
||||
@ -1092,7 +1095,9 @@ iHaveReadXCarefullyAndAgree: "Přečetl jsem si text \"{x}\" a souhlasím s ním
|
||||
icon: "Avatar"
|
||||
replies: "Odpovědět"
|
||||
renotes: "Přeposlat"
|
||||
sourceCode: "Zdrojový kód"
|
||||
flip: "Otočit"
|
||||
lastNDays: "Posledních {n} dnů"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "Váš účet byl úspěšně vytvořen!"
|
||||
letsStartAccountSetup: "Pro začátek si nastavte svůj profil."
|
||||
@ -1830,6 +1835,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Všechny poznámky"
|
||||
favoritedNotes: "Oblíbené poznámky"
|
||||
clips: "Oříznout"
|
||||
followingList: "Sledovaní"
|
||||
muteList: "Ztlumit"
|
||||
blockingList: "Zablokovat"
|
||||
@ -2021,3 +2027,6 @@ _moderationLogTypes:
|
||||
suspend: "Zmrazit"
|
||||
resetPassword: "Resetovat heslo"
|
||||
createInvitation: "Vygenerovat pozvánku"
|
||||
_reversi:
|
||||
total: "Celkem"
|
||||
|
||||
|
@ -1,2 +1,3 @@
|
||||
---
|
||||
_lang_: "Dansk"
|
||||
|
||||
|
@ -121,9 +121,15 @@ sensitive: "Sensibel"
|
||||
add: "Hinzufügen"
|
||||
reaction: "Reaktionen"
|
||||
reactions: "Reaktionen"
|
||||
emojiPicker: "Emoji auswählen"
|
||||
pinnedEmojisForReactionSettingDescription: "Lege Emojis fest, die angepinnt werden sollen, um sie beim Reagieren als Erstes anzuzeigen."
|
||||
pinnedEmojisSettingDescription: "Lege Emojis fest, die angepinnt werden sollen, um sie in der Emoji-Auswahl als Erstes anzuzeigen"
|
||||
overwriteFromPinnedEmojisForReaction: "Überschreiben mit den Reaktions-Einstellungen"
|
||||
overwriteFromPinnedEmojis: "Überschreiben mit den allgemeinen Einstellungen"
|
||||
reactionSettingDescription2: "Ziehe um Anzuordnen, klicke um zu löschen, drücke „+“ um hinzuzufügen"
|
||||
rememberNoteVisibility: "Notizsichtbarkeit merken"
|
||||
attachCancel: "Anhang entfernen"
|
||||
deleteFile: "Datei gelöscht"
|
||||
markAsSensitive: "Als sensibel markieren"
|
||||
unmarkAsSensitive: "Als nicht sensibel markieren"
|
||||
enterFileName: "Dateinamen eingeben"
|
||||
@ -178,7 +184,7 @@ searchWith: "Suchen: {q}"
|
||||
youHaveNoLists: "Du hast keine Listen"
|
||||
followConfirm: "Möchtest du {name} wirklich folgen?"
|
||||
proxyAccount: "Proxy-Benutzerkonto"
|
||||
proxyAccountDescription: "Ein Proxy-Benutzerkonto ist ein Benutzerkonto, das sich für Nutzer unter bestimmten Konditionen wie ein Follower aus einer fremden Instanz verhält. Zum Beispiel wird die Aktivität eines Nutzers aus einer fremden Instanz nicht an diese Instanz übermittelt, falls es keinen Benutzer dieser Instanz gibt, der diesem Nutzer aus fremder Instanz folgt. In diesem Fall folgt stattdessen das Proxy-Benutzerkonto."
|
||||
proxyAccountDescription: "Ein Proxy-Konto ist ein Benutzerkonto, das unter bestimmten Bedingungen als Follower für Benutzer fremder Instanzen fungiert. Wenn zum Beispiel ein Benutzer einen Benutzer einer fremden Instanz zu einer Liste hinzufügt, werden die Aktivitäten des entfernten Benutzers nicht an die Instanz übermittelt, wenn kein lokaler Benutzer diesem Benutzer folgt; stattdessen folgt das Proxy-Konto."
|
||||
host: "Hostname"
|
||||
selectUser: "Benutzer auswählen"
|
||||
recipient: "Empfänger"
|
||||
@ -260,6 +266,7 @@ removed: "Erfolgreich gelöscht"
|
||||
removeAreYouSure: "Möchtest du „{x}“ wirklich entfernen?"
|
||||
deleteAreYouSure: "Möchtest du „{x}“ wirklich löschen?"
|
||||
resetAreYouSure: "Wirklich zurücksetzen?"
|
||||
areYouSure: "Bist du sicher?"
|
||||
saved: "Erfolgreich gespeichert"
|
||||
messaging: "Chat"
|
||||
upload: "Hochladen"
|
||||
@ -354,7 +361,7 @@ enableLocalTimeline: "Lokale Chronik aktivieren"
|
||||
enableGlobalTimeline: "Globale Chronik aktivieren"
|
||||
disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle Chroniken, auch wenn diese deaktiviert sind."
|
||||
registration: "Registrieren"
|
||||
enableRegistration: "Registration neuer Benutzer erlauben"
|
||||
enableRegistration: "Registrierung neuer Benutzer erlauben"
|
||||
invite: "Einladen"
|
||||
driveCapacityPerLocalAccount: "Drive-Kapazität pro lokalem Benutzerkonto"
|
||||
driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer fremder Instanzen"
|
||||
@ -372,6 +379,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptcha aktivieren"
|
||||
hcaptchaSiteKey: "Site key"
|
||||
hcaptchaSecretKey: "Secret key"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "mCaptcha aktivieren"
|
||||
mcaptchaSiteKey: "Site key"
|
||||
mcaptchaSecretKey: "Secret key"
|
||||
mcaptchaInstanceUrl: "mCaptcha Instanz-URL"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA aktivieren"
|
||||
recaptchaSiteKey: "Site key"
|
||||
@ -429,7 +441,7 @@ lastUsed: "Zuletzt benutzt"
|
||||
lastUsedAt: "Zuletzt verwendet: {t}"
|
||||
unregister: "Deaktivieren"
|
||||
passwordLessLogin: "Passwortloses Anmelden"
|
||||
passwordLessLoginDescription: "Ermöglicht passwortfreies Einloggen, nur via Security-Token oder Passkey"
|
||||
passwordLessLoginDescription: "Ermöglicht passwortloses Einloggen mit einem Security-Token oder Passkey"
|
||||
resetPassword: "Passwort zurücksetzen"
|
||||
newPasswordIs: "Das neue Passwort ist „{password}“"
|
||||
reduceUiAnimation: "Animationen der Benutzeroberfläche reduzieren"
|
||||
@ -631,6 +643,7 @@ medium: "Mittel"
|
||||
small: "Klein"
|
||||
generateAccessToken: "Zugriffstoken generieren"
|
||||
permission: "Berechtigungen"
|
||||
adminPermission: "Administratorberechtigung"
|
||||
enableAll: "Alle aktivieren"
|
||||
disableAll: "Alle deaktivieren"
|
||||
tokenRequested: "Zugriff zum Benutzerkonto gewähren"
|
||||
@ -1037,6 +1050,7 @@ resetPasswordConfirm: "Wirklich Passwort zurücksetzen?"
|
||||
sensitiveWords: "Sensible Wörter"
|
||||
sensitiveWordsDescription: "Die Notizsichtbarkeit aller Notizen, die diese Wörter enthalten, wird automatisch auf \"Startseite\" gesetzt. Durch Zeilenumbrüche können mehrere konfiguriert werden."
|
||||
sensitiveWordsDescription2: "Durch die Verwendung von Leerzeichen können AND-Verknüpfungen angegeben werden und durch das Umgeben von Schrägstrichen können reguläre Ausdrücke verwendet werden."
|
||||
prohibitedWordsDescription2: "Durch die Verwendung von Leerzeichen können AND-Verknüpfungen angegeben werden und durch das Umgeben von Schrägstrichen können reguläre Ausdrücke verwendet werden."
|
||||
hiddenTags: "Ausgeblendete Hashtags"
|
||||
hiddenTagsDescription: "Die hier eingestellten Tags werden nicht mehr in den Trends angezeigt. Mit der Umschalttaste können mehrere ausgewählt werden."
|
||||
notesSearchNotAvailable: "Die Notizsuche ist nicht verfügbar."
|
||||
@ -1158,6 +1172,7 @@ hideRepliesToOthersInTimelineAll: "Antworten von allen momentan gefolgten Benutz
|
||||
confirmShowRepliesAll: "Dies ist eine unwiderrufliche Aktion. Wirklich Antworten von allen momentan gefolgten Benutzern in der Chronik anzeigen?"
|
||||
confirmHideRepliesAll: "Dies ist eine unwiderrufliche Aktion. Wirklich Antworten von allen momentan gefolgten Benutzern nicht in der Chronik anzeigen?"
|
||||
externalServices: "Externe Dienste"
|
||||
sourceCode: "Quellcode"
|
||||
impressum: "Impressum"
|
||||
impressumUrl: "Impressums-URL"
|
||||
impressumDescription: "In manchen Ländern, wie Deutschland und dessen Umgebung, ist die Angabe von Betreiberinformationen (ein Impressum) bei kommerziellem Betrieb zwingend."
|
||||
@ -1179,6 +1194,10 @@ signupPendingError: "Beim Überprüfen der Mailadresse ist etwas schiefgelaufen.
|
||||
cwNotationRequired: "Ist \"Inhaltswarnung verwenden\" aktiviert, muss eine Beschreibung gegeben werden."
|
||||
doReaction: "Reagieren"
|
||||
code: "Code"
|
||||
decorate: "Dekorieren"
|
||||
addMfmFunction: "MFM hinzufügen"
|
||||
sfx: "Soundeffekte"
|
||||
lastNDays: "Letzten {n} Tage"
|
||||
_announcement:
|
||||
forExistingUsers: "Nur für existierende Nutzer"
|
||||
forExistingUsersDescription: "Ist diese Option aktiviert, wird diese Ankündigung nur Nutzern angezeigt, die zum Zeitpunkt der Ankündigung bereits registriert sind. Ist sie deaktiviert, wird sie auch Nutzern, die sich nach dessen Veröffentlichung registrieren, angezeigt."
|
||||
@ -1188,6 +1207,7 @@ _announcement:
|
||||
tooManyActiveAnnouncementDescription: "Zu viele aktive Ankündigungen können die Benutzerfreundlichkeit verschlechtern. Es wird empfohlen, veraltete Ankündigungen zu archivieren."
|
||||
readConfirmTitle: "Als gelesen markieren?"
|
||||
readConfirmText: "Dies markiert den Inhalt von \"{title}\" als gelesen."
|
||||
shouldNotBeUsedToPresentPermanentInfo: "Es wird empfohlen, Ankündigungen für aktuelle und zeitlich begrenzte Neuigkeiten zu nutzen, statt für Informationen, die langfristig relevant sind."
|
||||
dialogAnnouncementUxWarn: "Bei der Verwendung von mehr als zwei Meldungen im Dialog-Format wird um Vorsicht geboten, da dies negative Auswirkungen auf die UX haben kann."
|
||||
silence: "Keine Benachrichtigung"
|
||||
silenceDescription: "Wenn aktiviert, gibt diese Meldung keine Nachricht aus und muss nicht als \"gelesen\" markiert werden."
|
||||
@ -1217,6 +1237,24 @@ _initialTutorial:
|
||||
description: "Hier kannst du sehen, wie CherryPick funktioniert"
|
||||
_note:
|
||||
title: "Was sind Notizen?"
|
||||
description: "Beiträge auf CherryPick heißen \"Notizen\". Notizen werden chronologisch in der Chronik angeordnet und in Echtzeit aktualisiert."
|
||||
reply: "Klicke auf diesen Button, um auf eine Nachricht zu antworten. Es ist auch möglich, auf Antworten zu antworten und die Unterhaltung wie einen Thread fortzusetzen."
|
||||
_reaction:
|
||||
title: "Was sind Reaktionen?"
|
||||
reactToContinue: "Füge eine Reaktion hinzu, um fortzufahren."
|
||||
reactNotification: "Du erhältst Echtzeit-Benachrichtigungen, wenn jemand auf deine Notiz reagiert."
|
||||
_postNote:
|
||||
_visibility:
|
||||
description: "Du kannst einschränken, wer deine Notiz sehen kann."
|
||||
public: "Deine Notiz wird für alle Nutzer sichtbar sein."
|
||||
doNotSendConfidencialOnDirect1: "Sei vorsichtig, wenn du sensible Informationen verschickst!"
|
||||
_cw:
|
||||
title: "Inhaltswarnung"
|
||||
_done:
|
||||
title: "Du hast das Tutorial abgeschlossen! 🎉"
|
||||
_timelineDescription:
|
||||
local: "In der lokalen Chronik siehst du Notizen von allen Benutzern auf diesem Server."
|
||||
global: "In der globalen Chronik siehst du Notizen von allen föderierten Servern."
|
||||
_serverRules:
|
||||
description: "Eine Reihe von Regeln, die vor der Registrierung angezeigt werden. Eine Zusammenfassung der Nutzungsbedingungen anzuzeigen ist empfohlen."
|
||||
_serverSettings:
|
||||
@ -1229,6 +1267,8 @@ _serverSettings:
|
||||
shortName: "Abkürzung"
|
||||
shortNameDescription: "Ein Kürzel für den Namen der Instanz, der angezeigt werden kann, falls der volle Instanzname lang ist."
|
||||
fanoutTimelineDescription: "Ist diese Option aktiviert, kann eine erhebliche Verbesserung im Abrufen von Chroniken und eine Reduzierung der Datenbankbelastung erzielt werden, im Gegenzug zu einer Steigerung in der Speichernutzung von Redis. Bei geringem Serverspeicher oder Serverinstabilität kann diese Option deaktiviert werden."
|
||||
fanoutTimelineDbFallback: "Auf die Datenbank zurückfallen"
|
||||
fanoutTimelineDbFallbackDescription: "Ist diese Option aktiviert, wird die Chronik auf zusätzliche Abfragen in der Datenbank zurückgreifen, wenn sich die Chronik nicht im Cache befindet. Eine Deaktivierung führt zu geringerer Serverlast, aber schränkt den Zeitraum der abrufbaren Chronik ein. "
|
||||
_accountMigration:
|
||||
moveFrom: "Von einem anderen Konto zu diesem migrieren"
|
||||
moveFromSub: "Alias für ein anderes Konto erstellen"
|
||||
@ -1489,6 +1529,8 @@ _achievements:
|
||||
_smashTestNotificationButton:
|
||||
title: "Testüberfluss"
|
||||
description: "Betätige den Benachrichtigungstest mehrfach innerhalb einer extrem kurzen Zeitspanne"
|
||||
_tutorialCompleted:
|
||||
description: "Tutorial abgeschlossen"
|
||||
_role:
|
||||
new: "Rolle erstellen"
|
||||
edit: "Rolle bearbeiten"
|
||||
@ -1499,7 +1541,9 @@ _role:
|
||||
assignTarget: "Zuweisungsart"
|
||||
descriptionOfAssignTarget: "<b>Manuell</b> bedeutet, dass die Liste der Benutzer einer Rolle manuell verwaltet wird.\n<b>Konditional</b> bedeutet, dass die Liste der Benutzer einer Rolle durch eine Bedingung automatisch verwaltet wird."
|
||||
manual: "Manuell"
|
||||
manualRoles: "Manuelle Rollen"
|
||||
conditional: "Konditional"
|
||||
conditionalRoles: "Bedingte Rolle"
|
||||
condition: "Bedingung"
|
||||
isConditionalRole: "Dies ist eine konditionale Rolle."
|
||||
isPublic: "Öffentliche Rolle"
|
||||
@ -1542,13 +1586,14 @@ _role:
|
||||
webhookMax: "Maximale Anzahl an Webhooks"
|
||||
clipMax: "Maximale Anzahl an Clips"
|
||||
noteEachClipsMax: "Maximale Anzahl an Notizen innerhalb eines Clips"
|
||||
userListMax: "Maximale Anzahl an Benutzern in einer Benutzerliste"
|
||||
userEachUserListsMax: "Maximale Anzahl an Benutzerlisten"
|
||||
userListMax: "Maximale Anzahl an Benutzerlisten"
|
||||
userEachUserListsMax: "Maximale Anzahl an Benutzern in einer Benutzerliste"
|
||||
rateLimitFactor: "Versuchsanzahl"
|
||||
descriptionOfRateLimitFactor: "Je niedriger desto weniger restriktiv, je höher destro restriktiver."
|
||||
canHideAds: "Kann Werbung ausblenden"
|
||||
canSearchNotes: "Nutzung der Notizsuchfunktion"
|
||||
canUseTranslator: "Verwendung des Übersetzers"
|
||||
avatarDecorationLimit: "Maximale Anzahl an Profilbilddekorationen, die angebracht werden können"
|
||||
_condition:
|
||||
isLocal: "Lokaler Benutzer"
|
||||
isRemote: "Benutzer fremder Instanz"
|
||||
@ -1577,6 +1622,7 @@ _emailUnavailable:
|
||||
disposable: "Wegwerf-Email-Adressen können nicht verwendet werden"
|
||||
mx: "Dieser Email-Server ist ungültig"
|
||||
smtp: "Dieser Email-Server antwortet nicht"
|
||||
banned: "Du kannst dich mit dieser E-Mail-Adresse nicht registrieren"
|
||||
_ffVisibility:
|
||||
public: "Öffentlich"
|
||||
followers: "Nur für Follower sichtbar"
|
||||
@ -1974,6 +2020,7 @@ _widgets:
|
||||
_userList:
|
||||
chooseList: "Liste auswählen"
|
||||
clicker: "Klickzähler"
|
||||
birthdayFollowings: "Nutzer, die heute Geburtstag haben"
|
||||
_cw:
|
||||
hide: "Inhalt verbergen"
|
||||
show: "Inhalt anzeigen"
|
||||
@ -2039,6 +2086,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Alle Notizen"
|
||||
favoritedNotes: "Als Favorit markierte Notizen"
|
||||
clips: "Clip erstellen"
|
||||
followingList: "Gefolgte Benutzer"
|
||||
muteList: "Stummschaltungen"
|
||||
blockingList: "Blockierungen"
|
||||
@ -2324,3 +2372,10 @@ _externalResourceInstaller:
|
||||
_themeInstallFailed:
|
||||
title: "Das Farbschema konnte nicht installiert werden"
|
||||
description: "Während der Installation des Farbschemas ist ein Problem aufgetreten. Bitte versuche es erneut. Detaillierte Fehlerinformationen können über die Javascript-Konsole abgerufen werden."
|
||||
_reversi:
|
||||
blackOrWhite: "Schwarz/Weiß"
|
||||
rules: "Regeln"
|
||||
black: "Schwarz"
|
||||
white: "Weiß"
|
||||
total: "Gesamt"
|
||||
|
||||
|
@ -358,6 +358,7 @@ _profile:
|
||||
username: "Όνομα μέλους"
|
||||
_exportOrImport:
|
||||
allNotes: "Όλα τα σημειώματα"
|
||||
clips: "Κλιπ"
|
||||
followingList: "Ακολουθεί"
|
||||
muteList: "Μέλη σε σίγαση"
|
||||
blockingList: "Μπλοκαρισμένα μέλη"
|
||||
@ -397,3 +398,6 @@ _webhookSettings:
|
||||
name: "Όνομα"
|
||||
_moderationLogTypes:
|
||||
suspend: "Αποβολή"
|
||||
_reversi:
|
||||
total: "Σύνολο"
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
---
|
||||
_lang_: "English"
|
||||
forceRenoteVisibilitySelector: "Specify visibility of renote"
|
||||
cherrypickLabs: "CherryPick Labs"
|
||||
cherrypickLabsDescription: "Why not try some of the features that are still under development? Some features may not work properly."
|
||||
copiedLink: "The link has been copied!"
|
||||
@ -201,10 +202,15 @@ add: "Add"
|
||||
reaction: "Reactions"
|
||||
reactions: "Reactions"
|
||||
emojiPicker: "Emoji picker"
|
||||
pinnedEmojisForReactionSettingDescription: "Set the emojis which should be pinned and displayed immediately when reacting."
|
||||
pinnedEmojisSettingDescription: "Set the emojis to be pinned and displayed when viewing emoji picker"
|
||||
emojiPickerDisplay: "Emoji picker display"
|
||||
overwriteFromPinnedEmojisForReaction: "Override from reaction settings"
|
||||
overwriteFromPinnedEmojis: "Override from general settings"
|
||||
reactionSettingDescription2: "Drag to reorder, click to delete, press \"+\" to add."
|
||||
rememberNoteVisibility: "Remember note visibility settings"
|
||||
attachCancel: "Remove attachment"
|
||||
deleteFile: "File deleted"
|
||||
markAsSensitive: "Mark as sensitive"
|
||||
unmarkAsSensitive: "Unmark as sensitive"
|
||||
enterFileName: "Enter filename"
|
||||
@ -455,6 +461,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Enable hCaptcha"
|
||||
hcaptchaSiteKey: "Site key"
|
||||
hcaptchaSecretKey: "Secret key"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "Enable mCaptcha"
|
||||
mcaptchaSiteKey: "Site key"
|
||||
mcaptchaSecretKey: "Secret key"
|
||||
mcaptchaInstanceUrl: "mCaptcha instance URL"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Enable reCAPTCHA"
|
||||
recaptchaSiteKey: "Site key"
|
||||
@ -721,6 +732,7 @@ medium: "Medium"
|
||||
small: "Small"
|
||||
generateAccessToken: "Generate access token"
|
||||
permission: "Permissions"
|
||||
adminPermission: "Admin Permissions"
|
||||
enableAll: "Enable all"
|
||||
disableAll: "Disable all"
|
||||
tokenRequested: "Grant access to account"
|
||||
@ -737,7 +749,7 @@ smtpHost: "Host"
|
||||
smtpPort: "Port"
|
||||
smtpUser: "Username"
|
||||
smtpPass: "Password"
|
||||
emptyToDisableSmtpAuth: "Leave username and password empty to disable SMTP verification"
|
||||
emptyToDisableSmtpAuth: "Leave username and password empty to disable SMTP authentication"
|
||||
smtpSecure: "Use implicit SSL/TLS for SMTP connections"
|
||||
smtpSecureInfo: "Turn this off when using STARTTLS"
|
||||
testEmail: "Test email delivery"
|
||||
@ -764,6 +776,7 @@ useGlobalSettingDesc: "If turned on, your account's notification settings will b
|
||||
other: "Other"
|
||||
regenerateLoginToken: "Regenerate login token"
|
||||
regenerateLoginTokenDescription: "Regenerates the token used internally during login. Normally this action is not necessary. If regenerated, all devices will be logged out."
|
||||
theKeywordWhenSearchingForCustomEmoji: "This is the keyword when searching for custom emojis."
|
||||
setMultipleBySeparatingWithSpace: "Separate multiple entries with spaces."
|
||||
fileIdOrUrl: "File ID or URL"
|
||||
behavior: "Behavior"
|
||||
@ -1134,6 +1147,7 @@ resetPasswordConfirm: "Really reset your password?"
|
||||
sensitiveWords: "Sensitive words"
|
||||
sensitiveWordsDescription: "The visibility of all notes containing any of the configured words will be set to \"Home\" automatically. You can list multiple by separating them via line breaks."
|
||||
sensitiveWordsDescription2: "Using spaces will create AND expressions and surrounding keywords with slashes will turn them into a regular expression."
|
||||
prohibitedWordsDescription2: "Using spaces will create AND expressions and surrounding keywords with slashes will turn them into a regular expression."
|
||||
hiddenTags: "Hidden hashtags"
|
||||
hiddenTagsDescription: "Select tags which will not shown on trend list.\nMultiple tags could be registered by lines."
|
||||
notesSearchNotAvailable: "Note search is unavailable."
|
||||
@ -1152,6 +1166,8 @@ limitWidthOfReaction: "Limits the maximum width of reactions and display them in
|
||||
noteIdOrUrl: "Note ID or URL"
|
||||
video: "Video"
|
||||
videos: "Videos"
|
||||
audio: "Audio"
|
||||
audioFiles: "Audio"
|
||||
dataSaver: "Data Saver"
|
||||
accountMigration: "Account Migration"
|
||||
accountMoved: "This user has moved to a new account:"
|
||||
@ -1261,6 +1277,7 @@ hideRepliesToOthersInTimelineAll: "Hide replies to others from everyone you foll
|
||||
confirmShowRepliesAll: "This operation is irreversible. Would you really like to show replies to others from everyone you follow in your timeline?"
|
||||
confirmHideRepliesAll: "This operation is irreversible. Would you really like to hide replies to others from everyone you follow in your timeline?"
|
||||
externalServices: "External Services"
|
||||
sourceCode: "Source code"
|
||||
impressum: "Impressum"
|
||||
impressumUrl: "Impressum URL"
|
||||
impressumDescription: "In some countries, like germany, the inclusion of operator contact information (an Impressum) is legally required for commercial websites."
|
||||
@ -1270,6 +1287,7 @@ tosAndPrivacyPolicy: "Terms of Service and Privacy Policy"
|
||||
avatarDecorations: "Avatar decorations"
|
||||
attach: "Attach"
|
||||
detach: "Remove"
|
||||
detachAll: "Remove All"
|
||||
angle: "Angle"
|
||||
flip: "Flip"
|
||||
showAvatarDecorations: "Show avatar decorations"
|
||||
@ -1283,7 +1301,25 @@ cwNotationRequired: "If \"Hide content\" is enabled, a description must be provi
|
||||
doReaction: "Add reaction"
|
||||
code: "Code"
|
||||
reloadRequiredToApplySettings: "Reloading is required to apply the settings."
|
||||
remainingN: "Remaining: {n}"
|
||||
overwriteContentConfirm: "Are you sure you want to overwrite the current content?"
|
||||
seasonalScreenEffect: "Seasonal Screen Effect"
|
||||
decorate: "Decorate"
|
||||
addMfmFunction: "Add MFM"
|
||||
enableQuickAddMfmFunction: "Show advanced MFM picker"
|
||||
bubbleGame: "Bubble Game"
|
||||
sfx: "Sound Effects"
|
||||
soundWillBePlayed: "Sound will be played"
|
||||
showReplay: "View Replay"
|
||||
replay: "Replay"
|
||||
replaying: "Showing replay"
|
||||
ranking: "Ranking"
|
||||
lastNDays: "Last {n} days"
|
||||
backToTitle: "Go back to title"
|
||||
hemisphere: "Where are you located"
|
||||
withSensitive: "Include notes with sensitive files"
|
||||
userSaysSomethingSensitive: "Post by {name} contains sensitive content"
|
||||
enableHorizontalSwipe: "Swipe to switch tabs"
|
||||
showUnreadNotificationsCount: "Show the number of unread notifications"
|
||||
showCatOnly: "Show only cats"
|
||||
additionalPermissionsForFlash: "Allow to add permission to Play"
|
||||
@ -1306,6 +1342,12 @@ _showingAnimatedImages:
|
||||
inactive: "Stop after a certain amount of time"
|
||||
_messaging:
|
||||
direct: "Direct Message"
|
||||
_bubbleGame:
|
||||
howToPlay: "How to play"
|
||||
_howToPlay:
|
||||
section1: "Adjust the position and drop the object into the box."
|
||||
section2: "When two objects of the same type touch each other, they will change into a different object and you score points."
|
||||
section3: "The game is over when objects overflow from the box. Aim for a high score by fusing objects together while you avoid overflowing the box!"
|
||||
_announcement:
|
||||
forExistingUsers: "Existing users only"
|
||||
forExistingUsersDescription: "This announcement will only be shown to users existing at the point of publishment if enabled. If disabled, those newly signing up after it has been posted will also see it."
|
||||
@ -1315,7 +1357,7 @@ _announcement:
|
||||
tooManyActiveAnnouncementDescription: "Having too many active announcements may worsen the user experience. Please consider archiving announcements that have become obsolete."
|
||||
readConfirmTitle: "Mark as read?"
|
||||
readConfirmText: "This will mark the contents of \"{title}\" as read."
|
||||
shouldNotBeUsedToPresentPermanentInfo: "As it may significantly impact the user experience for new users, it is recommended to use notifications in the flow information rather than stock information."
|
||||
shouldNotBeUsedToPresentPermanentInfo: "It's best to use announcements to publish fresh and time-bound information, not for information that will be relevant in the long term."
|
||||
dialogAnnouncementUxWarn: "Having two or more dialog-style notifications simultaneously can significantly impact the user experience, so please use them carefully."
|
||||
silence: "No notification"
|
||||
silenceDescription: "Turning this on will skip the notification of this announcement and the user won't need to read it."
|
||||
@ -1336,6 +1378,10 @@ _cherrypick:
|
||||
showRenoteConfirmPopupDescription: "This setting must have the \"General - Show renote and quote buttons separately\" setting turned on."
|
||||
expandOnNoteClick: "Open note on click"
|
||||
expandOnNoteClickDescription: "If disabled, you can still open 'Details' in the notes menu or by clicking the timestamp."
|
||||
expandOnNoteClickBehavior: "When click to open a note"
|
||||
_expandOnNoteClickBehavior:
|
||||
click: "Click to open"
|
||||
doubleClick: "Double-click to open"
|
||||
displayHeaderNavBarWhenScroll: "Show elements when scrolling (header, floating buttons, navigation bar)"
|
||||
_displayHeaderNavBarWhenScroll:
|
||||
all: "Display all"
|
||||
@ -1756,6 +1802,13 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "CherryPick Elementary Course Diploma"
|
||||
description: "Tutorial completed"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "The biggest object in the bubble game"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "Double🤯"
|
||||
description: "Two of the biggest objects in the bubble game at the same time"
|
||||
flavor: "You can fill a lunch box like this 🤯 🤯 a bit."
|
||||
_role:
|
||||
new: "New role"
|
||||
edit: "Edit role"
|
||||
@ -1818,6 +1871,7 @@ _role:
|
||||
canHideAds: "Can hide ads"
|
||||
canSearchNotes: "Usage of note search"
|
||||
canUseTranslator: "Translator usage"
|
||||
avatarDecorationLimit: "Maximum number of avatar decorations that can be applied"
|
||||
_condition:
|
||||
isLocal: "Local user"
|
||||
isRemote: "Remote user"
|
||||
@ -1850,6 +1904,7 @@ _emailUnavailable:
|
||||
disposable: "Disposable email addresses may not be used"
|
||||
mx: "This email server is invalid"
|
||||
smtp: "This email server is not responding"
|
||||
banned: "You cannot register with this email address"
|
||||
_ffVisibility:
|
||||
public: "Public"
|
||||
followers: "Visible to followers only"
|
||||
@ -2231,6 +2286,55 @@ _permissions:
|
||||
"write:flash": "Edit Plays"
|
||||
"read:flash-likes": "View list of liked Plays"
|
||||
"write:flash-likes": "Edit list of liked Plays"
|
||||
"read:admin:abuse-user-reports": "View user reports"
|
||||
"write:admin:delete-account": "Delete user account"
|
||||
"write:admin:delete-all-files-of-a-user": "Delete all files of a user"
|
||||
"read:admin:index-stats": "View database index stats"
|
||||
"read:admin:table-stats": "View database table stats"
|
||||
"read:admin:user-ips": "View user IP addresses"
|
||||
"read:admin:meta": "View instance metadata"
|
||||
"write:admin:reset-password": "Reset user password"
|
||||
"write:admin:resolve-abuse-user-report": "Resolve user report"
|
||||
"write:admin:send-email": "Send email"
|
||||
"read:admin:server-info": "View server info"
|
||||
"read:admin:show-moderation-log": "View moderation log"
|
||||
"read:admin:show-user": "View private user info"
|
||||
"read:admin:show-users": "View private user info"
|
||||
"write:admin:suspend-user": "Suspend user"
|
||||
"write:admin:unset-user-avatar": "Remove user avatar"
|
||||
"write:admin:unset-user-banner": "Remove user banner"
|
||||
"write:admin:unsuspend-user": "Unsuspend user"
|
||||
"write:admin:meta": "Manage instance metadata"
|
||||
"write:admin:user-note": "Manage moderation note"
|
||||
"write:admin:roles": "Manage roles"
|
||||
"read:admin:roles": "View roles"
|
||||
"write:admin:relays": "Manage relays"
|
||||
"read:admin:relays": "View relays"
|
||||
"write:admin:invite-codes": "Manage invite codes"
|
||||
"read:admin:invite-codes": "View invite codes"
|
||||
"write:admin:announcements": "Manage announcements"
|
||||
"read:admin:announcements": "View announcements"
|
||||
"write:admin:avatar-decorations": "Manage avatar decorations"
|
||||
"read:admin:avatar-decorations": "View avatar decorations"
|
||||
"write:admin:federation": "Manage federation data"
|
||||
"write:admin:account": "Manage user account"
|
||||
"read:admin:account": "View user account"
|
||||
"write:admin:emoji": "Manage emoji"
|
||||
"read:admin:emoji": "View emoji"
|
||||
"write:admin:queue": "Manage job queue"
|
||||
"read:admin:queue": "View job queue info"
|
||||
"write:admin:promo": "Manage promotion notes"
|
||||
"write:admin:drive": "Manage user drive"
|
||||
"read:admin:drive": "View user drive info"
|
||||
"read:admin:stream": "Use WebSocket API for Admin"
|
||||
"write:admin:ad": "Manage ads"
|
||||
"read:admin:ad": "View ads"
|
||||
"write:invite-codes": "Create invite codes"
|
||||
"read:invite-codes": "Get invite codes"
|
||||
"write:clip-favorite": "Manage favorited clips"
|
||||
"read:clip-favorite": "View favorited clips"
|
||||
"read:federation": "Get federation data"
|
||||
"write:report-abuse": "Report violation"
|
||||
_auth:
|
||||
shareAccessTitle: "Granting application permissions"
|
||||
shareAccess: "Would you like to authorize \"{name}\" to access this account?"
|
||||
@ -2350,9 +2454,11 @@ _profile:
|
||||
changeAvatar: "Change avatar"
|
||||
changeBanner: "Change banner"
|
||||
verifiedLinkDescription: "By entering an URL that contains a link to your profile here, an ownership verification icon can be displayed next to the field."
|
||||
avatarDecorationMax: "You can add up to {max} decorations."
|
||||
_exportOrImport:
|
||||
allNotes: "All notes"
|
||||
favoritedNotes: "Favorite notes"
|
||||
clips: "Clip"
|
||||
followingList: "Followed users"
|
||||
muteList: "Muted users"
|
||||
blockingList: "Blocked users"
|
||||
@ -2651,10 +2757,60 @@ _dataSaver:
|
||||
description: "Stop avatar image animation. Animated images can be larger in file size than normal images, potentially leading to further reductions in data traffic."
|
||||
_urlPreview:
|
||||
title: "URL preview thumbnails"
|
||||
description: "URL preview thumbnail images will no longer load."
|
||||
description: "URL preview thumbnail images will no longer be loaded."
|
||||
_code:
|
||||
title: "Code highlighting"
|
||||
description: "If code highlighting notations are used in MFM, etc., they will not load until tapped. Syntax highlighting requires downloading the highlight definition files for each programming language. Therefore, disabling the automatic loading of these files is expected to reduce the amount of communication data."
|
||||
_hemisphere:
|
||||
N: "Northern Hemisphere"
|
||||
S: "Southern Hemisphere"
|
||||
caption: "Used in some client settings to determine season."
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
gameSettings: "Game settings"
|
||||
chooseBoard: "Choose a board"
|
||||
blackOrWhite: "Black/White"
|
||||
blackIs: "{name} is playing Black"
|
||||
rules: "Rules"
|
||||
thisGameIsStartedSoon: "The game will begin shortly"
|
||||
waitingForOther: "Waiting for opponent's turn"
|
||||
waitingForMe: "Waiting for your turn"
|
||||
waitingBoth: "Get ready"
|
||||
ready: "Ready"
|
||||
cancelReady: "Not ready"
|
||||
opponentTurn: "Opponent's turn"
|
||||
myTurn: "Your turn"
|
||||
turnOf: "It's {name}'s turn"
|
||||
pastTurnOf: "{name}'s turn"
|
||||
surrender: "Surrender"
|
||||
surrendered: "Surrendered"
|
||||
timeout: "Out of time"
|
||||
drawn: "Draw"
|
||||
won: "{name} wins"
|
||||
black: "Black"
|
||||
white: "White"
|
||||
total: "Total"
|
||||
turnCount: "Turn {count}"
|
||||
myGames: "My rounds"
|
||||
allGames: "All rounds"
|
||||
ended: "Ended"
|
||||
playing: "Currently playing"
|
||||
isLlotheo: "The one with fewer stones wins (Llotheo)"
|
||||
loopedMap: "Looping map"
|
||||
canPutEverywhere: "Tiles are placeable everywhere"
|
||||
timeLimitForEachTurn: "Time limit for turn"
|
||||
freeMatch: "Free Match"
|
||||
lookingForPlayer: "Finding opponent..."
|
||||
gameCanceled: "The game has been cancelled."
|
||||
shareToTlTheGameWhenStart: "Share Game to timeline when started"
|
||||
iStartedAGame: "The game has begun! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "The opponent has changed their settings."
|
||||
allowIrregularRules: "Irregular rules (completely free)"
|
||||
disallowIrregularRules: "No irregular rules"
|
||||
_offlineScreen:
|
||||
title: "Offline - cannot connect to the server"
|
||||
header: "Unable to connect to the server"
|
||||
|
||||
_abuse:
|
||||
_resolver:
|
||||
1hour: "one hour"
|
||||
|
@ -11,7 +11,7 @@ password: "Contraseña"
|
||||
forgotPassword: "Olvidé mi contraseña"
|
||||
fetchingAsApObject: "Buscando en el fediverso"
|
||||
ok: "OK"
|
||||
gotIt: "Entendido"
|
||||
gotIt: "¡Lo tengo!"
|
||||
cancel: "Cancelar"
|
||||
noThankYou: "No gracias"
|
||||
enterUsername: "Introduce el nombre de usuario"
|
||||
@ -130,6 +130,7 @@ overwriteFromPinnedEmojis: "Sobreescribir los emojis fijados"
|
||||
reactionSettingDescription2: "Arrastre para reordenar, click para borrar, apriete la tecla + para añadir."
|
||||
rememberNoteVisibility: "Recordar visibilidad"
|
||||
attachCancel: "Quitar adjunto"
|
||||
deleteFile: "Archivo eliminado"
|
||||
markAsSensitive: "Marcar como sensible"
|
||||
unmarkAsSensitive: "Desmarcar como sensible"
|
||||
enterFileName: "Ingrese el nombre del archivo"
|
||||
@ -379,6 +380,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Habilitar hCaptcha"
|
||||
hcaptchaSiteKey: "Clave del sitio"
|
||||
hcaptchaSecretKey: "Clave secreta"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "Activar mCaptcha"
|
||||
mcaptchaSiteKey: "Clave del sitio"
|
||||
mcaptchaSecretKey: "Clave secreta"
|
||||
mcaptchaInstanceUrl: "URL del servidor mCaptcha"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "activar reCAPTCHA"
|
||||
recaptchaSiteKey: "Clave del sitio"
|
||||
@ -638,6 +644,7 @@ medium: "Mediano"
|
||||
small: "Pequeño"
|
||||
generateAccessToken: "Generar token de acceso"
|
||||
permission: "Permisos"
|
||||
adminPermission: "Permiso de administrador"
|
||||
enableAll: "Activar todo"
|
||||
disableAll: "Desactivar todo"
|
||||
tokenRequested: "Permiso de acceso a la cuenta"
|
||||
@ -681,6 +688,7 @@ useGlobalSettingDesc: "Al activarse, se usará la configuración de notificacion
|
||||
other: "Otro"
|
||||
regenerateLoginToken: "Regenerar token de login"
|
||||
regenerateLoginTokenDescription: "Regenerar el token usado internamente durante el login. No siempre es necesario hacerlo. Al hacerlo de nuevo, se deslogueará en todos los dispositivos."
|
||||
theKeywordWhenSearchingForCustomEmoji: "Palabra clave para buscar el emoji personalizado."
|
||||
setMultipleBySeparatingWithSpace: "Puedes añadir mas de uno, separado por espacios."
|
||||
fileIdOrUrl: "Id del archivo o URL"
|
||||
behavior: "Comportamiento"
|
||||
@ -1047,6 +1055,8 @@ resetPasswordConfirm: "¿Realmente quieres cambiar la contraseña?"
|
||||
sensitiveWords: "Palabras sensibles"
|
||||
sensitiveWordsDescription: "La visibilidad de todas las notas que contienen cualquiera de las palabras configuradas serán puestas en \"Inicio\" automáticamente. Puedes enumerás varias separándolas con saltos de línea"
|
||||
sensitiveWordsDescription2: "Si se usan espacios se crearán expresiones AND y las palabras subsecuentes con barras inclinadas se convertirán en expresiones regulares."
|
||||
prohibitedWords: "Palabras explícitas"
|
||||
prohibitedWordsDescription2: "Si se usan espacios se crearán expresiones AND y las palabras subsecuentes con barras inclinadas se convertirán en expresiones regulares."
|
||||
hiddenTags: "Hashtags ocultos"
|
||||
hiddenTagsDescription: "Selecciona las etiquetas que no se mostrarán en tendencias. Una etiqueta por línea."
|
||||
notesSearchNotAvailable: "No se puede buscar una nota"
|
||||
@ -1065,6 +1075,8 @@ limitWidthOfReaction: "Limitar ancho de las reacciones"
|
||||
noteIdOrUrl: "ID o URL de la nota"
|
||||
video: "Video"
|
||||
videos: "Video"
|
||||
audio: "Sonido"
|
||||
audioFiles: "Sonido"
|
||||
dataSaver: "Ahorro de datos"
|
||||
accountMigration: "Migración de cuenta"
|
||||
accountMoved: "Este usuario se movió a una nueva cuenta:"
|
||||
@ -1168,6 +1180,7 @@ hideRepliesToOthersInTimelineAll: "Ocultar tus respuestas a otros usuarios que s
|
||||
confirmShowRepliesAll: "Esta operación es irreversible. ¿Confirmas que quieres mostrar tus respuestas a otros usuarios que sigues en tu línea de tiempo?"
|
||||
confirmHideRepliesAll: "Esta operación es irreversible. ¿Confirmas que quieres ocultar tus respuestas a otros usuarios que sigues en tu línea de tiempo?"
|
||||
externalServices: "Servicios Externos"
|
||||
sourceCode: "Código fuente"
|
||||
impressum: "Impressum"
|
||||
impressumUrl: "Impressum URL"
|
||||
impressumDescription: "En algunos países, como Alemania, la inclusión del operador de datos (el Impressum) es requerido legalmente para sitios web comerciales."
|
||||
@ -1195,6 +1208,27 @@ remainingN: "Faltan: {n}"
|
||||
overwriteContentConfirm: "¿Quieres sustituir todo el contenido actual?"
|
||||
seasonalScreenEffect: "Efectos de pantalla asociados a estaciones"
|
||||
decorate: "Decorar"
|
||||
addMfmFunction: "Añadir función MFM"
|
||||
enableQuickAddMfmFunction: "Activar acceso rápido para añadir funciones MFM"
|
||||
bubbleGame: "Bubble Game"
|
||||
sfx: "Efectos de sonido"
|
||||
soundWillBePlayed: "Se reproducirán efectos sonoros"
|
||||
showReplay: "Ver reproducción"
|
||||
replay: "Reproducir"
|
||||
replaying: "Reproduciendo"
|
||||
ranking: "Clasificación"
|
||||
lastNDays: "Últimos {n} días"
|
||||
backToTitle: "Regresar al inicio"
|
||||
hemisphere: "Región"
|
||||
withSensitive: "Mostrar notas que contengan material sensible"
|
||||
userSaysSomethingSensitive: "La publicación de {name} contiene material sensible"
|
||||
enableHorizontalSwipe: "Deslice para cambiar de pestaña"
|
||||
_bubbleGame:
|
||||
howToPlay: "Cómo jugar"
|
||||
_howToPlay:
|
||||
section1: "Ajuste la posición y deje caer el objeto en la caja"
|
||||
section2: "Cuando dos objetos del mismo tipo se tocan, cambian a otro tipo y consigues puntos"
|
||||
section3: "El juego termina cuando la caja se desborda de objetos. ¡Intenta conseguir una puntuación alta al juntar objetos mientras evitas desbordar la caja!"
|
||||
_announcement:
|
||||
forExistingUsers: "Solo para usuarios registrados"
|
||||
forExistingUsersDescription: "Este anuncio solo se mostrará a aquellos usuarios registrados en el momento de su publicación. Si se deshabilita esta opción, aquellos usuarios que se registren tras su publicación también lo verán."
|
||||
@ -1568,6 +1602,10 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "Diploma del Curso Básico de CherryPick"
|
||||
description: "Tutorial completado"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "Doble 🤯"
|
||||
_role:
|
||||
new: "Crear rol"
|
||||
edit: "Editar rol"
|
||||
@ -2018,6 +2056,54 @@ _permissions:
|
||||
"write:flash": "Editar Plays"
|
||||
"read:flash-likes": "Ver los Play que me gustan"
|
||||
"write:flash-likes": "Editar lista de Play que me gustan"
|
||||
"read:admin:abuse-user-reports": "Ver reportes de usuarios"
|
||||
"write:admin:delete-account": "Eliminar cuentas de usuario"
|
||||
"write:admin:delete-all-files-of-a-user": "Eliminar todos los archivos de un usuario"
|
||||
"read:admin:index-stats": "Ver datos indexados"
|
||||
"read:admin:user-ips": "Ver dirección IP de usuario"
|
||||
"read:admin:meta": "Ver metadatos de la instancia"
|
||||
"write:admin:reset-password": "Restablecer contraseñas de usuario"
|
||||
"write:admin:resolve-abuse-user-report": "Resolución de reportes de usuario"
|
||||
"write:admin:send-email": "Enviar email"
|
||||
"read:admin:server-info": "Ver información del servidor"
|
||||
"read:admin:show-moderation-log": "Ver log de moderación"
|
||||
"read:admin:show-user": "Ver información privada de usuario"
|
||||
"read:admin:show-users": "Ver información privada de usuario"
|
||||
"write:admin:suspend-user": "Suspender cuentas de usuario"
|
||||
"write:admin:unset-user-avatar": "Quitar avatares de usuario"
|
||||
"write:admin:unset-user-banner": "Quitar banner de usuarios"
|
||||
"write:admin:unsuspend-user": "Quitar suspensión de cuentas de usuario"
|
||||
"write:admin:meta": "Edición de metadatos de la instancia"
|
||||
"write:admin:user-note": "Moderación de notas"
|
||||
"write:admin:roles": "Edición de roles de usuario"
|
||||
"read:admin:roles": "Ver roles de usuario"
|
||||
"write:admin:relays": "Edición de relays"
|
||||
"read:admin:relays": "Ver relays"
|
||||
"write:admin:invite-codes": "Edición de códigos de invitación"
|
||||
"read:admin:invite-codes": "Ver códigos de invitación"
|
||||
"write:admin:announcements": "Edición de anuncios"
|
||||
"read:admin:announcements": "Ver anuncios"
|
||||
"write:admin:avatar-decorations": "Edición de decoración de avatares"
|
||||
"read:admin:avatar-decorations": "Ver decoraciones de avatar"
|
||||
"write:admin:federation": "Edición de federación de instancias"
|
||||
"write:admin:account": "Edición de cuentas de usuario"
|
||||
"read:admin:account": "Ver cuentas de usuario"
|
||||
"write:admin:emoji": "Edición de emojis"
|
||||
"read:admin:emoji": "Ver emojis"
|
||||
"write:admin:queue": "Edición de cola de tareas"
|
||||
"read:admin:queue": "Ver cola de tareas"
|
||||
"write:admin:promo": "Edición de promociones"
|
||||
"write:admin:drive": "Edición de Drive de usuarios"
|
||||
"read:admin:drive": "Ver Drive de usuarios"
|
||||
"read:admin:stream": "Usar la API de Websocket para administradores"
|
||||
"write:admin:ad": "Edición de anuncios"
|
||||
"read:admin:ad": "Ver anuncios"
|
||||
"write:invite-codes": "Crear códigos de invitación"
|
||||
"read:invite-codes": "Ver códigos de invitación"
|
||||
"write:clip-favorite": "Marcar me gusta en clips"
|
||||
"read:clip-favorite": "Ver los clips que me gustan"
|
||||
"read:federation": "Ver instancias federadas"
|
||||
"write:report-abuse": "Crear reportes de usuario"
|
||||
_auth:
|
||||
shareAccessTitle: "Permisos de la aplicación"
|
||||
shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?"
|
||||
@ -2140,6 +2226,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Todas las notas"
|
||||
favoritedNotes: "Notas favoritas"
|
||||
clips: "Clip"
|
||||
followingList: "Siguiendo"
|
||||
muteList: "Silenciados"
|
||||
blockingList: "Bloqueados"
|
||||
@ -2442,3 +2529,11 @@ _dataSaver:
|
||||
_code:
|
||||
title: "Resaltar código"
|
||||
description: "Si se usa resaltado de código en MFM, etc., no se cargará hasta pulsar en ello. El resaltado de sintaxis requiere la descarga de archivos de definición para cada lenguaje de programación. Debido a esto, al deshabilitar la carga automática de estos archivos reducirás el consumo de datos."
|
||||
_hemisphere:
|
||||
N: "Hemisferio norte"
|
||||
S: "Hemisferio sur"
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
won: "{name} ha ganado"
|
||||
total: "Total"
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
_lang_: "Français"
|
||||
headlineMisskey: "Réseau relié par des notes"
|
||||
introMisskey: "Bienvenue ! CherryPick est un service de microblogage décentralisé, libre et ouvert.\nÉcrivez des « notes » et partagez ce qui se passe à l’instant présent, autour de vous avec les autres 📡\nLa fonction « réactions », vous permet également d’ajouter une réaction rapide aux notes des autres utilisateur·rice·s 👍\nExplorons un nouveau monde 🚀"
|
||||
poweredByMisskeyDescription: "{nom} est l'un des services propulsés par la plateforme ouverte <b>CherryPick</b> (appelée \"instance CherryPick\")."
|
||||
introMisskey: "Bienvenue ! CherryPick est un service de microblogage décentralisé, libre et ouvert.\nÉcrivez des « notes » et partagez ce qui se passe à l’instant présent, autour de vous avec les autres 📡\nLa fonction « réactions », vous permet également d’ajouter une réaction rapide aux notes des autres utilisateur·rice·s 👍\nExplorons un nouveau monde 🚀"
|
||||
poweredByMisskeyDescription: "{name} est l'un des services propulsés par la plateforme ouverte <b>CherryPick</b> (appelée \"instance CherryPick\")."
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "Rechercher"
|
||||
notifications: "Notifications"
|
||||
@ -130,6 +130,7 @@ overwriteFromPinnedEmojis: "Remplacer par les émojis épinglés globalement"
|
||||
reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter."
|
||||
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
|
||||
attachCancel: "Supprimer le fichier attaché"
|
||||
deleteFile: "Fichier supprimé"
|
||||
markAsSensitive: "Marquer comme sensible"
|
||||
unmarkAsSensitive: "Supprimer le marquage comme sensible"
|
||||
enterFileName: "Entrer le nom du fichier"
|
||||
@ -168,7 +169,7 @@ cacheRemoteSensitiveFilesDescription: "Si vous désactivez ce paramètre, les fi
|
||||
flagAsBot: "Ce compte est un robot"
|
||||
flagAsBotDescription: "Si ce compte est géré de manière automatisée, choisissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de CherryPick pour traiter ce compte comme un robot."
|
||||
flagAsCat: "Ce compte est un chat"
|
||||
flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte."
|
||||
flagAsCatDescription: "Miaou miaou miaou ?"
|
||||
flagShowTimelineReplies: "Afficher les réponses dans le fil"
|
||||
flagShowTimelineRepliesDescription: "Affiche les réponses des utilisateurs aux notes des autres utilisateurs dans la timeline si cette option est activée."
|
||||
autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez"
|
||||
@ -379,6 +380,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Activer hCaptcha"
|
||||
hcaptchaSiteKey: "Clé du site"
|
||||
hcaptchaSecretKey: "Clé secrète"
|
||||
mcaptchaSiteKey: "Clé du site"
|
||||
mcaptchaSecretKey: "Clé secrète"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Activer reCAPTCHA"
|
||||
recaptchaSiteKey: "Clé du site"
|
||||
@ -396,7 +399,7 @@ antennaKeywords: "Mots clés à recevoir"
|
||||
antennaExcludeKeywords: "Mots clés à exclure"
|
||||
antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
|
||||
notifyAntenna: "Me notifier pour les nouvelles notes"
|
||||
withFileAntenna: "Notes ayant des attachements uniquement"
|
||||
withFileAntenna: "Notes ayant des fichiers joints uniquement"
|
||||
enableServiceworker: "Activer ServiceWorker"
|
||||
antennaUsersDescription: "Saisissez un seul nom d’utilisateur·rice par ligne"
|
||||
caseSensitive: "Sensible à la casse"
|
||||
@ -708,7 +711,7 @@ system: "Système"
|
||||
switchUi: "Modifier l'interface utilisateur"
|
||||
desktop: "Bureau"
|
||||
clip: "Clip"
|
||||
createNew: "Créer nouveau"
|
||||
createNew: "Créer"
|
||||
optional: "Facultatif"
|
||||
createNewClip: "Créer un nouveau clip"
|
||||
unclip: "Supprimer le clip"
|
||||
@ -1095,12 +1098,24 @@ specifyUser: "Spécifier l'utilisateur·rice"
|
||||
failedToPreviewUrl: "Aperçu d'URL échoué"
|
||||
update: "Mettre à jour"
|
||||
rolesThatCanBeUsedThisEmojiAsReaction: "Rôles qui peuvent utiliser cet émoji comme réaction"
|
||||
cancelReactionConfirm: "Supprimez la réaction ?"
|
||||
later: "Plus tard"
|
||||
goToMisskey: "Retour vers CherryPick"
|
||||
additionalEmojiDictionary: "Dictionnaires d'émojis additionnels"
|
||||
installed: "Installé"
|
||||
branding: "Image de marque"
|
||||
enableServerMachineStats: "Publier les statistiques du matériel du serveur"
|
||||
enableIdenticonGeneration: "Générer les identicons des utilisateurs"
|
||||
turnOffToImprovePerformance: "Désactiver peut améliorer la performance."
|
||||
createInviteCode: "Créer un code d'invitation"
|
||||
createWithOptions: "Options"
|
||||
createCount: "Quantité à créer"
|
||||
inviteCodeCreated: "Code d'invitation créé"
|
||||
inviteLimitExceeded: "Vous avez atteint la limite de codes d'invitation que vous pouvez générer."
|
||||
expirationDate: "Date d’expiration"
|
||||
noExpirationDate: "Ne pas expirer"
|
||||
inviteCodeUsedAt: "Code d'invitation utilisé à"
|
||||
registeredUserUsingInviteCode: "Code d'invitation utilisé par"
|
||||
waitingForMailAuth: "En attente de la vérification de l'adresse courriel"
|
||||
inviteCodeCreator: "Créateur·rice de ce code d'invitation"
|
||||
usedAt: "Utilisé le"
|
||||
@ -1114,12 +1129,13 @@ icon: "Avatar"
|
||||
forYou: "Pour vous"
|
||||
currentAnnouncements: "Annonces actuelles"
|
||||
pastAnnouncements: "Annonces passées"
|
||||
replies: "Répondre"
|
||||
renotes: "Renoter"
|
||||
replies: "Réponses"
|
||||
renotes: "Renotes"
|
||||
loadReplies: "Inclure les réponses"
|
||||
loadConversation: "Afficher la conversation"
|
||||
pinnedList: "Liste épinglée"
|
||||
notifyNotes: "Notifier à propos des nouvelles notes"
|
||||
unnotifyNotes: "Ne pas notifier pour la publication des notes"
|
||||
authentication: "Authentification"
|
||||
authenticationRequiredToContinue: "Veuillez vous authentifier pour continuer"
|
||||
dateAndTime: "Date et heure"
|
||||
@ -1134,6 +1150,7 @@ hideRepliesToOthersInTimelineAll: "Masquer les réponses de toutes les personnes
|
||||
confirmShowRepliesAll: "Cette opération est irréversible. Voulez-vous vraiment afficher les réponses de toutes les personnes que vous suivez dans le fil ?"
|
||||
confirmHideRepliesAll: "Cette opération est irréversible. Voulez-vous vraiment masquer les réponses de toutes les personnes que vous suivez dans le fil ?"
|
||||
externalServices: "Services externes"
|
||||
sourceCode: "Code source"
|
||||
impressum: "Impressum"
|
||||
impressumUrl: "URL de l'impressum"
|
||||
impressumDescription: "Dans certains pays comme l'Allemagne, il est obligatoire d'afficher les informations sur l'opérateur d'un site (un impressum)."
|
||||
@ -1161,7 +1178,9 @@ remainingN: "Restants : {n}"
|
||||
overwriteContentConfirm: "Voulez-vous remplacer le contenu actuel ?"
|
||||
seasonalScreenEffect: "Effet d'écran saisonnier"
|
||||
decorate: "Décorer"
|
||||
lastNDays: "Derniers {n} jours"
|
||||
_announcement:
|
||||
forExistingUsers: "Pour les utilisateurs existants seulement"
|
||||
readConfirmTitle: "Marquer comme lu ?"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "Puisque cela pourrait nuire considérablement à l'expérience utilisateur pour les nouveaux utilisateurs, il est recommandé d'utiliser les annonces pour afficher des informations temporaires plutôt que des informations persistantes."
|
||||
dialogAnnouncementUxWarn: "Avoir deux ou plus annonces de style dialogue en même temps pourrait nuire considérablement à l'expérience utilisateur. Veuillez les utiliser avec caution."
|
||||
@ -1171,7 +1190,7 @@ _initialAccountSetting:
|
||||
profileSetting: "Paramètres du profil"
|
||||
privacySetting: "Paramètres de confidentialité"
|
||||
initialAccountSettingCompleted: "Configuration du profil terminée avec succès !"
|
||||
youCanContinueTutorial: "Vous pouvez procéder au tutoriel sur l'utilisation de {nom}(CherryPick) ou vous arrêter ici et commencer à l'utiliser immédiatement."
|
||||
youCanContinueTutorial: "Vous pouvez procéder au tutoriel sur l'utilisation de {name}(CherryPick) ou vous arrêter ici et commencer à l'utiliser immédiatement."
|
||||
startTutorial: "Démarrer le tutoriel"
|
||||
skipAreYouSure: "Désirez-vous ignorer la configuration du profil ?"
|
||||
_initialTutorial:
|
||||
@ -1256,6 +1275,7 @@ _accountMigration:
|
||||
startMigration: "Migrer"
|
||||
movedTo: "Compte vers lequel vous migrez :"
|
||||
_achievements:
|
||||
earnedAt: "Date d'obtention"
|
||||
_types:
|
||||
_notes1:
|
||||
title: "Je viens tout juste de configurer mon msky"
|
||||
@ -1884,6 +1904,7 @@ _profile:
|
||||
avatarDecorationMax: "Vous pouvez mettre au plus {max} décorations d'avatar."
|
||||
_exportOrImport:
|
||||
allNotes: "Toutes les notes"
|
||||
clips: "Clip"
|
||||
followingList: "Abonnements"
|
||||
muteList: "Comptes masqués"
|
||||
blockingList: "Comptes bloqués"
|
||||
@ -2151,3 +2172,6 @@ _dataSaver:
|
||||
_code:
|
||||
title: "Mise en évidence du code"
|
||||
description: "Si la notation de mise en évidence du code est utilisée, par exemple dans la MFM, elle ne sera pas chargée tant qu'elle n'aura pas été tapée. La mise en évidence du code nécessite le chargement du fichier de définition de chaque langue à mettre en évidence, mais comme ces fichiers ne sont plus chargés automatiquement, on peut s'attendre à une réduction du trafic de données."
|
||||
_reversi:
|
||||
total: "Total"
|
||||
|
||||
|
@ -6,54 +6,176 @@ import ts from 'typescript';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
const parameterRegExp = /\{(\w+)\}/g;
|
||||
|
||||
function createMemberType(item) {
|
||||
if (typeof item !== 'string') {
|
||||
return ts.factory.createTypeLiteralNode(createMembers(item));
|
||||
}
|
||||
const parameters = Array.from(
|
||||
item.matchAll(parameterRegExp),
|
||||
([, parameter]) => parameter,
|
||||
);
|
||||
return parameters.length
|
||||
? ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('ParameterizedString'),
|
||||
[
|
||||
ts.factory.createUnionTypeNode(
|
||||
parameters.map((parameter) =>
|
||||
ts.factory.createStringLiteral(parameter),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
: ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
|
||||
}
|
||||
|
||||
function createMembers(record) {
|
||||
return Object.entries(record)
|
||||
.map(([k, v]) => ts.factory.createPropertySignature(
|
||||
return Object.entries(record).map(([k, v]) => {
|
||||
const node = ts.factory.createPropertySignature(
|
||||
undefined,
|
||||
ts.factory.createStringLiteral(k),
|
||||
undefined,
|
||||
typeof v === 'string'
|
||||
? ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
||||
: ts.factory.createTypeLiteralNode(createMembers(v)),
|
||||
));
|
||||
createMemberType(v),
|
||||
);
|
||||
if (typeof v === 'string') {
|
||||
ts.addSyntheticLeadingComment(
|
||||
node,
|
||||
ts.SyntaxKind.MultiLineCommentTrivia,
|
||||
`*
|
||||
* ${v.replace(/\n/g, '\n * ')}
|
||||
`,
|
||||
true,
|
||||
);
|
||||
}
|
||||
return node;
|
||||
});
|
||||
}
|
||||
|
||||
export default function generateDTS() {
|
||||
const locale = yaml.load(fs.readFileSync(`${__dirname}/ja-JP.yml`, 'utf-8'));
|
||||
const members = createMembers(locale);
|
||||
const elements = [
|
||||
ts.factory.createVariableStatement(
|
||||
[ts.factory.createToken(ts.SyntaxKind.DeclareKeyword)],
|
||||
ts.factory.createVariableDeclarationList(
|
||||
[
|
||||
ts.factory.createVariableDeclaration(
|
||||
ts.factory.createIdentifier('kParameters'),
|
||||
undefined,
|
||||
ts.factory.createTypeOperatorNode(
|
||||
ts.SyntaxKind.UniqueKeyword,
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.SymbolKeyword),
|
||||
),
|
||||
undefined,
|
||||
),
|
||||
],
|
||||
ts.NodeFlags.Const,
|
||||
),
|
||||
),
|
||||
ts.factory.createInterfaceDeclaration(
|
||||
[ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
|
||||
ts.factory.createIdentifier('ParameterizedString'),
|
||||
[
|
||||
ts.factory.createTypeParameterDeclaration(
|
||||
undefined,
|
||||
ts.factory.createIdentifier('T'),
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
||||
),
|
||||
],
|
||||
undefined,
|
||||
[
|
||||
ts.factory.createPropertySignature(
|
||||
undefined,
|
||||
ts.factory.createComputedPropertyName(
|
||||
ts.factory.createIdentifier('kParameters'),
|
||||
),
|
||||
undefined,
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('T'),
|
||||
undefined,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
ts.factory.createInterfaceDeclaration(
|
||||
[ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
|
||||
ts.factory.createIdentifier('ILocale'),
|
||||
undefined,
|
||||
undefined,
|
||||
[
|
||||
ts.factory.createIndexSignature(
|
||||
undefined,
|
||||
[
|
||||
ts.factory.createParameterDeclaration(
|
||||
undefined,
|
||||
undefined,
|
||||
ts.factory.createIdentifier('_'),
|
||||
undefined,
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
||||
undefined,
|
||||
),
|
||||
],
|
||||
ts.factory.createUnionTypeNode([
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('ParameterizedString'),
|
||||
),
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('ILocale'),
|
||||
undefined,
|
||||
),
|
||||
]),
|
||||
),
|
||||
],
|
||||
),
|
||||
ts.factory.createInterfaceDeclaration(
|
||||
[ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
|
||||
ts.factory.createIdentifier('Locale'),
|
||||
undefined,
|
||||
[
|
||||
ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [
|
||||
ts.factory.createExpressionWithTypeArguments(
|
||||
ts.factory.createIdentifier('ILocale'),
|
||||
undefined,
|
||||
),
|
||||
]),
|
||||
],
|
||||
members,
|
||||
),
|
||||
ts.factory.createVariableStatement(
|
||||
[ts.factory.createToken(ts.SyntaxKind.DeclareKeyword)],
|
||||
ts.factory.createVariableDeclarationList(
|
||||
[ts.factory.createVariableDeclaration(
|
||||
[
|
||||
ts.factory.createVariableDeclaration(
|
||||
ts.factory.createIdentifier('locales'),
|
||||
undefined,
|
||||
ts.factory.createTypeLiteralNode([ts.factory.createIndexSignature(
|
||||
ts.factory.createTypeLiteralNode([
|
||||
ts.factory.createIndexSignature(
|
||||
undefined,
|
||||
[ts.factory.createParameterDeclaration(
|
||||
[
|
||||
ts.factory.createParameterDeclaration(
|
||||
undefined,
|
||||
undefined,
|
||||
ts.factory.createIdentifier('lang'),
|
||||
undefined,
|
||||
ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
||||
ts.factory.createKeywordTypeNode(
|
||||
ts.SyntaxKind.StringKeyword,
|
||||
),
|
||||
undefined,
|
||||
)],
|
||||
),
|
||||
],
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('Locale'),
|
||||
undefined,
|
||||
),
|
||||
)]),
|
||||
),
|
||||
]),
|
||||
undefined,
|
||||
)],
|
||||
ts.NodeFlags.Const | ts.NodeFlags.Ambient | ts.NodeFlags.ContextFlags,
|
||||
),
|
||||
],
|
||||
ts.NodeFlags.Const,
|
||||
),
|
||||
),
|
||||
ts.factory.createFunctionDeclaration(
|
||||
@ -70,16 +192,39 @@ export default function generateDTS() {
|
||||
),
|
||||
ts.factory.createExportDefault(ts.factory.createIdentifier('locales')),
|
||||
];
|
||||
const printed = ts.createPrinter({
|
||||
ts.addSyntheticLeadingComment(
|
||||
elements[0],
|
||||
ts.SyntaxKind.MultiLineCommentTrivia,
|
||||
' eslint-disable ',
|
||||
true,
|
||||
);
|
||||
ts.addSyntheticLeadingComment(
|
||||
elements[0],
|
||||
ts.SyntaxKind.SingleLineCommentTrivia,
|
||||
' This file is generated by locales/generateDTS.js',
|
||||
true,
|
||||
);
|
||||
ts.addSyntheticLeadingComment(
|
||||
elements[0],
|
||||
ts.SyntaxKind.SingleLineCommentTrivia,
|
||||
' Do not edit this file directly.',
|
||||
true,
|
||||
);
|
||||
const printed = ts
|
||||
.createPrinter({
|
||||
newLine: ts.NewLineKind.LineFeed,
|
||||
}).printList(
|
||||
})
|
||||
.printList(
|
||||
ts.ListFormat.MultiLine,
|
||||
ts.factory.createNodeArray(elements),
|
||||
ts.createSourceFile('index.d.ts', '', ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS),
|
||||
ts.createSourceFile(
|
||||
'index.d.ts',
|
||||
'',
|
||||
ts.ScriptTarget.ESNext,
|
||||
true,
|
||||
ts.ScriptKind.TS,
|
||||
),
|
||||
);
|
||||
|
||||
fs.writeFileSync(`${__dirname}/index.d.ts`, `/* eslint-disable */
|
||||
// This file is generated by locales/generateDTS.js
|
||||
// Do not edit this file directly.
|
||||
${printed}`, 'utf-8');
|
||||
fs.writeFileSync(`${__dirname}/index.d.ts`, printed, 'utf-8');
|
||||
}
|
||||
|
@ -3,3 +3,4 @@ _lang_: "japanski"
|
||||
ok: "OK"
|
||||
gotIt: "Razumijem"
|
||||
cancel: "otkazati"
|
||||
|
||||
|
@ -16,3 +16,4 @@ _2fa:
|
||||
renewTOTPCancel: "Sispann"
|
||||
_widgets:
|
||||
profile: "pwofil"
|
||||
|
||||
|
@ -102,3 +102,4 @@ _deck:
|
||||
_columns:
|
||||
notifications: "Értesítések"
|
||||
tl: "Idővonal"
|
||||
|
||||
|
@ -81,7 +81,7 @@ exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Sete
|
||||
importRequested: "Kamu telah meminta impor. Ini akan memakan waktu sesaat."
|
||||
lists: "Daftar"
|
||||
noLists: "Kamu tidak memiliki daftar apapun"
|
||||
note: "Catat"
|
||||
note: "Catatan"
|
||||
notes: "Catatan"
|
||||
following: "Ikuti"
|
||||
followers: "Pengikut"
|
||||
@ -125,9 +125,12 @@ emojiPicker: "Emoji Picker"
|
||||
pinnedEmojisForReactionSettingDescription: "Atur sematan emoji pada reaksi"
|
||||
pinnedEmojisSettingDescription: "Atur sematan emoji pada masukan emoji"
|
||||
emojiPickerDisplay: "Tampilan Emoji Picker"
|
||||
overwriteFromPinnedEmojisForReaction: "Timpa dari pengaturan reaksi"
|
||||
overwriteFromPinnedEmojis: "Timpa dari pengaturan umum"
|
||||
reactionSettingDescription2: "Geser untuk memindah urutan emoji, klik untuk menghapus, tekan \"+\" untuk menambahkan"
|
||||
rememberNoteVisibility: "Ingat pengaturan visibilitas catatan"
|
||||
attachCancel: "Hapus lampiran"
|
||||
deleteFile: "Berkas dihapus"
|
||||
markAsSensitive: "Tandai sebagai konten sensitif"
|
||||
unmarkAsSensitive: "Hapus tanda konten sensitif"
|
||||
enterFileName: "Masukkan nama berkas"
|
||||
@ -377,6 +380,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Nyalakan hCaptcha"
|
||||
hcaptchaSiteKey: "Site Key"
|
||||
hcaptchaSecretKey: "Secret Key"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "Nyalakan mCaptcha"
|
||||
mcaptchaSiteKey: "Site key"
|
||||
mcaptchaSecretKey: "Secret Key"
|
||||
mcaptchaInstanceUrl: "URL instansi mCaptcha"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Nyalakan reCAPTCHA"
|
||||
recaptchaSiteKey: "Site key"
|
||||
@ -636,6 +644,7 @@ medium: "Sedang"
|
||||
small: "Kecil"
|
||||
generateAccessToken: "Buat token akses"
|
||||
permission: "Izin"
|
||||
adminPermission: "Wewenang Izin Admin"
|
||||
enableAll: "Aktifkan semua"
|
||||
disableAll: "Nonaktifkan semua"
|
||||
tokenRequested: "Berikan ijin akses ke akun"
|
||||
@ -679,6 +688,7 @@ useGlobalSettingDesc: "Jika dinyalakan, setelan notifikasi akun kamu akan diguna
|
||||
other: "Lainnya"
|
||||
regenerateLoginToken: "Perbarui token login"
|
||||
regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan dilogout."
|
||||
theKeywordWhenSearchingForCustomEmoji: "Kata kunci ini digunakan untuk mencari emoji kustom yang dicari."
|
||||
setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya menggunakan spasi."
|
||||
fileIdOrUrl: "File-ID atau URL"
|
||||
behavior: "Perilaku"
|
||||
@ -891,6 +901,8 @@ makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua r
|
||||
classic: "Klasik"
|
||||
muteThread: "Bisukan thread"
|
||||
unmuteThread: "Suarakan thread"
|
||||
followingVisibility: "Visibilitas mengikuti"
|
||||
followersVisibility: "Visibilitas pengikut"
|
||||
continueThread: "Lihat lanjutan thread"
|
||||
deleteAccountConfirm: "Akun akan dihapus. Apakah kamu yakin?"
|
||||
incorrectPassword: "Kata sandi salah."
|
||||
@ -1043,6 +1055,8 @@ resetPasswordConfirm: "Yakin untuk mereset kata sandimu?"
|
||||
sensitiveWords: "Kata sensitif"
|
||||
sensitiveWordsDescription: "Visibilitas dari semua catatan mengandung kata yang telah diatur akan dijadikan \"Beranda\" secara otomatis. Kamu dapat mendaftarkan kata tersebut lebih dari satu dengan menuliskannya di baris baru."
|
||||
sensitiveWordsDescription2: "Menggunakan spasi akan membuat ekspresi AND dan kata kunci disekitarnya dengan garis miring akan mengubahnya menjadi ekspresi reguler."
|
||||
prohibitedWords: "Kata yang dilarang"
|
||||
prohibitedWordsDescription2: "Menggunakan spasi akan membuat ekspresi AND dan kata kunci disekitarnya dengan garis miring akan mengubahnya menjadi ekspresi reguler."
|
||||
hiddenTags: "Tagar tersembunyi"
|
||||
hiddenTagsDescription: "Pilih tanda yang mana akan tidak diperlihatkan dalam daftar tren.\nTanda lebih dari satu dapat didaftarkan dengan tiap baris."
|
||||
notesSearchNotAvailable: "Pencarian catatan tidak tersedia."
|
||||
@ -1061,6 +1075,8 @@ limitWidthOfReaction: "Batasi lebar maksimum reaksi dan tampilkan dalam ukuran t
|
||||
noteIdOrUrl: "ID catatan atau URL"
|
||||
video: "Video"
|
||||
videos: "Video"
|
||||
audio: "Suara"
|
||||
audioFiles: "Berkas Suara"
|
||||
dataSaver: "Penghemat data"
|
||||
accountMigration: "Pemindahan akun"
|
||||
accountMoved: "Pengguna ini telah berpindah ke akun baru:"
|
||||
@ -1164,6 +1180,7 @@ hideRepliesToOthersInTimelineAll: "Sembuyikan balasan ke lainnya dari semua oran
|
||||
confirmShowRepliesAll: "Operasi ini tidak dapat diubah. Apakah kamu yakin untuk menampilkan balasan ke lainnya dari semua orang yang kamu ikuti di lini masa?"
|
||||
confirmHideRepliesAll: "Operasi ini tidak dapat diubah. Apakah kamu yakin untuk menyembunyikan balasan ke lainnya dari semua orang yang kamu ikuti di lini masa?"
|
||||
externalServices: "Layanan eksternal"
|
||||
sourceCode: "Sumber kode"
|
||||
impressum: "Impressum"
|
||||
impressumUrl: "Tautan Impressum"
|
||||
impressumDescription: "Pada beberapa negara seperti Jerman, inklusi dari informasi kontak operator (sebuah Impressum) diperlukan secara legal untuk situs web komersil."
|
||||
@ -1188,7 +1205,28 @@ doReaction: "Tambahkan reaksi"
|
||||
code: "Kode"
|
||||
reloadRequiredToApplySettings: "Muat ulang diperlukan untuk menerapkan pengaturan."
|
||||
remainingN: "Sisa : {n}"
|
||||
overwriteContentConfirm: "Apakah kamu yakin untuk menimpa konten saat ini?"
|
||||
seasonalScreenEffect: "Efek layar musiman"
|
||||
decorate: "Dekor"
|
||||
addMfmFunction: "Tambahkan dekorasi"
|
||||
enableQuickAddMfmFunction: "Tampilkan pemilih MFM tingkat lanjut"
|
||||
bubbleGame: "Bubble Game"
|
||||
sfx: "Efek Suara"
|
||||
soundWillBePlayed: "Suara yang akan dimainkan"
|
||||
showReplay: "Lihat tayangan ulang"
|
||||
replay: "Tayangan ulang"
|
||||
replaying: "Menayangkan Ulang"
|
||||
ranking: "Peringkat"
|
||||
lastNDays: "{n} hari terakhir"
|
||||
backToTitle: "Ke Judul"
|
||||
hemisphere: "Letak kamu tinggal"
|
||||
withSensitive: "Lampirkan catatan dengan berkas sensitif"
|
||||
userSaysSomethingSensitive: "Postingan oleh {name} mengandung konten sensitif"
|
||||
enableHorizontalSwipe: "Geser untuk mengganti tab"
|
||||
_bubbleGame:
|
||||
howToPlay: "Cara bermain"
|
||||
_howToPlay:
|
||||
section1: "Atur posisi dan jatuhkan obyek ke dalam kotak."
|
||||
_announcement:
|
||||
forExistingUsers: "Hanya pengguna yang telah ada"
|
||||
forExistingUsersDescription: "Pengumuman ini akan dimunculkan ke pengguna yang sudah ada dari titik waktu publikasi jika dinyalakan. Apabila dimatikan, mereka yang baru mendaftar setelah publikasi ini akan juga melihatnya."
|
||||
@ -1198,7 +1236,10 @@ _announcement:
|
||||
tooManyActiveAnnouncementDescription: "Terlalu banyak pengumuman dapat memperburuk pengalaman pengguna. Mohon pertimbangkan untuk mengarsipkan pengumuman yang sudah usang/tidak relevan."
|
||||
readConfirmTitle: "Tandai telah dibaca?"
|
||||
readConfirmText: "Aksi ini akan menandai konten dari \"{title}\" telah dibaca."
|
||||
shouldNotBeUsedToPresentPermanentInfo: "Karena dapat berdampak pada pengalaman pengguna untuk pengguna baru, sangat direkomendasikan untuk menggunakan notifikasi secara mengalir daripada tetap."
|
||||
dialogAnnouncementUxWarn: "Memiliki dua atau lebih gaya dialog notifikasi secara bersamaan dapat berdampak signifikan pada pengalaman pengguna, mohon untuk menggunakannya dengan hati-hati."
|
||||
silence: "Tiada notifikasi"
|
||||
silenceDescription: "Apabila diaktifkan, notifikasi dari pengumuman ini akan dilewatkan dan pengguna tidak perlu membacanya."
|
||||
_initialAccountSetting:
|
||||
accountCreated: "Akun kamu telah sukses dibuat!"
|
||||
letsStartAccountSetup: "Untuk pemula, ayo atur profilmu dulu."
|
||||
@ -1211,6 +1252,7 @@ _initialAccountSetting:
|
||||
pushNotificationDescription: "Menyalakan notifikasi dorong akan membuatmu menerima notifikasi dari {name} secara langsung ke perangkatmu."
|
||||
initialAccountSettingCompleted: "Pengaturan profil selesai!"
|
||||
haveFun: "Selamat menikmati, {name}!"
|
||||
youCanContinueTutorial: "Kamu dapat menjutkan ke tutorial dalam bagaimana menggunakan {name} (CherryPick) atau kamu dapat keluar dari pemasangan ini dan langsung menggunakannya segera."
|
||||
startTutorial: "Mulai Tutorial"
|
||||
skipAreYouSure: "Yakin melewati atur profil?"
|
||||
laterAreYouSure: "Yakin banget untuk atur profil nanti?"
|
||||
@ -1224,6 +1266,10 @@ _initialTutorial:
|
||||
description: "Di sini kamu dapat mempelajari dasar-dasar dari penggunaan CherryPick dan fitur-fiturnya."
|
||||
_note:
|
||||
title: "Apa itu Catatan?"
|
||||
description: "Postingan di CherryPick disebut sebagai 'Catatan'. Catatan ditampilkan secara kronologis pada lini masa dan dimutakhirkan secara real-time."
|
||||
reply: "Klik pada tombol ini untuk membalas ke sebuah pesan. Bisa juga untuk membalas ke sebuah balasan dan melanjutkannya seperti percakapan selayaknya utas."
|
||||
renote: "Kamu dapat membagikan catatan ke lini masa milikmu. Kamu juga dapat mengutipnya dengan komentarmu."
|
||||
reaction: "Kamu dapat menambahkan reaksi ke Catatan. Detil lebih lanjut akan dijelaskan di halaman berikutnya."
|
||||
_reaction:
|
||||
title: "Apa itu Reaksi?"
|
||||
_timeline:
|
||||
@ -1242,6 +1288,8 @@ _initialTutorial:
|
||||
note: "Baru aja makan donat berlapis coklat 🍩😋"
|
||||
_howToMakeAttachmentsSensitive:
|
||||
title: "Bagaimana menandai lampiran sebagai sensitif?"
|
||||
_done:
|
||||
title: "Kamu telah menyelesaikan tutorial! 🎉"
|
||||
_serverRules:
|
||||
description: "Daftar peraturan akan ditampilkan sebelum pendaftaran. Mengatur ringkasan dari Syarat dan Ketentuan sangat direkomendasikan."
|
||||
_serverSettings:
|
||||
@ -1857,6 +1905,14 @@ _sfx:
|
||||
chatBg: "Obrolan (Latar Belakang)"
|
||||
antenna: "Penerimaan Antenna"
|
||||
channel: "Notifikasi Kanal"
|
||||
reaction: "Ketika memilih reaksi"
|
||||
_soundSettings:
|
||||
driveFile: "Menggunakan berkas audio dalam Drive"
|
||||
driveFileWarn: "Pilih berkas audio dari Drive"
|
||||
driveFileTypeWarn: "Berkas ini tidak didukung"
|
||||
driveFileTypeWarnDescription: "Pilih berkas audio"
|
||||
driveFileDurationWarn: "Audio ini terlalu panjang"
|
||||
driveFileDurationWarnDescription: "Audio panjang dapat mengganggu penggunaan CherryPick. Masih ingin melanjutkan?"
|
||||
_ago:
|
||||
future: "Masa depan"
|
||||
justNow: "Baru saja"
|
||||
@ -1868,6 +1924,14 @@ _ago:
|
||||
monthsAgo: "{n} bulan lalu"
|
||||
yearsAgo: "{n} tahun lalu"
|
||||
invalid: "Tidak ada sama sekali disini"
|
||||
_timeIn:
|
||||
seconds: "dalam {n} detik"
|
||||
minutes: "dalam {n} menit"
|
||||
hours: "dalam {n} jam"
|
||||
days: "dalam {n} hari"
|
||||
weeks: "dalam {n} minggu"
|
||||
months: "dalam {n} bulan"
|
||||
years: "dalam {n} tahun"
|
||||
_time:
|
||||
second: "detik"
|
||||
minute: "menit"
|
||||
@ -1939,6 +2003,55 @@ _permissions:
|
||||
"write:flash": "Sunting Play"
|
||||
"read:flash-likes": "Lihat daftar Play yang disukai"
|
||||
"write:flash-likes": "Sunting daftar Play yang disukai"
|
||||
"read:admin:abuse-user-reports": "Lihat laporan pengguna"
|
||||
"write:admin:delete-account": "Hapus akun pengguna"
|
||||
"write:admin:delete-all-files-of-a-user": "Hapus semua berkas dari seorang pengguna"
|
||||
"read:admin:index-stats": "Lihat statistik indeks basis data"
|
||||
"read:admin:table-stats": "Lihat statistik tabel basis data"
|
||||
"read:admin:user-ips": "Lihat alamat IP pengguna"
|
||||
"read:admin:meta": "Lihat metadata instansi"
|
||||
"write:admin:reset-password": "Atur ulang kata sandi pengguna"
|
||||
"write:admin:resolve-abuse-user-report": "Selesaikan laporan pengguna"
|
||||
"write:admin:send-email": "Mengirim surel"
|
||||
"read:admin:server-info": "Lihat informasi peladen"
|
||||
"read:admin:show-moderation-log": "Lihat log moderasi"
|
||||
"read:admin:show-user": "Lihat informasi pengguna privat"
|
||||
"read:admin:show-users": "Lihat informasi pengguna privat"
|
||||
"write:admin:suspend-user": "Tangguhkan pengguna"
|
||||
"write:admin:unset-user-avatar": "Hapus avatar pengguna"
|
||||
"write:admin:unset-user-banner": "Hapus banner pengguna"
|
||||
"write:admin:unsuspend-user": "Batalkan penangguhan pengguna"
|
||||
"write:admin:meta": "Kelola metadata instansi"
|
||||
"write:admin:user-note": "Kelola moderasi catatan"
|
||||
"write:admin:roles": "Kelola peran"
|
||||
"read:admin:roles": "Lihat peran"
|
||||
"write:admin:relays": "Kelola relay"
|
||||
"read:admin:relays": "Lihat relay"
|
||||
"write:admin:invite-codes": "Kelola kode undangan"
|
||||
"read:admin:invite-codes": "Lihat kode undangan"
|
||||
"write:admin:announcements": "Kelola pengumuman"
|
||||
"read:admin:announcements": "Lihat Pengumuman"
|
||||
"write:admin:avatar-decorations": "Kelola dekorasi avatar"
|
||||
"read:admin:avatar-decorations": "Lihat dekorasi avatar"
|
||||
"write:admin:federation": "Kelola data federasi"
|
||||
"write:admin:account": "Kelola akun pengguna"
|
||||
"read:admin:account": "Lihat akun pengguna"
|
||||
"write:admin:emoji": "Kelola emoji"
|
||||
"read:admin:emoji": "Lihat emoji"
|
||||
"write:admin:queue": "Kelola antrian kerja"
|
||||
"read:admin:queue": "Lihat informasi antrian kerja"
|
||||
"write:admin:promo": "Kelola catatan promosi"
|
||||
"write:admin:drive": "Kelola drive pengguna"
|
||||
"read:admin:drive": "Kelola informasi drive pengguna"
|
||||
"read:admin:stream": "Gunakan API WebSocket untuk Admin"
|
||||
"write:admin:ad": "Kelola iklan"
|
||||
"read:admin:ad": "Lihat iklan"
|
||||
"write:invite-codes": "Membuat kode undangan"
|
||||
"read:invite-codes": "Mendapatkan kode undangan"
|
||||
"write:clip-favorite": "Kelola klip yang difavoritkan"
|
||||
"read:clip-favorite": "Lihat klip yang difavoritkan"
|
||||
"read:federation": "Mendapatkan data federasi"
|
||||
"write:report-abuse": "Melaporkan pelanggaran"
|
||||
_auth:
|
||||
shareAccessTitle: "Mendapatkan ijin akses aplikasi"
|
||||
shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?"
|
||||
@ -1994,6 +2107,7 @@ _widgets:
|
||||
_userList:
|
||||
chooseList: "Pilih daftar"
|
||||
clicker: "Pengeklik"
|
||||
birthdayFollowings: "Pengguna yang merayakan hari ulang tahunnya hari ini"
|
||||
_cw:
|
||||
hide: "Sembunyikan"
|
||||
show: "Lihat konten"
|
||||
@ -2056,9 +2170,11 @@ _profile:
|
||||
changeAvatar: "Ubah avatar"
|
||||
changeBanner: "Ubah header"
|
||||
verifiedLinkDescription: "Dengan memasukkan URL yang mengandung tautan ke profil kamu di sini, ikon verifikasi kepemilikan dapat ditampilkan di sebelah kolom ini."
|
||||
avatarDecorationMax: "Dapat ditambahkan hingga {max} dekorasi."
|
||||
_exportOrImport:
|
||||
allNotes: "Semua catatan"
|
||||
favoritedNotes: "Catatan favorit"
|
||||
clips: "Klip"
|
||||
followingList: "Ikuti"
|
||||
muteList: "Bisukan"
|
||||
blockingList: "Blokir"
|
||||
@ -2179,12 +2295,16 @@ _notification:
|
||||
pollEnded: "Hasil Kuesioner telah keluar"
|
||||
newNote: "Catatan baru"
|
||||
unreadAntennaNote: "Antena {name}"
|
||||
roleAssigned: "Peran Diberikan"
|
||||
emptyPushNotificationMessage: "Pembaruan notifikasi dorong"
|
||||
achievementEarned: "Pencapaian didapatkan"
|
||||
testNotification: "Tes notifikasi"
|
||||
checkNotificationBehavior: "Cek tampilan notifikasi"
|
||||
sendTestNotification: "Kirim tes notifikasi"
|
||||
notificationWillBeDisplayedLikeThis: "Notifikasi akan terlihat seperti ini"
|
||||
reactedBySomeUsers: "{n} orang memberikan reaksi"
|
||||
renotedBySomeUsers: "{n} orang telah merenote"
|
||||
followedBySomeUsers: "{n} orang telah mengikuti"
|
||||
_types:
|
||||
all: "Semua"
|
||||
note: "Catatan baru"
|
||||
@ -2197,6 +2317,7 @@ _notification:
|
||||
pollEnded: "Jajak pendapat berakhir"
|
||||
receiveFollowRequest: "Permintaan mengikuti diterima"
|
||||
followRequestAccepted: "Permintaan mengikuti disetujui"
|
||||
roleAssigned: "Peran Diberikan"
|
||||
achievementEarned: "Pencapaian didapatkan"
|
||||
groupInvited: "Diundang ke grup"
|
||||
app: "Notifikasi dari aplikasi tertaut"
|
||||
@ -2289,6 +2410,11 @@ _moderationLogTypes:
|
||||
createAd: "Iklan telah dibuat"
|
||||
deleteAd: "Iklan telah dihapus"
|
||||
updateAd: "Iklan telah diperbaharui"
|
||||
createAvatarDecoration: "Buat dekorasi avatar"
|
||||
updateAvatarDecoration: "Perbarui dekorasi avatar"
|
||||
deleteAvatarDecoration: "Hapus dekorasi avatar"
|
||||
unsetUserAvatar: "Hapus avatar pengguna"
|
||||
unsetUserBanner: "Hapus banner pengguna"
|
||||
_fileViewer:
|
||||
title: "Rincian berkas"
|
||||
type: "Jenis berkas"
|
||||
@ -2297,3 +2423,95 @@ _fileViewer:
|
||||
uploadedAt: "Diunggah pada"
|
||||
attachedNotes: "Catatan yang dilampirkan"
|
||||
thisPageCanBeSeenFromTheAuthor: "Halaman ini hanya dapat dilihat oleh pengguna yang mengunggah bekas ini."
|
||||
_externalResourceInstaller:
|
||||
title: "Pasang dari situs eksternal"
|
||||
checkVendorBeforeInstall: "Pastikan sumber dari sumber daya ini terpercaya sebelum melakukan pemasangan."
|
||||
_plugin:
|
||||
title: "Apakah kamu ingin memasang plugin ini?"
|
||||
metaTitle: "Informasi plugin"
|
||||
_theme:
|
||||
title: "Apakah kamu ingin memasang tema ini?"
|
||||
metaTitle: "Informasi tema"
|
||||
_meta:
|
||||
base: "Skema warna dasar"
|
||||
_vendorInfo:
|
||||
title: "Informasi sumber"
|
||||
endpoint: "Referensi Endpoint"
|
||||
hashVerify: "Verifikasi hash"
|
||||
_errors:
|
||||
_invalidParams:
|
||||
title: "Parameter tidak valid"
|
||||
description: "Tidak cukup informasi untuk memuat data dari situs eksternal. Mohon konfirmasi kembali URL yang dimasukkan."
|
||||
_resourceTypeNotSupported:
|
||||
title: "Sumber daya eksternal ini tidak didukung"
|
||||
description: "Tipe sumber daya eksternal ini tidak didukung. Mohon kontak administrator dari situs tersebut."
|
||||
_failedToFetch:
|
||||
title: "Gagal memuat data"
|
||||
fetchErrorDescription: "Kesalahan terjadi ketika menghubungkan dengan situs eksternal. Jika percobaan kembali tidak dapat memperbaiki masalah ini, mohon hubungi administrator dari situs tersebut."
|
||||
parseErrorDescription: "Kesalahan terjadi dalam memproses data yang dimuat dari situs eksternal. Mohon hubungi administrator dari situs tersebut."
|
||||
_hashUnmatched:
|
||||
title: "Verifikasi data gagal"
|
||||
description: "Kesalahan terjadi dalam memverifikasi integritas data yang diambil. Sebagai pencegahan keamanan, pemasangan tidak dapat dilanjutkan. Mohon hubungi administrator dari situs tersebut."
|
||||
_pluginParseFailed:
|
||||
title: "Kesalahan AiScript"
|
||||
description: "Data yang diminta telah diambil dengan sukses, namun kesalahan terjadi ketika AiScript melakukan parsing. Mohon hubungi pembuat plugin. Detil kesalahan dapat dilihat pada konsol Javascript."
|
||||
_pluginInstallFailed:
|
||||
title: "Pemasangan plugin gagal"
|
||||
description: "Kesalahan terjadi ketika pemasangan plugin. Mohon coba lagi. Detil kesalahan dapat dilihat pada konsol Javascript."
|
||||
_themeParseFailed:
|
||||
title: "Parsing tema gagal"
|
||||
description: "Data yang diminta telah diambil dengan sukses, namun kesalahan terjadi ketika tema melakukan parsing. Mohon hubungi pembuat tema. Detil kesalahan dapat dilihat pada konsol Javascript."
|
||||
_themeInstallFailed:
|
||||
title: "Pemasangan tema gagal"
|
||||
description: "Kesalahan terjadi ketika pemasangan tema. Mohon coba lagi. Detil kesalahan dapat dilihat pada konsol Javascript."
|
||||
_dataSaver:
|
||||
_media:
|
||||
title: "Memuat media"
|
||||
description: "Mencegah gambar/video dimuat secara otomatis. Menyembunyikan gambar/video dan akan dimuat ketika diketuk."
|
||||
_avatar:
|
||||
title: "Gambar avatar"
|
||||
description: "Hentikan animasi gambar avatar. Gambar animasi dapat berukuran lebih besar dari gambar biasa, berpotensi pada pengurangan lalu lintas data lebih jauh."
|
||||
_urlPreview:
|
||||
title: "Gambar kecil URL pratinjau"
|
||||
description: "Gambar kecil URL pratinjau tidak akan dimuat lagi."
|
||||
_code:
|
||||
title: "Penyorotan kode"
|
||||
description: "Jika notasi penyorotan kode digunakan di MFM, dll. Fungsi tersebut tidak akan dimuat apabila tidak diketuk. Penyorotan sintaks membutuhkan pengunduhan berkas definisi penyorotan untuk setiap bahasa pemrograman. Oleh sebab itu, menonaktifkan pemuatan otomatis dari berkas ini dilakukan untuk mengurangi jumlah komunikasi data."
|
||||
_hemisphere:
|
||||
N: "Bumi belahan utara"
|
||||
S: "Bumi belahan selatan"
|
||||
caption: "Digunakan dalam beberapa pengaturan klien untuk menentukan musim."
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
gameSettings: "Pengaturan permainan"
|
||||
chooseBoard: "Pilih papan"
|
||||
blackOrWhite: "Hitam/Putih"
|
||||
blackIs: "{name} bermain sebagai Hitam"
|
||||
rules: "Aturan"
|
||||
thisGameIsStartedSoon: "Permainan akan segera dimulai"
|
||||
waitingForOther: "Menunggu langkah giliran dari lawan"
|
||||
waitingForMe: "Menungguh langkah giliran dari kamu"
|
||||
waitingBoth: "Bersiap"
|
||||
ready: "Siap"
|
||||
cancelReady: "Belum siap"
|
||||
opponentTurn: "Giliran lawan"
|
||||
myTurn: "Giliran kamu"
|
||||
turnOf: "Giliran {name}"
|
||||
pastTurnOf: "Giliran {name}"
|
||||
surrender: "Menyerah"
|
||||
surrendered: "Telah menyerah"
|
||||
timeout: "Waktu habis"
|
||||
drawn: "Seri"
|
||||
won: "{name} menang"
|
||||
black: "Hitam"
|
||||
white: "Putih"
|
||||
total: "Jumlah"
|
||||
turnCount: "Langkah ke {count}"
|
||||
myGames: "Rondeku"
|
||||
allGames: "Semua ronde"
|
||||
ended: "Selesai"
|
||||
playing: "Sedang bermain"
|
||||
isLlotheo: "Pemain dengan batu yang sedikit menang (Llotheo)"
|
||||
loopedMap: "Peta melingkar"
|
||||
canPutEverywhere: "Keping dapat ditaruh dimana saja"
|
||||
|
||||
|
8297
locales/index.d.ts
vendored
8297
locales/index.d.ts
vendored
File diff suppressed because it is too large
Load Diff
@ -102,7 +102,7 @@ defaultNoteVisibility: "Privacy predefinita delle note"
|
||||
follow: "Segui"
|
||||
followRequest: "Richiesta di follow"
|
||||
followRequests: "Richieste di follow"
|
||||
unfollow: "Interrompi following"
|
||||
unfollow: "Smetti di seguire"
|
||||
followRequestPending: "Richiesta in approvazione"
|
||||
enterEmoji: "Inserisci emoji"
|
||||
renote: "Rinota"
|
||||
@ -130,6 +130,7 @@ overwriteFromPinnedEmojis: "Sovrascrivi con le impostazioni globali"
|
||||
reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere."
|
||||
rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note"
|
||||
attachCancel: "Rimuovi allegato"
|
||||
deleteFile: "File da Drive eliminato"
|
||||
markAsSensitive: "Segna come esplicito"
|
||||
unmarkAsSensitive: "Non segnare come esplicito "
|
||||
enterFileName: "Nome del file"
|
||||
@ -379,6 +380,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Abilita hCaptcha"
|
||||
hcaptchaSiteKey: "Chiave del sito"
|
||||
hcaptchaSecretKey: "Chiave segreta"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "Abilita hCaptcha"
|
||||
mcaptchaSiteKey: "Chiave del sito"
|
||||
mcaptchaSecretKey: "Chiave segreta"
|
||||
mcaptchaInstanceUrl: "URL della istanza mCaptcha"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Abilita reCAPTCHA"
|
||||
recaptchaSiteKey: "Chiave del sito"
|
||||
@ -429,7 +435,7 @@ moderation: "moderazione"
|
||||
moderationNote: "Promemoria di moderazione"
|
||||
addModerationNote: "Aggiungi promemoria di moderazione"
|
||||
moderationLogs: "Cronologia di moderazione"
|
||||
nUsersMentioned: "{n} profili menzionati"
|
||||
nUsersMentioned: "{n} profili ne parlano"
|
||||
securityKeyAndPasskey: "Chiave di sicurezza e accesso"
|
||||
securityKey: "Chiave di sicurezza"
|
||||
lastUsed: "Ultima attività"
|
||||
@ -638,6 +644,7 @@ medium: "Medio"
|
||||
small: "Piccolo"
|
||||
generateAccessToken: "Genera token di accesso"
|
||||
permission: "Autorizzazioni "
|
||||
adminPermission: "Privilegi amministrativi"
|
||||
enableAll: "Abilita tutto"
|
||||
disableAll: "Disabilita tutto"
|
||||
tokenRequested: "Autorizza accesso al profilo"
|
||||
@ -663,7 +670,7 @@ hardWordMute: "Filtro parole forte"
|
||||
regexpError: "errore regex"
|
||||
regexpErrorDescription: "Si è verificato un errore nell'espressione regolare alla riga {line} della parola muta {tab}:"
|
||||
instanceMute: "Silenzia l'istanza"
|
||||
userSaysSomething: "{name} ha detto qualcosa"
|
||||
userSaysSomething: "{name} ha parlato"
|
||||
makeActive: "Attiva"
|
||||
display: "Visualizza"
|
||||
copy: "Copia"
|
||||
@ -681,6 +688,7 @@ useGlobalSettingDesc: "Quando attiva, verranno utilizzate le impostazioni notifi
|
||||
other: "Ulteriori"
|
||||
regenerateLoginToken: "Genera di nuovo un token di connessione"
|
||||
regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi vanno disconnessi."
|
||||
theKeywordWhenSearchingForCustomEmoji: "Questa sarà la parola chiave durante la ricerca di emoji personalizzate"
|
||||
setMultipleBySeparatingWithSpace: "È possibile creare multiple voci separate da spazi."
|
||||
fileIdOrUrl: "ID o URL del file"
|
||||
behavior: "Comportamento"
|
||||
@ -766,7 +774,7 @@ reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricament
|
||||
needReloadToApply: "È necessario riavviare per rendere effettive le modifiche."
|
||||
showTitlebar: "Visualizza la barra del titolo"
|
||||
clearCache: "Svuota la cache"
|
||||
onlineUsersCount: "{n} persone online"
|
||||
onlineUsersCount: "{n} persone attive adesso"
|
||||
nUsers: "{n} profili"
|
||||
nNotes: "{n}Note"
|
||||
sendErrorReports: "Invia segnalazioni di errori"
|
||||
@ -877,7 +885,7 @@ pubSub: "Publish/Subscribe del profilo"
|
||||
lastCommunication: "La comunicazione più recente"
|
||||
resolved: "Risolto"
|
||||
unresolved: "Non risolto"
|
||||
breakFollow: "Interrompi follow"
|
||||
breakFollow: "Impedire di seguirmi"
|
||||
breakFollowConfirm: "Vuoi davvero che questo profilo smetta di seguirti?"
|
||||
itsOn: "Abilitato"
|
||||
itsOff: "Disabilitato"
|
||||
@ -893,6 +901,8 @@ makeReactionsPublicDescription: "La lista delle reazioni che avete fatto è a di
|
||||
classic: "Classico"
|
||||
muteThread: "Silenzia conversazione"
|
||||
unmuteThread: "Riattiva la conversazione"
|
||||
followingVisibility: "Visibilità dei profili seguiti"
|
||||
followersVisibility: "Visibilità dei profili che ti seguono"
|
||||
continueThread: "Altre conversazioni"
|
||||
deleteAccountConfirm: "Così verrà eliminato il profilo. Vuoi procedere?"
|
||||
incorrectPassword: "La password è errata."
|
||||
@ -1045,6 +1055,9 @@ resetPasswordConfirm: "Vuoi davvero ripristinare la password?"
|
||||
sensitiveWords: "Parole esplicite"
|
||||
sensitiveWordsDescription: "Imposta automaticamente \"Home\" alla visibilità delle Note che contengono una qualsiasi parola tra queste configurate. Puoi separarle per riga."
|
||||
sensitiveWordsDescription2: "Gli spazi creano la relazione \"E\" tra parole (questo E quello). Racchiudere una parola nelle slash \"/\" la trasforma in Espressione Regolare."
|
||||
prohibitedWords: "Parole proibite"
|
||||
prohibitedWordsDescription: "Verrà impedito di pubblicare Note che abbiano le parole indicate. Puoi impostare più parole, separatamente, su ogni riga."
|
||||
prohibitedWordsDescription2: "Gli spazi creano la relazione \"E\" tra parole (questo E quello). Racchiudere una parola nelle slash \"/\" la trasforma in Espressione Regolare."
|
||||
hiddenTags: "Hashtag nascosti"
|
||||
hiddenTagsDescription: "Impedire la visualizzazione del tag impostato nei trend. Puoi impostare più valori, uno per riga."
|
||||
notesSearchNotAvailable: "Non è possibile cercare tra le Note."
|
||||
@ -1063,6 +1076,8 @@ limitWidthOfReaction: "Limita la larghezza delle reazioni e ridimensionale"
|
||||
noteIdOrUrl: "ID della Nota o URL"
|
||||
video: "Video"
|
||||
videos: "Video"
|
||||
audio: "Audio"
|
||||
audioFiles: "Audio"
|
||||
dataSaver: "Risparmia dati"
|
||||
accountMigration: "Migrazione del profilo"
|
||||
accountMoved: "Questo profilo ha migrato altrove:"
|
||||
@ -1166,6 +1181,7 @@ hideRepliesToOthersInTimelineAll: "Nascondi le risposte dei tuoi follow nella TL
|
||||
confirmShowRepliesAll: "Questa è una attività irreversibile. Vuoi davvero includere tutte le risposte dei following in TL?"
|
||||
confirmHideRepliesAll: "Questa è una attività irreversibile. Vuoi davvero escludere tutte le risposte dei following in TL?"
|
||||
externalServices: "Servizi esterni"
|
||||
sourceCode: "Codice sorgente"
|
||||
impressum: "Dichiarazione di proprietà"
|
||||
impressumUrl: "URL della dichiarazione di proprietà"
|
||||
impressumDescription: "La dichiarazione di proprietà, è obbligatoria in alcuni paesi come la Germania (Impressum)."
|
||||
@ -1193,6 +1209,27 @@ remainingN: "Rimangono: {n}"
|
||||
overwriteContentConfirm: "Vuoi davvero sostituire l'attuale contenuto?"
|
||||
seasonalScreenEffect: "Schermate in base alla stagione"
|
||||
decorate: "Decora"
|
||||
addMfmFunction: "Aggiungi decorazioni"
|
||||
enableQuickAddMfmFunction: "Attiva il selettore di funzioni MFM"
|
||||
bubbleGame: "Bubble Game"
|
||||
sfx: "Effetti sonori"
|
||||
soundWillBePlayed: "Verrà riprodotto il suono"
|
||||
showReplay: "Vedi i replay"
|
||||
replay: "Replay"
|
||||
replaying: "Replay in corso"
|
||||
ranking: "Classifica"
|
||||
lastNDays: "Ultimi {n} giorni"
|
||||
backToTitle: "Torna al titolo"
|
||||
hemisphere: "Geolocalizzazione"
|
||||
withSensitive: "Mostra le Note con allegati espliciti"
|
||||
userSaysSomethingSensitive: "Note da {name} con allegati espliciti"
|
||||
enableHorizontalSwipe: "Trascina per invertire i tab"
|
||||
_bubbleGame:
|
||||
howToPlay: "Come giocare"
|
||||
_howToPlay:
|
||||
section1: "Regola la posizione e rilascia l'oggetto nella casella."
|
||||
section2: "Ottieni un punteggio, quando due oggetti dello stesso tipo si toccano e si trasformano in un oggetto diverso."
|
||||
section3: "Se gli oggetti traboccano dalla scatola, il gioco finisce. Cerca di ottenere un punteggio elevato fondendo gli oggetti, evitando che escano dalla scatola!"
|
||||
_announcement:
|
||||
forExistingUsers: "Solo ai profili attuali"
|
||||
forExistingUsersDescription: "L'annuncio sarà visibile solo ai profili esistenti in questo momento. Se disabilitato, sarà visibile anche ai profili che verranno creati dopo la pubblicazione di questo annuncio."
|
||||
@ -1566,6 +1603,13 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "Attestato di partecipazione al corso per principianti di CherryPick"
|
||||
description: "Ha completato il tutorial"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "Estrai l'oggetto più grande dal Bubble Game"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "Doppio 🤯"
|
||||
description: "Due oggetti più grossi contemporaneamente nel Bubble Game"
|
||||
flavor: "Ha le dimensioni di una bento-box 🤯 🤯"
|
||||
_role:
|
||||
new: "Nuovo ruolo"
|
||||
edit: "Modifica ruolo"
|
||||
@ -1656,6 +1700,7 @@ _emailUnavailable:
|
||||
disposable: "Indirizzo email non utilizzabile"
|
||||
mx: "Server email non corretto"
|
||||
smtp: "Il server email non risponde"
|
||||
banned: "Non puoi registrarti con questo indirizzo email"
|
||||
_ffVisibility:
|
||||
public: "Pubblica"
|
||||
followers: "Mostra solo ai follower"
|
||||
@ -2015,6 +2060,55 @@ _permissions:
|
||||
"write:flash": "Modifica Play"
|
||||
"read:flash-likes": "Visualizza lista di Play piaciuti"
|
||||
"write:flash-likes": "Modifica lista di Play piaciuti"
|
||||
"read:admin:abuse-user-reports": "Mostra i report dai profili utente"
|
||||
"write:admin:delete-account": "Elimina l'account utente"
|
||||
"write:admin:delete-all-files-of-a-user": "Elimina i file dell'account utente"
|
||||
"read:admin:index-stats": "Visualizza informazioni sugli indici del database"
|
||||
"read:admin:table-stats": "Visualizza informazioni sulle tabelle del database"
|
||||
"read:admin:user-ips": "Visualizza indirizzi IP degli account"
|
||||
"read:admin:meta": "Visualizza i metadati dell'istanza"
|
||||
"write:admin:reset-password": "Ripristina la password dell'account utente"
|
||||
"write:admin:resolve-abuse-user-report": "Risolvere le segnalazioni dagli account utente"
|
||||
"write:admin:send-email": "Spedire email"
|
||||
"read:admin:server-info": "Vedere le informazioni sul server"
|
||||
"read:admin:show-moderation-log": "Vedere lo storico di moderazione"
|
||||
"read:admin:show-user": "Vedere le informazioni private degli account utente"
|
||||
"read:admin:show-users": "Vedere le informazioni private degli account utente"
|
||||
"write:admin:suspend-user": "Sospendere i profili"
|
||||
"write:admin:unset-user-avatar": "Rimuovere la foto profilo dai profili"
|
||||
"write:admin:unset-user-banner": "Rimuovere l'immagine testata dai profili"
|
||||
"write:admin:unsuspend-user": "Togliere la sospensione ai profili"
|
||||
"write:admin:meta": "Modificare i metadati dell'istanza"
|
||||
"write:admin:user-note": "Scrivere annotazioni di moderazione"
|
||||
"write:admin:roles": "Gestire i ruoli"
|
||||
"read:admin:roles": "Vedere i ruoli"
|
||||
"write:admin:relays": "Gestire i Relay"
|
||||
"read:admin:relays": "Vedere i Relay"
|
||||
"write:admin:invite-codes": "Gestire codici di invito"
|
||||
"read:admin:invite-codes": "Vedere codici di invito"
|
||||
"write:admin:announcements": "Gestire gli annunci"
|
||||
"read:admin:announcements": "Leggere gli annunci"
|
||||
"write:admin:avatar-decorations": "Gestire le decorazioni"
|
||||
"read:admin:avatar-decorations": "Vedere le decorazioni"
|
||||
"write:admin:federation": "Gestire la federazione"
|
||||
"write:admin:account": "Vedere la federazione"
|
||||
"read:admin:account": "Vedere le utenze"
|
||||
"write:admin:emoji": "Gestire le emoji personalizzate"
|
||||
"read:admin:emoji": "Vedere le emoji personalizzate"
|
||||
"write:admin:queue": "Gestire la coda di attività"
|
||||
"read:admin:queue": "Vedere la coda di attività"
|
||||
"write:admin:promo": "Gestire le promozioni"
|
||||
"write:admin:drive": "Gestire il Drive degli account"
|
||||
"read:admin:drive": "Vedere il Drive degli account"
|
||||
"read:admin:stream": "Usare le API Websocket"
|
||||
"write:admin:ad": "Gestire i banner pubblicitari"
|
||||
"read:admin:ad": "Vedere i banner pubblicitari"
|
||||
"write:invite-codes": "Creare codici di invito"
|
||||
"read:invite-codes": "Vedere i codici di invito"
|
||||
"write:clip-favorite": "Impostare Clip preferite"
|
||||
"read:clip-favorite": "Vedere Clip preferite"
|
||||
"read:federation": "Vedere la federazione"
|
||||
"write:report-abuse": "Inviare segnalazioni"
|
||||
_auth:
|
||||
shareAccessTitle: "Permessi dell'applicazione"
|
||||
shareAccess: "Vuoi autorizzare {name} ad accedere al tuo profilo?"
|
||||
@ -2060,7 +2154,7 @@ _widgets:
|
||||
postForm: "Finestra di pubblicazione"
|
||||
slideshow: "Diapositive"
|
||||
button: "Pulsante"
|
||||
onlineUsers: "Persone online"
|
||||
onlineUsers: "Persone attive adesso"
|
||||
jobQueue: "Coda di lavoro"
|
||||
serverMetric: "Statistiche server"
|
||||
aiscript: "Console AiScript"
|
||||
@ -2137,6 +2231,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Tutte le note"
|
||||
favoritedNotes: "Note preferite"
|
||||
clips: "Clip"
|
||||
followingList: "Follow"
|
||||
muteList: "Elenco profili silenziati"
|
||||
blockingList: "Elenco profili bloccati"
|
||||
@ -2257,6 +2352,7 @@ _notification:
|
||||
pollEnded: "Risultati del sondaggio."
|
||||
newNote: "Nuove Note"
|
||||
unreadAntennaNote: "Antenna {name}"
|
||||
roleAssigned: "Ruolo assegnato"
|
||||
emptyPushNotificationMessage: "Le notifiche push sono state aggiornate."
|
||||
achievementEarned: "Obiettivo raggiunto"
|
||||
testNotification: "Prova la notifica"
|
||||
@ -2279,6 +2375,7 @@ _notification:
|
||||
receiveFollowRequest: "Richiesta di follow ricevuta"
|
||||
followRequestAccepted: "Richiesta di follow accettata"
|
||||
groupInvited: "Invito a un gruppo"
|
||||
roleAssigned: "Ruolo concesso"
|
||||
achievementEarned: "Risultato raggiunto"
|
||||
app: "Notifiche da applicazioni"
|
||||
_actions:
|
||||
@ -2437,3 +2534,53 @@ _dataSaver:
|
||||
_code:
|
||||
title: "Codice evidenziato"
|
||||
description: "Impedire che il codice sorgente sia automaticamente evidenziato. Evidenziare il codice richiede il caricamento di un file per ogni linguaggio. Puoi evidenziare soltanto il codice che intendi leggere e ridurre il traffico inutilizzato."
|
||||
_hemisphere:
|
||||
N: "Emisfero boreale"
|
||||
S: "Emisfero australe"
|
||||
caption: "Utile per alcune impostazioni del client, per determinare la stagione."
|
||||
_reversi:
|
||||
reversi: "Reversi"
|
||||
gameSettings: "Impostazioni di gioco"
|
||||
chooseBoard: "Segli la tavola"
|
||||
blackOrWhite: "Neri / Bianchi"
|
||||
blackIs: "{name} muove i Neri"
|
||||
rules: "Regole del gioco"
|
||||
thisGameIsStartedSoon: "Il gioco sta per iniziare"
|
||||
waitingForOther: "Attendere l'avversario"
|
||||
waitingForMe: "Ti stanno aspettando"
|
||||
waitingBoth: "Preparatevi"
|
||||
ready: "Pronti"
|
||||
cancelReady: "Riprendere la preparazione"
|
||||
opponentTurn: "Turno avversario"
|
||||
myTurn: "Tocca a te"
|
||||
turnOf: "Tocca a {name}"
|
||||
pastTurnOf: "Turno di {name}"
|
||||
surrender: "Mi arrendo"
|
||||
surrendered: "Ha ceduto"
|
||||
timeout: "Tempo scaduto"
|
||||
drawn: "Pareggio"
|
||||
won: "Ha vinto {name}"
|
||||
black: "Neri"
|
||||
white: "Bianchi"
|
||||
total: "Totale"
|
||||
turnCount: "Turno N. {count}"
|
||||
myGames: "Le mie sfide"
|
||||
allGames: "Tutte le sfide"
|
||||
ended: "Conclusione"
|
||||
playing: "In gioco"
|
||||
isLlotheo: "Vince chi ha meno pietre (Roseo)"
|
||||
loopedMap: "Mappa ricorsiva"
|
||||
canPutEverywhere: "Modalità che può essere posizionata ovunque"
|
||||
timeLimitForEachTurn: "Tempo limite per turno"
|
||||
freeMatch: "Sfida libera"
|
||||
lookingForPlayer: "Alla ricerca di un avversario"
|
||||
gameCanceled: "Sfida cancellata"
|
||||
shareToTlTheGameWhenStart: "Pubblica l'inizio della partita sulla tua Timeline"
|
||||
iStartedAGame: "Inizia la sfida! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "L'avversario ha cambiato configurazione"
|
||||
allowIrregularRules: "Regole inconsuete (completamente libere)"
|
||||
disallowIrregularRules: "Impedire le regole inconsuete"
|
||||
_offlineScreen:
|
||||
title: "Scollegato. Impossibile connettersi al server"
|
||||
header: "Impossibile connettersi al server"
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
_lang_: "日本語"
|
||||
|
||||
forceRenoteVisibilitySelector: "リノートの公開範囲を指定"
|
||||
cherrypickLabs: "CherryPick研究室"
|
||||
cherrypickLabsDescription: "まだ開発中の機能を試してみませんか。一部の機能はちゃんと動かないかもしれません。"
|
||||
copiedLink: "リンクをコピーしました!"
|
||||
@ -209,6 +210,7 @@ overwriteFromPinnedEmojis: "全般設定から上書きする"
|
||||
reactionSettingDescription2: "ドラッグして並び替え、クリックして削除、+を押して追加します。"
|
||||
rememberNoteVisibility: "公開範囲を記憶する"
|
||||
attachCancel: "添付取り消し"
|
||||
deleteFile: "ファイルを削除"
|
||||
markAsSensitive: "センシティブとして設定"
|
||||
unmarkAsSensitive: "センシティブを解除する"
|
||||
enterFileName: "ファイル名を入力"
|
||||
@ -459,6 +461,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptchaを有効にする"
|
||||
hcaptchaSiteKey: "サイトキー"
|
||||
hcaptchaSecretKey: "シークレットキー"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "mCaptchaを有効にする"
|
||||
mcaptchaSiteKey: "サイトキー"
|
||||
mcaptchaSecretKey: "シークレットキー"
|
||||
mcaptchaInstanceUrl: "mCaptchaのインスタンスのURL"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHAを有効にする"
|
||||
recaptchaSiteKey: "サイトキー"
|
||||
@ -725,6 +732,7 @@ medium: "中"
|
||||
small: "小"
|
||||
generateAccessToken: "アクセストークンの発行"
|
||||
permission: "権限"
|
||||
adminPermission: "管理者権限"
|
||||
enableAll: "全て有効にする"
|
||||
disableAll: "全て無効にする"
|
||||
tokenRequested: "アカウントへのアクセス許可"
|
||||
@ -768,6 +776,7 @@ useGlobalSettingDesc: "オンにすると、アカウントの通知設定が使
|
||||
other: "その他"
|
||||
regenerateLoginToken: "ログイントークンを再生成"
|
||||
regenerateLoginTokenDescription: "ログインに使用される内部トークンを再生成します。通常この操作を行う必要はありません。再生成すると、全てのデバイスでログアウトされます。"
|
||||
theKeywordWhenSearchingForCustomEmoji: "カスタム絵文字を検索する時のキーワードになります。"
|
||||
setMultipleBySeparatingWithSpace: "スペースで区切って複数設定できます。"
|
||||
fileIdOrUrl: "ファイルIDまたはURL"
|
||||
behavior: "動作"
|
||||
@ -1087,6 +1096,7 @@ neverShow: "今後表示しない"
|
||||
remindMeLater: "また後で"
|
||||
didYouLikeMisskey: "CherryPickを気に入っていただけましたか?"
|
||||
pleaseDonate: "CherryPickは{host}が使用している無料のソフトウェアです。これからも開発を続けられるように、ぜひ寄付をお願いします!"
|
||||
correspondingSourceIsAvailable: "対応するソースコードは{anchor}から利用可能です。"
|
||||
roles: "ロール"
|
||||
role: "ロール"
|
||||
noRole: "ロールはありません"
|
||||
@ -1138,6 +1148,9 @@ resetPasswordConfirm: "パスワードリセットしますか?"
|
||||
sensitiveWords: "センシティブワード"
|
||||
sensitiveWordsDescription: "設定したワードが含まれるノートの公開範囲をホームにします。改行で区切って複数設定できます。"
|
||||
sensitiveWordsDescription2: "スペースで区切るとAND指定になり、キーワードをスラッシュで囲むと正規表現になります。"
|
||||
prohibitedWords: "禁止ワード"
|
||||
prohibitedWordsDescription: "設定したワードが含まれるノートを投稿しようとした際、エラーとなるようにします。改行で区切って複数設定できます。"
|
||||
prohibitedWordsDescription2: "スペースで区切るとAND指定になり、キーワードをスラッシュで囲むと正規表現になります。"
|
||||
hiddenTags: "非表示ハッシュタグ"
|
||||
hiddenTagsDescription: "設定したタグをトレンドに表示させないようにします。改行で区切って複数設定できます。"
|
||||
notesSearchNotAvailable: "ノート検索は利用できません。"
|
||||
@ -1156,6 +1169,8 @@ limitWidthOfReaction: "リアクションの最大横幅を制限し、縮小し
|
||||
noteIdOrUrl: "ノートIDまたはURL"
|
||||
video: "動画"
|
||||
videos: "動画"
|
||||
audio: "音声"
|
||||
audioFiles: "音声"
|
||||
dataSaver: "データセーバー"
|
||||
accountMigration: "アカウントの移行"
|
||||
accountMoved: "このユーザーは新しいアカウントに移行しました:"
|
||||
@ -1265,6 +1280,13 @@ hideRepliesToOthersInTimelineAll: "TLに現在フォロー中の人全員の返
|
||||
confirmShowRepliesAll: "この操作は元に戻せません。本当にTLに現在フォロー中の人全員の返信を含めるようにしますか?"
|
||||
confirmHideRepliesAll: "この操作は元に戻せません。本当にTLに現在フォロー中の人全員の返信を含めないようにしますか?"
|
||||
externalServices: "外部サービス"
|
||||
sourceCode: "ソースコード"
|
||||
sourceCodeIsNotYetProvided: "ソースコードはまだ提供されていません。この問題の修正について管理者に問い合わせてください。"
|
||||
repositoryUrl: "リポジトリURL"
|
||||
repositoryUrlDescription: "ソースコードが公開されているリポジトリがある場合、そのURLを記入します。CherryPickを現状のまま(ソースコードにいかなる変更も加えずに)使用している場合は https://github.com/kokonect-link/cherrypick と記入します。"
|
||||
repositoryUrlOrTarballRequired: "リポジトリを公開していない場合、代わりにtarballを提供する必要があります。詳細は.config/example.ymlを参照してください。"
|
||||
feedback: "フィードバック"
|
||||
feedbackUrl: "フィードバックURL"
|
||||
impressum: "運営者情報"
|
||||
impressumUrl: "運営者情報URL"
|
||||
impressumDescription: "ドイツなどの一部の国と地域では表示が義務付けられています(Impressum)。"
|
||||
@ -1294,6 +1316,19 @@ seasonalScreenEffect: "季節に応じた画面の演出"
|
||||
decorate: "デコる"
|
||||
addMfmFunction: "装飾を追加"
|
||||
enableQuickAddMfmFunction: "高度なMFMのピッカーを表示する"
|
||||
bubbleGame: "バブルゲーム"
|
||||
sfx: "効果音"
|
||||
soundWillBePlayed: "サウンドが再生されます"
|
||||
showReplay: "リプレイを見る"
|
||||
replay: "リプレイ"
|
||||
replaying: "リプレイ中"
|
||||
ranking: "ランキング"
|
||||
lastNDays: "直近{n}日"
|
||||
backToTitle: "タイトルへ"
|
||||
hemisphere: "お住まいの地域"
|
||||
withSensitive: "センシティブなファイルを含むノートを表示"
|
||||
userSaysSomethingSensitive: "{name}のセンシティブなファイルを含む投稿"
|
||||
enableHorizontalSwipe: "スワイプしてタブを切り替える"
|
||||
showUnreadNotificationsCount: "未読の通知の数を表示する"
|
||||
showCatOnly: "キャット付きのみ"
|
||||
additionalPermissionsForFlash: "Playへの追加許可"
|
||||
@ -1321,6 +1356,13 @@ _showingAnimatedImages:
|
||||
_messaging:
|
||||
direct: "ダイレクトメッセージ"
|
||||
|
||||
_bubbleGame:
|
||||
howToPlay: "遊び方"
|
||||
_howToPlay:
|
||||
section1: "位置を調整してハコにモノを落とします。"
|
||||
section2: "同じ種類のモノがくっつくと別のモノに変化して、スコアが得られます。"
|
||||
section3: "モノがハコからあふれるとゲームオーバーです。ハコからあふれないようにしつつモノを融合させてハイスコアを目指そう!"
|
||||
|
||||
_announcement:
|
||||
forExistingUsers: "既存ユーザーのみ"
|
||||
forExistingUsersDescription: "有効にすると、このお知らせ作成時点で存在するユーザーにのみお知らせが表示されます。無効にすると、このお知らせ作成後にアカウントを作成したユーザーにもお知らせが表示されます。"
|
||||
@ -1330,7 +1372,7 @@ _announcement:
|
||||
tooManyActiveAnnouncementDescription: "アクティブなお知らせが多いため、UXが低下する可能性があります。終了したお知らせはアーカイブすることを検討してください。"
|
||||
readConfirmTitle: "既読にしますか?"
|
||||
readConfirmText: "「{title}」の内容を読み、既読にします。"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "特に新規ユーザーのUXを損ねる可能性が高いため、ストック情報ではなくフロー情報の掲示にお知らせを使用することを推奨します。"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "特に新規ユーザーのUXを損ねる可能性が高いため、常時掲示するための情報ではなく、即時性が求められる情報の掲示のためにお知らせを使用することを推奨します。"
|
||||
dialogAnnouncementUxWarn: "ダイアログ形式のお知らせが同時に2つ以上ある場合、UXに悪影響を及ぼす可能性が非常に高いため、使用は慎重に行うことを推奨します。"
|
||||
silence: "非通知"
|
||||
silenceDescription: "オンにすると、このお知らせは通知されず、既読にする必要もなくなります。"
|
||||
@ -1353,6 +1395,10 @@ _cherrypick:
|
||||
showRenoteConfirmPopupDescription: "この設定は「全般 - リノートと引用ボタンを分けて表示する」設定がオンになっている必要があります。"
|
||||
expandOnNoteClick: "クリックでノートの詳細を開く"
|
||||
expandOnNoteClickDescription: "オフの場合、ノートメニューの[詳細]をクリックするか、日付をクリックして開けます。"
|
||||
expandOnNoteClickBehavior: "ノートをクリックして開くとき"
|
||||
_expandOnNoteClickBehavior:
|
||||
click: "クリックして開く"
|
||||
doubleClick: "ダブルクリックで開く"
|
||||
displayHeaderNavBarWhenScroll: "スクロール時の要素表示(ヘッダー、フローティングボタン、ナビゲーションバー)"
|
||||
_displayHeaderNavBarWhenScroll:
|
||||
all: "全て表示"
|
||||
@ -1783,6 +1829,13 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "CherryPick初心者講座 修了証"
|
||||
description: "チュートリアルを完了した"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "バブルゲームで最も大きいモノを出した"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "ダブル🤯"
|
||||
description: "バブルゲームで最も大きいモノを2つ同時に出した"
|
||||
flavor: "これくらいの おべんとばこに 🤯 🤯 ちょっとつめて"
|
||||
|
||||
_role:
|
||||
new: "ロールの作成"
|
||||
@ -1966,6 +2019,8 @@ _aboutMisskey:
|
||||
contributors: "コントリビューター"
|
||||
allContributors: "全てのコントリビューター"
|
||||
source: "ソースコード"
|
||||
original: "オリジナル"
|
||||
thisIsModifiedVersion: "{name}はオリジナルのCherryPickを改変したバージョンを使用しています。"
|
||||
translation: "Misskeyを翻訳"
|
||||
donate: "Misskeyに寄付"
|
||||
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます🥰"
|
||||
@ -2474,6 +2529,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "全てのノート"
|
||||
favoritedNotes: "お気に入りにしたノート"
|
||||
clips: "クリップ"
|
||||
followingList: "フォロー"
|
||||
muteList: "ミュート"
|
||||
blockingList: "ブロック"
|
||||
@ -2798,6 +2854,58 @@ _dataSaver:
|
||||
title: "コードハイライト"
|
||||
description: "MFMなどでコードハイライト記法が使われている場合、タップするまで読み込まれなくなります。コードハイライトではハイライトする言語ごとにその定義ファイルを読み込む必要がありますが、それらが自動で読み込まれなくなるため、通信量の削減が見込めます。"
|
||||
|
||||
_hemisphere:
|
||||
N: "北半球"
|
||||
S: "南半球"
|
||||
caption: "一部のクライアント設定で、季節を判定するために使用します。"
|
||||
|
||||
_reversi:
|
||||
reversi: "リバーシ"
|
||||
gameSettings: "対局の設定"
|
||||
chooseBoard: "ボードを選択"
|
||||
blackOrWhite: "先行/後攻"
|
||||
blackIs: "{name}が黒(先行)"
|
||||
rules: "ルール"
|
||||
thisGameIsStartedSoon: "対局はまもなく開始されます"
|
||||
waitingForOther: "相手の準備が完了するのを待っています"
|
||||
waitingForMe: "あなたの準備が完了するのを待っています"
|
||||
waitingBoth: "準備してください"
|
||||
ready: "準備完了"
|
||||
cancelReady: "準備を再開"
|
||||
opponentTurn: "相手のターンです"
|
||||
myTurn: "あなたのターンです"
|
||||
turnOf: "{name}のターンです"
|
||||
pastTurnOf: "{name}のターン"
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
timeout: "時間切れ"
|
||||
drawn: "引き分け"
|
||||
won: "{name}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
turnCount: "{count}ターン目"
|
||||
myGames: "自分の対局"
|
||||
allGames: "みんなの対局"
|
||||
ended: "終了"
|
||||
playing: "対局中"
|
||||
isLlotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
loopedMap: "ループマップ"
|
||||
canPutEverywhere: "どこでも置けるモード"
|
||||
timeLimitForEachTurn: "1ターンの時間制限"
|
||||
freeMatch: "フリーマッチ"
|
||||
lookingForPlayer: "対戦相手を探しています"
|
||||
gameCanceled: "対局がキャンセルされました"
|
||||
shareToTlTheGameWhenStart: "開始時に対局をタイムラインに投稿"
|
||||
iStartedAGame: "対局を開始しました! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "相手が設定を変更しました"
|
||||
allowIrregularRules: "変則許可 (完全フリー)"
|
||||
disallowIrregularRules: "変則なし"
|
||||
|
||||
_offlineScreen:
|
||||
title: "オフライン - サーバーに接続できません"
|
||||
header: "サーバーに接続できません"
|
||||
|
||||
_abuse:
|
||||
_resolver:
|
||||
1hour: "一時間"
|
||||
|
@ -130,6 +130,7 @@ overwriteFromPinnedEmojis: "全般設定から上書きする"
|
||||
reactionSettingDescription2: "ドラッグで並び替え、クリックで削除、+を押して追加やで。"
|
||||
rememberNoteVisibility: "公開範囲覚えといて"
|
||||
attachCancel: "のっけるのやめる"
|
||||
deleteFile: "ファイルをほかす"
|
||||
markAsSensitive: "ちょっとこれはアカン"
|
||||
unmarkAsSensitive: "そこまでアカンことないやろ"
|
||||
enterFileName: "ファイル名を入れてや"
|
||||
@ -379,6 +380,11 @@ hcaptcha: "hCaptcha(キャプチャ)"
|
||||
enableHcaptcha: "hCaptcha(キャプチャ)をつけとく"
|
||||
hcaptchaSiteKey: "サイトキー"
|
||||
hcaptchaSecretKey: "シークレットキー"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "hCaptcha(キャプチャ)をつけとく"
|
||||
mcaptchaSiteKey: "サイトキー"
|
||||
mcaptchaSecretKey: "シークレットキー"
|
||||
mcaptchaInstanceUrl: "mCaptchaのインスタンスのURL"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA(リキャプチャ)を有効にする"
|
||||
recaptchaSiteKey: "サイトキー"
|
||||
@ -638,6 +644,7 @@ medium: "中"
|
||||
small: "小"
|
||||
generateAccessToken: "アクセストークンの発行"
|
||||
permission: "権限"
|
||||
adminPermission: "管理者権限"
|
||||
enableAll: "全部使えるようにする"
|
||||
disableAll: "全部使えへんようにする"
|
||||
tokenRequested: "アカウントへのアクセス許してやったらどうや"
|
||||
@ -681,6 +688,7 @@ useGlobalSettingDesc: "オンにすると、アカウントの通知設定が使
|
||||
other: "その他"
|
||||
regenerateLoginToken: "ログイントークンを再生成"
|
||||
regenerateLoginTokenDescription: "ログインに使われる内部トークンをもっかい作るで。いつもならこれをやる必要はないで。もっかい作ると、全部のデバイスでログアウトされるで気ぃつけてなー。"
|
||||
theKeywordWhenSearchingForCustomEmoji: "カスタム絵文字を探すときのキーワードになるで。"
|
||||
setMultipleBySeparatingWithSpace: "スペースで区切って何個でも設定できるで。"
|
||||
fileIdOrUrl: "ファイルIDかURL"
|
||||
behavior: "動作"
|
||||
@ -893,6 +901,8 @@ makeReactionsPublicDescription: "あんたがしたツッコミ一覧を誰で
|
||||
classic: "クラシック"
|
||||
muteThread: "スレッドをミュート"
|
||||
unmuteThread: "スレッドのミュートを解除"
|
||||
followingVisibility: "フォローの公開範囲"
|
||||
followersVisibility: "フォロワーの公開範囲"
|
||||
continueThread: "さらにスレッドを見るで"
|
||||
deleteAccountConfirm: "アカウントを消すで?ええんか?"
|
||||
incorrectPassword: "パスワードがちゃうわ。"
|
||||
@ -1045,6 +1055,7 @@ resetPasswordConfirm: "パスワード作り直すんでええな?"
|
||||
sensitiveWords: "けったいな単語"
|
||||
sensitiveWordsDescription: "設定した単語が入っとるノートの公開範囲をホームにしたるわ。改行で区切ったら複数設定できるで。"
|
||||
sensitiveWordsDescription2: "スペースで区切るとAND指定、キーワードをスラッシュで囲んだら正規表現や。"
|
||||
prohibitedWordsDescription2: "スペースで区切るとAND指定、キーワードをスラッシュで囲んだら正規表現や。"
|
||||
hiddenTags: "見えてへんハッシュタグ"
|
||||
hiddenTagsDescription: "設定したタグを最近流行りのとこに見えんようにすんで。複数設定するときは改行で区切ってな。"
|
||||
notesSearchNotAvailable: "なんかノート探せへん。"
|
||||
@ -1063,6 +1074,8 @@ limitWidthOfReaction: "ツッコミの最大横幅を制限して、ちっさく
|
||||
noteIdOrUrl: "ノートIDかURL"
|
||||
video: "動画"
|
||||
videos: "動画"
|
||||
audio: "音声"
|
||||
audioFiles: "音声"
|
||||
dataSaver: "データケチケチ"
|
||||
accountMigration: "アカウントのお引っ越し"
|
||||
accountMoved: "このユーザーはさらのアカウントに引っ越したで:"
|
||||
@ -1166,6 +1179,7 @@ hideRepliesToOthersInTimelineAll: "タイムラインに今フォローしとる
|
||||
confirmShowRepliesAll: "これは元に戻せへんから慎重に決めてや。本当にタイムラインに今フォローしとる全員の返信を入れるか?"
|
||||
confirmHideRepliesAll: "これは元に戻せへんから慎重に決めてや。本当にタイムラインに今フォローしとる全員の返信を入れへんのか?"
|
||||
externalServices: "他のサイトのサービス"
|
||||
sourceCode: "ソースコード"
|
||||
impressum: "運営者の情報"
|
||||
impressumUrl: "運営者の情報URL"
|
||||
impressumDescription: "ドイツとかの一部んところではな、表示が義務付けられてんねん(Impressum)。"
|
||||
@ -1193,6 +1207,27 @@ remainingN: "残り:{n}"
|
||||
overwriteContentConfirm: "今の内容に上書きされるけどいい?"
|
||||
seasonalScreenEffect: "季節にあった画面の動き"
|
||||
decorate: "デコる"
|
||||
addMfmFunction: "装飾つける"
|
||||
enableQuickAddMfmFunction: "ややこしいMFMのピッカーを出す"
|
||||
bubbleGame: "バブルゲーム"
|
||||
sfx: "効果音"
|
||||
soundWillBePlayed: "サウンドが再生されるで"
|
||||
showReplay: "リプレイ見る"
|
||||
replay: "リプレイ"
|
||||
replaying: "リプレイ中"
|
||||
ranking: "ランキング"
|
||||
lastNDays: "直近{n}日"
|
||||
backToTitle: "タイトルへ"
|
||||
hemisphere: "住んでる地域"
|
||||
withSensitive: "センシティブなファイルを含むノートを表示"
|
||||
userSaysSomethingSensitive: "{name}のセンシティブなファイルを含む投稿"
|
||||
enableHorizontalSwipe: "スワイプしてタブを切り替える"
|
||||
_bubbleGame:
|
||||
howToPlay: "遊び方"
|
||||
_howToPlay:
|
||||
section1: "位置を調整してハコにモノを落とすで。"
|
||||
section2: "同じもんがくっついたら別のやつになって、スコアがもらえるで。"
|
||||
section3: "モノがハコからあふれたらゲームオーバーや。ハコからあふれんようにしながらモノを融合させてハイスコアを目指しいや!"
|
||||
_announcement:
|
||||
forExistingUsers: "もうおるユーザーのみ"
|
||||
forExistingUsersDescription: "オンにしたらこのお知らせができた時点でおる人らにだけお知らせが行くで。切ったらこの知らせが行ったあとにアカウント作った人にもちゃんとお知らせが行くで。"
|
||||
@ -1566,6 +1601,13 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "CherryPickひよっこ講座 修了証"
|
||||
description: "チュートリアル全部やった"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "バブルゲームで最も大きいモノを出した"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "ダブル🤯"
|
||||
description: "バブルゲームで最も大きいモノを2つ同時に出した"
|
||||
flavor: "これくらいの おべんとばこに 🤯 🤯 ちょっとつめて"
|
||||
_role:
|
||||
new: "ロールの作成"
|
||||
edit: "ロールの編集"
|
||||
@ -1656,6 +1698,7 @@ _emailUnavailable:
|
||||
disposable: "ずーっと使えるアドレスじゃないみたいや"
|
||||
mx: "正しいメールサーバーじゃないっぽいわ"
|
||||
smtp: "メールサーバーがうんともすんとも言わへん"
|
||||
banned: "このメールアドレスはあかん"
|
||||
_ffVisibility:
|
||||
public: "公開"
|
||||
followers: "フォロワーだけに公開"
|
||||
@ -2015,6 +2058,55 @@ _permissions:
|
||||
"write:flash": "Playを操作する"
|
||||
"read:flash-likes": "Playのええやん!を見る"
|
||||
"write:flash-likes": "Playのええやん!を見る"
|
||||
"read:admin:abuse-user-reports": "ユーザーからの通報を見る"
|
||||
"write:admin:delete-account": "ユーザーアカウント消す"
|
||||
"write:admin:delete-all-files-of-a-user": "ユーザーのファイル全部ほかす"
|
||||
"read:admin:index-stats": "データベースインデックスの情報見る"
|
||||
"read:admin:table-stats": "データベーステーブルの情報見る"
|
||||
"read:admin:user-ips": "ユーザーのIPアドレスを見る"
|
||||
"read:admin:meta": "インスタンスのメタデータ見る"
|
||||
"write:admin:reset-password": "ユーザーのパスワードをリセット"
|
||||
"write:admin:resolve-abuse-user-report": "ユーザーからの通報を解決する"
|
||||
"write:admin:send-email": "メール送る"
|
||||
"read:admin:server-info": "サーバーの情報見る"
|
||||
"read:admin:show-moderation-log": "モデレーションログ見る"
|
||||
"read:admin:show-user": "ユーザーのプライベートな情報見る"
|
||||
"read:admin:show-users": "ユーザーのプライベートな情報見る"
|
||||
"write:admin:suspend-user": "ユーザーを凍結"
|
||||
"write:admin:unset-user-avatar": "ユーザーのアバターを削除"
|
||||
"write:admin:unset-user-banner": "ユーザーのバナーを削除"
|
||||
"write:admin:unsuspend-user": "ユーザーの凍結解除"
|
||||
"write:admin:meta": "インスタンスのメタデータいじる"
|
||||
"write:admin:user-note": "モデレーションノートいじる"
|
||||
"write:admin:roles": "ロールをいじる"
|
||||
"read:admin:roles": "ロール見る"
|
||||
"write:admin:relays": "リレーいじる"
|
||||
"read:admin:relays": "リレー見る"
|
||||
"write:admin:invite-codes": "招待コードいじる"
|
||||
"read:admin:invite-codes": "招待コード見る"
|
||||
"write:admin:announcements": "お知らせいじる"
|
||||
"read:admin:announcements": "お知らせ見る"
|
||||
"write:admin:avatar-decorations": "アバターデコレーションをいじる"
|
||||
"read:admin:avatar-decorations": "アバターデコレーション見る"
|
||||
"write:admin:federation": "連合の情報いじる"
|
||||
"write:admin:account": "ユーザーアカウントいじる"
|
||||
"read:admin:account": "ユーザーの情報見る"
|
||||
"write:admin:emoji": "絵文字いじる"
|
||||
"read:admin:emoji": "絵文字見る"
|
||||
"write:admin:queue": "ジョブキューいじる"
|
||||
"read:admin:queue": "ジョブキューの情報見る"
|
||||
"write:admin:promo": "プロモーションノートいじる"
|
||||
"write:admin:drive": "ユーザーのドライブいじる"
|
||||
"read:admin:drive": "ユーザーのドライブの情報見る"
|
||||
"read:admin:stream": "管理者用のWebsocket API使う"
|
||||
"write:admin:ad": "広告いじる"
|
||||
"read:admin:ad": "広告見る"
|
||||
"write:invite-codes": "招待コード作る"
|
||||
"read:invite-codes": "招待コード取得"
|
||||
"write:clip-favorite": "クリップのいいねいじる"
|
||||
"read:clip-favorite": "クリップのいいね見る"
|
||||
"read:federation": "連合の情報取得"
|
||||
"write:report-abuse": "違反報告"
|
||||
_auth:
|
||||
shareAccessTitle: "アプリへのアクセス許してやったらどうや"
|
||||
shareAccess: "「{name}」がアカウントにアクセスすることを許可してええか?"
|
||||
@ -2028,10 +2120,10 @@ _auth:
|
||||
_antennaSources:
|
||||
all: "みんなのノート"
|
||||
homeTimeline: "フォローしとるユーザーのノート"
|
||||
users: "選らんだ一人か複数のユーザーのノート"
|
||||
users: "選んだ一人か複数のユーザーのノート"
|
||||
userList: "選んだリストのユーザーのノート"
|
||||
userGroup: "選んだグループのユーザーのノート"
|
||||
userBlacklist: "選んだ1人か複数のユーザーのノート"
|
||||
userBlacklist: "選んだ一人か複数のユーザーを除いた全てのノート"
|
||||
_weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
@ -2137,6 +2229,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "全てのノート"
|
||||
favoritedNotes: "お気に入りにしたノート"
|
||||
clips: "クリップ"
|
||||
followingList: "フォロー"
|
||||
muteList: "ミュート"
|
||||
blockingList: "ブロック"
|
||||
@ -2257,6 +2350,7 @@ _notification:
|
||||
pollEnded: "アンケートの結果が出たみたいや"
|
||||
newNote: "さらの投稿"
|
||||
unreadAntennaNote: "アンテナ {name}"
|
||||
roleAssigned: "ロールが付与されたで"
|
||||
emptyPushNotificationMessage: "プッシュ通知の更新をしといたで"
|
||||
achievementEarned: "実績を獲得しとるで"
|
||||
testNotification: "通知テスト"
|
||||
@ -2279,6 +2373,7 @@ _notification:
|
||||
receiveFollowRequest: "フォロー許可してほしいみたいやで"
|
||||
followRequestAccepted: "フォローが受理されたで"
|
||||
groupInvited: "グループに招待されたで"
|
||||
roleAssigned: "ロールが付与された"
|
||||
achievementEarned: "実績の獲得"
|
||||
app: "連携アプリからの通知や"
|
||||
_actions:
|
||||
@ -2437,3 +2532,53 @@ _dataSaver:
|
||||
_code:
|
||||
title: "コードハイライト"
|
||||
description: "MFMとかでコードハイライト記法が使われてるとき、タップするまで読み込まれへんくなるで。コードハイライトではハイライトする言語ごとにその決めてるファイルを読む必要はあんねんな。けどな、それは自動で読み込まれなくなるから、通信量を少なくできることができるねん。"
|
||||
_hemisphere:
|
||||
N: "北半球"
|
||||
S: "南半球"
|
||||
caption: "一部のクライアント設定で、季節を判定するのに使用するで。"
|
||||
_reversi:
|
||||
reversi: "リバーシ"
|
||||
gameSettings: "対局の設定"
|
||||
chooseBoard: "ボードを選択"
|
||||
blackOrWhite: "先行/後攻"
|
||||
blackIs: "{name}が黒(先行)"
|
||||
rules: "ルール"
|
||||
thisGameIsStartedSoon: "対局、そろそろ開始されるで。"
|
||||
waitingForOther: "相手の準備が完了するのを待ってんで。"
|
||||
waitingForMe: "あんさんの準備が完了すんのを待ってんで"
|
||||
waitingBoth: "準備してなー"
|
||||
ready: "準備完了"
|
||||
cancelReady: "準備を再開"
|
||||
opponentTurn: "相手のターンやで"
|
||||
myTurn: "あんさんのターンや"
|
||||
turnOf: "{name}のターンやで"
|
||||
pastTurnOf: "{name}のターン"
|
||||
surrender: "投了"
|
||||
surrendered: "投了により"
|
||||
timeout: "時間切れ"
|
||||
drawn: "引き分け"
|
||||
won: "{name}の勝ち"
|
||||
black: "黒"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
turnCount: "{count}ターン目"
|
||||
myGames: "自分の対局"
|
||||
allGames: "みんなの対局"
|
||||
ended: "終了"
|
||||
playing: "対局中"
|
||||
isLlotheo: "石の少ない方が勝ち(ロセオ)"
|
||||
loopedMap: "ループマップ"
|
||||
canPutEverywhere: "どこでも置けるモード"
|
||||
timeLimitForEachTurn: "1ターンの時間制限"
|
||||
freeMatch: "フリーマッチ"
|
||||
lookingForPlayer: "対戦相手を探してるで"
|
||||
gameCanceled: "対局がキャンセルされたわ"
|
||||
shareToTlTheGameWhenStart: "初めの時に対局をタイムラインに投稿するで"
|
||||
iStartedAGame: "対局し始めたで! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "相手が設定変えたで"
|
||||
allowIrregularRules: "変則許可 (完全フリー)"
|
||||
disallowIrregularRules: "変則なし"
|
||||
_offlineScreen:
|
||||
title: "オフライン - サーバーに接続できひんで"
|
||||
header: "サーバーに接続できへんわ"
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
---
|
||||
_lang_: "la .lojban."
|
||||
headlineMisskey: "lo se tcana noi jorne fi loi notci"
|
||||
|
||||
|
@ -104,3 +104,4 @@ _deck:
|
||||
_columns:
|
||||
notifications: "Ilɣuyen"
|
||||
list: "Tibdarin"
|
||||
|
||||
|
@ -84,3 +84,4 @@ _deck:
|
||||
notifications: "ಅಧಿಸೂಚನೆಗಳು"
|
||||
tl: "ಸಮಯಸಾಲು"
|
||||
mentions: "ಹೆಸರಿಸಿದ"
|
||||
|
||||
|
@ -40,7 +40,7 @@ favorites: "질겨찾기"
|
||||
unfavorite: "질겨찾기서 어ᇝ애기"
|
||||
favorited: "질겨찾기에 담앗십니다."
|
||||
alreadyFavorited: "벌시로 질겨찾기에 담기 잇십니다."
|
||||
cantFavorite: "질겨찾기에 몬 담았십니다."
|
||||
cantFavorite: "질겨찾기에 몬 담앗십니다."
|
||||
pin: "프로필에 붙이기"
|
||||
unpin: "프로필서 띠기"
|
||||
copyContent: "내용 복사하기"
|
||||
@ -124,6 +124,7 @@ reactions: "반엉"
|
||||
reactionSettingDescription2: "꺼시서 두고, 누질라서 뭉캐고, ‘+’럴 누질라서 옇십니다."
|
||||
rememberNoteVisibility: "공개 범위럴 기억하기"
|
||||
attachCancel: "붙임 빼기"
|
||||
deleteFile: "파일 뭉캐기"
|
||||
markAsSensitive: "수ᇚ힘 설정"
|
||||
unmarkAsSensitive: "수ᇚ힘 무루기"
|
||||
enterFileName: "파일 이럼 서기"
|
||||
@ -373,6 +374,8 @@ hcaptcha: "에이치캡차"
|
||||
enableHcaptcha: "에이치캡차 키기"
|
||||
hcaptchaSiteKey: "사이트키"
|
||||
hcaptchaSecretKey: "시크릿키"
|
||||
mcaptchaSiteKey: "사이트키"
|
||||
mcaptchaSecretKey: "시크릿키"
|
||||
recaptcha: "리캡차"
|
||||
enableRecaptcha: "리캡차 키기"
|
||||
recaptchaSiteKey: "사이트키"
|
||||
@ -461,6 +464,8 @@ onlyOneFileCanBeAttached: "메시지엔 파일 하나까제밖에 몬 넣십니
|
||||
invitations: "초대하기"
|
||||
invitationCode: "초대장"
|
||||
checking: "학인하고 잇십니다"
|
||||
tooShort: "억수로 짜립니다"
|
||||
tooLong: "억수로 집니다"
|
||||
passwordMatched: "맞십니다"
|
||||
passwordNotMatched: "안 맞십니다"
|
||||
signinFailed: "로그인 몬 했십니다. 고 이름이랑 비밀번호 제대로 썼는가 확인해 주이소."
|
||||
@ -513,7 +518,7 @@ objectStoragePrefixDesc: "요 Prefix 디렉토리 안에다가 파일이 들어
|
||||
objectStorageEndpoint: "Endpoint"
|
||||
objectStorageEndpointDesc: "AWS S3을 쓸라멘 요는 비워두고, 아이멘은 그 서비스 가이드에 맞게 endpoint를 넣어 주이소. '<host>' 내지 '<host>:<port>'처럼 넣십니다."
|
||||
objectStorageRegion: "Region"
|
||||
objectStorageRegionDesc: "'xx-east-1' 같은 region 이름을 옇어 주이소. 써먹을 서비스에 region 개념 같은 게 읎다! 카면은 대신에 'us-east-1'을 옇어 놓으이소. AWS 설정 파일이나 환경 변수를 갖다 끌어다 쓸 거면은 요는 비워 두이소."
|
||||
objectStorageRegionDesc: "'xx-east-1' 같은 region 이름을 옇어 주이소. 만약에 내 서비스엔 region 같은 개념이 읎다, 카면은 대신에 'us-east-1'라고 해 두이소. AWS 설정 파일이나 환경 변수를 끌어다 쓰겠다믄 요는 비워 두이소."
|
||||
objectStorageUseSSL: "SSL 쓰기"
|
||||
objectStorageUseSSLDesc: "API 호출할 때 HTTPS 안 쓸거면은 꺼 두이소"
|
||||
objectStorageUseProxy: "연결에 프락시 사용"
|
||||
@ -535,8 +540,8 @@ popout: "새 창 열기"
|
||||
volume: "음량"
|
||||
masterVolume: "대빵 음량"
|
||||
notUseSound: "음소거하기"
|
||||
useSoundOnlyWhenActive: "CherryPick가 활성화되어 있을 때만 소리 내기"
|
||||
details: "좀 더"
|
||||
useSoundOnlyWhenActive: "CherryPick이 활성화되어 있을 때만 소리 내기"
|
||||
details: "자세히"
|
||||
chooseEmoji: "이모지 선택"
|
||||
unableToProcess: "작업 다 몬 했십니다"
|
||||
recentUsed: "최근 쓴 놈"
|
||||
@ -569,7 +574,11 @@ userSilenced: "요 게정은... 수ᇚ혀 있십니다."
|
||||
relays: "릴레이"
|
||||
addRelay: "릴레이 옇기"
|
||||
addedRelays: "옇은 릴레이"
|
||||
deletedNote: "뭉캔 걸"
|
||||
enableInfiniteScroll: "알아서 더 보기"
|
||||
useCw: "내용 수ᇚ후기"
|
||||
description: "설멩"
|
||||
describeFile: "캡션 옇기"
|
||||
author: "맨던 사람"
|
||||
manage: "간리"
|
||||
emailServer: "전자우펜 서버"
|
||||
@ -598,6 +607,7 @@ renotesCount: "리노트한 수"
|
||||
renotedCount: "리노트덴 수"
|
||||
followingCount: "팔로우 수"
|
||||
followersCount: "팔로워 수"
|
||||
noteFavoritesCount: "질겨찾기한 노트 수"
|
||||
clips: "클립 맨걸기"
|
||||
clearCache: "캐시 비우기"
|
||||
unlikeConfirm: "좋네예럴 무룹니꺼?"
|
||||
@ -606,6 +616,7 @@ user: "사용자"
|
||||
administration: "간리"
|
||||
on: "킴"
|
||||
off: "껌"
|
||||
hide: "수ᇚ후기"
|
||||
clickToFinishEmailVerification: "[{ok}]럴 누질라서 전자우펜 정멩얼 껕내이소."
|
||||
searchByGoogle: "찾기"
|
||||
tenMinutes: "십 분"
|
||||
@ -624,9 +635,11 @@ role: "옉할"
|
||||
noRole: "옉할이 없십니다"
|
||||
thisPostMayBeAnnoyingCancel: "아이예"
|
||||
likeOnly: "좋네예마"
|
||||
myClips: "내 클립"
|
||||
icon: "아바타"
|
||||
replies: "답하기"
|
||||
renotes: "리노트"
|
||||
attach: "옇기"
|
||||
_initialAccountSetting:
|
||||
startTutorial: "길라잡이 하기"
|
||||
_initialTutorial:
|
||||
@ -639,9 +652,52 @@ _initialTutorial:
|
||||
title: "길라잡이가 껕낫십니다!🎉"
|
||||
_achievements:
|
||||
_types:
|
||||
_notes1:
|
||||
description: "첫 노트럴 섯어예"
|
||||
_notes10:
|
||||
description: "노트럴 10번 섰어예"
|
||||
_notes100:
|
||||
description: "노트럴 100번 섰어예"
|
||||
_notes500:
|
||||
description: "노트럴 500번 섰어예"
|
||||
_notes1000:
|
||||
description: "노트럴 1,000번 섰어예"
|
||||
_notes5000:
|
||||
description: "노트럴 5,000번 섰어예"
|
||||
_notes10000:
|
||||
description: "노트럴 10,000번 섰어예"
|
||||
_notes20000:
|
||||
description: "노트럴 20,000번 섰어예"
|
||||
_notes30000:
|
||||
description: "노트럴 30,000번 섰어예"
|
||||
_notes40000:
|
||||
description: "노트럴 40,000번 섰어예"
|
||||
_notes50000:
|
||||
description: "노트럴 50,000번 섰어예"
|
||||
_notes60000:
|
||||
description: "노트럴 60,000번 섰어예"
|
||||
_notes70000:
|
||||
description: "노트럴 70,000번 섰어예"
|
||||
_notes80000:
|
||||
description: "노트럴 80,000번 섰어예"
|
||||
_notes90000:
|
||||
description: "노트럴 90,000번 섰어예"
|
||||
_notes100000:
|
||||
description: "노트럴 100,000번 섰어예"
|
||||
_noteClipped1:
|
||||
description: "첫 노트럴 클립햇어예"
|
||||
_noteFavorited1:
|
||||
description: "첫 노트럴 질겨찾기에 담앗어예"
|
||||
_myNoteFavorited1:
|
||||
description: "다런 사람이 내 노트럴 질겨찾기에 담앗십니다"
|
||||
_iLoveMisskey:
|
||||
description: "“I ❤ #CherryPick”럴 섰어예"
|
||||
_postedAt0min0sec:
|
||||
description: "0분 0초에 노트를 섰어예"
|
||||
_tutorialCompleted:
|
||||
description: "길라잡이럴 껕냇십니다"
|
||||
_gallery:
|
||||
my: "내 걸"
|
||||
liked: "좋네예한 걸"
|
||||
like: "좋네예!"
|
||||
unlike: "좋네예 무루기"
|
||||
@ -652,7 +708,12 @@ _serverDisconnectedBehavior:
|
||||
reload: "알아서 새로곤침"
|
||||
_channel:
|
||||
removeBanner: "배너 뭉캐기"
|
||||
usersCount: "{n}명 참여"
|
||||
notesCount: "노트 {n}개"
|
||||
_menuDisplay:
|
||||
hide: "수ᇚ후기"
|
||||
_theme:
|
||||
description: "설멩"
|
||||
keys:
|
||||
mention: "멘션"
|
||||
_sfx:
|
||||
@ -661,6 +722,9 @@ _sfx:
|
||||
_2fa:
|
||||
step3Title: "학인 기호럴 서기"
|
||||
renewTOTPCancel: "뎃어예"
|
||||
_permissions:
|
||||
"read:favorites": "질겨찾기 보기"
|
||||
"write:favorites": "질겨찾기 곤치기"
|
||||
_widgets:
|
||||
profile: "프로필"
|
||||
instanceInfo: "서버 정보"
|
||||
@ -672,7 +736,10 @@ _widgets:
|
||||
_userList:
|
||||
chooseList: "리스트 개리기"
|
||||
_cw:
|
||||
hide: "수ᇚ후기"
|
||||
show: "더 볼래예"
|
||||
chars: "걸자 {count}개"
|
||||
files: "파일 {count}개"
|
||||
_visibility:
|
||||
home: "덜머리"
|
||||
followers: "팔로워"
|
||||
@ -680,6 +747,8 @@ _profile:
|
||||
name: "이럼"
|
||||
username: "사용자 이럼"
|
||||
_exportOrImport:
|
||||
favoritedNotes: "질겨찾기한 노트"
|
||||
clips: "클립 맨걸기"
|
||||
followingList: "팔로잉"
|
||||
muteList: "수ᇚ후기"
|
||||
blockingList: "차단하기"
|
||||
@ -689,16 +758,20 @@ _charts:
|
||||
_timelines:
|
||||
home: "덜머리"
|
||||
_play:
|
||||
my: "내 플레이"
|
||||
script: "스크립트"
|
||||
summary: "설멩"
|
||||
_pages:
|
||||
like: "좋네예"
|
||||
unlike: "좋네예 무루기"
|
||||
my: "내 페이지"
|
||||
blocks:
|
||||
image: "이미지"
|
||||
_note:
|
||||
id: "노트 아이디"
|
||||
_notification:
|
||||
youWereFollowed: "새 팔로워가 잇십니다"
|
||||
newNote: "새 걸"
|
||||
_types:
|
||||
follow: "팔로잉"
|
||||
mention: "멘션"
|
||||
@ -721,3 +794,6 @@ _moderationLogTypes:
|
||||
deleteUserAnnouncement: "사용자 공지 걸 뭉캐기"
|
||||
resetPassword: "비밀번호 재설정"
|
||||
resolveAbuseReport: "신고 해겔하기"
|
||||
_reversi:
|
||||
total: "합계"
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
---
|
||||
_lang_: "한국어"
|
||||
forceRenoteVisibilitySelector: "리노트 공개 범위 지정"
|
||||
cherrypickLabs: "CherryPick 실험실"
|
||||
cherrypickLabsDescription: "개발 중인 기능을 사용해 보시겠어요? 아직 개발 중인 기능이므로 제대로 작동하지 않을 수 있어요."
|
||||
copiedLink: "링크를 복사했어요!"
|
||||
@ -146,7 +147,7 @@ followRequestAccepted: "팔로우가 수락되었어요"
|
||||
mention: "멘션"
|
||||
mentions: "받은 멘션"
|
||||
directNotes: "다이렉트 노트"
|
||||
importAndExport: "가져오기와 내보내기"
|
||||
importAndExport: "가져오기 및 내보내기"
|
||||
import: "가져오기"
|
||||
export: "내보내기"
|
||||
files: "파일"
|
||||
@ -209,6 +210,7 @@ overwriteFromPinnedEmojis: "일반 설정 덮어쓰기"
|
||||
reactionSettingDescription2: "끌어서 순서 변경, 클릭해서 삭제, +를 눌러서 추가할 수 있어요."
|
||||
rememberNoteVisibility: "공개 범위 기억하기"
|
||||
attachCancel: "첨부 취소"
|
||||
deleteFile: "파일 삭제"
|
||||
markAsSensitive: "열람 주의로 설정"
|
||||
unmarkAsSensitive: "열람 주의 해제"
|
||||
enterFileName: "파일명 입력"
|
||||
@ -298,7 +300,7 @@ clearQueueConfirmText: "아직 대기열에 남아 있는 노트는 연합우주
|
||||
clearCachedFiles: "캐시 비우기"
|
||||
clearCachedFilesConfirm: "캐시된 리모트 파일을 모두 삭제할까요?"
|
||||
blockedInstances: "차단된 서버"
|
||||
blockedInstancesDescription: "차단하려는 서버의 호스트 이름을 줄바꿈으로 구분하여 설정해요. 차단된 인스턴스는 이 인스턴스와 통신할 수 없게 돼요."
|
||||
blockedInstancesDescription: "차단하려는 서버의 호스트 이름을 줄바꿈으로 구분하여 설정해요. 차단된 서버는 이 서버와 통신할 수 없게 돼요."
|
||||
silencedInstances: "사일런스한 서버"
|
||||
silencedInstancesDescription: "사일런스하려는 서버의 호스트명을 한 줄에 하나씩 입력해 주세요. 사일런스된 서버에 소속된 사용자는 모두 '사일런스'된 상태로 취급되며, 이 서버로부터의 팔로우가 프로필 설정과 무관하게 승인제로 변경되고, 팔로워가 아닌 로컬 사용자에게는 멘션할 수 없게 돼요. 정지된 서버에는 적용되지 않아요."
|
||||
muteAndBlock: "뮤트 및 차단"
|
||||
@ -357,7 +359,7 @@ uploadFromUrl: "URL 업로드"
|
||||
uploadFromUrlDescription: "업로드하려는 파일의 URL"
|
||||
uploadFromUrlRequested: "업로드를 요청했어요"
|
||||
uploadFromUrlMayTakeTime: "업로드가 완료될 때까지 약간의 시간이 필요할 수 있어요."
|
||||
explore: "발견하기"
|
||||
explore: "둘러보기"
|
||||
messageRead: "읽음"
|
||||
messageSend: "보냄"
|
||||
noMoreHistory: "타임머신이 더 이상은 돌아갈 수 없대요!"
|
||||
@ -370,7 +372,7 @@ basicNotesBeforeCreateAccount: "기본적인 주의사항"
|
||||
termsOfService: "이용 약관"
|
||||
start: "시작하기"
|
||||
home: "홈"
|
||||
remoteUserCaution: "리모트 사용자에요! 인스턴스와 정보가 일치하지 않을 수 있어요."
|
||||
remoteUserCaution: "리모트 사용자에요! 이 서버와 정보가 일치하지 않을 수 있어요."
|
||||
activity: "활동"
|
||||
images: "이미지"
|
||||
image: "이미지"
|
||||
@ -459,6 +461,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptcha 활성화"
|
||||
hcaptchaSiteKey: "사이트 키"
|
||||
hcaptchaSecretKey: "시크릿 키"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "mCaptcha 활성화"
|
||||
mcaptchaSiteKey: "사이트 키"
|
||||
mcaptchaSecretKey: "시크릿 키"
|
||||
mcaptchaInstanceUrl: "mCaptcha 인스턴스 URL"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA 활성화"
|
||||
recaptchaSiteKey: "사이트 키"
|
||||
@ -725,6 +732,7 @@ medium: "보통"
|
||||
small: "작게"
|
||||
generateAccessToken: "액세스 토큰 생성"
|
||||
permission: "권한"
|
||||
adminPermission: "관리자 권한"
|
||||
enableAll: "전체 선택"
|
||||
disableAll: "전체 해제"
|
||||
tokenRequested: "계정 접근 허용"
|
||||
@ -768,6 +776,7 @@ useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용돼요.
|
||||
other: "기타"
|
||||
regenerateLoginToken: "로그인 토큰 재생성"
|
||||
regenerateLoginTokenDescription: "이 작업은 로그인할 때 사용되는 내부 토큰을 다시 생성해요. 일반적으로 이 작업을 실행할 필요는 없지만, 다른 사람이 계정에 대한 접근 권한을 가지고 있다고 생각되거나, 공공장소에서 접속한 후 로그아웃하지 않았을 때 사용할 수 있어요. 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃 되고, 다시 로그인 해야해요."
|
||||
theKeywordWhenSearchingForCustomEmoji: "커스텀 이모지를 검색할 때 키워드로 설정돼요."
|
||||
setMultipleBySeparatingWithSpace: "공백으로 구분해서 여러 개 설정할 수 있어요."
|
||||
fileIdOrUrl: "파일 ID 또는 URL"
|
||||
behavior: "동작"
|
||||
@ -1119,7 +1128,7 @@ internalServerError: "내부 서버 오류"
|
||||
internalServerErrorDescription: "내부 서버에서 예기치 않은 오류가 발생했어요."
|
||||
copyErrorInfo: "오류 정보 복사"
|
||||
joinThisServer: "이 서버에 가입"
|
||||
exploreOtherServers: "다른 서버 둘러보기"
|
||||
exploreOtherServers: "다른 서버 찾기"
|
||||
letsLookAtTimeline: "타임라인 구경하기"
|
||||
disableFederationConfirm: "정말로 연합을 비활성화 할까요?"
|
||||
disableFederationConfirmWarn: "연합을 끄더라도 게시물이 비공개로 전환되는 것은 아니예요. 대부분의 경우 연합을 비활성화할 필요가 없어요."
|
||||
@ -1136,8 +1145,11 @@ nonSensitiveOnlyForLocalLikeOnlyForRemote: "민감한 이모지를 제외하고
|
||||
rolesAssignedToMe: "나에게 할당된 역할"
|
||||
resetPasswordConfirm: "비밀번호를 재설정할까요?"
|
||||
sensitiveWords: "민감한 단어"
|
||||
sensitiveWordsDescription: "설정한 단어가 포함된 노트의 공개 범위를 '홈'으로 강제해요. 개행으로 구분하여 여러 개를 지정할 수 있어요."
|
||||
sensitiveWordsDescription: "설정한 단어가 포함된 노트의 공개 범위를 '홈'으로 강제해요. 줄 바꿈으로 구분하여 여러 개를 지정할 수 있어요."
|
||||
sensitiveWordsDescription2: "공백으로 구분하면 AND로 지정되고, 키워드를 슬래시로 둘러싸면 정규 표현식이 돼요."
|
||||
prohibitedWords: "금지 단어"
|
||||
prohibitedWordsDescription: "설정된 단어가 포함되는 노트를 작성하려고 하면 오류로 표시해요. 줄 바꿈으로 구분하여 여러 개를 지정할 수 있어요."
|
||||
prohibitedWordsDescription2: "공백으로 구분하면 AND로 지정되고, 키워드를 슬래시로 둘러싸면 정규 표현식이 돼요."
|
||||
hiddenTags: "숨긴 해시태그"
|
||||
hiddenTagsDescription: "설정한 태그가 트렌드에 표시되지 않아요. 줄 바꿈으로 하나씩 나눠서 설정할 수 있어요."
|
||||
notesSearchNotAvailable: "노트 검색을 이용할 수 없어요."
|
||||
@ -1156,6 +1168,8 @@ limitWidthOfReaction: "리액션의 최대 폭을 제한하고 작게 표시"
|
||||
noteIdOrUrl: "노트 ID 및 URL"
|
||||
video: "동영상"
|
||||
videos: "동영상"
|
||||
audio: "오디오"
|
||||
audioFiles: "오디오 파일"
|
||||
dataSaver: "데이터 절약 모드"
|
||||
accountMigration: "계정 이동"
|
||||
accountMoved: "이 사용자는 다음 계정으로 이사했어요:"
|
||||
@ -1265,6 +1279,7 @@ hideRepliesToOthersInTimelineAll: "타임라인에 팔로우 중인 모든 사
|
||||
confirmShowRepliesAll: "이 조작은 되돌릴 수 없어요! 정말로 타임라인에 현재 팔로우 중인 모든 사람의 답글을 표시하도록 설정할까요?"
|
||||
confirmHideRepliesAll: "이 조작은 되돌릴 수 없어요! 정말로 타임라인에 현재 팔로우 중인 모든 사람의 답글을 표시하지 않도록 설정할까요?"
|
||||
externalServices: "외부 서비스"
|
||||
sourceCode: "소스 코드"
|
||||
impressum: "운영자 정보"
|
||||
impressumUrl: "운영자 정보 URL"
|
||||
impressumDescription: "독일 등의 일부 나라와 지역에서는 꼭 표시해야 해요(Impressum)."
|
||||
@ -1294,6 +1309,19 @@ seasonalScreenEffect: "계절에 따른 화면 연출"
|
||||
decorate: "장식하기"
|
||||
addMfmFunction: "장식 추가"
|
||||
enableQuickAddMfmFunction: "고급 MFM 선택기 표시하기"
|
||||
bubbleGame: "버블 게임"
|
||||
sfx: "효과음"
|
||||
soundWillBePlayed: "사운드가 재생돼요"
|
||||
showReplay: "리플레이 보기"
|
||||
replay: "리플레이"
|
||||
replaying: "리플레이 중"
|
||||
ranking: "랭킹"
|
||||
lastNDays: "최근 {n}일"
|
||||
backToTitle: "타이틀로 가기"
|
||||
hemisphere: "거주 지역"
|
||||
withSensitive: "민감한 파일이 포함된 노트 표시"
|
||||
userSaysSomethingSensitive: "{name}님의 민감한 파일이 포함된 게시물"
|
||||
enableHorizontalSwipe: "밀어서 탭 전환"
|
||||
showUnreadNotificationsCount: "읽지 않은 알림 수 표시"
|
||||
showCatOnly: "고양이만 보기"
|
||||
additionalPermissionsForFlash: "Play에 대한 추가 권한"
|
||||
@ -1316,6 +1344,12 @@ _showingAnimatedImages:
|
||||
inactive: "일정 시간이 지나면 멈춤"
|
||||
_messaging:
|
||||
direct: "다이렉트 메시지"
|
||||
_bubbleGame:
|
||||
howToPlay: "플레이 방법"
|
||||
_howToPlay:
|
||||
section1: "위치를 조정하여 상자에 물건을 떨어뜨려요."
|
||||
section2: "같은 종류의 물건이 붙으면 다른 물건으로 바뀌면서 점수를 얻을 수 있어요."
|
||||
section3: "상자에서 물건이 넘치면 게임 오버예요. 상자에서 물건이 넘치지 않도록 조심하면서 물건을 융합해 높은 점수를 획득하세요!"
|
||||
_announcement:
|
||||
forExistingUsers: "기존 사용자에게만 알리기"
|
||||
forExistingUsersDescription: "활성화하면 이 공지사항을 게시한 시점에서 이미 가입한 사용자에게만 표시해요. 비활성화하면 게시 후에 가입한 사용자에게도 표시해요."
|
||||
@ -1346,6 +1380,10 @@ _cherrypick:
|
||||
showRenoteConfirmPopupDescription: "이 설정은 '일반 - 리노트와 인용 버튼을 분리해서 표시하기' 설정이 켜져 있어야 해요."
|
||||
expandOnNoteClick: "노트를 클릭하여 자세히 표시"
|
||||
expandOnNoteClickDescription: "비활성화한 경우에도 노트 메뉴에서 '자세히'를 클릭하거나 타임스탬프를 클릭하여 열 수 있어요."
|
||||
expandOnNoteClickBehavior: "노트를 클릭해서 열 때"
|
||||
_expandOnNoteClickBehavior:
|
||||
click: "클릭해서 열기"
|
||||
doubleClick: "두 번 클릭해서 열기"
|
||||
displayHeaderNavBarWhenScroll: "스크롤 시 요소 표시 (헤더, 플로팅 버튼, 탐색 모음)"
|
||||
_displayHeaderNavBarWhenScroll:
|
||||
all: "모두 표시"
|
||||
@ -1766,6 +1804,13 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "CherryPick 입문자 과정 수료증"
|
||||
description: "튜토리얼을 완료했어요. 어서오세요!"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "버블 게임에서 가장 큰 물건을 내놓았어요"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "더블🤯"
|
||||
description: "버블게임에서 가장 큰 물건 2개를 동시에 내놓았어요"
|
||||
flavor: "이 정도만 도시락통에 🤯🤯 조금만 더"
|
||||
_role:
|
||||
new: "새 역할 생성"
|
||||
edit: "역할 편집"
|
||||
@ -2066,7 +2111,7 @@ _instanceMute:
|
||||
title: "지정한 서버의 노트가 숨겨져요."
|
||||
heading: "뮤트할 서버"
|
||||
_theme:
|
||||
explore: "테마 찾아보기"
|
||||
explore: "테마 둘러보기"
|
||||
install: "테마 설치"
|
||||
manage: "테마 관리"
|
||||
code: "테마 코드"
|
||||
@ -2294,9 +2339,9 @@ _permissions:
|
||||
"write:report-abuse": "위반 내용 신고하기"
|
||||
_auth:
|
||||
shareAccessTitle: "애플리케이션 접근 허가"
|
||||
shareAccess: "\"{name}\" 이 계정에 접근하는 것을 허용할까요?"
|
||||
shareAccess: "‘{name}’에서 계정에 접근하는 것을 허용할까요?"
|
||||
shareAccessAsk: "이 애플리케이션이 계정에 접근하는 것을 허용할까요?"
|
||||
permission: "{name}에서 다음 권한을 요청했어요"
|
||||
permission: "‘{name}’에서 다음 권한을 요청했어요"
|
||||
permissionAsk: "이 앱은 다음 권한을 요청하고 있습니다"
|
||||
pleaseGoBack: "앱으로 돌아가서 계속 진행해 주세요"
|
||||
callback: "앱으로 돌아갈게요!"
|
||||
@ -2415,6 +2460,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "모든 노트"
|
||||
favoritedNotes: "즐겨찾기한 노트"
|
||||
clips: "클립"
|
||||
followingList: "팔로잉"
|
||||
muteList: "뮤트"
|
||||
blockingList: "차단"
|
||||
@ -2717,7 +2763,56 @@ _dataSaver:
|
||||
description: "URL 미리보기의 썸네일 이미지를 불러오지 않아요."
|
||||
_code:
|
||||
title: "코드 문법 강조"
|
||||
description: "MFM 등에서 코드 문법 강조 기법을 사용할 때, 탭하기 전까지는 불러오지 않아요. 코드 문법 강조 기능은 강조할 언어마다 해당 정의 파일을 불러와야 하지만, 이를 자동으로 불러오지 않게 되어 데이터 사용량을 줄일 수 있어요."
|
||||
description: "MFM 등에서 코드 문법 강조 기법을 사용할 때, 클릭하기 전까지는 불러오지 않아요. 코드 문법 강조 기능은 강조할 언어마다 해당 정의 파일을 불러와야 하지만, 이를 자동으로 불러오지 않게 되어 데이터 사용량을 줄일 수 있어요."
|
||||
_hemisphere:
|
||||
N: "북반구"
|
||||
S: "남반구"
|
||||
caption: "일부 클라이언트에서 계절을 설정할 때 사용돼요."
|
||||
_reversi:
|
||||
reversi: "리버시"
|
||||
gameSettings: "대국 설정"
|
||||
chooseBoard: "보드 선택"
|
||||
blackOrWhite: "선공/후공"
|
||||
blackIs: "{name}님이 흑(선공)"
|
||||
rules: "규칙"
|
||||
thisGameIsStartedSoon: "대국이 곧 시작돼요. 준비해 주세요"
|
||||
waitingForOther: "상대방의 준비가 완료되기를 기다리고 있어요"
|
||||
waitingForMe: "상대방이 나의 준비가 완료되기를 기다리고 있어요"
|
||||
waitingBoth: "준비가 완료되면 '준비 완료'를 눌러주세요"
|
||||
ready: "준비 완료"
|
||||
cancelReady: "준비 취소"
|
||||
opponentTurn: "상대방 차례에요"
|
||||
myTurn: "내 차례에요"
|
||||
turnOf: "{name}님의 차례에요"
|
||||
pastTurnOf: "{name}님의 차례"
|
||||
surrender: "기권(투료)"
|
||||
surrendered: "기권(투료)에 의해"
|
||||
timeout: "시간 초과"
|
||||
drawn: "무승부"
|
||||
won: "{name}님의 승리"
|
||||
black: "흑"
|
||||
white: "백"
|
||||
total: "합계"
|
||||
turnCount: "{count}턴째"
|
||||
myGames: "내 대국"
|
||||
allGames: "모두의 대국"
|
||||
ended: "종료"
|
||||
playing: "대국 중"
|
||||
isLlotheo: "돌이 적은 사람이 승리(로세오)"
|
||||
loopedMap: "반복 맵"
|
||||
canPutEverywhere: "어디에나 둘 수 있는 모드"
|
||||
timeLimitForEachTurn: "1턴의 시간 제한"
|
||||
freeMatch: "프리 매치"
|
||||
lookingForPlayer: "대전 상대를 찾고 있어요"
|
||||
gameCanceled: "대국이 취소되었어요"
|
||||
shareToTlTheGameWhenStart: "대국 시작 시 타임라인에 대국 게시하기"
|
||||
iStartedAGame: "대국이 시작되었어요! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "상대방이 게임 설정을 변경했어요"
|
||||
allowIrregularRules: "변칙 허용(완전 자유)"
|
||||
disallowIrregularRules: "변칙 없음"
|
||||
_offlineScreen:
|
||||
title: "오프라인 - 서버에 연결할 수 없음"
|
||||
header: "서버에 연결할 수 없어요"
|
||||
_abuse:
|
||||
_resolver:
|
||||
1hour: "1시간"
|
||||
|
@ -1,9 +1,9 @@
|
||||
---
|
||||
_lang_: "ພາສາລາວ"
|
||||
headlineMisskey: "ເຊື່ອມຕໍ່ເຄືອຂ່າຍໂດຍຫມາຍເຫດ"
|
||||
introMisskey: "ຍິນດີຕ້ອນຮັບ! CherryPick ເປັນແຫຼ່ງເປີດ, ການບໍລິການ microblogging ກະຈາຍ\nສ້າງ \"ບັນທຶກ\" ເພື່ອແບ່ງປັນຄວາມຄິດຂອງທ່ານກັບທຸກໆຄົນທີ່ຢູ່ອ້ອມຮອບທ່ານ 📡\nດ້ວຍ \"ປະຕິກິລິຍາ\", ທ່ານຍັງສາມາດສະແດງຄວາມຮູ້ສຶກຂອງທ່ານຢ່າງໄວວາກ່ຽວກັບບັນທຶກຂອງທຸກໆຄົນ 👍\nມາສຳຫຼວດໂລກໃໝ່! 🚀"
|
||||
headlineMisskey: "ເຊື່ອມຕໍ່ເຄືອຂ່າຍໂດຍ note"
|
||||
introMisskey: "ຍິນດີຕ້ອນຮັບ! CherryPick ເປັນຊອຟແວopensource, ສຳລັບບໍລິການ microblogging ແບບ decentralized\nສ້າງ “note” ເພື່ອແບ່ງປັນຄວາມຄິດຂອງທ່ານກັບທຸກໆ ຄົນທີ່ຢູ່ອ້ອມຮອບທ່ານ 📡\nຢ່າລືມ “reaction” ໂນຕຂອງລາວເພື່ອສະແດງຄວາມຮູ້ສຶກ 👍\nມາສຳຫຼວດໂລກໃໝ່ແນ! 🚀"
|
||||
poweredByMisskeyDescription: "{name} ແມ່ນສ່ວນໜຶ່ງຂອງການບໍລິການທີ່ຂັບເຄື່ອນໂດຍແພລດຟອມ open source. <b>CherryPick</b> (ເອີ້ນວ່າ \"CherryPick instance\")"
|
||||
monthAndDay: "{ເດືອນ}/{ມື້}"
|
||||
monthAndDay: "ເດືອນ{month} / ວັນ{day}"
|
||||
search: "ຄົ້ນຫາ"
|
||||
notifications: "ການແຈ້ງເຕືອນ"
|
||||
username: "ຊື່ຜູ້ໃຊ້"
|
||||
@ -15,25 +15,25 @@ gotIt: "ເຂົ້າໃຈແລ້ວ!"
|
||||
cancel: "ຍົກເລີກ"
|
||||
noThankYou: "ບໍ່ແມ່ນຕອນນີ້"
|
||||
enterUsername: "ປ້ອນຊື່ຜູ້ໃຊ້"
|
||||
renotedBy: "Renoted ໂດຍ {ຜູ້ໃຊ້}"
|
||||
noNotes: "ບໍ່ມີຫມາຍເຫດ"
|
||||
renotedBy: "Renoted ໂດຍ {user}"
|
||||
noNotes: "ບໍ່ມີ note"
|
||||
noNotifications: "ບໍ່ມີການແຈ້ງເຕືອນ"
|
||||
instance: "ອີນສະແຕນ"
|
||||
settings: "ກຳນົດຄ່າ"
|
||||
notificationSettings: "ຕັ້ງຄ່າການແຈ້ງເຕືອນ"
|
||||
basicSettings: "ການຕັ້ງຄ່າພື້ນຖານ"
|
||||
otherSettings: "ການຕັ້ງຄ່າອື່ນໆ"
|
||||
openInWindow: "ເປີດຢູ່ໃນປ່ອງຢ້ຽມ"
|
||||
openInWindow: "ເປີດໃນປ່ອງຢ້ຽມ"
|
||||
profile: "ໂພຼຟາຍ"
|
||||
timeline: "ເສັ້ນກຳນົດເວລາ"
|
||||
timeline: "ໄທມ໌ໄລນ໌"
|
||||
noAccountDescription: "ຜູ້ໃຊ້ນີ້ຍັງບໍ່ໄດ້ຂຽນໃນຊີວະປະຫວັດຂອງເຂົາເຈົ້າເທື່ອ"
|
||||
login: "ເຂົ້າສູ່ລະບົບ"
|
||||
loggingIn: "ກຳລັງເຂົ້າສູ່ລະບົບ..."
|
||||
logout: "ອອກຈາກລະບົບ"
|
||||
signup: "ລົງທະບຽນ"
|
||||
uploading: "ການອັບໂຫຼດ..."
|
||||
uploading: "ກຳລັງອັບໂຫຼດ..."
|
||||
save: "ບັນທຶກ"
|
||||
users: "ຜູ້ໃຊ້ຕ່າງໆ"
|
||||
users: "ຜູ້ໃຊ້"
|
||||
addUser: "ເພີ່ມຜູ້ໃຊ້"
|
||||
favorite: "ເພີ່ມໃສ່ລາຍການທີ່ມັກ"
|
||||
favorites: "ລາຍການທີ່ມັກ"
|
||||
@ -41,13 +41,14 @@ unfavorite: "ລຶບອອກຈາກລາຍການທີ່ມັກ"
|
||||
favorited: "ເພີ່ມໃສ່ລາຍການທີ່ມັກແລ້ວ"
|
||||
alreadyFavorited: "ເພີ່ມເຂົ້າໃນລາຍການທີ່ມັກແລ້ວ."
|
||||
cantFavorite: "ບໍ່ສາມາດເພີ່ມໃສ່ລາຍການທີ່ມັກໄດ້."
|
||||
pin: "ປັກໝຸດໄປຫາໂປຣໄຟລ໌"
|
||||
unpin: "ຖອດປັກໝຸດອອກຈາກໂປຣໄຟລ໌"
|
||||
pin: "ປັກໝຸດ"
|
||||
unpin: "ຖອດປັກໝຸດອອກ"
|
||||
copyContent: "ຄັດລອກເນື້ອຫາ"
|
||||
copyLink: "ສຳເນົາລິ້ງ"
|
||||
copyLink: "ຄັດລອກລິ້ງ"
|
||||
copyLinkRenote: "ຄັດລອກລິ້ງຂອງ renote"
|
||||
delete: "ລຶບ"
|
||||
deleteAndEdit: "ລົບແລະແກ້ໄຂ"
|
||||
deleteAndEditConfirm: "ເຈົ້າແນ່ໃຈບໍ່? ທີ່ທ່ານຕ້ອງການທີ່ຈະລຶບບັນທຶກນີ້ແລະແກ້ໄຂມັນ ທ່ານອາດຈະສູນເສຍການໂຕ້ຕອບ, ບັນທຶກ, ແລະການຕອບກັບທັງໝົດ"
|
||||
deleteAndEdit: "ລຶບແລະແກ້ໄຂ"
|
||||
deleteAndEditConfirm: "ເຈົ້າແນ່ໃຈບໍ່? ທີ່ທ່ານຕ້ອງການທີ່ຈະລຶບ note ນີ້ ແລະແກ້ໄຂມັນ ທ່ານອາດຈະສູນເສຍ reaction, renote, ແລະການຕອບກັບທັງໝົດ"
|
||||
addToList: "ເພີ່ມໃສ່ລາຍຊື່"
|
||||
addToAntenna: "ເພີ່ມໃສ່ເສົາອາກາດ"
|
||||
sendMessage: "ສົ່ງຂໍ້ຄວາມ"
|
||||
@ -66,15 +67,15 @@ showLess: "ປິດ"
|
||||
youGotNewFollower: "ໄດ້ຕິດຕາມທ່ານ"
|
||||
receiveFollowRequest: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍທີ່ໄດ້ຮັບ"
|
||||
followRequestAccepted: "ຜູ້ຕິດຕາມໄດ້ຍອມຮັບຄໍາຮ້ອງຂໍຂອງທ່ານ"
|
||||
mention: "ໄດ້ກ່າວມາ"
|
||||
mention: "ກ່າວຖືງ"
|
||||
mentions: "ກ່າວເຖິງ"
|
||||
directNotes: "ໂດຍກົງຫມາຍເຫດ"
|
||||
directNotes: "ໂພສ Direct note"
|
||||
importAndExport: "ນໍາເຂົ້າ / ສົ່ງອອກ"
|
||||
import: "ນຳເຂົ້າ"
|
||||
export: "ນຳອອກ"
|
||||
export: "ສົ່ງອອກ"
|
||||
files: "ໄຟລ໌"
|
||||
download: "ດາວໂຫລດ"
|
||||
driveFileDeleteConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການລຶບໄຟລ໌ \"{name}\"? ບັນທຶກທີ່ມີໄຟລ໌ແນບນີ້ຈະຖືກລຶບຖິ້ມ"
|
||||
driveFileDeleteConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການລຶບໄຟລ໌ \"{name}\"? note ທີ່ມີໄຟລ໌ແນບນີ້ຈະຖືກລຶບຖິ້ມ"
|
||||
unfollowConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການເຊົາຕິດຕາມ {name}?"
|
||||
exportRequested: "ໃນເວລາທີ່ທ່ານໄດ້ຮ້ອງຂໍການສົ່ງອອກ ມັນອາດຈະໃຊ້ເວລາບາງເວລາ ແລະມັນຈະຖືກເພີ່ມໃສ່ drive ຂອງທ່ານເມື່ອມັນສຳເລັດແລ້ວ"
|
||||
importRequested: "ໃນເວລາທີ່ທ່ານໄດ້ຮ້ອງຂໍການນໍາເຂົ້າ ມັນອາດຈະໃຊ້ເວລາບາງເວລາ"
|
||||
@ -86,7 +87,7 @@ following: "ກຳລັງຕິດຕາມ"
|
||||
followers: "ຜູ້ຕິດຕາມ"
|
||||
followsYou: "ຕິດຕາມເຈົ້າ"
|
||||
createList: "ສ້າງລາຍຊື່"
|
||||
manageLists: "ການບໍລິຫານບັນຊີລາຍການ"
|
||||
manageLists: "ຈັດການລາຍຊື່"
|
||||
error: "ຂໍ້ຜິດພາດ"
|
||||
somethingHappened: "ອຸຍ, ມີບາງຢ່າງຜິດພາດ"
|
||||
retry: "ລອງໃຫມ່"
|
||||
@ -96,30 +97,30 @@ serverIsDead: "ເຊີບເວີນີ້ບໍ່ຕອບສະໜອງ
|
||||
youShouldUpgradeClient: "ເພື່ອເບິ່ງໜ້ານີ້, ກະລຸນາໂຫຼດຂໍ້ມູນຄືນໃໝ່ເພື່ອອັບເດດລູກຄ້າຂອງທ່ານ"
|
||||
enterListName: "ໃສ່ຊື່ສຳລັບລາຍຊື່"
|
||||
privacy: "ຄວາມເປັນສ່ວນຕົວ"
|
||||
makeFollowManuallyApprove: "ປະຕິບັດຕາມການຮ້ອງຂໍຮຽກຮ້ອງໃຫ້ມີການອະນຸມັດ"
|
||||
defaultNoteVisibility: "ເປັນຄ່າເລີ່ມຕົ້ນ"
|
||||
makeFollowManuallyApprove: "ຕິດຕາມຄຳຂໍທີ່ຕ້ອງໄດ້ຮັບການອະນຸມັດ"
|
||||
defaultNoteVisibility: "ການເບິ່ງເຫັນທີ່ເປັນຄ່າເລີ່ມຕົ້ນ"
|
||||
follow: "ກຳລັງຕິດຕາມ"
|
||||
followRequest: "ສົ່ງການຮ້ອງຂໍປະຕິບຕາມ"
|
||||
followRequests: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍ"
|
||||
followRequest: "ສົ່ງຄຳຂໍຕິດຕາມ"
|
||||
followRequests: "ສົ່ງຄຳຂໍຕິດຕາມ"
|
||||
unfollow: "ເຊົາຕິດຕາມ"
|
||||
followRequestPending: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍທີ່ລໍຖ້າຢູ່"
|
||||
enterEmoji: "ປ້ອນອີໂມຈິ"
|
||||
followRequestPending: "ລໍຖ້າການອະນຸມັດໃຫ້ຕິດຕາມ"
|
||||
enterEmoji: "ປ້ອນເອໂມຈິ"
|
||||
renote: "Renote"
|
||||
unrenote: "ເລີກ Renote"
|
||||
renoted: "ເກັບບັນທຶກໄວ້"
|
||||
cantRenote: "ໂພສນີ້ບໍ່ສາມາດຖືກບັນທຶກໄວ້ຄືນໃໝ່ໄດ້"
|
||||
renoted: "renote ແລ້ວ"
|
||||
cantRenote: "ໂພສນີ້ບໍ່ສາມາດ renote ໃໝ່ໄດ້"
|
||||
cantReRenote: "ບໍ່ສາມາດບັນທຶກຄືນໃໝ່ໄດ້"
|
||||
quote: "ລວມຂໍ້ຄວາມອ້າງອີງ"
|
||||
inChannelRenote: "ຊ່ອງພຽງແຕ່ Renote"
|
||||
inChannelQuote: "ຊ່ອງເທົ່ານັ້ນ Quote"
|
||||
pinnedNote: "ບັນທຶກທີ່ປັກໝຸດໄວ້"
|
||||
pinned: "ປັກໝຸດໄປຫາໂປຣໄຟລ໌"
|
||||
quote: "ອ້າງອີງ"
|
||||
inChannelRenote: "Renote ໃນ channel ເທົ່ານັ້ນ"
|
||||
inChannelQuote: "ອ້າງອິງໃນ channel ເທົ່ານັ້ນ"
|
||||
pinnedNote: "note ທີ່ປັກໝຸດໄວ້"
|
||||
pinned: "ປັກໝຸດ"
|
||||
you: "ເຈົ້າ"
|
||||
clickToShow: "ກົດເພື່ອສະແດງໃຫ້ເຫັນ"
|
||||
sensitive: "NSFW"
|
||||
add: "ເພີ່ມ"
|
||||
reaction: "ປະຕິກິລິຍາ"
|
||||
reactions: "ປະຕິກິລິຍາ"
|
||||
reaction: "reaction"
|
||||
reactions: "reaction"
|
||||
attachCancel: "ເອົາໄຟລ໌ແນບ"
|
||||
mute: "ປີດສຽງ"
|
||||
unmute: "ເປີດສຽງ"
|
||||
@ -306,6 +307,8 @@ basicInfo: "ຂໍ້ມຸນເບື້ອງຕົ້ນ"
|
||||
pinnedNotes: "ບັນທຶກທີ່ປັກໝຸດໄວ້"
|
||||
hcaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
hcaptchaSecretKey: "ກະແຈລັບ"
|
||||
mcaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
mcaptchaSecretKey: "ກະແຈລັບ"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "ເປີດໃຊ້ງານລີແຄ໋ບຈາ"
|
||||
recaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
@ -464,3 +467,4 @@ _webhookSettings:
|
||||
name: "ຊື່"
|
||||
_moderationLogTypes:
|
||||
suspend: "ລະງັບ"
|
||||
|
||||
|
@ -348,6 +348,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Inschakelen hCaptcha"
|
||||
hcaptchaSiteKey: "Site sleutel"
|
||||
hcaptchaSecretKey: "Geheime sleutel"
|
||||
mcaptchaSiteKey: "Site sleutel"
|
||||
mcaptchaSecretKey: "Geheime sleutel"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Inschakelen reCAPTCHA"
|
||||
recaptchaSiteKey: "Site sleutel"
|
||||
@ -496,3 +498,4 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Opschorten"
|
||||
resetPassword: "Wachtwoord terugzetten"
|
||||
|
||||
|
@ -722,3 +722,4 @@ _webhookSettings:
|
||||
name: "Navn"
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspender"
|
||||
|
||||
|
@ -345,6 +345,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Włącz hCaptcha"
|
||||
hcaptchaSiteKey: "Klucz strony"
|
||||
hcaptchaSecretKey: "Tajny klucz"
|
||||
mcaptchaSiteKey: "Klucz strony"
|
||||
mcaptchaSecretKey: "Tajny klucz"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Włącz reCAPTCHA"
|
||||
recaptchaSiteKey: "Klucz strony"
|
||||
@ -883,6 +885,7 @@ youFollowing: "Śledzeni"
|
||||
icon: "Awatar"
|
||||
replies: "Odpowiedz"
|
||||
renotes: "Udostępnij"
|
||||
sourceCode: "Kod źródłowy"
|
||||
flip: "Odwróć"
|
||||
_role:
|
||||
priority: "Priorytet"
|
||||
@ -1310,6 +1313,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Wszystkie wpisy"
|
||||
favoritedNotes: "Ulubione wpisy"
|
||||
clips: "Klip"
|
||||
followingList: "Obserwowani"
|
||||
muteList: "Wycisz"
|
||||
blockingList: "Zablokuj"
|
||||
@ -1474,3 +1478,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Zawieś"
|
||||
resetPassword: "Zresetuj hasło"
|
||||
_reversi:
|
||||
total: "Łącznie"
|
||||
|
||||
|
@ -368,6 +368,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Ativar hCaptcha"
|
||||
hcaptchaSiteKey: "Chave do sítio ‘web’"
|
||||
hcaptchaSecretKey: "Chave secreta"
|
||||
mcaptchaSiteKey: "Chave do sítio ‘web’"
|
||||
mcaptchaSecretKey: "Chave secreta"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Habilitar reCAPTCHA"
|
||||
recaptchaSiteKey: "Chave do sítio ‘web’"
|
||||
@ -1008,6 +1010,7 @@ replies: "Responder"
|
||||
renotes: "Repostar"
|
||||
keepScreenOn: "Manter a tela do dispositivo sempre ligada"
|
||||
flip: "Inversão"
|
||||
lastNDays: "Últimos {n} dias"
|
||||
_initialAccountSetting:
|
||||
followUsers: "Siga usuários que lhe interessam para criar a sua linha do tempo."
|
||||
_serverSettings:
|
||||
@ -1401,6 +1404,7 @@ _profile:
|
||||
username: "Nome de usuário"
|
||||
_exportOrImport:
|
||||
favoritedNotes: "Notas nos favoritos"
|
||||
clips: "Clipe"
|
||||
followingList: "Seguindo"
|
||||
muteList: "Silenciar"
|
||||
blockingList: "Bloquear"
|
||||
@ -1495,3 +1499,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspender"
|
||||
resetPassword: "Redefinir senha"
|
||||
_reversi:
|
||||
total: "Total"
|
||||
|
||||
|
@ -359,6 +359,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Activează hCaptcha"
|
||||
hcaptchaSiteKey: "Site key"
|
||||
hcaptchaSecretKey: "Secret key"
|
||||
mcaptchaSiteKey: "Site key"
|
||||
mcaptchaSecretKey: "Secret key"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Activează reCAPTCHA"
|
||||
recaptchaSiteKey: "Site key"
|
||||
@ -726,3 +728,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspendă"
|
||||
resetPassword: "Resetează parola"
|
||||
_reversi:
|
||||
total: "Total"
|
||||
|
||||
|
@ -53,8 +53,8 @@ addToAntenna: "Добавить к антенне"
|
||||
sendMessage: "Отправить сообщение"
|
||||
copyRSS: "Скопировать RSS"
|
||||
copyUsername: "Скопировать имя пользователя"
|
||||
copyUserId: "Скопировать ID пользователя"
|
||||
copyNoteId: "Скопировать ID заметки"
|
||||
copyUserId: "Скопировать идентификатор пользователя"
|
||||
copyNoteId: "Скопировать идентификатор заметки"
|
||||
copyFileId: "Скопировать ID файла"
|
||||
copyFolderId: "Скопировать ID папки"
|
||||
copyProfileUrl: "Скопировать URL профиля "
|
||||
@ -134,8 +134,8 @@ unmarkAsSensitive: "Снять отметку «не для всех»"
|
||||
enterFileName: "Введите имя файла"
|
||||
mute: "Скрыть"
|
||||
unmute: "Отменить скрытие"
|
||||
renoteMute: "Заглушить репосты"
|
||||
renoteUnmute: "Включить репосты"
|
||||
renoteMute: "Скрыть репосты"
|
||||
renoteUnmute: "Открыть репосты"
|
||||
block: "Заблокировать"
|
||||
unblock: "Разблокировать"
|
||||
suspend: "Заморозить"
|
||||
@ -161,8 +161,8 @@ addEmoji: "Добавить эмодзи"
|
||||
settingGuide: "Рекомендуемые настройки"
|
||||
cacheRemoteFiles: "Кешировать внешние файлы"
|
||||
cacheRemoteFilesDescription: "Когда эта настройка отключена, файлы с других сайтов будут загружаться прямо оттуда. Это сэкономит место на сервере, но увеличит трафик, так как не будут создаваться эскизы."
|
||||
cacheRemoteSensitiveFiles: "Кешировать внешние файлы"
|
||||
cacheRemoteSensitiveFilesDescription: "Описание удаленных внешних файлов в кэше"
|
||||
cacheRemoteSensitiveFiles: "Кэшировать внешние файлы «не для всех»"
|
||||
cacheRemoteSensitiveFilesDescription: "Если отключено, файлы «не для всех» загружаются непосредственно с удалённых серверов, не кэшируясь."
|
||||
flagAsBot: "Аккаунт бота"
|
||||
flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит системе CherryPick учитывать это, а также поможет разработчикам других ботов предотвратить бесконечные циклы взаимодействия."
|
||||
flagAsCat: "Аккаунт кота"
|
||||
@ -261,6 +261,7 @@ removed: "Удалено"
|
||||
removeAreYouSure: "Хотите удалить «{x}»?"
|
||||
deleteAreYouSure: "Хотите удалить «{x}»?"
|
||||
resetAreYouSure: "На самом деле сбросить?"
|
||||
areYouSure: "Вы уверены?"
|
||||
saved: "Сохранено"
|
||||
messaging: "Сообщения"
|
||||
upload: "Загрузить"
|
||||
@ -278,7 +279,7 @@ noMoreHistory: "История закончилась"
|
||||
startMessaging: "Начать общение"
|
||||
nUsersRead: "Прочитали {n}"
|
||||
agreeTo: "Я соглашаюсь с {0}"
|
||||
agree: "Согласиться"
|
||||
agree: "Согласен"
|
||||
agreeBelow: "Согласен со следующими"
|
||||
basicNotesBeforeCreateAccount: "Записи, перед созданием аккаунта"
|
||||
termsOfService: "Условия использования"
|
||||
@ -324,7 +325,7 @@ copyUrl: "Копировать ссылку"
|
||||
rename: "Переименовать"
|
||||
avatar: "Аватар"
|
||||
banner: "Шапка"
|
||||
displayOfSensitiveMedia: "Определение деликатного контента"
|
||||
displayOfSensitiveMedia: "Отображение содержимого не для всех"
|
||||
whenServerDisconnected: "Когда соединение с сервером потеряно"
|
||||
disconnectedFromServer: "Разорвано соединение с сервером"
|
||||
reload: "Перезагрузить"
|
||||
@ -372,6 +373,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Включить hCaptcha"
|
||||
hcaptchaSiteKey: "Ключ сайта"
|
||||
hcaptchaSecretKey: "Секретный ключ"
|
||||
mcaptchaSiteKey: "Ключ сайта"
|
||||
mcaptchaSecretKey: "Секретный ключ"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Включить reCAPTCHA"
|
||||
recaptchaSiteKey: "Ключ сайта"
|
||||
@ -413,7 +416,7 @@ about: "Описание"
|
||||
aboutMisskey: "О CherryPick"
|
||||
administrator: "Администратор"
|
||||
token: "Токен"
|
||||
2fa: "2-х факторная аутентификация"
|
||||
2fa: "Двухфакторная аутентификация"
|
||||
setupOf2fa: "Настроить двухфакторную аутентификацию"
|
||||
totp: "Приложение-аутентификатор"
|
||||
totpDescription: "Описание приложения-аутентификатора"
|
||||
@ -489,7 +492,7 @@ native: "Системные"
|
||||
disableDrawer: "Не использовать выдвижные меню"
|
||||
youHaveNoGroups: "У вас нет ни одной группы"
|
||||
joinOrCreateGroup: "Получайте приглашения в группы или создавайте свои собственные"
|
||||
showNoteActionsOnlyHover: "Показывать кнопки управления заметкой только при наведении"
|
||||
showNoteActionsOnlyHover: "Показывать кнопки у заметок только при наведении"
|
||||
noHistory: "История пока пуста"
|
||||
signinHistory: "Журнал посещений"
|
||||
enableAdvancedMfm: "Включить расширенный MFM"
|
||||
@ -502,8 +505,8 @@ createAccount: "Новая учётная запись"
|
||||
existingAccount: "Существующая учётная запись"
|
||||
regenerate: "Создать повторно"
|
||||
fontSize: "Размер шрифта"
|
||||
mediaListWithOneImageAppearance: "Показывать список медиа только одним изображением"
|
||||
limitTo: "Обрезать до {x}"
|
||||
mediaListWithOneImageAppearance: "Вид изображения, если оно единственное в списке"
|
||||
limitTo: "Ограничить до {x}"
|
||||
noFollowRequests: "Нерассмотренные запросы на подписку отсутствуют"
|
||||
openImageInNewTab: "Открыть изображение в новой вкладке"
|
||||
dashboard: "Панель управления"
|
||||
@ -537,7 +540,7 @@ objectStorageUseSSLDesc: "Отключите, если не собираетес
|
||||
objectStorageUseProxy: "Использовать прокси"
|
||||
objectStorageUseProxyDesc: "Отключите, если не будете испоьзовать прокси для соединений по протоколу ObjectStorage."
|
||||
objectStorageSetPublicRead: "Устанавливать public-read при загрузке на сервер"
|
||||
s3ForcePathStyleDesc: "Включение s3ForcePathStyle принудительно указывает имя корзины как часть пути в URL-адресе вместо имени хоста. Может потребоваться активация при использовании таких вещей, как локальный Minio."
|
||||
s3ForcePathStyleDesc: "Включение s3ForcePathStyle приводит к тому, что имя корзины указывается как часть пути в URL, а не в имени хоста. Может потребоваться включить при использовании локального Minio или чего-то подобного."
|
||||
serverLogs: "Журнал сервера"
|
||||
deleteAll: "Удалить всё"
|
||||
showFixedPostForm: "Показывать поле для ввода новой заметки наверху ленты"
|
||||
@ -581,7 +584,7 @@ yourAccountSuspendedTitle: "Эта учетная запись заблокир
|
||||
yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись."
|
||||
tokenRevoked: "Токен недействителен"
|
||||
tokenRevokedDescription: "Срок действия вашего токена входа истек. Пожалуйста, войдите снова."
|
||||
accountDeleted: "Эта учетная запись удалена"
|
||||
accountDeleted: "Учетная запись удалена"
|
||||
accountDeletedDescription: "Эта учетная запись удалена"
|
||||
menu: "Меню"
|
||||
divider: "Линия-разделитель"
|
||||
@ -663,6 +666,7 @@ useGlobalSettingDesc: "Если включено, будут использов
|
||||
other: "Другие"
|
||||
regenerateLoginToken: "Создать новый токен для входа"
|
||||
regenerateLoginTokenDescription: "Создаёт новый токен, используемый внутри программы во время входа. Обычно в этом нет необходимости. При создании все устройства будут отключены."
|
||||
theKeywordWhenSearchingForCustomEmoji: "Это ключевое слово будет использовано при поиске эмодзи."
|
||||
setMultipleBySeparatingWithSpace: "Можно написать несколько через пробел"
|
||||
fileIdOrUrl: "Идентификатор файла или ссылка"
|
||||
behavior: "Поведение"
|
||||
@ -733,7 +737,7 @@ useSystemFont: "Использовать шрифт, предлагаемый с
|
||||
clips: "Подборки"
|
||||
experimentalFeatures: "Экспериментальные функции"
|
||||
experimental: "Экспериментальные"
|
||||
thisIsExperimentalFeature: "Это экспериментальная функция. Технические характеристики могут измениться или он может работать неправильно."
|
||||
thisIsExperimentalFeature: "Это экспериментальная функция. Её поведение, вероятно, поменяется в следующей версии, а ещё она может работать не так, как задумано."
|
||||
developer: "Разработчик"
|
||||
makeExplorable: "Опубликовать профиль в «Обзоре»."
|
||||
makeExplorableDescription: "Если выключить, ваш профиль не будет показан в разделе «Обзор»."
|
||||
@ -818,7 +822,7 @@ noMaintainerInformationWarning: "Не заполнены сведения об
|
||||
noBotProtectionWarning: "Ботозащита не настроена"
|
||||
configure: "Настроить"
|
||||
postToGallery: "Опубликовать в галерею"
|
||||
postToHashtag: "Опубликовать пост с этим хештегом"
|
||||
postToHashtag: "Написать заметку с этим хэштегом"
|
||||
gallery: "Галерея"
|
||||
recentPosts: "Недавние публикации"
|
||||
popularPosts: "Популярные публикации"
|
||||
@ -847,7 +851,7 @@ useBlurEffect: "Размытие в интерфейсе"
|
||||
learnMore: "Подробнее"
|
||||
misskeyUpdated: "CherryPick обновился!"
|
||||
whatIsNew: "Что новенького?"
|
||||
translate: "Перевод"
|
||||
translate: "Перевести"
|
||||
translatedFrom: "Перевод. Язык оригинала — {x}"
|
||||
accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи"
|
||||
usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже."
|
||||
@ -859,11 +863,11 @@ lastCommunication: "Последнее сообщение"
|
||||
resolved: "Решено"
|
||||
unresolved: "Без решения"
|
||||
breakFollow: "Отписка"
|
||||
breakFollowConfirm: "Удалить из подписок пользователя ?"
|
||||
breakFollowConfirm: "Действительно удалить этого подписчика?"
|
||||
itsOn: "Включено"
|
||||
itsOff: "Выключено"
|
||||
on: "Вкл"
|
||||
off: "Выкл"
|
||||
on: "Вкл."
|
||||
off: "Выкл."
|
||||
emailRequiredForSignup: "Для регистрации учётной записи нужен адрес электронной почты"
|
||||
unread: "Непрочитанное"
|
||||
filter: "Фильтры"
|
||||
@ -894,7 +898,7 @@ numberOfColumn: "Количество столбцов"
|
||||
searchByGoogle: "Поиск"
|
||||
instanceDefaultLightTheme: "Светлая тема по умолчанию"
|
||||
instanceDefaultDarkTheme: "Темная тема по умолчанию"
|
||||
instanceDefaultThemeDescription: "Описание темы по умолчанию для инстанса"
|
||||
instanceDefaultThemeDescription: "Введите код темы в формате объекта."
|
||||
mutePeriod: "Продолжительность скрытия"
|
||||
period: "Опрос длится"
|
||||
indefinitely: "вечно"
|
||||
@ -918,7 +922,7 @@ thereIsUnresolvedAbuseReportWarning: "Остались нерешённые жа
|
||||
recommended: "Рекомендуем"
|
||||
check: "Проверить"
|
||||
driveCapOverrideLabel: "Изменение лимита дискового пространства для этого пользователя"
|
||||
driveCapOverrideCaption: "Укажите меньше или равное нулю для отмены"
|
||||
driveCapOverrideCaption: "Введите нуль или меньше, чтобы использовать значение по умолчанию."
|
||||
requireAdminForView: "Для просмотра необходимо иметь аккаунт администратора"
|
||||
isSystemAccount: "Данная учётная запись создана автоматически и управляется системой"
|
||||
typeToConfirm: "Введите {x} для продолжения"
|
||||
@ -938,7 +942,7 @@ type: "Тип"
|
||||
speed: "Скорость"
|
||||
slow: "Медленная"
|
||||
fast: "Быстрая"
|
||||
sensitiveMediaDetection: "Определение содержимого деликатного характера"
|
||||
sensitiveMediaDetection: "Распознание содержимого не для всех"
|
||||
localOnly: "Локально"
|
||||
remoteOnly: "Только удалённо"
|
||||
failedToUpload: "Сбой выгрузки"
|
||||
@ -1015,15 +1019,17 @@ invitationRequiredToRegister: "Этот сервер в настоящее вр
|
||||
emailNotSupported: "Доставка почты не поддерживается на этом сервере"
|
||||
postToTheChannel: "Отправить в канал"
|
||||
cannotBeChangedLater: "Это нельзя изменить позже"
|
||||
reactionAcceptance: "Принятие реакций"
|
||||
likeOnly: "Только лайки"
|
||||
likeOnlyForRemote: "Только лайки с удалённых серверов"
|
||||
nonSensitiveOnly: "Безопасный серфинг"
|
||||
reactionAcceptance: "Допустимые реакции"
|
||||
likeOnly: "Только «нравится!»"
|
||||
likeOnlyForRemote: "Всё (с других серверов только «нравится!»)"
|
||||
nonSensitiveOnly: "Только безопасные"
|
||||
nonSensitiveOnlyForLocalLikeOnlyForRemote: "Только безопасные (с других серверов только «нравится!»)"
|
||||
rolesAssignedToMe: "Мои роли"
|
||||
resetPasswordConfirm: "Сбросить пароль?"
|
||||
sensitiveWords: "Чувствительные слова"
|
||||
sensitiveWordsDescription: "Установите общедоступный диапазон заметки, содержащей заданное слово, на домашний. Можно сделать несколько настроек, разделив их переносами строк."
|
||||
sensitiveWordsDescription2: "Разделение пробелом создаёт спецификацию AND, а разделение косой чертой создаёт регулярное выражение."
|
||||
prohibitedWordsDescription2: "Разделение пробелом создаёт спецификацию AND, а разделение косой чертой создаёт регулярное выражение."
|
||||
notesSearchNotAvailable: "Поиск заметок недоступен"
|
||||
license: "Лицензия"
|
||||
unfavoriteConfirm: "Удалить избранное?"
|
||||
@ -1038,20 +1044,20 @@ noteIdOrUrl: "ID или ссылка на заметку"
|
||||
video: "Видео"
|
||||
videos: "Видео"
|
||||
dataSaver: "Экономия трафика"
|
||||
accountMigration: "Перенести учётную запись"
|
||||
accountMoved: "Учетная запись перенесена"
|
||||
accountMigration: "Перенос учётной записи"
|
||||
accountMoved: "Учётная запись перенесена"
|
||||
accountMovedShort: "Эта учётная запись перемещена"
|
||||
operationForbidden: "Эта операция невозможна."
|
||||
operationForbidden: "Это действие запрещено"
|
||||
forceShowAds: "Всегда отображать рекламу"
|
||||
addMemo: "Добавить заметку"
|
||||
editMemo: "Редактировать заметку"
|
||||
reactionsList: "Реакции"
|
||||
addMemo: "Добавить памятку"
|
||||
editMemo: "Изменить памятку"
|
||||
reactionsList: "Список реакций"
|
||||
renotesList: "Репосты"
|
||||
notificationDisplay: "Отображение уведомления"
|
||||
leftTop: "Верхний левый угол"
|
||||
rightTop: "Сверху справа"
|
||||
leftBottom: "Снизу слева"
|
||||
rightBottom: "Снизу справа"
|
||||
notificationDisplay: "Отображение уведомлений"
|
||||
leftTop: "Влево вверх"
|
||||
rightTop: "Вправо вверх"
|
||||
leftBottom: "Влево вниз"
|
||||
rightBottom: "Вправо вниз"
|
||||
vertical: "Вертикальная"
|
||||
horizontal: "Сбоку"
|
||||
position: "Позиция"
|
||||
@ -1090,7 +1096,9 @@ icon: "Аватар"
|
||||
replies: "Ответы"
|
||||
renotes: "Репост"
|
||||
loadReplies: "Показать ответы"
|
||||
sourceCode: "Исходный код"
|
||||
flip: "Переворот"
|
||||
lastNDays: "Последние {n} сут"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "Аккаунт успешно создан!"
|
||||
letsStartAccountSetup: "Давайте настроим вашу учётную запись."
|
||||
@ -1779,7 +1787,7 @@ _weekday:
|
||||
_widgets:
|
||||
profile: "Профиль"
|
||||
instanceInfo: "Информация об инстансе"
|
||||
memo: "Напоминания"
|
||||
memo: "Памятки"
|
||||
notifications: "Уведомления"
|
||||
timeline: "Лента"
|
||||
calendar: "Календарь"
|
||||
@ -1870,6 +1878,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Все заметки\n"
|
||||
favoritedNotes: "Избранное"
|
||||
clips: "Подборка"
|
||||
followingList: "Подписки"
|
||||
muteList: "Скрытые"
|
||||
blockingList: "Заблокированные"
|
||||
@ -2048,4 +2057,10 @@ _webhookSettings:
|
||||
active: "Вкл."
|
||||
_moderationLogTypes:
|
||||
suspend: "Заморозить"
|
||||
addCustomEmoji: "Добавлено эмодзи"
|
||||
updateCustomEmoji: "Изменено эмодзи"
|
||||
deleteCustomEmoji: "Удалено эмодзи"
|
||||
resetPassword: "Сброс пароля:"
|
||||
_reversi:
|
||||
total: "Всего"
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
---
|
||||
|
||||
|
@ -349,6 +349,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Zapnúť hCaptchu"
|
||||
hcaptchaSiteKey: "Site key"
|
||||
hcaptchaSecretKey: "Secret key"
|
||||
mcaptchaSiteKey: "Site key"
|
||||
mcaptchaSecretKey: "Secret key"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Zapnúť ReCAPTCHA"
|
||||
recaptchaSiteKey: "Site key"
|
||||
@ -931,7 +933,9 @@ youFollowing: "Sledované"
|
||||
icon: "Avatar"
|
||||
replies: "Odpovedať"
|
||||
renotes: "Preposlať"
|
||||
sourceCode: "Zdrojový kód"
|
||||
flip: "Preklopiť"
|
||||
lastNDays: "Posledných {n} dní"
|
||||
_role:
|
||||
priority: "Priorita"
|
||||
_priority:
|
||||
@ -1367,6 +1371,7 @@ _profile:
|
||||
changeBanner: "Zmeniť banner"
|
||||
_exportOrImport:
|
||||
allNotes: "Všetky poznámky"
|
||||
clips: "Klip"
|
||||
followingList: "Sledujete"
|
||||
muteList: "Vypnúť zvuk"
|
||||
blockingList: "Zablokovať"
|
||||
@ -1527,3 +1532,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Zmraziť"
|
||||
resetPassword: "Resetovať heslo"
|
||||
_reversi:
|
||||
total: "Celkom"
|
||||
|
||||
|
@ -345,6 +345,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Aktivera hCaptcha"
|
||||
hcaptchaSiteKey: "Webbplatsnyckel"
|
||||
hcaptchaSecretKey: "Hemlig nyckel"
|
||||
mcaptchaSiteKey: "Webbplatsnyckel"
|
||||
mcaptchaSecretKey: "Hemlig nyckel"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Aktivera reCAPTCHA"
|
||||
recaptchaSiteKey: "Webbplatsnyckel"
|
||||
@ -575,3 +577,4 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspendera"
|
||||
resetPassword: "Återställ Lösenord"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -456,3 +456,4 @@ _deck:
|
||||
_moderationLogTypes:
|
||||
suspend: "askıya al"
|
||||
resetPassword: "Şifre sıfırlama"
|
||||
|
||||
|
@ -17,3 +17,4 @@ _2fa:
|
||||
renewTOTPCancel: "ئۇنى توختىتىڭ"
|
||||
_widgets:
|
||||
profile: "profile"
|
||||
|
||||
|
@ -352,6 +352,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Увімкнути hCaptcha"
|
||||
hcaptchaSiteKey: "Ключ сайту"
|
||||
hcaptchaSecretKey: "Секретний ключ"
|
||||
mcaptchaSiteKey: "Ключ сайту"
|
||||
mcaptchaSecretKey: "Секретний ключ"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Увімкнути reCAPTCHA"
|
||||
recaptchaSiteKey: "Ключ сайту"
|
||||
@ -923,7 +925,9 @@ youFollowing: "Підписки"
|
||||
icon: "Аватар"
|
||||
replies: "Відповісти"
|
||||
renotes: "Поширити"
|
||||
sourceCode: "Вихідний код"
|
||||
flip: "Перевернути"
|
||||
lastNDays: "Останні {n} днів"
|
||||
_achievements:
|
||||
earnedAt: "Відкрито"
|
||||
_types:
|
||||
@ -1546,6 +1550,7 @@ _profile:
|
||||
changeBanner: "Змінити банер"
|
||||
_exportOrImport:
|
||||
allNotes: "Всі нотатки"
|
||||
clips: "Добірка"
|
||||
followingList: "Підписки"
|
||||
muteList: "Ігнорувати"
|
||||
blockingList: "Заблокувати"
|
||||
@ -1697,3 +1702,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Призупинити"
|
||||
resetPassword: "Скинути пароль"
|
||||
_reversi:
|
||||
total: "Всього"
|
||||
|
||||
|
@ -366,6 +366,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptchani yoqish"
|
||||
hcaptchaSiteKey: "Sayt kaliti"
|
||||
hcaptchaSecretKey: "Mahfiy kalit"
|
||||
mcaptchaSiteKey: "Sayt kaliti"
|
||||
mcaptchaSecretKey: "Maxfiy kalit"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA ni yoqish"
|
||||
recaptchaSiteKey: "Sayt kaliti"
|
||||
@ -974,6 +976,7 @@ _profile:
|
||||
changeBanner: "Bannerni o'zgartirish"
|
||||
_exportOrImport:
|
||||
allNotes: "Barcha qaydlar"
|
||||
clips: "Klip"
|
||||
followingList: "Obuna bo‘lish"
|
||||
muteList: "Ovozni o‘chirish"
|
||||
blockingList: "Bloklangan foydalanuvchilar"
|
||||
@ -1086,3 +1089,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "To'xtatish"
|
||||
resetPassword: "Parolni tiklash"
|
||||
_reversi:
|
||||
total: "Jami"
|
||||
|
||||
|
@ -368,6 +368,8 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Bật hCaptcha"
|
||||
hcaptchaSiteKey: "Khóa của trang"
|
||||
hcaptchaSecretKey: "Khóa bí mật"
|
||||
mcaptchaSiteKey: "Khóa của trang"
|
||||
mcaptchaSecretKey: "Khóa bí mật"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Bật reCAPTCHA"
|
||||
recaptchaSiteKey: "Khóa của trang"
|
||||
@ -1057,7 +1059,9 @@ loadReplies: "Hiển thị các trả lời"
|
||||
pinnedList: "Các mục đã được ghim"
|
||||
keepScreenOn: "Giữ màn hình luôn bật"
|
||||
verifiedLink: "Chúng tôi đã xác nhận bạn là chủ sở hữu của đường dẫn này"
|
||||
sourceCode: "Mã nguồn"
|
||||
flip: "Lật"
|
||||
lastNDays: "{n} ngày trước"
|
||||
_announcement:
|
||||
forExistingUsers: "Chỉ những người dùng đã tồn tại"
|
||||
forExistingUsersDescription: "Nếu được bật, thông báo này sẽ chỉ hiển thị với những người dùng đã tồn tại vào lúc thông báo được tạo. Nếu tắt đi, những tài khoản mới đăng ký sau khi thông báo được đăng lên cũng sẽ thấy nó."
|
||||
@ -1755,6 +1759,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Toàn bộ tút"
|
||||
favoritedNotes: "Bài viết đã thích"
|
||||
clips: "Lưu bài viết"
|
||||
followingList: "Đang theo dõi"
|
||||
muteList: "Ẩn"
|
||||
blockingList: "Chặn"
|
||||
@ -1935,3 +1940,6 @@ _webhookSettings:
|
||||
_moderationLogTypes:
|
||||
suspend: "Vô hiệu hóa"
|
||||
resetPassword: "Đặt lại mật khẩu"
|
||||
_reversi:
|
||||
total: "Tổng cộng"
|
||||
|
||||
|
@ -11,7 +11,7 @@ password: "密码"
|
||||
forgotPassword: "忘记密码"
|
||||
fetchingAsApObject: "在联邦宇宙查询中..."
|
||||
ok: "OK"
|
||||
gotIt: "我明白了"
|
||||
gotIt: "好"
|
||||
cancel: "取消"
|
||||
noThankYou: "不用,谢谢"
|
||||
enterUsername: "输入用户名"
|
||||
@ -121,14 +121,21 @@ sensitive: "敏感内容"
|
||||
add: "添加"
|
||||
reaction: "回应"
|
||||
reactions: "回应"
|
||||
emojiPicker: "表情符号选择器"
|
||||
pinnedEmojisForReactionSettingDescription: "可以设置发表回应时置顶显示的表情符号"
|
||||
pinnedEmojisSettingDescription: "可以设置输入表情符号时置顶显示的表情符号"
|
||||
emojiPickerDisplay: "选择器显示设置"
|
||||
overwriteFromPinnedEmojisForReaction: "从「置顶(回应)」设置覆盖"
|
||||
overwriteFromPinnedEmojis: "从全局设置覆盖"
|
||||
reactionSettingDescription2: "拖动重新排序,单击删除,点击 + 添加。"
|
||||
rememberNoteVisibility: "保存上次设置的可见性"
|
||||
attachCancel: "删除附件"
|
||||
deleteFile: "删除文件"
|
||||
markAsSensitive: "标记为敏感内容"
|
||||
unmarkAsSensitive: "取消标记为敏感内容"
|
||||
enterFileName: "输入文件名"
|
||||
mute: "屏蔽"
|
||||
unmute: "解除屏蔽"
|
||||
unmute: "解除静音"
|
||||
renoteMute: "屏蔽转帖"
|
||||
renoteUnmute: "解除屏蔽转帖"
|
||||
block: "拉黑"
|
||||
@ -209,15 +216,15 @@ instanceInfo: "服务器信息"
|
||||
statistics: "统计"
|
||||
clearQueue: "清除队列"
|
||||
clearQueueConfirmTitle: "确定清除队列?"
|
||||
clearQueueConfirmText: "未送达的帖子将不会投递。 通常,您不需要这样做。"
|
||||
clearQueueConfirmText: "未送达的帖子将不会被投递。 通常无需执行此操作。"
|
||||
clearCachedFiles: "清除缓存"
|
||||
clearCachedFilesConfirm: "确定要清除缓存文件?"
|
||||
clearCachedFilesConfirm: "确定要清除所有缓存的远程文件?"
|
||||
blockedInstances: "被封锁的服务器"
|
||||
blockedInstancesDescription: "设定要封锁的服务器,以换行来进行分割。被封锁的服务器将无法与本服务器进行交换通讯。子域名也同样会被封锁。"
|
||||
silencedInstances: "沉默的服务器"
|
||||
silencedInstancesDescription: "设置要静音的服务器的主机,以换行符分隔。属于静默服务器的所有帐户都将被视为“静默”,所有关注都将成为请求,并且您将无法提及非关注者的本地帐户。被阻止的实例不受影响。"
|
||||
muteAndBlock: "屏蔽/拉黑"
|
||||
mutedUsers: "已屏蔽用户"
|
||||
silencedInstances: "被静音的服务器"
|
||||
silencedInstancesDescription: "设置要静音的服务器,以换行符分隔。被静音的服务器内所有的账户将默认处于「静音」状态,仅能发送关注请求,并且在未关注状态下无法提及本地账户。被阻止的实例不受影响。"
|
||||
muteAndBlock: "静音/拉黑"
|
||||
mutedUsers: "已静音用户"
|
||||
blockedUsers: "已拉黑的用户"
|
||||
noUsers: "无用户"
|
||||
editProfile: "编辑资料"
|
||||
@ -260,6 +267,7 @@ removed: "已删除"
|
||||
removeAreYouSure: "要删掉「{x}」吗?"
|
||||
deleteAreYouSure: "要删掉「{x}」吗?"
|
||||
resetAreYouSure: "恢复默认设置?"
|
||||
areYouSure: "你确定吗?"
|
||||
saved: "已保存"
|
||||
messaging: "聊天"
|
||||
upload: "本地上传"
|
||||
@ -352,7 +360,7 @@ connectService: "连接"
|
||||
disconnectService: "断开连接"
|
||||
enableLocalTimeline: "启用本地时间线"
|
||||
enableGlobalTimeline: "启用全局时间线"
|
||||
disablingTimelinesInfo: "即使时间线功能被禁用,出于方便,管理员和协作者也可以继续使用。"
|
||||
disablingTimelinesInfo: "即使时间线功能被禁用,出于方便,管理员和监察员也可以继续使用。"
|
||||
registration: "注册"
|
||||
enableRegistration: "允许任何人注册"
|
||||
invite: "邀请"
|
||||
@ -372,15 +380,20 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "启用 hCaptcha"
|
||||
hcaptchaSiteKey: "网站密钥"
|
||||
hcaptchaSecretKey: "hCaptcha 密钥(SecretKey)"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "启用 mCaptcha"
|
||||
mcaptchaSiteKey: "网站密钥"
|
||||
mcaptchaSecretKey: "mCaptcha 密钥(SecretKey)"
|
||||
mcaptchaInstanceUrl: "mCaptcha 实例地址"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)"
|
||||
recaptchaSiteKey: "网站密钥"
|
||||
recaptchaSecretKey: "reCAPTCHA 密钥(SecretKey)"
|
||||
recaptchaSecretKey: "mCaptcha 密钥(SecretKey)"
|
||||
turnstile: "Turnstile"
|
||||
enableTurnstile: "启用 Turnstile"
|
||||
turnstileSiteKey: "网站密钥"
|
||||
turnstileSecretKey: "Turnstile 密钥(SecretKey)"
|
||||
avoidMultiCaptchaConfirm: "使用多种验证方式可能会造成干扰,您要禁用其他验证方式吗?您可以按“取消”按钮,继续保持启用多种验证方式。"
|
||||
avoidMultiCaptchaConfirm: "使用多个 Captcha 可能会互相干扰,您要禁用其它 Captcha 吗?您可以按“取消”按钮,继续保持启用多种验证方式。"
|
||||
antennas: "天线"
|
||||
manageAntennas: "天线管理"
|
||||
name: "名称"
|
||||
@ -487,7 +500,7 @@ language: "语言"
|
||||
uiLanguage: "显示语言"
|
||||
groupInvited: "您有新的群组邀请"
|
||||
aboutX: "关于 {x}"
|
||||
emojiStyle: "emoji 的样式"
|
||||
emojiStyle: "表情符号的样式"
|
||||
native: "原生"
|
||||
disableDrawer: "不显示抽屉菜单"
|
||||
youHaveNoGroups: "没有群组"
|
||||
@ -526,7 +539,7 @@ showFeaturedNotesInTimeline: "在时间线上显示热门推荐"
|
||||
objectStorage: "对象存储"
|
||||
useObjectStorage: "使用对象存储"
|
||||
objectStorageBaseUrl: "Base URL"
|
||||
objectStorageBaseUrlDesc: "这里是用于参考的 URL,如果您正在使用 CDN 或反向代理,请指定其 URL,例如 S3:“https://<bucket>.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/<bucket>”"
|
||||
objectStorageBaseUrlDesc: "用于参考的 URL,如果您正在使用 CDN 或 Proxy,请填入服务商提供的 URL;S3:“https://<bucket>.s3.amazonaws.com”;GCS:“https://storage.googleapis.com/<bucket>”"
|
||||
objectStorageBucket: "存储桶"
|
||||
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
|
||||
objectStoragePrefix: "前缀"
|
||||
@ -545,6 +558,7 @@ serverLogs: "服务器日志"
|
||||
deleteAll: "全部删除"
|
||||
showFixedPostForm: "在时间线顶部显示发帖框"
|
||||
showFixedPostFormInChannel: "在时间线顶部显示发帖对话框(频道)"
|
||||
withRepliesByDefaultForNewlyFollowed: "在时间线中默认包含新关注用户的回复"
|
||||
newNoteRecived: "有新的帖子"
|
||||
sounds: "提示音"
|
||||
sound: "提示音"
|
||||
@ -554,6 +568,8 @@ showInPage: "在页面中显示"
|
||||
popout: "弹窗"
|
||||
volume: "音量"
|
||||
masterVolume: "主音量"
|
||||
notUseSound: "静音"
|
||||
useSoundOnlyWhenActive: "仅在 CherryPick 活跃时输出声音"
|
||||
details: "详情"
|
||||
chooseEmoji: "选择表情符号"
|
||||
unableToProcess: "操作无法完成"
|
||||
@ -574,10 +590,14 @@ output: "输出"
|
||||
script: "脚本"
|
||||
disablePagesScript: "禁用页面脚本"
|
||||
updateRemoteUser: "更新远程用户信息"
|
||||
unsetUserAvatar: "清除头像"
|
||||
unsetUserAvatarConfirm: "要清除头像吗?"
|
||||
unsetUserBanner: "清除横幅"
|
||||
unsetUserBannerConfirm: "要清除横幅吗?"
|
||||
deleteAllFiles: "删除所有文件"
|
||||
deleteAllFilesConfirm: "要删除所有文件吗?"
|
||||
removeAllFollowing: "取消所有关注"
|
||||
removeAllFollowingDescription: "取消 {host} 的所有关注者。当服务器不再存在时执行。"
|
||||
removeAllFollowingDescription: "取消来自 {host} 的所有关注者。当服务器不再存在时执行。"
|
||||
userSuspended: "该用户已被冻结。"
|
||||
userSilenced: "该用户已被禁言。"
|
||||
yourAccountSuspendedTitle: "账户已被冻结"
|
||||
@ -624,6 +644,7 @@ medium: "中"
|
||||
small: "小"
|
||||
generateAccessToken: "生成访问令牌"
|
||||
permission: "权限"
|
||||
adminPermission: "管理员权限"
|
||||
enableAll: "启用全部"
|
||||
disableAll: "禁用全部"
|
||||
tokenRequested: "允许访问账户"
|
||||
@ -645,6 +666,7 @@ smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS"
|
||||
smtpSecureInfo: "使用 STARTTLS 时关闭。"
|
||||
testEmail: "邮件发送测试"
|
||||
wordMute: "文字屏蔽"
|
||||
hardWordMute: "屏蔽关键词"
|
||||
regexpError: "正则表达式错误"
|
||||
regexpErrorDescription: "{tab} 屏蔽文字的第 {line} 行的正则表达式有错误:"
|
||||
instanceMute: "被屏蔽的服务器"
|
||||
@ -666,6 +688,7 @@ useGlobalSettingDesc: "启用时,将使用账户通知设置。关闭时,则
|
||||
other: "其他"
|
||||
regenerateLoginToken: "重新生成登录令牌"
|
||||
regenerateLoginTokenDescription: "重新生成用于登录的内部令牌。通常您不需要这样做。重新生成后,您将在所有设备上登出。"
|
||||
theKeywordWhenSearchingForCustomEmoji: "这将是搜素自定义表情符号时的关键词。"
|
||||
setMultipleBySeparatingWithSpace: "您可以使用空格分隔多个项目。"
|
||||
fileIdOrUrl: "文件 ID 或者 URL"
|
||||
behavior: "行为"
|
||||
@ -878,6 +901,8 @@ makeReactionsPublicDescription: "将您发表过的回应设置成公开可见
|
||||
classic: "经典"
|
||||
muteThread: "屏蔽帖子列表"
|
||||
unmuteThread: "取消屏蔽帖子列表"
|
||||
followingVisibility: "关注的人的公开范围"
|
||||
followersVisibility: "关注者的公开范围"
|
||||
continueThread: "查看更多帖子"
|
||||
deleteAccountConfirm: "将要删除账户。是否确认?"
|
||||
incorrectPassword: "密码错误"
|
||||
@ -963,7 +988,7 @@ unsubscribePushNotification: "停用推送通知消息"
|
||||
pushNotificationAlreadySubscribed: "推送通知消息已启用"
|
||||
pushNotificationNotSupported: "浏览器或服务器不支持推送通知消息"
|
||||
sendPushNotificationReadMessage: "删除已读推送通知消息"
|
||||
sendPushNotificationReadMessageCaption: "“{emptyPushNotificationMessage}”的通知消息将会显示。您终端设备的电池消耗可能会增加。"
|
||||
sendPushNotificationReadMessageCaption: "您终端设备的电池消耗可能会增加。"
|
||||
windowMaximize: "最大化"
|
||||
windowMinimize: "最小化"
|
||||
windowRestore: "还原"
|
||||
@ -989,6 +1014,7 @@ assign: "分配"
|
||||
unassign: "取消分配"
|
||||
color: "颜色"
|
||||
manageCustomEmojis: "管理自定义表情符号"
|
||||
manageAvatarDecorations: "管理头像挂件"
|
||||
youCannotCreateAnymore: "抱歉,您无法再创建更多了。"
|
||||
cannotPerformTemporary: "暂时不可用"
|
||||
cannotPerformTemporaryDescription: "因操作过于频繁,暂时不可用,请稍后再试。"
|
||||
@ -1029,6 +1055,10 @@ resetPasswordConfirm: "确定重置密码?"
|
||||
sensitiveWords: "敏感词"
|
||||
sensitiveWordsDescription: "将包含设置词的帖子的可见范围设置为首页。可以通过用换行符分隔来设置多个。"
|
||||
sensitiveWordsDescription2: "AND 条件用空格分隔,正则表达式用斜线包裹。"
|
||||
prohibitedWords: "禁用词"
|
||||
prohibitedWordsDescription2: "AND 条件用空格分隔,正则表达式用斜线包裹。"
|
||||
hiddenTags: "隐藏标签"
|
||||
hiddenTagsDescription: "设定的标签将不会在时间线上显示。可使用换行来设置多个标签。"
|
||||
notesSearchNotAvailable: "帖子检索不可用"
|
||||
license: "许可信息"
|
||||
unfavoriteConfirm: "确定要取消收藏吗?"
|
||||
@ -1041,9 +1071,12 @@ enableChartsForRemoteUser: "生成远程用户的图表"
|
||||
enableChartsForFederatedInstances: "生成远程服务器的图表"
|
||||
showClipButtonInNoteFooter: "在贴文下方显示便签按钮"
|
||||
reactionsDisplaySize: "回应显示大小"
|
||||
limitWidthOfReaction: "限制回应的最大宽度,并将其缩小显示"
|
||||
noteIdOrUrl: "帖子 ID 或 URL"
|
||||
video: "视频"
|
||||
videos: "视频"
|
||||
audio: "音频"
|
||||
audioFiles: "音频"
|
||||
dataSaver: "省流量模式"
|
||||
accountMigration: "账户迁移"
|
||||
accountMoved: "此用户已迁移账户"
|
||||
@ -1140,19 +1173,74 @@ edited: "已编辑"
|
||||
notificationRecieveConfig: "通知接收设置"
|
||||
mutualFollow: "互相关注"
|
||||
fileAttachedOnly: "仅限媒体"
|
||||
showRepliesToOthersInTimeline: "在时间线上显示给其他人的回复"
|
||||
hideRepliesToOthersInTimeline: "在时间线上隐藏给其他人的回复"
|
||||
showRepliesToOthersInTimeline: "在时间线中包含给别人的回复"
|
||||
hideRepliesToOthersInTimeline: "在时间线中隐藏给别人的回复"
|
||||
showRepliesToOthersInTimelineAll: "在时间线中包含现在关注的所有人的回复"
|
||||
hideRepliesToOthersInTimelineAll: "在时间线中隐藏现在关注的所有人的回复"
|
||||
confirmShowRepliesAll: "此操作不可撤销。确认要在时间线中包含现在关注的所有人的回复吗?"
|
||||
confirmHideRepliesAll: "此操作不可撤销。确认要在时间线中隐藏现在关注的所有人的回复吗?"
|
||||
externalServices: "外部服务"
|
||||
sourceCode: "源代码"
|
||||
impressum: "运营商信息"
|
||||
impressumUrl: "运营商信息地址"
|
||||
impressumDescription: "德国等国家和地区有义务展示此类信息(Impressum)。"
|
||||
privacyPolicy: "隐私政策"
|
||||
privacyPolicyUrl: "隐私政策地址"
|
||||
tosAndPrivacyPolicy: "服务条款及隐私政策"
|
||||
avatarDecorations: "头像挂件"
|
||||
attach: "佩戴"
|
||||
detach: "卸下"
|
||||
detachAll: "全部卸下"
|
||||
angle: "角度"
|
||||
flip: "翻转"
|
||||
showAvatarDecorations: "显示头像挂件"
|
||||
releaseToRefresh: "松开以刷新"
|
||||
refreshing: "刷新中"
|
||||
pullDownToRefresh: "下拉以刷新"
|
||||
disableStreamingTimeline: "禁止实时更新时间线"
|
||||
useGroupedNotifications: "分组显示通知"
|
||||
signupPendingError: "确认电子邮件时出现错误。链接可能已过期。"
|
||||
cwNotationRequired: "在启用「隐藏内容」时必须输入注释"
|
||||
doReaction: "回应"
|
||||
code: "代码"
|
||||
reloadRequiredToApplySettings: "需要重新载入来使设置生效"
|
||||
remainingN: "剩余:{n}"
|
||||
overwriteContentConfirm: "将覆盖现有内容。确定吗?"
|
||||
seasonalScreenEffect: "应景的画面效果"
|
||||
decorate: "装饰"
|
||||
addMfmFunction: "添加装饰"
|
||||
enableQuickAddMfmFunction: "显示高级 MFM 选择器"
|
||||
sfx: "音效"
|
||||
soundWillBePlayed: "声音将会播放"
|
||||
showReplay: "查看重播"
|
||||
replay: "重播"
|
||||
replaying: "重播中"
|
||||
ranking: "排行榜"
|
||||
lastNDays: "最近 {n} 天"
|
||||
backToTitle: "返回标题"
|
||||
hemisphere: "居住地区"
|
||||
withSensitive: "显示包含敏感媒体的帖子"
|
||||
userSaysSomethingSensitive: "含 {name} 敏感文件的帖子"
|
||||
enableHorizontalSwipe: "滑动切换标签页"
|
||||
_bubbleGame:
|
||||
howToPlay: "游戏说明"
|
||||
_howToPlay:
|
||||
section1: "对准位置将Emoji投入盒子。"
|
||||
section2: "相同的Emoji相互接触合成后会得到新的Emoji,以此获得分数。"
|
||||
section3: "如果Emoji从箱子中溢出游戏将会结束。在防止Emoji溢出的同时,不断合成新的Emoji,来获取更高的分数吧!"
|
||||
_announcement:
|
||||
forExistingUsers: "仅限现有用户"
|
||||
forExistingUsersDescription: "若启用,该公告将仅对创建此公告时存在的用户可见。 如果禁用,则在创建此公告后注册的用户也可以看到该公告。"
|
||||
needConfirmationToRead: "需要确认才能标记为已读"
|
||||
needConfirmationToReadDescription: "若启用,则会在标记已读时会显示确认对话框。此外,它也会不受批量已读操作的影响。"
|
||||
end: "结束公告"
|
||||
tooManyActiveAnnouncementDescription: "若有大量活动公告,可能会造成用户体验可能下降。请考虑归档已完成的公告。"
|
||||
tooManyActiveAnnouncementDescription: "若有大量活动公告,可能会造成用户体验下降。请考虑归档已完成的公告。"
|
||||
readConfirmTitle: "标记为已读?"
|
||||
readConfirmText: "阅读“{title}”的内容并将其标记为已读。"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "我们建议使用公告来发布临时性的流动信息而不是固定的常规信息,因为这可能损害用户体验,尤其是对于新用户而言。"
|
||||
dialogAnnouncementUxWarn: "同时存在 2 个或以上的对话框公告极有可能对用户体验产生负面的影响,建议谨慎使用。"
|
||||
silence: "不发送通知"
|
||||
silenceDescription: "开启后,此条公告将不会发送通知,也不强制用户阅读。"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "账户创建完成了!"
|
||||
letsStartAccountSetup: "来进行帐户的初始设置吧。"
|
||||
@ -1165,19 +1253,91 @@ _initialAccountSetting:
|
||||
pushNotificationDescription: "启用推送通知的话,就可以在设备上接收来自 {name} 的通知了。"
|
||||
initialAccountSettingCompleted: "初始设定已经完成了!"
|
||||
haveFun: "希望 {name} 在这里玩得开心!"
|
||||
youCanContinueTutorial: "您可以继续了解 {name}(CherryPick) 的使用教程,也可以在此停止教程并立即开始使用它。\n"
|
||||
startTutorial: "开始教学"
|
||||
skipAreYouSure: "要跳过初始设置吗?"
|
||||
laterAreYouSure: "要稍后再进行初始设定吗?"
|
||||
_initialTutorial:
|
||||
launchTutorial: "观看教学"
|
||||
title: "教学"
|
||||
wellDone: "做得好"
|
||||
skipAreYouSure: "是否退出教学?"
|
||||
_landing:
|
||||
title: "欢迎来到教学"
|
||||
description: "在这里,您可以查看 CherryPick 的基本使用方法和功能。"
|
||||
_note:
|
||||
title: "什么是帖子?"
|
||||
description: "在 CherryPick 上发表的文章称为「帖子」。帖子在时间线上按照时间顺序排列,并实时更新。"
|
||||
reply: "用来回复帖子。可以对回复进行回复,从而形成一串对话。"
|
||||
renote: "用来将帖子共享到自己的时间线上。也可以加上自己的文字然后引用它。"
|
||||
reaction: "用来添加回应。详细信息将在下一页进行说明。"
|
||||
menu: "用来进行例如显示帖子详情、复制链接等各种各样的操作。"
|
||||
_reaction:
|
||||
title: "什么是回应?"
|
||||
description: "您可以在帖子中添加“回应”。 您可以使用反应轻松地表达点“赞”所无法传达的细微差别。"
|
||||
letsTryReacting: "回应可以通过点击帖子中的「+」按钮来添加。试着给这个示例帖子添加一个回应!"
|
||||
reactToContinue: "添加一个回应来继续"
|
||||
reactNotification: "当您的帖子被某人添加了回应时,将实时收到通知。"
|
||||
reactDone: "通过按下「ー」按钮,可以取消已经添加的回应"
|
||||
_timeline:
|
||||
title: "时间线的运作方式"
|
||||
description1: "CherryPick 根据使用方式提供了多个时间线(根据服务器的设定,可能有一些被禁用)。"
|
||||
home: "可以查看您关注的账户的帖子。"
|
||||
local: "可以查看这个服务器上所有用户发表的帖子。"
|
||||
social: "将同时显示首页时间线和本地时间线的内容。"
|
||||
global: "可以查看所有已联合的服务器上的帖子。"
|
||||
description2: "可以随时在屏幕顶部在每个时间线之间切换。"
|
||||
description3: "另外,还有列表时间线和频道时间线。请参阅{link}了解更多详细信息。"
|
||||
_postNote:
|
||||
title: "帖子发布设置"
|
||||
description1: "在 CherryPick 发布帖子时,您可以设置各种选项。发帖窗口看起来是这样的。\n"
|
||||
_visibility:
|
||||
description: "您可以限制谁可以看到您的帖子。"
|
||||
public: "向所有用户公开。\n"
|
||||
home: "仅在首页时间线上发布。 关注者、从个人资料页查看过来的用户、以及通过转帖也能被别的用户看见。"
|
||||
followers: "仅对关注者可见。 除了您自己之外,没有人可以转贴,并且只有您的关注者可以查看它。\n"
|
||||
direct: "它将仅向指定用户公开,并且他们也会收到通知。 您可以使用它来代替私信。\n"
|
||||
doNotSendConfidencialOnDirect1: "发送敏感信息时请注意。\n"
|
||||
doNotSendConfidencialOnDirect2: "目标服务器的管理员可以看到发布的内容,因此如果您向不受信任的服务器上的用户发送私信,则在处理敏感信息时需要小心。"
|
||||
localOnly: "不将帖子推送到其它服务器。 无论上述公开范围如何,其它服务器的用户将无法看到附加了此设定的帖子。\n"
|
||||
_cw:
|
||||
title: "隐藏内容 (CW)\n"
|
||||
description: "显示「注解」里的内容而不是正文。点击「查看更多」将会把正文显示出来。"
|
||||
_exampleNote:
|
||||
cw: "深夜报复社会"
|
||||
note: "茨了带巧克力的甜甜圈🍩😋"
|
||||
useCases: "用于服务器条款所规定的帖子,或对剧透内容和敏感内容进行自主规制。"
|
||||
_howToMakeAttachmentsSensitive:
|
||||
title: "如何将附件标注为敏感内容?"
|
||||
description: "对于服务器方针所要求要求的,又或者不适合直接展示的附件,请添加「敏感」标记。\n"
|
||||
tryThisFile: "试试看,将附加到此窗口的图像标注为敏感!"
|
||||
_exampleNote:
|
||||
note: "不该打开纳豆的盖子的……"
|
||||
method: "要标注附件为敏感内容,请单击该文件以打开菜单,然后单击“设置为敏感”。"
|
||||
sensitiveSucceeded: "附加文件时,请遵循服务器的条款来设置正确敏感设定。\n"
|
||||
doItToContinue: "将图像标记为敏感后才能够继续"
|
||||
_done:
|
||||
title: "恭喜您,已经完成了教程🎉\n"
|
||||
description: "这里介绍的只是其中一小部分的功能。 要了解更多有关如何使用 CherryPick 的更多信息,请访问 {link}。"
|
||||
_timelineDescription:
|
||||
home: "首页时间线可以查看您关注的账户的帖子。"
|
||||
local: "本地时间线可以查看这个服务器上所有用户发表的帖子。"
|
||||
social: "社交时间线将同时显示首页时间线和本地时间线的内容。"
|
||||
global: "全局时间线可以查看所有已联合的服务器上的帖子。"
|
||||
_serverRules:
|
||||
description: "在新用户注册前显示服务器的简单规则。推荐显示服务条款的主要内容。"
|
||||
_serverSettings:
|
||||
iconUrl: "图标 URL"
|
||||
appIconDescription: "指定当 {host} 显示为 app 时的图标。"
|
||||
appIconUsageExample: "例如:作为书签添加到 PWA 或手机主屏幕的时候"
|
||||
appIconUsageExample: "如作为书签添加到 PWA 或手机主屏幕时"
|
||||
appIconStyleRecommendation: "因为有可能会被裁切为圆形或者圆角矩形,建议使用边缘带有留白背景的图标。"
|
||||
appIconResolutionMustBe: "分辨率必须为 {resolution}。"
|
||||
manifestJsonOverride: "覆盖 manifest.json"
|
||||
shortName: "简称"
|
||||
shortNameDescription: "如果服务器的正式名称很长,可以用简称或者別名来替代。"
|
||||
fanoutTimelineDescription: "当启用时,可显著提高获取各种时间线时的性能,并减轻数据库的负荷。但是相对的 Redis 的内存使用量将会增加。如果服务器的内存不是很大,又或者运行不稳定的话可以把它关掉。"
|
||||
fanoutTimelineDbFallback: "回退到数据库"
|
||||
fanoutTimelineDbFallbackDescription: "当启用时,若时间线未被缓存,则将额外查询数据库。禁用该功能可通过不执行回退处理进一步减少服务器负载,但会限制可检索的时间线范围。"
|
||||
_accountMigration:
|
||||
moveFrom: "从别的账号迁移到此账户"
|
||||
moveFromSub: "为另一个账户建立别名"
|
||||
@ -1404,7 +1564,7 @@ _achievements:
|
||||
description: "点了这里"
|
||||
_justPlainLucky:
|
||||
title: "超高校级的幸运"
|
||||
description: "每 10 秒有 0.01 的概率自动获得"
|
||||
description: "每 10 秒有 0.005% 的概率自动获得"
|
||||
_setNameToSyuilo:
|
||||
title: "像神一样呐"
|
||||
description: "将名称设定为 syuilo"
|
||||
@ -1438,6 +1598,15 @@ _achievements:
|
||||
_smashTestNotificationButton:
|
||||
title: "过度测试"
|
||||
description: "短时间内连续测试通知"
|
||||
_tutorialCompleted:
|
||||
title: "CherryPick 初学者课程 结业证书"
|
||||
description: "完成了教学"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "你合成出了游戏里最大的Emoji"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "两个🤯"
|
||||
description: "你合成出了2个游戏里最大的Emoji"
|
||||
_role:
|
||||
new: "创建角色"
|
||||
edit: "编辑角色"
|
||||
@ -1448,7 +1617,9 @@ _role:
|
||||
assignTarget: "授权对象"
|
||||
descriptionOfAssignTarget: "<b>手动</b>指手动选择谁被包括在这个角色中。\n<b>符合条件</b>指设置条件以自动包括符合条件的用户。"
|
||||
manual: "手动"
|
||||
manualRoles: "手动角色"
|
||||
conditional: "符合条件"
|
||||
conditionalRoles: "条件角色"
|
||||
condition: "条件"
|
||||
isConditionalRole: "这是一个条件控制的角色。"
|
||||
isPublic: "角色公开"
|
||||
@ -1482,6 +1653,7 @@ _role:
|
||||
inviteLimitCycle: "邀请码的发行间隔"
|
||||
inviteExpirationTime: "邀请码的有效日期"
|
||||
canManageCustomEmojis: "管理自定义表情符号"
|
||||
canManageAvatarDecorations: "管理头像挂件"
|
||||
driveCapacity: "网盘容量"
|
||||
alwaysMarkNsfw: "总是将文件标记为 NSFW"
|
||||
pinMax: "帖子置顶数量限制"
|
||||
@ -1496,6 +1668,8 @@ _role:
|
||||
descriptionOfRateLimitFactor: "值越小限制越少,值越大限制越多。"
|
||||
canHideAds: "可以隐藏广告"
|
||||
canSearchNotes: "是否可以搜索帖子"
|
||||
canUseTranslator: "使用翻译功能"
|
||||
avatarDecorationLimit: "可添加头像挂件的最大个数"
|
||||
_condition:
|
||||
isLocal: "是本地用户"
|
||||
isRemote: "是远程用户"
|
||||
@ -1524,6 +1698,7 @@ _emailUnavailable:
|
||||
disposable: "不是永久可用的地址"
|
||||
mx: "邮件服务器不正确"
|
||||
smtp: "邮件服务器没有响应"
|
||||
banned: "无法使用此邮件地址注册"
|
||||
_ffVisibility:
|
||||
public: "公开"
|
||||
followers: "只有关注你的用户能看到"
|
||||
@ -1544,6 +1719,10 @@ _ad:
|
||||
reduceFrequencyOfThisAd: "减少此广告的频率"
|
||||
hide: "不显示"
|
||||
timezoneinfo: "星期几是由服务器的时区所指定的。"
|
||||
adsSettings: "广告设置"
|
||||
notesPerOneAd: "在实时更新时间线中插入广告的间隔(帖子个数)"
|
||||
setZeroToDisable: "设为 0 将不在实时更新时间线中投放广告"
|
||||
adsTooClose: "广告投放时间间隔过短将可能显著损害用户体验。"
|
||||
_forgotPassword:
|
||||
enterEmail: "请输入您设置的电子邮箱地址,密码重置链接将发送至该邮箱上。"
|
||||
ifNoEmail: "如果您没有设置电子邮件地址,请联系管理员。"
|
||||
@ -1583,8 +1762,8 @@ _preferencesBackups:
|
||||
invalidFile: "无效的的文件格式。"
|
||||
_registry:
|
||||
scope: "范围"
|
||||
key: "主要"
|
||||
keys: "主要"
|
||||
key: "键"
|
||||
keys: "键"
|
||||
domain: "域"
|
||||
createKey: "创建键"
|
||||
_aboutMisskey:
|
||||
@ -1596,6 +1775,7 @@ _aboutMisskey:
|
||||
donate: "赞助 Misskey"
|
||||
morePatrons: "还有很多其它的人也在支持我们,非常感谢🥰"
|
||||
patrons: "支持者"
|
||||
projectMembers: "项目成员"
|
||||
_displayOfSensitiveMedia:
|
||||
respect: "隐藏敏感媒体"
|
||||
ignore: "显示敏感媒体"
|
||||
@ -1686,6 +1866,7 @@ _channel:
|
||||
notesCount: "有 {n} 个帖子"
|
||||
nameAndDescription: "名称与描述"
|
||||
nameOnly: "仅名称"
|
||||
allowRenoteToExternal: "允许在频道外转帖及引用"
|
||||
_menuDisplay:
|
||||
sideFull: "横向"
|
||||
sideIcon: "横向(图标)"
|
||||
@ -1779,6 +1960,14 @@ _sfx:
|
||||
chatBg: "聊天背景"
|
||||
antenna: "天线接收"
|
||||
channel: "频道通知"
|
||||
reaction: "选择回应时"
|
||||
_soundSettings:
|
||||
driveFile: "使用网盘内的音频"
|
||||
driveFileWarn: "选择网盘上的文件"
|
||||
driveFileTypeWarn: "不支持此文件"
|
||||
driveFileTypeWarnDescription: "请选择音频文件"
|
||||
driveFileDurationWarn: "音频过长"
|
||||
driveFileDurationWarnDescription: "使用长音频可能会影响 CherryPick 的使用。即使这样也要继续吗?"
|
||||
_ago:
|
||||
future: "未来"
|
||||
justNow: "最近"
|
||||
@ -1792,7 +1981,12 @@ _ago:
|
||||
invalid: "没有"
|
||||
_timeIn:
|
||||
seconds: "{n}秒后"
|
||||
minutes: "{n} 分后"
|
||||
hours: "{n} 小时后"
|
||||
days: "{n}天后"
|
||||
weeks: "{n} 周后"
|
||||
months: "{n} 月后"
|
||||
years: "{n} 年后"
|
||||
_time:
|
||||
second: "秒"
|
||||
minute: "分"
|
||||
@ -1864,6 +2058,55 @@ _permissions:
|
||||
"write:flash": "编辑 Play"
|
||||
"read:flash-likes": "查看 Play 的点赞"
|
||||
"write:flash-likes": "编辑 Play 的点赞列表"
|
||||
"read:admin:abuse-user-reports": "查看来自用户的举报"
|
||||
"write:admin:delete-account": "删除用户账户"
|
||||
"write:admin:delete-all-files-of-a-user": "删除用户所有的文件"
|
||||
"read:admin:index-stats": "查看数据库索引相关的信息"
|
||||
"read:admin:table-stats": "查看数据库表相关的信息"
|
||||
"read:admin:user-ips": "查看用户 IP 地址"
|
||||
"read:admin:meta": "查看实例的元数据"
|
||||
"write:admin:reset-password": "重置用户密码"
|
||||
"write:admin:resolve-abuse-user-report": "将来自用户的报告标记为「已解决」"
|
||||
"write:admin:send-email": "发送邮件"
|
||||
"read:admin:server-info": "查看服务器信息"
|
||||
"read:admin:show-moderation-log": "查看管理日志"
|
||||
"read:admin:show-user": "查看用户的非公开信息"
|
||||
"read:admin:show-users": "查看用户的非公开信息"
|
||||
"write:admin:suspend-user": "冻结用户"
|
||||
"write:admin:unset-user-avatar": "删除用户头像"
|
||||
"write:admin:unset-user-banner": "删除用户横幅"
|
||||
"write:admin:unsuspend-user": "解除用户冻结"
|
||||
"write:admin:meta": "编辑实例元数据"
|
||||
"write:admin:user-note": "编辑管理笔记"
|
||||
"write:admin:roles": "编辑角色"
|
||||
"read:admin:roles": "查看角色"
|
||||
"write:admin:relays": "编辑中继"
|
||||
"read:admin:relays": "查看中继"
|
||||
"write:admin:invite-codes": "编辑邀请码"
|
||||
"read:admin:invite-codes": "查看邀请码"
|
||||
"write:admin:announcements": "编辑公告"
|
||||
"read:admin:announcements": "查看公告"
|
||||
"write:admin:avatar-decorations": "编辑头像挂件"
|
||||
"read:admin:avatar-decorations": "查看头像挂件"
|
||||
"write:admin:federation": "编辑联合相关信息"
|
||||
"write:admin:account": "编辑用户账户"
|
||||
"read:admin:account": "查看用户相关情报"
|
||||
"write:admin:emoji": "编辑表情文字"
|
||||
"read:admin:emoji": "查看表情文字"
|
||||
"write:admin:queue": "编辑作业队列"
|
||||
"read:admin:queue": "查看作业队列相关情报"
|
||||
"write:admin:promo": "运营推广说明"
|
||||
"write:admin:drive": "编辑用户网盘"
|
||||
"read:admin:drive": "查看用户网盘相关情报"
|
||||
"read:admin:stream": "使用管理员用的 Websocket API"
|
||||
"write:admin:ad": "编辑广告"
|
||||
"read:admin:ad": "查看广告"
|
||||
"write:invite-codes": "发行邀请码"
|
||||
"read:invite-codes": "获取已发行的邀请码"
|
||||
"write:clip-favorite": "编辑便签的点赞"
|
||||
"read:clip-favorite": "查看便签的点赞"
|
||||
"read:federation": "查看联合相关信息"
|
||||
"write:report-abuse": "举报用户"
|
||||
_auth:
|
||||
shareAccessTitle: "应用程序授权许可"
|
||||
shareAccess: "您要授权允许 “{name}” 访问您的帐户吗?"
|
||||
@ -1919,6 +2162,7 @@ _widgets:
|
||||
_userList:
|
||||
chooseList: "选择列表"
|
||||
clicker: "点击器"
|
||||
birthdayFollowings: "今天是他们的生日"
|
||||
_cw:
|
||||
hide: "隐藏"
|
||||
show: "查看更多"
|
||||
@ -1981,15 +2225,18 @@ _profile:
|
||||
changeAvatar: "修改头像"
|
||||
changeBanner: "修改横幅"
|
||||
verifiedLinkDescription: "如果将内容设置为 URL,当链接所指向的网页内包含自己的个人资料链接时,可以显示一个已验证图标。"
|
||||
avatarDecorationMax: "最多可添加 {max} 个挂件"
|
||||
_exportOrImport:
|
||||
allNotes: "所有帖子"
|
||||
favoritedNotes: "收藏的帖子"
|
||||
clips: "便签"
|
||||
followingList: "关注中"
|
||||
muteList: "屏蔽"
|
||||
blockingList: "拉黑"
|
||||
userLists: "列表"
|
||||
excludeMutingUsers: "排除屏蔽用户"
|
||||
excludeInactiveUsers: "排除不活跃用户"
|
||||
withReplies: "在时间线中包含导入用户的回复"
|
||||
_charts:
|
||||
federation: "联合"
|
||||
apRequest: "请求"
|
||||
@ -2103,12 +2350,16 @@ _notification:
|
||||
pollEnded: "问卷调查结果已生成。"
|
||||
newNote: "新的帖子"
|
||||
unreadAntennaNote: "天线 {name}"
|
||||
roleAssigned: "授予的角色"
|
||||
emptyPushNotificationMessage: "推送通知已更新"
|
||||
achievementEarned: "获得成就"
|
||||
testNotification: "测试通知"
|
||||
checkNotificationBehavior: "检查通知显示"
|
||||
sendTestNotification: "发送测试通知"
|
||||
notificationWillBeDisplayedLikeThis: "通知将会这样表示"
|
||||
reactedBySomeUsers: "{n} 人回应了"
|
||||
renotedBySomeUsers: "{n} 人转发了"
|
||||
followedBySomeUsers: "被 {n} 人关注"
|
||||
_types:
|
||||
all: "全部"
|
||||
note: "用户的新帖子"
|
||||
@ -2122,6 +2373,7 @@ _notification:
|
||||
receiveFollowRequest: "收到关注请求"
|
||||
followRequestAccepted: "关注请求已通过"
|
||||
groupInvited: "加入群组邀请"
|
||||
roleAssigned: "授予的角色"
|
||||
achievementEarned: "取得的成就"
|
||||
app: "关联应用的通知"
|
||||
_actions:
|
||||
@ -2204,6 +2456,8 @@ _moderationLogTypes:
|
||||
deleteGlobalAnnouncement: "删除全体通知"
|
||||
deleteUserAnnouncement: "删除用户通知"
|
||||
resetPassword: "重置密码"
|
||||
suspendRemoteInstance: "停止远程服务器"
|
||||
unsuspendRemoteInstance: "恢复远程服务器"
|
||||
markSensitiveDriveFile: "标记网盘文件为敏感媒体"
|
||||
unmarkSensitiveDriveFile: "取消标记网盘文件为敏感媒体"
|
||||
resolveAbuseReport: "处理举报"
|
||||
@ -2211,10 +2465,115 @@ _moderationLogTypes:
|
||||
createAd: "创建了广告"
|
||||
deleteAd: "删除了广告"
|
||||
updateAd: "更新了广告"
|
||||
createAvatarDecoration: "新建头像挂件"
|
||||
updateAvatarDecoration: "更新头像挂件"
|
||||
deleteAvatarDecoration: "删除头像挂件"
|
||||
unsetUserAvatar: "清除用户头像"
|
||||
unsetUserBanner: "清除用户横幅"
|
||||
_fileViewer:
|
||||
title: "文件信息"
|
||||
type: "文件类型"
|
||||
size: "文件大小"
|
||||
url: "URL"
|
||||
uploadedAt: "添加日期"
|
||||
attachedNotes: "附加到的帖子"
|
||||
thisPageCanBeSeenFromTheAuthor: "此页只能被该文件的上传者查看。"
|
||||
_externalResourceInstaller:
|
||||
title: "从外部站点安装"
|
||||
checkVendorBeforeInstall: "请在安装前确保来源可靠"
|
||||
_plugin:
|
||||
title: "要安装此插件吗?"
|
||||
metaTitle: "插件信息"
|
||||
_theme:
|
||||
title: "要安装此主题吗?"
|
||||
metaTitle: "主题信息"
|
||||
_meta:
|
||||
base: "基本配色方案"
|
||||
_vendorInfo:
|
||||
title: "来源信息"
|
||||
endpoint: "参考端点"
|
||||
hashVerify: "确认文件完整性"
|
||||
_errors:
|
||||
_invalidParams:
|
||||
title: "缺少参数"
|
||||
description: "缺少从外部站点获取数据所需的信息。请检查 URL。"
|
||||
_resourceTypeNotSupported:
|
||||
title: "不支持此外部资源"
|
||||
description: "不支持从此外部站点获取的资源类型。请联系站点管理员。"
|
||||
_failedToFetch:
|
||||
title: "获取数据失败"
|
||||
fetchErrorDescription: "与外部站点的通信失败。 如果重试后问题仍然存在,请联系站点管理员。"
|
||||
parseErrorDescription: "无法读取从外部站点取得的数据。请联系站点管理员。"
|
||||
_hashUnmatched:
|
||||
title: "无法获取正确数据"
|
||||
description: "无法验证数据的完整性。安全起见,无法继续安装。请联系站点管理员。"
|
||||
_pluginParseFailed:
|
||||
title: "AiScript 错误"
|
||||
description: "虽然取得了数据,但是由于 AiScript 解析时出现错误,无法读取数据。请联系插件的作者。可在 Javascript 控制台查看错误详情。"
|
||||
_pluginInstallFailed:
|
||||
title: "插件安装失败"
|
||||
description: "安装插件时出现错误。请再试一次。可在 Javascript 控制台查看错误详情。"
|
||||
_themeParseFailed:
|
||||
title: "主题解析错误"
|
||||
description: "虽然取得了主题文件,但是由于解析时出现错误,无法加载主题。请联系主题的作者。可在 Javascript 控制台查看错误详情。"
|
||||
_themeInstallFailed:
|
||||
title: "安装主题失败"
|
||||
description: "安装主题时出错。请再试一次。可在 Javascript 控制台查看错误详情。"
|
||||
_dataSaver:
|
||||
_media:
|
||||
title: "加载媒体"
|
||||
description: "防止自动加载图像和视频。 点击隐藏的图像/视频即可加载它们。\n"
|
||||
_avatar:
|
||||
title: "头像"
|
||||
description: "停止播放头像的动画。 由于动画图片的文件大小可能比普通图像大,这可以进一步减少数据流量。"
|
||||
_urlPreview:
|
||||
title: "URL预览缩略图\n"
|
||||
description: "将不再加载 URL 预览缩略图。"
|
||||
_code:
|
||||
title: "代码高亮"
|
||||
description: "如果使用了代码高亮标记,例如在 MFM 中,则在点击之前不会加载。 代码高亮要求加载每种高亮语言的定义文件,由于这些文件不再自动加载,因此有望减少数据传输量。"
|
||||
_hemisphere:
|
||||
N: "北半球"
|
||||
S: "南半球"
|
||||
caption: "在某些客户端设置中用来确定季节"
|
||||
_reversi:
|
||||
reversi: "黑白棋"
|
||||
gameSettings: "对局设置"
|
||||
blackOrWhite: "先手/后手"
|
||||
blackIs: "{name}执黑(先手)"
|
||||
rules: "规则"
|
||||
thisGameIsStartedSoon: "对局即将开始"
|
||||
waitingForOther: "等待对手准备"
|
||||
waitingForMe: "等待你的准备"
|
||||
waitingBoth: "请准备"
|
||||
ready: "准备就绪"
|
||||
cancelReady: "重新准备"
|
||||
opponentTurn: "对手的回合"
|
||||
myTurn: "你的回合"
|
||||
turnOf: "{name}的回合"
|
||||
pastTurnOf: "{name}的回合"
|
||||
timeout: "超时"
|
||||
drawn: "平局"
|
||||
won: "{name}获胜"
|
||||
black: "黑"
|
||||
white: "白"
|
||||
total: "总计"
|
||||
turnCount: "第{count}回合"
|
||||
myGames: "我的对局"
|
||||
allGames: "所有对局"
|
||||
ended: "结束"
|
||||
playing: "对局中"
|
||||
canPutEverywhere: "无限制放置模式"
|
||||
timeLimitForEachTurn: "1回合的时间限制"
|
||||
freeMatch: "自由匹配"
|
||||
lookingForPlayer: "正在寻找对手"
|
||||
gameCanceled: "对局被取消了"
|
||||
shareToTlTheGameWhenStart: "开始时在时间线发布对局"
|
||||
iStartedAGame: "对局开始!#MisskeyReversi"
|
||||
opponentHasSettingsChanged: "对手更改了设定"
|
||||
allowIrregularRules: "允许非常规规则(完全自由)"
|
||||
disallowIrregularRules: "禁止非常规规则"
|
||||
_offlineScreen:
|
||||
title: "离线——无法连接到服务器"
|
||||
header: "无法连接到服务器"
|
||||
|
||||
|
@ -66,7 +66,7 @@ showMore: "載入更多"
|
||||
showLess: "關閉"
|
||||
youGotNewFollower: "您有新的追隨者"
|
||||
receiveFollowRequest: "您有新的追隨請求"
|
||||
followRequestAccepted: "追隨請求已接受"
|
||||
followRequestAccepted: "追隨請求已被接受"
|
||||
mention: "提及"
|
||||
mentions: "提及"
|
||||
directNotes: "私訊"
|
||||
@ -91,7 +91,7 @@ manageLists: "管理清單"
|
||||
error: "錯誤"
|
||||
somethingHappened: "發生錯誤"
|
||||
retry: "重試"
|
||||
pageLoadError: "載入頁面失敗"
|
||||
pageLoadError: "無法載入頁面。"
|
||||
pageLoadErrorDescription: "這通常是網路錯誤或瀏覽器快取殘留而引起的。請先清除瀏覽器快取,稍後再重試。"
|
||||
serverIsDead: "伺服器沒有回應。請稍等片刻再試。"
|
||||
youShouldUpgradeClient: "請重新載入以使用新版客戶端顯示此頁面。"
|
||||
@ -130,6 +130,7 @@ overwriteFromPinnedEmojis: "從一般複寫設定"
|
||||
reactionSettingDescription2: "拖動以交換,點擊以刪除,按下「+」以新增。"
|
||||
rememberNoteVisibility: "記住貼文可見性"
|
||||
attachCancel: "移除附件"
|
||||
deleteFile: "刪除檔案"
|
||||
markAsSensitive: "標記為敏感內容"
|
||||
unmarkAsSensitive: "取消標記為敏感內容"
|
||||
enterFileName: "請輸入檔案名稱"
|
||||
@ -379,6 +380,11 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "啟用 hCaptcha"
|
||||
hcaptchaSiteKey: "網站金鑰"
|
||||
hcaptchaSecretKey: "金鑰"
|
||||
mcaptcha: "mCaptcha"
|
||||
enableMcaptcha: "啟用 mCaptcha"
|
||||
mcaptchaSiteKey: "網站金鑰"
|
||||
mcaptchaSecretKey: "金鑰"
|
||||
mcaptchaInstanceUrl: "mCaptcha 的實例網址"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "啟用 reCAPTCHA"
|
||||
recaptchaSiteKey: "網站金鑰"
|
||||
@ -604,13 +610,13 @@ menu: "選單"
|
||||
divider: "分隔線"
|
||||
addItem: "新增項目"
|
||||
rearrange: "排序方式"
|
||||
relays: "中繼"
|
||||
addRelay: "新增中繼"
|
||||
relays: "中繼器"
|
||||
addRelay: "新增中繼器"
|
||||
inboxUrl: "收件夾URL"
|
||||
addedRelays: "已加入的中繼"
|
||||
addedRelays: "已加入的中繼器"
|
||||
serviceworkerInfo: "如要使用推播通知,需要啟用此選項並設定金鑰。"
|
||||
deletedNote: "已刪除的貼文"
|
||||
invisibleNote: "私密的貼文"
|
||||
invisibleNote: "私人貼文"
|
||||
enableInfiniteScroll: "啟用自動滾動頁面模式"
|
||||
visibility: "可見性"
|
||||
poll: "票選活動"
|
||||
@ -638,6 +644,7 @@ medium: "中"
|
||||
small: "小"
|
||||
generateAccessToken: "發行存取權杖"
|
||||
permission: "權限"
|
||||
adminPermission: "管理員權限"
|
||||
enableAll: "啟用全部"
|
||||
disableAll: "停用全部"
|
||||
tokenRequested: "允許存取帳戶"
|
||||
@ -681,6 +688,7 @@ useGlobalSettingDesc: "啟用時,將使用帳戶通知設定。停用時,則
|
||||
other: "其他"
|
||||
regenerateLoginToken: "重新產生登入權杖"
|
||||
regenerateLoginTokenDescription: "重新產生用於登入的內部權杖。一般情況下是不需要這樣做的。重新產生後,所有裝置將會被登出。"
|
||||
theKeywordWhenSearchingForCustomEmoji: "這是搜尋自訂表情符號時的關鍵字"
|
||||
setMultipleBySeparatingWithSpace: "您可以使用空格分隔多個項目。"
|
||||
fileIdOrUrl: "檔案 ID 或 URL"
|
||||
behavior: "行為"
|
||||
@ -694,7 +702,7 @@ abuseReported: "檢舉完成。感謝您的報告。"
|
||||
reporter: "檢舉者"
|
||||
reporteeOrigin: "檢舉來源"
|
||||
reporterOrigin: "檢舉者來源"
|
||||
forwardReport: "將報告轉送給遠端實例"
|
||||
forwardReport: "將報告轉送給遠端伺服器"
|
||||
forwardReportIsAnonymous: "在遠端實例上看不到您的資訊,顯示的報告者是匿名的系统帳戶。"
|
||||
send: "發送"
|
||||
abuseMarkAsResolved: "處理完畢"
|
||||
@ -702,7 +710,7 @@ openInNewTab: "在新分頁中開啟"
|
||||
openInSideView: "在側欄中開啟"
|
||||
defaultNavigationBehaviour: "預設導航"
|
||||
editTheseSettingsMayBreakAccount: "修改這些設定可能會毀損您的帳戶"
|
||||
instanceTicker: "貼文的實例來源"
|
||||
instanceTicker: "貼文的伺服器資訊"
|
||||
waitingFor: "等待{x}"
|
||||
random: "隨機"
|
||||
system: "系統"
|
||||
@ -823,7 +831,7 @@ active: "最近活躍"
|
||||
offline: "離線"
|
||||
notRecommended: "不推薦"
|
||||
botProtection: "Bot 防護"
|
||||
instanceBlocking: "已封鎖的實例"
|
||||
instanceBlocking: "已封鎖或禁言的伺服器"
|
||||
selectAccount: "選擇帳戶"
|
||||
switchAccount: "切換帳戶"
|
||||
enabled: "已啟用"
|
||||
@ -968,7 +976,7 @@ cannotUploadBecauseNoFreeSpace: "由於雲端硬碟沒有可用空間,因此
|
||||
cannotUploadBecauseExceedsFileSizeLimit: "由於超過了檔案大小的限制,無法上傳。"
|
||||
beta: "測試版"
|
||||
enableAutoSensitive: "自動 NSFW 判定"
|
||||
enableAutoSensitiveDescription: "如果可用,它將使用機器學習技術判斷檔案是否需要標記為敏感。即使關閉此功能,也可能會依實例規則而自動啟用。"
|
||||
enableAutoSensitiveDescription: "如果可行,它將使用機器學習技術判斷檔案是否需要標記為敏感。即使關閉此功能,也可能會依伺服器規則而自動啟用。"
|
||||
activeEmailValidationDescription: "主動地驗證使用者的電子郵件地址,以確定是否是一次性地址以及是否可以真正與其進行通訊。關閉時,僅檢查格式是否正確。"
|
||||
navbar: "導覽列"
|
||||
shuffle: "隨機"
|
||||
@ -978,7 +986,7 @@ pushNotification: "推播通知"
|
||||
subscribePushNotification: "啟用推播通知"
|
||||
unsubscribePushNotification: "停用推播通知"
|
||||
pushNotificationAlreadySubscribed: "推播通知啟用中"
|
||||
pushNotificationNotSupported: "瀏覽器或實例不支援推播通知"
|
||||
pushNotificationNotSupported: "瀏覽器或伺服器不支援推播通知"
|
||||
sendPushNotificationReadMessage: "如果已閱讀通知與訊息,就刪除推播通知"
|
||||
sendPushNotificationReadMessageCaption: "「{emptyPushNotificationMessage}」通知將立刻顯示。可能會更消耗裝置電池。"
|
||||
windowMaximize: "最大化"
|
||||
@ -1047,6 +1055,9 @@ resetPasswordConfirm: "重設密碼?"
|
||||
sensitiveWords: "敏感詞"
|
||||
sensitiveWordsDescription: "將含有設定詞彙的貼文可見性設為發送至首頁。可以用換行來進行複數的設定。"
|
||||
sensitiveWordsDescription2: "空格代表「以及」(AND),斜線包圍關鍵字代表使用正規表達式。"
|
||||
prohibitedWords: "禁語"
|
||||
prohibitedWordsDescription: "當要發布包含禁語的貼文時,會出現錯誤。可以用換行分隔來設定多個禁語。"
|
||||
prohibitedWordsDescription2: "空格代表「以及」(AND),斜線包圍關鍵字代表使用正規表達式。"
|
||||
hiddenTags: "隱藏標籤"
|
||||
hiddenTagsDescription: "設定的標籤不會在趨勢中顯示,換行可以設定多個標籤。"
|
||||
notesSearchNotAvailable: "無法使用搜尋貼文功能。"
|
||||
@ -1065,6 +1076,8 @@ limitWidthOfReaction: "限制反應的最大寬度,並縮小顯示尺寸。"
|
||||
noteIdOrUrl: "貼文ID或URL"
|
||||
video: "影片"
|
||||
videos: "影片"
|
||||
audio: "音效"
|
||||
audioFiles: "音效檔案"
|
||||
dataSaver: "數據節省模式"
|
||||
accountMigration: "遷移帳戶"
|
||||
accountMoved: "這個使用者已遷移至新的帳戶:"
|
||||
@ -1168,6 +1181,7 @@ hideRepliesToOthersInTimelineAll: "在時間軸不包含追隨中所有人的回
|
||||
confirmShowRepliesAll: "進行此操作後無法復原。您真的希望時間軸「包含」您目前追隨的所有人的回覆嗎?"
|
||||
confirmHideRepliesAll: "進行此操作後無法復原。您真的希望時間軸「不包含」您目前追隨的所有人的回覆嗎?"
|
||||
externalServices: "外部服務"
|
||||
sourceCode: "原始碼"
|
||||
impressum: "營運者資訊"
|
||||
impressumUrl: "營運者資訊網址"
|
||||
impressumDescription: "在德國與部份地區必須要明確顯示營運者資訊。"
|
||||
@ -1196,7 +1210,26 @@ overwriteContentConfirm: "確定要覆蓋目前的內容嗎?"
|
||||
seasonalScreenEffect: "隨季節變換畫面的呈現"
|
||||
decorate: "設置頭像裝飾"
|
||||
addMfmFunction: "插入MFM功能語法"
|
||||
enableQuickAddMfmFunction: "顯示高級MFM選擇器"
|
||||
enableQuickAddMfmFunction: "顯示高級 MFM 選擇器"
|
||||
bubbleGame: "氣泡遊戲"
|
||||
sfx: "音效"
|
||||
soundWillBePlayed: "將播放音效"
|
||||
showReplay: "觀看重播"
|
||||
replay: "重播"
|
||||
replaying: "重播中"
|
||||
ranking: "排行榜"
|
||||
lastNDays: "過去 {n} 天"
|
||||
backToTitle: "回到遊戲標題頁"
|
||||
hemisphere: "您居住的地區"
|
||||
withSensitive: "顯示包含敏感檔案的貼文"
|
||||
userSaysSomethingSensitive: "包含 {name} 敏感檔案的貼文"
|
||||
enableHorizontalSwipe: "滑動切換時間軸"
|
||||
_bubbleGame:
|
||||
howToPlay: "玩法說明"
|
||||
_howToPlay:
|
||||
section1: "調整位置並將物體放入盒子中。"
|
||||
section2: "當相同類型的物體黏在一起時,它們會變成不同的物體,您就會得到分數。"
|
||||
section3: "如果物體從盒子裡溢出,遊戲就結束了。透過融合物體而不溢出盒子來獲得高分!"
|
||||
_announcement:
|
||||
forExistingUsers: "僅限既有的使用者"
|
||||
forExistingUsersDescription: "啟用代表僅向現存使用者顯示;停用代表張貼後註冊的新使用者也會看到。"
|
||||
@ -1206,7 +1239,7 @@ _announcement:
|
||||
tooManyActiveAnnouncementDescription: "有過多公告可能會影響使用者體驗。請考慮歸檔已結束的公告。"
|
||||
readConfirmTitle: "標記為已讀嗎?"
|
||||
readConfirmText: "閱讀「{title}」的內容並標記為已讀。"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "由於可能會破壞使用者體驗,尤其是對於新使用者而言,我們建議使用公告來發布有時效性的資訊而不是固定不變的資訊。"
|
||||
shouldNotBeUsedToPresentPermanentInfo: "為了避免損害新用戶的使用體驗,建議使用公告來發布即時性的訊息,而不是用於固定不變的資訊。"
|
||||
dialogAnnouncementUxWarn: "如果同時有 2 個以上對話方塊形式的公告存在,對於使用者體驗很可能會有不良的影響,因此建議謹慎使用。"
|
||||
silence: "不發送通知"
|
||||
silenceDescription: "啟用此選項後,將不會發送此公告的通知,並且無需將其標記為已讀。"
|
||||
@ -1515,7 +1548,7 @@ _achievements:
|
||||
description: "首頁時間軸在一分鐘內出現超過二十篇貼文"
|
||||
_viewInstanceChart:
|
||||
title: "分析師"
|
||||
description: "顯示了實例的圖表"
|
||||
description: "顯示了伺服器的圖表"
|
||||
_outputHelloWorldOnScratchpad:
|
||||
title: "Hello, world!"
|
||||
description: "在 AiScript 控制臺輸出了「hello world」"
|
||||
@ -1570,13 +1603,20 @@ _achievements:
|
||||
_tutorialCompleted:
|
||||
title: "CherryPick新手講座 結業證書"
|
||||
description: "已完成教學課程"
|
||||
_bubbleGameExplodingHead:
|
||||
title: "🤯"
|
||||
description: "氣泡遊戲中最大的物體出現了"
|
||||
_bubbleGameDoubleExplodingHead:
|
||||
title: "雙重🤯"
|
||||
description: "氣泡遊戲中最大的物體同時出現了兩個"
|
||||
flavor: "這樣大小的便當盒,用 🤯 🤯 稍微裝滿一些吧"
|
||||
_role:
|
||||
new: "建立角色"
|
||||
edit: "編輯角色"
|
||||
name: "角色名稱"
|
||||
description: "角色描述 "
|
||||
permission: "角色的權限"
|
||||
descriptionOfPermission: "<b>審查員</b>執行與審查相關的基本操作。\n<b>管理員</b>能變更實例的全部設定"
|
||||
descriptionOfPermission: "<b>審查員</b>執行與審查相關的基本操作。\n<b>管理員</b>能變更伺服器的全部設定。"
|
||||
assignTarget: "指派目標"
|
||||
descriptionOfAssignTarget: "<b>手動</b>是以手動管理這個角色包含的人員。\n<b>符合條件</b>是設定條件以自動包含符合條件的使用者。"
|
||||
manual: "手動"
|
||||
@ -1611,7 +1651,7 @@ _role:
|
||||
ltlAvailable: "瀏覽本地時間軸"
|
||||
canPublicNote: "允許公開貼文"
|
||||
canEditNote: "允許編輯貼文"
|
||||
canInvite: "發行實例邀請碼"
|
||||
canInvite: "發行伺服器邀請碼"
|
||||
inviteLimit: "可建立邀請碼的數量"
|
||||
inviteLimitCycle: "邀請碼的發放間隔"
|
||||
inviteExpirationTime: "邀請碼的有效日期"
|
||||
@ -1689,7 +1729,7 @@ _ad:
|
||||
_forgotPassword:
|
||||
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
|
||||
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。 "
|
||||
contactAdmin: "此實例不支持電子郵件,請聯繫您的管理員重置您的密碼。 "
|
||||
contactAdmin: "本伺服器不支援電子郵件,請聯繫您的管理員重置您的密碼。 "
|
||||
_gallery:
|
||||
my: "我的貼文"
|
||||
liked: "喜歡的貼文"
|
||||
@ -1842,8 +1882,8 @@ _wordMute:
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "包括對被靜音伺服器上的使用者的回覆,被設定的伺服器上所有貼文及轉發都會被靜音。"
|
||||
instanceMuteDescription2: "設定時以換行進行分隔"
|
||||
title: "將隱藏被設定的實例貼文。"
|
||||
heading: "將實例靜音"
|
||||
title: "將隱藏被設定的伺服器貼文。"
|
||||
heading: "將伺服器靜音"
|
||||
_theme:
|
||||
explore: "探索佈景主題"
|
||||
install: "安裝佈景主題"
|
||||
@ -2013,14 +2053,63 @@ _permissions:
|
||||
"write:user-groups": "編輯使用者群組"
|
||||
"read:channels": "已查看的頻道"
|
||||
"write:channels": "編輯頻道"
|
||||
"read:gallery": "瀏覽圖庫"
|
||||
"write:gallery": "操作圖庫"
|
||||
"read:gallery-likes": "讀取喜歡的圖片"
|
||||
"write:gallery-likes": "操作喜歡的圖片"
|
||||
"read:gallery": "瀏覽相簿"
|
||||
"write:gallery": "編輯相簿"
|
||||
"read:gallery-likes": "瀏覽相簿的讚"
|
||||
"write:gallery-likes": "編輯相簿的讚"
|
||||
"read:flash": "檢視 Play"
|
||||
"write:flash": "編輯 Play"
|
||||
"read:flash-likes": "檢視 Play 的讚"
|
||||
"write:flash-likes": "編輯 Play 的讚"
|
||||
"read:admin:abuse-user-reports": "查看來自使用者的檢舉"
|
||||
"write:admin:delete-account": "刪除使用者帳戶"
|
||||
"write:admin:delete-all-files-of-a-user": "刪除使用者的所有檔案"
|
||||
"read:admin:index-stats": "查看資料庫索引的相關資訊"
|
||||
"read:admin:table-stats": "查看資料庫表格的相關資訊"
|
||||
"read:admin:user-ips": "查看使用者的 IP 位址"
|
||||
"read:admin:meta": "查看實例的元資料"
|
||||
"write:admin:reset-password": "重設使用者的密碼"
|
||||
"write:admin:resolve-abuse-user-report": "解決來自使用者的檢舉"
|
||||
"write:admin:send-email": "發送郵件"
|
||||
"read:admin:server-info": "查看伺服器的資訊"
|
||||
"read:admin:show-moderation-log": "查看審查紀錄"
|
||||
"read:admin:show-user": "查看使用者的私密資訊"
|
||||
"read:admin:show-users": "查看使用者的私密資訊"
|
||||
"write:admin:suspend-user": "凍結使用者"
|
||||
"write:admin:unset-user-avatar": "刪除使用者的頭像"
|
||||
"write:admin:unset-user-banner": "刪除使用者的橫幅"
|
||||
"write:admin:unsuspend-user": "解除凍結使用者"
|
||||
"write:admin:meta": "編輯實例的元資料"
|
||||
"write:admin:user-note": "編輯審查筆記"
|
||||
"write:admin:roles": "編輯角色"
|
||||
"read:admin:roles": "查看角色"
|
||||
"write:admin:relays": "編輯中繼器"
|
||||
"read:admin:relays": "查看中繼器"
|
||||
"write:admin:invite-codes": "編輯邀請碼"
|
||||
"read:admin:invite-codes": "查看邀請碼"
|
||||
"write:admin:announcements": "編輯公告"
|
||||
"read:admin:announcements": "查看公告"
|
||||
"write:admin:avatar-decorations": "編輯頭像裝飾"
|
||||
"read:admin:avatar-decorations": "查看頭像裝飾"
|
||||
"write:admin:federation": "編輯站台聯邦的相關資訊"
|
||||
"write:admin:account": "編輯使用者帳戶"
|
||||
"read:admin:account": "查看使用者的相關資訊"
|
||||
"write:admin:emoji": "編輯表情符號"
|
||||
"read:admin:emoji": "查看表情符號"
|
||||
"write:admin:queue": "編輯工作佇列"
|
||||
"read:admin:queue": "查看工作佇列的相關資訊"
|
||||
"write:admin:promo": "編輯推廣貼文"
|
||||
"write:admin:drive": "編輯使用者的雲端硬碟"
|
||||
"read:admin:drive": "查看使用者雲端硬碟的相關資訊"
|
||||
"read:admin:stream": "使用管理員的 Websocket API"
|
||||
"write:admin:ad": "編輯廣告"
|
||||
"read:admin:ad": "查看廣告"
|
||||
"write:invite-codes": "建立邀請碼"
|
||||
"read:invite-codes": "取得邀請碼"
|
||||
"write:clip-favorite": "編輯摘錄的讚"
|
||||
"read:clip-favorite": "查看摘錄的讚"
|
||||
"read:federation": "查看站台聯邦的相關資訊"
|
||||
"write:report-abuse": "檢舉違規行為"
|
||||
_auth:
|
||||
shareAccessTitle: "應用程式的存取權限"
|
||||
shareAccess: "要授權「“{name}”」存取您的帳戶嗎?"
|
||||
@ -2048,7 +2137,7 @@ _weekday:
|
||||
saturday: "週六"
|
||||
_widgets:
|
||||
profile: "個人檔案"
|
||||
instanceInfo: "實例資訊"
|
||||
instanceInfo: "伺服器資訊"
|
||||
memo: "備忘錄"
|
||||
notifications: "通知"
|
||||
timeline: "時間軸"
|
||||
@ -2062,7 +2151,7 @@ _widgets:
|
||||
digitalClock: "電子時鐘"
|
||||
unixClock: "UNIX 時間"
|
||||
federation: "聯邦宇宙"
|
||||
instanceCloud: "實例雲"
|
||||
instanceCloud: "伺服器雲"
|
||||
postForm: "發文視窗"
|
||||
slideshow: "幻燈片"
|
||||
button: "按鈕"
|
||||
@ -2095,7 +2184,7 @@ _poll:
|
||||
deadlineTime: "小時"
|
||||
duration: "時長"
|
||||
votesCount: "{n} 票"
|
||||
totalVotes: "一共{n}票"
|
||||
totalVotes: "合計 {n} 票"
|
||||
vote: "投票"
|
||||
showResult: "顯示結果"
|
||||
voted: "已投票"
|
||||
@ -2114,7 +2203,7 @@ _visibility:
|
||||
specified: "指定使用者"
|
||||
specifiedDescription: "僅發布至指定使用者"
|
||||
disableFederation: "停用聯邦"
|
||||
disableFederationDescription: "不要傳遞給其他實例"
|
||||
disableFederationDescription: "不發送到其他伺服器"
|
||||
_postForm:
|
||||
replyPlaceholder: "回覆此貼文..."
|
||||
quotePlaceholder: "引用此貼文..."
|
||||
@ -2143,6 +2232,7 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "所有貼文"
|
||||
favoritedNotes: "「我的最愛」貼文"
|
||||
clips: "摘錄"
|
||||
followingList: "追隨中"
|
||||
muteList: "靜音"
|
||||
blockingList: "封鎖"
|
||||
@ -2445,3 +2535,53 @@ _dataSaver:
|
||||
_code:
|
||||
title: "程式碼突出顯示"
|
||||
description: "如果使用了 MFM 的程式碼突顯標記,則在點擊之前不會載入。程式碼突顯要求加載每種程式語言的突顯定義檔案,但由於這些檔案不再自動載入,因此有望減少資料流量。"
|
||||
_hemisphere:
|
||||
N: "北半球"
|
||||
S: "南半球"
|
||||
caption: "在某些客戶端的設定中,用於判斷季節。"
|
||||
_reversi:
|
||||
reversi: "黑白棋"
|
||||
gameSettings: "對弈設定"
|
||||
chooseBoard: "選擇棋盤"
|
||||
blackOrWhite: "先手/後手"
|
||||
blackIs: "{name} 為黑棋(先攻)"
|
||||
rules: "規則"
|
||||
thisGameIsStartedSoon: "對弈即將開始"
|
||||
waitingForOther: "等待對手準備就緒"
|
||||
waitingForMe: "等待您準備就緒"
|
||||
waitingBoth: "請準備"
|
||||
ready: "準備就緒"
|
||||
cancelReady: "重新準備"
|
||||
opponentTurn: "對手的回合"
|
||||
myTurn: "您的回合"
|
||||
turnOf: "{name} 的回合"
|
||||
pastTurnOf: "{name} 的回合"
|
||||
surrender: "認輸"
|
||||
surrendered: "對手認輸"
|
||||
timeout: "時間到"
|
||||
drawn: "平手"
|
||||
won: "{name} 獲勝"
|
||||
black: "黑"
|
||||
white: "白"
|
||||
total: "合計"
|
||||
turnCount: "{count} 回合"
|
||||
myGames: "我的對弈"
|
||||
allGames: "所有對弈"
|
||||
ended: "已結束"
|
||||
playing: "正在對弈"
|
||||
isLlotheo: "子較少的一方為勝(顛倒規則)"
|
||||
loopedMap: "循環棋盤"
|
||||
canPutEverywhere: "隨意置放模式"
|
||||
timeLimitForEachTurn: "每回合的時間限制"
|
||||
freeMatch: "自由對戰"
|
||||
lookingForPlayer: "正在搜尋對手"
|
||||
gameCanceled: "對弈已被取消"
|
||||
shareToTlTheGameWhenStart: "在遊戲開始時將對弈資訊發布到時間軸"
|
||||
iStartedAGame: "對弈開始了! #MisskeyReversi"
|
||||
opponentHasSettingsChanged: "對手更改了設定"
|
||||
allowIrregularRules: "允許異常規則(完全自由)"
|
||||
disallowIrregularRules: "不允許異常規則"
|
||||
_offlineScreen:
|
||||
title: "離線-無法連接伺服器"
|
||||
header: "無法連接伺服器"
|
||||
|
||||
|
32
package.json
32
package.json
@ -1,17 +1,20 @@
|
||||
{
|
||||
"name": "cherrypick",
|
||||
"version": "4.6.0",
|
||||
"basedMisskeyVersion": "2023.12.2",
|
||||
"version": "4.7.0",
|
||||
"basedMisskeyVersion": "2024.2.0",
|
||||
"codename": "nasubi",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kokonect-link/cherrypick.git"
|
||||
},
|
||||
"packageManager": "pnpm@8.12.1",
|
||||
"packageManager": "pnpm@8.15.1",
|
||||
"workspaces": [
|
||||
"packages/frontend",
|
||||
"packages/backend",
|
||||
"packages/sw"
|
||||
"packages/sw",
|
||||
"packages/cherrypick-js",
|
||||
"packages/misskey-reversi",
|
||||
"packages/misskey-bubble-game"
|
||||
],
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@ -19,7 +22,7 @@
|
||||
"build-assets": "node ./scripts/build-assets.mjs",
|
||||
"build": "pnpm build-pre && pnpm -r build && pnpm build-assets",
|
||||
"build-storybook": "pnpm --filter frontend build-storybook",
|
||||
"build-cherrypick-js-with-types": "pnpm --filter backend build && pnpm --filter backend generate-api-json && ncp packages/backend/built/api.json packages/cherrypick-js/generator/api.json && pnpm --filter cherrypick-js update-autogen-code && pnpm --filter cherrypick-js build",
|
||||
"build-cherrypick-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!cherrypick-js build && pnpm --filter backend generate-api-json && ncp packages/backend/built/api.json packages/cherrypick-js/generator/api.json && pnpm --filter cherrypick-js update-autogen-code && pnpm --filter cherrypick-js build && pnpm --filter cherrypick-js api",
|
||||
"start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js",
|
||||
"start:docker": "pnpm check:connect && cd packages/backend && exec node ./built/boot/entry.js",
|
||||
"start:test": "cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
|
||||
@ -49,21 +52,24 @@
|
||||
"lodash": "4.17.21"
|
||||
},
|
||||
"dependencies": {
|
||||
"cssnano": "6.0.3",
|
||||
"execa": "8.0.1",
|
||||
"cssnano": "6.0.2",
|
||||
"fast-glob": "3.3.2",
|
||||
"ignore-walk": "6.0.4",
|
||||
"js-yaml": "4.1.0",
|
||||
"postcss": "8.4.32",
|
||||
"terser": "5.26.0",
|
||||
"postcss": "8.4.33",
|
||||
"tar": "6.2.0",
|
||||
"terser": "5.27.0",
|
||||
"typescript": "5.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "6.14.0",
|
||||
"@typescript-eslint/parser": "6.14.0",
|
||||
"@typescript-eslint/eslint-plugin": "6.18.1",
|
||||
"@typescript-eslint/parser": "6.18.1",
|
||||
"cross-env": "7.0.3",
|
||||
"cypress": "13.6.1",
|
||||
"cypress": "13.6.3",
|
||||
"eslint": "8.56.0",
|
||||
"start-server-and-test": "2.0.3",
|
||||
"ncp": "2.0.0"
|
||||
"ncp": "2.0.0",
|
||||
"start-server-and-test": "2.0.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@tensorflow/tfjs-core": "4.4.0"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -3,6 +3,6 @@ import { genOpenapiSpec } from './built/server/api/openapi/gen-spec.js'
|
||||
import { writeFileSync } from "node:fs";
|
||||
|
||||
const config = loadConfig();
|
||||
const spec = genOpenapiSpec(config);
|
||||
const spec = genOpenapiSpec(config, true);
|
||||
|
||||
writeFileSync('./built/api.json', JSON.stringify(spec), 'utf-8');
|
@ -160,7 +160,6 @@ module.exports = {
|
||||
testMatch: [
|
||||
"<rootDir>/test/unit/**/*.ts",
|
||||
"<rootDir>/src/**/*.test.ts",
|
||||
"<rootDir>/test/e2e/**/*.ts",
|
||||
],
|
||||
|
||||
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
|
||||
|
15
packages/backend/jest.config.e2e.cjs
Normal file
15
packages/backend/jest.config.e2e.cjs
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* For a detailed explanation regarding each configuration property and type check, visit:
|
||||
* https://jestjs.io/docs/en/configuration.html
|
||||
*/
|
||||
|
||||
const base = require('./jest.config.cjs')
|
||||
|
||||
module.exports = {
|
||||
...base,
|
||||
globalSetup: "<rootDir>/built-test/entry.js",
|
||||
setupFilesAfterEnv: ["<rootDir>/test/jest.setup.ts"],
|
||||
testMatch: [
|
||||
"<rootDir>/test/e2e/**/*.ts",
|
||||
],
|
||||
};
|
14
packages/backend/jest.config.unit.cjs
Normal file
14
packages/backend/jest.config.unit.cjs
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* For a detailed explanation regarding each configuration property and type check, visit:
|
||||
* https://jestjs.io/docs/en/configuration.html
|
||||
*/
|
||||
|
||||
const base = require('./jest.config.cjs')
|
||||
|
||||
module.exports = {
|
||||
...base,
|
||||
testMatch: [
|
||||
"<rootDir>/test/unit/**/*.ts",
|
||||
"<rootDir>/src/**/*.test.ts",
|
||||
],
|
||||
};
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and other misskey, cherrypick contributors
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user