Compare commits
4 Commits
2024.2.0-b
...
13.8.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
02c8fd9de5 | ||
![]() |
1ba49b614d | ||
![]() |
40de14415c | ||
![]() |
7c9330a02f |
@@ -2,4 +2,3 @@
|
||||
POSTGRES_PASSWORD=example-misskey-pass
|
||||
POSTGRES_USER=example-misskey-user
|
||||
POSTGRES_DB=misskey
|
||||
DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}"
|
||||
|
@@ -51,23 +51,6 @@ db:
|
||||
#extra:
|
||||
# ssl: true
|
||||
|
||||
dbReplications: false
|
||||
|
||||
# You can configure any number of replicas here
|
||||
#dbSlaves:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Redis configuration └─────────────────────────────────────
|
||||
|
||||
@@ -79,43 +62,15 @@ redis:
|
||||
#prefix: example-prefix
|
||||
#db: 1
|
||||
|
||||
#redisForPubsub:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#redisForJobQueue:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
#redisForTimelines:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
# You can set scope to local (default value) or global
|
||||
# (include notes from remote).
|
||||
|
||||
#meilisearch:
|
||||
# host: meilisearch
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: true
|
||||
# index: ''
|
||||
# scope: local
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
@@ -126,7 +81,6 @@ redis:
|
||||
|
||||
# Available methods:
|
||||
# aid ... Short, Millisecond accuracy
|
||||
# aidx ... Millisecond accuracy
|
||||
# meid ... Similar to ObjectID, Millisecond accuracy
|
||||
# ulid ... Millisecond accuracy
|
||||
# objectid ... This is left for backward compatibility
|
||||
@@ -134,7 +88,7 @@ redis:
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# ID SETTINGS AFTER THAT!
|
||||
|
||||
id: 'aidx'
|
||||
id: 'aid'
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Other configuration └─────────────────────────────────────
|
||||
@@ -151,7 +105,7 @@ id: 'aidx'
|
||||
|
||||
# Job rate limiter
|
||||
# deliverJobPerSec: 128
|
||||
# inboxJobPerSec: 32
|
||||
# inboxJobPerSec: 16
|
||||
|
||||
# Job attempts
|
||||
# deliverJobMaxAttempts: 12
|
||||
@@ -178,15 +132,12 @@ proxyBypassHosts:
|
||||
# Media Proxy
|
||||
#mediaProxy: https://example.com/proxy
|
||||
|
||||
# Proxy remote files (default: true)
|
||||
proxyRemoteFiles: true
|
||||
# Proxy remote files (default: false)
|
||||
#proxyRemoteFiles: true
|
||||
|
||||
# Sign to ActivityPub GET request (default: true)
|
||||
signToActivityPubGet: true
|
||||
|
||||
# For security reasons, uploading attachments from the intranet is prohibited,
|
||||
# but exceptions can be made from the following settings. Default value is "undefined".
|
||||
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
|
||||
#allowedPrivateNetworks: [
|
||||
# '127.0.0.1/32'
|
||||
#]
|
||||
|
@@ -30,10 +30,6 @@ url: https://example.tld/
|
||||
# The port that your Misskey server should listen on.
|
||||
port: 3000
|
||||
|
||||
# You can also use UNIX domain socket.
|
||||
# socket: /path/to/misskey.sock
|
||||
# chmodSocket: '777'
|
||||
|
||||
# ┌──────────────────────────┐
|
||||
#───┘ PostgreSQL configuration └────────────────────────────────
|
||||
|
||||
@@ -55,23 +51,6 @@ db:
|
||||
#extra:
|
||||
# ssl: true
|
||||
|
||||
dbReplications: false
|
||||
|
||||
# You can configure any number of replicas here
|
||||
#dbSlaves:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Redis configuration └─────────────────────────────────────
|
||||
|
||||
@@ -82,52 +61,16 @@ redis:
|
||||
#pass: example-pass
|
||||
#prefix: example-prefix
|
||||
#db: 1
|
||||
# You can specify more ioredis options...
|
||||
#username: example-username
|
||||
|
||||
#redisForPubsub:
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
# # You can specify more ioredis options...
|
||||
# #username: example-username
|
||||
|
||||
#redisForJobQueue:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
# # You can specify more ioredis options...
|
||||
# #username: example-username
|
||||
|
||||
#redisForTimelines:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
# # You can specify more ioredis options...
|
||||
# #username: example-username
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
# You can set scope to local (default value) or global
|
||||
# (include notes from remote).
|
||||
|
||||
#meilisearch:
|
||||
# host: localhost
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: true
|
||||
# index: ''
|
||||
# scope: local
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
@@ -138,7 +81,6 @@ redis:
|
||||
|
||||
# Available methods:
|
||||
# aid ... Short, Millisecond accuracy
|
||||
# aidx ... Millisecond accuracy
|
||||
# meid ... Similar to ObjectID, Millisecond accuracy
|
||||
# ulid ... Millisecond accuracy
|
||||
# objectid ... This is left for backward compatibility
|
||||
@@ -146,7 +88,7 @@ redis:
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# ID SETTINGS AFTER THAT!
|
||||
|
||||
id: 'aidx'
|
||||
id: 'aid'
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Other configuration └─────────────────────────────────────
|
||||
@@ -158,23 +100,16 @@ id: 'aidx'
|
||||
#clusterLimit: 1
|
||||
|
||||
# Job concurrency per worker
|
||||
#deliverJobConcurrency: 128
|
||||
#inboxJobConcurrency: 16
|
||||
#relashionshipJobConcurrency: 16
|
||||
# What's relashionshipJob?:
|
||||
# Follow, unfollow, block and unblock(ings) while following-imports, etc. or account migrations.
|
||||
# deliverJobConcurrency: 128
|
||||
# inboxJobConcurrency: 16
|
||||
|
||||
# Job rate limiter
|
||||
#deliverJobPerSec: 128
|
||||
#inboxJobPerSec: 32
|
||||
#relashionshipJobPerSec: 64
|
||||
# deliverJobPerSec: 128
|
||||
# inboxJobPerSec: 16
|
||||
|
||||
# Job attempts
|
||||
#deliverJobMaxAttempts: 12
|
||||
#inboxJobMaxAttempts: 8
|
||||
|
||||
# Local address used for outgoing requests
|
||||
#outgoingAddress: 127.0.0.1
|
||||
# deliverJobMaxAttempts: 12
|
||||
# inboxJobMaxAttempts: 8
|
||||
|
||||
# IP address family used for outgoing request (ipv4, ipv6 or dual)
|
||||
#outgoingAddressFamily: ipv4
|
||||
@@ -200,9 +135,9 @@ proxyBypassHosts:
|
||||
# * Perform image compression (on a different server resource than the main process)
|
||||
#mediaProxy: https://example.com/proxy
|
||||
|
||||
# Proxy remote files (default: true)
|
||||
# Proxy remote files (default: false)
|
||||
# Proxy remote files by this instance or mediaProxy to prevent remote files from running in remote domains.
|
||||
proxyRemoteFiles: true
|
||||
#proxyRemoteFiles: true
|
||||
|
||||
# Movie Thumbnail Generation URL
|
||||
# There is no reference implementation.
|
||||
@@ -213,15 +148,9 @@ proxyRemoteFiles: true
|
||||
# Sign to ActivityPub GET request (default: true)
|
||||
signToActivityPubGet: true
|
||||
|
||||
# For security reasons, uploading attachments from the intranet is prohibited,
|
||||
# but exceptions can be made from the following settings. Default value is "undefined".
|
||||
# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)).
|
||||
#allowedPrivateNetworks: [
|
||||
# '127.0.0.1/32'
|
||||
#]
|
||||
|
||||
# Upload or download file size limits (bytes)
|
||||
#maxFileSize: 262144000
|
||||
|
||||
# PID File of master process
|
||||
#pidFile: /tmp/misskey.pid
|
||||
|
@@ -4,26 +4,8 @@
|
||||
"service": "app",
|
||||
"workspaceFolder": "/workspace",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers-contrib/features/pnpm:2": {
|
||||
"version": "8.9.2"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "20.10.0"
|
||||
}
|
||||
"ghcr.io/devcontainers-contrib/features/pnpm:2": {}
|
||||
},
|
||||
"forwardPorts": [3000],
|
||||
"postCreateCommand": "sudo chmod 755 .devcontainer/init.sh && .devcontainer/init.sh",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"editorconfig.editorconfig",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"Vue.volar",
|
||||
"Vue.vscode-typescript-vue-plugin",
|
||||
"Orta.vscode-jest",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"mrmlnc.vscode-json5"
|
||||
]
|
||||
}
|
||||
}
|
||||
"postCreateCommand": "sudo chmod 755 .devcontainer/init.sh && .devcontainer/init.sh"
|
||||
}
|
||||
|
@@ -51,23 +51,6 @@ db:
|
||||
#extra:
|
||||
# ssl: true
|
||||
|
||||
dbReplications: false
|
||||
|
||||
# You can configure any number of replicas here
|
||||
#dbSlaves:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Redis configuration └─────────────────────────────────────
|
||||
|
||||
@@ -79,39 +62,15 @@ redis:
|
||||
#prefix: example-prefix
|
||||
#db: 1
|
||||
|
||||
#redisForPubsub:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#redisForJobQueue:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
#redisForTimelines:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
#meilisearch:
|
||||
# host: meilisearch
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: true
|
||||
# index: ''
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
@@ -122,7 +81,6 @@ redis:
|
||||
|
||||
# Available methods:
|
||||
# aid ... Short, Millisecond accuracy
|
||||
# aidx ... Millisecond accuracy
|
||||
# meid ... Similar to ObjectID, Millisecond accuracy
|
||||
# ulid ... Millisecond accuracy
|
||||
# objectid ... This is left for backward compatibility
|
||||
@@ -130,7 +88,7 @@ redis:
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# ID SETTINGS AFTER THAT!
|
||||
|
||||
id: 'aidx'
|
||||
id: 'aid'
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Other configuration └─────────────────────────────────────
|
||||
@@ -147,7 +105,7 @@ id: 'aidx'
|
||||
|
||||
# Job rate limiter
|
||||
# deliverJobPerSec: 128
|
||||
# inboxJobPerSec: 32
|
||||
# inboxJobPerSec: 16
|
||||
|
||||
# Job attempts
|
||||
# deliverJobMaxAttempts: 12
|
||||
@@ -174,8 +132,8 @@ proxyBypassHosts:
|
||||
# Media Proxy
|
||||
#mediaProxy: https://example.com/proxy
|
||||
|
||||
# Proxy remote files (default: true)
|
||||
proxyRemoteFiles: true
|
||||
# Proxy remote files (default: false)
|
||||
#proxyRemoteFiles: true
|
||||
|
||||
# Sign to ActivityPub GET request (default: true)
|
||||
signToActivityPubGet: true
|
||||
|
@@ -2,7 +2,7 @@ version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
|
||||
@@ -16,7 +16,7 @@ services:
|
||||
- external_network
|
||||
|
||||
redis:
|
||||
restart: unless-stopped
|
||||
restart: always
|
||||
image: redis:7-alpine
|
||||
networks:
|
||||
- internal_network
|
||||
|
@@ -4,7 +4,6 @@ set -xe
|
||||
|
||||
sudo chown -R node /workspace
|
||||
git submodule update --init
|
||||
pnpm config set store-dir /home/node/.local/share/pnpm/store
|
||||
pnpm install --frozen-lockfile
|
||||
cp .devcontainer/devcontainer.yml .config/default.yml
|
||||
pnpm build
|
||||
|
@@ -8,6 +8,7 @@ build/
|
||||
built/
|
||||
db/
|
||||
docker-compose.yml
|
||||
elasticsearch/
|
||||
node_modules/
|
||||
packages/*/node_modules
|
||||
redis/
|
||||
@@ -24,8 +25,6 @@ fluent-emojis/
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
|
||||
.pnpm-store
|
||||
|
||||
.idea/
|
||||
packages/*/.vscode/
|
||||
packages/backend/test/docker-compose.yml
|
||||
|
@@ -6,10 +6,6 @@ indent_size = 2
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
|
43
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
Normal file
43
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
name: 🐛 Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ⚠️bug?
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting!
|
||||
First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported.
|
||||
Also, If you are NOT owner/admin of server, PLEASE DONT REPORT SERVER SPECIFIC ISSUES TO HERE! (e.g. feature XXX is not working in misskey.example) Please try with another misskey servers, and if your issue is only reproducible with specific server, contact your server's owner/admin first.
|
||||
-->
|
||||
|
||||
## 💡 Summary
|
||||
|
||||
<!-- Tell us what the bug is -->
|
||||
|
||||
## 🥰 Expected Behavior
|
||||
|
||||
<!--- Tell us what should happen -->
|
||||
|
||||
## 🤬 Actual Behavior
|
||||
|
||||
<!--
|
||||
Tell us what happens instead of the expected behavior.
|
||||
Please include errors from the developer console and/or server log files if you have access to them.
|
||||
-->
|
||||
|
||||
## 📝 Steps to Reproduce
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## 📌 Environment
|
||||
|
||||
<!-- Tell us where on the platform it happens -->
|
||||
|
||||
Misskey version:
|
||||
Your OS:
|
||||
Your browser:
|
97
.github/ISSUE_TEMPLATE/01_bug-report.yml
vendored
97
.github/ISSUE_TEMPLATE/01_bug-report.yml
vendored
@@ -1,97 +0,0 @@
|
||||
name: 🐛 Bug Report
|
||||
description: Create a report to help us improve
|
||||
labels: ["⚠️bug?"]
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for reporting!
|
||||
First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported.
|
||||
Also, If you are NOT owner/admin of server, PLEASE DONT REPORT SERVER SPECIFIC ISSUES TO HERE! (e.g. feature XXX is not working in misskey.example) Please try with another misskey servers, and if your issue is only reproducible with specific server, contact your server's owner/admin first.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 💡 Summary
|
||||
description: Tell us what the bug is
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 🥰 Expected Behavior
|
||||
description: Tell us what should happen
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 🤬 Actual Behavior
|
||||
description: |
|
||||
Tell us what happens instead of the expected behavior.
|
||||
Please include errors from the developer console and/or server log files if you have access to them.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 📝 Steps to Reproduce
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 💻 Frontend Environment
|
||||
description: |
|
||||
Tell us where on the platform it happens
|
||||
DO NOT WRITE "latest". Please provide the specific version.
|
||||
|
||||
Examples:
|
||||
* Model and OS of the device(s): MacBook Pro (14inch, 2021), macOS Ventura 13.4
|
||||
* Browser: Chrome 113.0.5672.126
|
||||
* Server URL: misskey.io
|
||||
* Misskey: 13.x.x
|
||||
value: |
|
||||
* Model and OS of the device(s):
|
||||
* Browser:
|
||||
* Server URL:
|
||||
* Misskey:
|
||||
render: markdown
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 🛰 Backend Environment (for server admin)
|
||||
description: |
|
||||
Tell us where on the platform it happens
|
||||
DO NOT WRITE "latest". Please provide the specific version.
|
||||
If you are using a managed service, put that after the version.
|
||||
|
||||
Examples:
|
||||
* Installation Method or Hosting Service: docker compose, k8s/docker, systemd, "Misskey install shell script", development environment
|
||||
* Misskey: 13.x.x
|
||||
* Node: 20.x.x
|
||||
* PostgreSQL: 15.x.x
|
||||
* Redis: 7.x.x
|
||||
* OS and Architecture: Ubuntu 22.04.2 LTS aarch64
|
||||
value: |
|
||||
* Installation Method or Hosting Service:
|
||||
* Misskey:
|
||||
* Node:
|
||||
* PostgreSQL:
|
||||
* Redis:
|
||||
* OS and Architecture:
|
||||
render: markdown
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Do you want to address this bug yourself?
|
||||
options:
|
||||
- label: Yes, I will patch the bug myself and send a pull request
|
12
.github/ISSUE_TEMPLATE/02_feature-request.md
vendored
Normal file
12
.github/ISSUE_TEMPLATE/02_feature-request.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
name: ✨ Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ✨Feature
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- Tell us what the suggestion is -->
|
22
.github/ISSUE_TEMPLATE/02_feature-request.yml
vendored
22
.github/ISSUE_TEMPLATE/02_feature-request.yml
vendored
@@ -1,22 +0,0 @@
|
||||
name: ✨ Feature Request
|
||||
description: Suggest an idea for this project
|
||||
labels: ["✨Feature"]
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Summary
|
||||
description: Tell us what the suggestion is
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Purpose
|
||||
description: Describe the specific problem or need you think this feature will solve, and who it will help.
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Do you want to implement this feature yourself?
|
||||
options:
|
||||
- label: Yes, I will implement this by myself and send a pull request
|
3
.github/ISSUE_TEMPLATE/config.yml
vendored
3
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,4 +1,7 @@
|
||||
contact_links:
|
||||
- name: 👪 Misskey Forum
|
||||
url: https://forum.misskey.io/
|
||||
about: Ask questions and share knowledge
|
||||
- name: 💬 Misskey official Discord
|
||||
url: https://discord.gg/Wp8gVStHW3
|
||||
about: Chat freely about Misskey
|
||||
|
12
.github/PULL_REQUEST_TEMPLATE/01_bug.md
vendored
12
.github/PULL_REQUEST_TEMPLATE/01_bug.md
vendored
@@ -4,20 +4,14 @@ Thank you for your PR! Before creating a PR, please check the contribution guide
|
||||
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
## What
|
||||
# What
|
||||
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||
<!-- What did you do with this PR? How will it change things? -->
|
||||
|
||||
## Why
|
||||
# Why
|
||||
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||
|
||||
## Additional info (optional)
|
||||
# Additional info (optional)
|
||||
<!-- テスト観点など -->
|
||||
<!-- Test perspective, etc -->
|
||||
|
||||
## Checklist
|
||||
- [ ] Read the [contribution guide](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)
|
||||
- [ ] Test working in a local environment
|
||||
- [ ] (If needed) Update CHANGELOG.md
|
||||
- [ ] (If possible) Add tests
|
||||
|
12
.github/PULL_REQUEST_TEMPLATE/02_enhance.md
vendored
12
.github/PULL_REQUEST_TEMPLATE/02_enhance.md
vendored
@@ -4,20 +4,14 @@ Thank you for your PR! Before creating a PR, please check the contribution guide
|
||||
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
## What
|
||||
# What
|
||||
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||
<!-- What did you do with this PR? How will it change things? -->
|
||||
|
||||
## Why
|
||||
# Why
|
||||
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||
|
||||
## Additional info (optional)
|
||||
# Additional info (optional)
|
||||
<!-- テスト観点など -->
|
||||
<!-- Test perspective, etc -->
|
||||
|
||||
## Checklist
|
||||
- [ ] Read the [contribution guide](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)
|
||||
- [ ] Test working in a local environment
|
||||
- [ ] (If needed) Update CHANGELOG.md
|
||||
- [ ] (If possible) Add tests
|
||||
|
14
.github/PULL_REQUEST_TEMPLATE/03_release.md
vendored
14
.github/PULL_REQUEST_TEMPLATE/03_release.md
vendored
@@ -1,20 +1,10 @@
|
||||
## Summary
|
||||
# Summary
|
||||
This is a release PR.
|
||||
|
||||
For more information on the release instructions, please see:
|
||||
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md#release
|
||||
|
||||
## For reviewers
|
||||
- CHANGELOGに抜け漏れは無いか
|
||||
- バージョンの上げ方は適切か
|
||||
- 他にこのリリースに含めなければならない変更は無いか
|
||||
- 全体的な変更内容を俯瞰し問題は無いか
|
||||
- レビューされていないコミットがある場合は、それが問題ないか
|
||||
- 最終的な動作確認を行い問題は無いか
|
||||
|
||||
などを確認し、リリースする準備が整っていると思われる場合は approve してください。
|
||||
|
||||
## Checklist
|
||||
# Checklist
|
||||
- [ ] package.jsonのバージョンが正しく更新されている
|
||||
- [ ] CHANGELOGが過不足無く更新されている
|
||||
- [ ] CIが全て通っている
|
||||
|
50
.github/dependabot.yml
vendored
50
.github/dependabot.yml
vendored
@@ -9,40 +9,24 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 100
|
||||
|
||||
# Add only the root, not each workspace item
|
||||
# https://github.com/dependabot/dependabot-core/issues/4993#issuecomment-1289133027
|
||||
open-pull-requests-limit: 0
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
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:
|
||||
aws-sdk:
|
||||
patterns:
|
||||
- "@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/*"
|
||||
open-pull-requests-limit: 0
|
||||
- package-ecosystem: npm
|
||||
directory: "/packages/backend"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 0
|
||||
- package-ecosystem: npm
|
||||
directory: "/packages/frontend"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 0
|
||||
- package-ecosystem: npm
|
||||
directory: "/packages/sw"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 0
|
||||
|
40
.github/labeler.yml
vendored
40
.github/labeler.yml
vendored
@@ -1,34 +1,12 @@
|
||||
'packages/backend':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/backend/**/*']
|
||||
'⚙️Server':
|
||||
- packages/backend/**/*
|
||||
|
||||
'packages/backend:test':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/backend/test/**/*']
|
||||
'🖥️Client':
|
||||
- packages/frontend/**/*
|
||||
|
||||
'packages/frontend':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/frontend/**/*']
|
||||
'🧪Test':
|
||||
- cypress/**/*
|
||||
- packages/backend/test/**/*
|
||||
|
||||
'packages/frontend:test':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['cypress/**/*']
|
||||
|
||||
'packages/sw':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/sw/**/*']
|
||||
|
||||
'packages/misskey-js':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/misskey-js/**/*']
|
||||
|
||||
'packages/misskey-js:test':
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: ['packages/misskey-js/test/**/*', 'packages/misskey-js/test-d/**/*']
|
||||
'‼️ wrong locales':
|
||||
- any: ['locales/*.yml', '!locales/ja-JP.yml']
|
||||
|
2
.github/misskey/test.yml
vendored
2
.github/misskey/test.yml
vendored
@@ -12,4 +12,4 @@ db:
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 56312
|
||||
id: aidx
|
||||
id: aid
|
||||
|
24
.github/pull_request_template.md
vendored
24
.github/pull_request_template.md
vendored
@@ -1,24 +0,0 @@
|
||||
<!-- ℹ お読みください / README
|
||||
PRありがとうございます! PRを作成する前に、コントリビューションガイドをご確認ください:
|
||||
Thank you for your PR! Before creating a PR, please check the contribution guide:
|
||||
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
## What
|
||||
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||
<!-- What did you do with this PR? How will it change things? -->
|
||||
|
||||
## Why
|
||||
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||
|
||||
## Additional info (optional)
|
||||
<!-- テスト観点など -->
|
||||
<!-- Test perspective, etc -->
|
||||
|
||||
## Checklist
|
||||
- [ ] Read the [contribution guide](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)
|
||||
- [ ] Test working in a local environment
|
||||
- [ ] (If needed) Add story of storybook
|
||||
- [ ] (If needed) Update CHANGELOG.md
|
||||
- [ ] (If possible) Add tests
|
42
.github/workflows/api-misskey-js.yml
vendored
42
.github/workflows/api-misskey-js.yml
vendored
@@ -1,42 +0,0 @@
|
||||
name: API report (misskey.js)
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- packages/misskey-js/**
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/misskey-js/**
|
||||
|
||||
jobs:
|
||||
report:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- run: corepack enable
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4.0.1
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm i --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter misskey-js build
|
||||
|
||||
- name: Check files
|
||||
run: ls packages/misskey-js/built
|
||||
|
||||
- name: API report
|
||||
run: pnpm --filter misskey-js api-prod
|
||||
|
||||
- name: Show report
|
||||
if: always()
|
||||
run: cat packages/misskey-js/temp/misskey-js.api.md
|
43
.github/workflows/changelog-check.yml
vendored
43
.github/workflows/changelog-check.yml
vendored
@@ -1,43 +0,0 @@
|
||||
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.1
|
||||
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
|
127
.github/workflows/check-misskey-js-autogen.yml
vendored
127
.github/workflows/check-misskey-js-autogen.yml
vendored
@@ -1,127 +0,0 @@
|
||||
name: Check Misskey JS autogen
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
|
||||
jobs:
|
||||
check-misskey-js-autogen:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
env:
|
||||
api_json_names: "api-base.json api-head.json"
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: setup pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
|
||||
- name: setup node
|
||||
id: setup-node
|
||||
uses: actions/setup-node@v4
|
||||
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-misskey .+
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
wait-interval: 30
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@v7
|
||||
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 Misskey")).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: build autogen
|
||||
run: |-
|
||||
for name in $(echo $api_json_names)
|
||||
do
|
||||
checksum=$(mktemp)
|
||||
mv $name packages/misskey-js/generator/api.json
|
||||
|
||||
cd packages/misskey-js/generator
|
||||
pnpm run generate
|
||||
find built -type f -exec sh -c 'echo $(sed -E "s/^\s+\*\s+generatedAt:.+$//" {} | sha256sum | cut -d" " -f 1) {}' \; > $checksum
|
||||
cd ../../..
|
||||
cp $checksum ${name}_checksum
|
||||
done
|
||||
|
||||
- name: check update for type definitions
|
||||
run: diff $(echo -n ${api_json_names} | awk -v RS=" " '{ printf "%s_checksum ", $0 }')
|
||||
|
||||
- name: send message
|
||||
if: failure()
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
comment_tag: check-misskey-js-autogen
|
||||
message: |-
|
||||
Thank you for sending us a great Pull Request! 👍
|
||||
Please regenerate misskey-js type definitions! 🙏
|
||||
|
||||
example:
|
||||
```sh
|
||||
pnpm run build-misskey-js-with-types
|
||||
```
|
||||
|
||||
- name: send message
|
||||
if: success()
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
comment_tag: check-misskey-js-autogen
|
||||
mode: delete
|
||||
message: "Thank you!"
|
2
.github/workflows/check_copyright_year.yml
vendored
2
.github/workflows/check_copyright_year.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
check_copyright_year:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.2.0
|
||||
- run: |
|
||||
if [ "$(grep Copyright COPYING | sed -e 's/.*2014-\([0-9]*\) .*/\1/g')" -ne "$(date +%Y)" ]; then
|
||||
echo "Please change copyright year!"
|
||||
|
10
.github/workflows/docker-develop.yml
vendored
10
.github/workflows/docker-develop.yml
vendored
@@ -13,24 +13,24 @@ jobs:
|
||||
if: github.repository == 'misskey-dev/misskey'
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4.1.1
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3.0.0
|
||||
uses: docker/setup-buildx-action@v2.3.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: misskey/misskey
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: .
|
||||
|
10
.github/workflows/docker.yml
vendored
10
.github/workflows/docker.yml
vendored
@@ -12,15 +12,15 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4.1.1
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3.0.0
|
||||
uses: docker/setup-buildx-action@v2.3.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: misskey/misskey
|
||||
tags: |
|
||||
@@ -31,12 +31,12 @@ jobs:
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
context: .
|
||||
|
4
.github/workflows/dockle.yml
vendored
4
.github/workflows/dockle.yml
vendored
@@ -14,13 +14,13 @@ jobs:
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.2.0
|
||||
- run: |
|
||||
curl -L -o dockle.deb "https://github.com/goodwithtech/dockle/releases/download/v0.4.10/dockle_0.4.10_Linux-64bit.deb"
|
||||
sudo dpkg -i dockle.deb
|
||||
- run: |
|
||||
cp .config/docker_example.env .config/docker.env
|
||||
cp ./docker-compose_example.yml ./docker-compose.yml
|
||||
cp ./docker-compose.yml.example ./docker-compose.yml
|
||||
- run: |
|
||||
docker compose up -d web
|
||||
docker tag "$(docker compose images web | awk 'OFS=":" {print $4}' | tail -n +2)" misskey-web:latest
|
||||
|
73
.github/workflows/get-api-diff.yml
vendored
73
.github/workflows/get-api-diff.yml
vendored
@@ -1,73 +0,0 @@
|
||||
# this name is used in report-api-diff.yml so be careful when change name
|
||||
name: Get api.json from Misskey
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
- .github/workflows/get-api-diff.yml
|
||||
|
||||
jobs:
|
||||
get-from-misskey:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
api-json-name: [api-base.json, api-head.json]
|
||||
include:
|
||||
- api-json-name: api-base.json
|
||||
ref: ${{ github.base_ref }}
|
||||
- api-json-name: api-head.json
|
||||
ref: refs/pull/${{ github.event.number }}/merge
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
ref: ${{ matrix.ref }}
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
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 .config/example.yml .config/default.yml
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
- name: Generate API JSON
|
||||
run: pnpm --filter backend generate-api-json
|
||||
- name: Copy API.json
|
||||
run: cp packages/backend/built/api.json ${{ matrix.api-json-name }}
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: api-artifact-${{ matrix.api-json-name }}
|
||||
path: ${{ matrix.api-json-name }}
|
||||
|
||||
save-pr-number:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Save PR number
|
||||
env:
|
||||
PR_NUMBER: ${{ github.event.number }}
|
||||
run: |
|
||||
echo "$PR_NUMBER" > ./pr_number
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: api-artifact-pr-number
|
||||
path: pr_number
|
2
.github/workflows/labeler.yml
vendored
2
.github/workflows/labeler.yml
vendored
@@ -11,6 +11,6 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v5
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
|
36
.github/workflows/lint.yml
vendored
36
.github/workflows/lint.yml
vendored
@@ -5,35 +5,23 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
- packages/frontend/**
|
||||
- packages/sw/**
|
||||
- packages/misskey-js/**
|
||||
- packages/shared/.eslintrc.js
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/backend/**
|
||||
- packages/frontend/**
|
||||
- packages/sw/**
|
||||
- packages/misskey-js/**
|
||||
- packages/shared/.eslintrc.js
|
||||
|
||||
jobs:
|
||||
pnpm_install:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
version: 7
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v3.6.0
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
node-version: 18.x
|
||||
cache: 'pnpm'
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
@@ -48,9 +36,8 @@ jobs:
|
||||
- backend
|
||||
- frontend
|
||||
- sw
|
||||
- misskey-js
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
@@ -58,9 +45,9 @@ jobs:
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v3.6.0
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
node-version: 18.x
|
||||
cache: 'pnpm'
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
@@ -74,9 +61,8 @@ jobs:
|
||||
matrix:
|
||||
workspace:
|
||||
- backend
|
||||
- misskey-js
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
@@ -84,12 +70,10 @@ jobs:
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
- uses: actions/setup-node@v4.0.1
|
||||
- uses: actions/setup-node@v3.6.0
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
node-version: 18.x
|
||||
cache: 'pnpm'
|
||||
- run: corepack enable
|
||||
- run: pnpm i --frozen-lockfile
|
||||
- run: pnpm --filter misskey-js run build
|
||||
if: ${{ matrix.workspace == 'backend' }}
|
||||
- run: pnpm --filter ${{ matrix.workspace }} run typecheck
|
||||
|
4
.github/workflows/ok-to-test.yml
vendored
4
.github/workflows/ok-to-test.yml
vendored
@@ -17,13 +17,13 @@ jobs:
|
||||
# See app.yml for an example app manifest
|
||||
- name: Generate token
|
||||
id: generate_token
|
||||
uses: tibdex/github-app-token@v2
|
||||
uses: tibdex/github-app-token@v1
|
||||
with:
|
||||
app_id: ${{ secrets.DEPLOYBOT_APP_ID }}
|
||||
private_key: ${{ secrets.DEPLOYBOT_PRIVATE_KEY }}
|
||||
|
||||
- name: Slash Command Dispatch
|
||||
uses: peter-evans/slash-command-dispatch@v3
|
||||
uses: peter-evans/slash-command-dispatch@v1
|
||||
env:
|
||||
TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||
with:
|
||||
|
8
.github/workflows/pr-preview-deploy.yml
vendored
8
.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@v6.3.3
|
||||
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@v6.3.3
|
||||
env:
|
||||
check_id: ${{ steps.check-id.outputs.result }}
|
||||
details_url: ${{ github.server_url }}/${{ github.repository }}/runs/${{ github.run_id }}
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
|
||||
# Check out merge commit
|
||||
- name: Fork based /deploy checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
|
||||
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
timeout: 15m
|
||||
|
||||
# Update check run called "integration-fork"
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v6.3.3
|
||||
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@v6.3.3
|
||||
id: check-conclusion
|
||||
env:
|
||||
number: ${{ github.event.number }}
|
||||
|
97
.github/workflows/report-api-diff.yml
vendored
97
.github/workflows/report-api-diff.yml
vendored
@@ -1,97 +0,0 @@
|
||||
name: Report API Diff
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
types: [completed]
|
||||
workflows:
|
||||
- Get api.json from Misskey # get-api-diff.yml
|
||||
|
||||
jobs:
|
||||
compare-diff:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
# api-artifact
|
||||
steps:
|
||||
- name: Download artifact
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: context.payload.workflow_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: Extract all artifacts
|
||||
run: |
|
||||
find . -mindepth 1 -maxdepth 1 -type f -name '*.zip' -exec unzip {} -d artifacts ';'
|
||||
ls -la
|
||||
- name: Load PR Number
|
||||
id: load-pr-num
|
||||
run: echo "pr-number=$(cat artifacts/pr_number)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Output base
|
||||
run: cat ./artifacts/api-base.json
|
||||
- name: Output head
|
||||
run: cat ./artifacts/api-head.json
|
||||
- name: Arrange json files
|
||||
run: |
|
||||
jq '.' ./artifacts/api-base.json > ./api-base.json
|
||||
jq '.' ./artifacts/api-head.json > ./api-head.json
|
||||
- name: Get diff of 2 files
|
||||
run: diff -u --label=base --label=head ./api-base.json ./api-head.json | cat > api.json.diff
|
||||
- name: Get full diff
|
||||
run: diff --label=base --label=head --new-line-format='+%L' --old-line-format='-%L' --unchanged-line-format=' %L' ./api-base.json ./api-head.json | cat > api-full.json.diff
|
||||
- name: Echo full diff
|
||||
run: cat ./api-full.json.diff
|
||||
- name: Upload full diff to Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: api-artifact
|
||||
path: |
|
||||
api-full.json.diff
|
||||
api-base.json
|
||||
api-head.json
|
||||
- id: out-diff
|
||||
name: Build diff Comment
|
||||
run: |
|
||||
cat <<- EOF > ./output.md
|
||||
このPRによるapi.jsonの差分
|
||||
<details>
|
||||
<summary>差分はこちら</summary>
|
||||
|
||||
\`\`\`diff
|
||||
$(cat ./api.json.diff)
|
||||
\`\`\`
|
||||
</details>
|
||||
|
||||
[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})
|
||||
EOF
|
||||
- uses: thollander/actions-comment-pull-request@v2
|
||||
with:
|
||||
pr_number: ${{ steps.load-pr-num.outputs.pr-number }}
|
||||
comment_tag: show_diff
|
||||
filePath: ./output.md
|
||||
- name: Tell error to PR
|
||||
uses: thollander/actions-comment-pull-request@v2
|
||||
if: failure() && steps.load-pr-num.outputs.pr-number
|
||||
with:
|
||||
pr_number: ${{ steps.load-pr-num.outputs.pr-number }}
|
||||
comment_tag: show_diff_error
|
||||
message: |
|
||||
api.jsonの差分作成中にエラーが発生しました。詳細は[Workflowのログ](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})を確認してください。
|
117
.github/workflows/test-backend.yml
vendored
117
.github/workflows/test-backend.yml
vendored
@@ -1,117 +0,0 @@
|
||||
name: Test (backend)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/backend/**
|
||||
# for permissions
|
||||
- packages/misskey-js/**
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/backend/**
|
||||
# for permissions
|
||||
- packages/misskey-js/**
|
||||
|
||||
jobs:
|
||||
unit:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-misskey
|
||||
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@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
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/misskey/test.yml .config
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
- name: Test
|
||||
run: pnpm --filter backend test-and-coverage
|
||||
- name: Upload to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
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-misskey
|
||||
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@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
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/misskey/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@v3
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/backend/coverage/coverage-final.json
|
56
.github/workflows/test-misskey-js.yml
vendored
56
.github/workflows/test-misskey-js.yml
vendored
@@ -1,56 +0,0 @@
|
||||
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
||||
|
||||
name: Test (misskey.js)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/misskey-js/**
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
paths:
|
||||
- packages/misskey-js/**
|
||||
|
||||
jobs:
|
||||
test:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- run: corepack enable
|
||||
|
||||
- name: Setup Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm i --frozen-lockfile
|
||||
|
||||
- name: Check pnpm-lock.yaml
|
||||
run: git diff --exit-code pnpm-lock.yaml
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter misskey-js build
|
||||
|
||||
- name: Test
|
||||
run: pnpm --filter misskey-js test
|
||||
env:
|
||||
CI: true
|
||||
|
||||
- name: Upload Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/misskey-js/coverage/coverage-final.json
|
42
.github/workflows/test-production.yml
vendored
42
.github/workflows/test-production.yml
vendored
@@ -1,42 +0,0 @@
|
||||
name: Test (production install and build)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
NODE_ENV: production
|
||||
|
||||
jobs:
|
||||
production:
|
||||
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@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
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/misskey/test.yml .config/default.yml
|
||||
- name: Build
|
||||
run: pnpm build
|
@@ -1,44 +1,44 @@
|
||||
name: Test (frontend)
|
||||
name: Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- packages/frontend/**
|
||||
# for permissions
|
||||
- packages/misskey-js/**
|
||||
# for e2e
|
||||
- packages/backend/**
|
||||
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/frontend/**
|
||||
# for permissions
|
||||
- packages/misskey-js/**
|
||||
# for e2e
|
||||
- packages/backend/**
|
||||
|
||||
jobs:
|
||||
vitest:
|
||||
jest:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
node-version: [18.x]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:13
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-misskey
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- 56312:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
submodules: true
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
version: 7
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v3.6.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@@ -51,12 +51,12 @@ jobs:
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
- name: Test
|
||||
run: pnpm --filter frontend test-and-coverage
|
||||
run: pnpm jest-and-coverage
|
||||
- name: Upload Coverage
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./packages/frontend/coverage/coverage-final.json
|
||||
files: ./packages/backend/coverage/coverage-final.json
|
||||
|
||||
e2e:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -64,24 +64,24 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [20.10.0]
|
||||
node-version: [18.x]
|
||||
browser: [chrome]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15
|
||||
image: postgres:13
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-misskey
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
redis:
|
||||
image: redis:7
|
||||
image: redis:6
|
||||
ports:
|
||||
- 56312:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
submodules: true
|
||||
# https://github.com/cypress-io/cypress-docker-images/issues/150
|
||||
@@ -96,7 +96,7 @@ jobs:
|
||||
version: 7
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
uses: actions/setup-node@v3.6.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'pnpm'
|
||||
@@ -114,19 +114,19 @@ jobs:
|
||||
- name: Cypress install
|
||||
run: pnpm exec cypress install
|
||||
- name: Cypress run
|
||||
uses: cypress-io/github-action@v6
|
||||
uses: cypress-io/github-action@v5
|
||||
with:
|
||||
install: false
|
||||
start: pnpm start:test
|
||||
wait-on: 'http://localhost:61812'
|
||||
headed: true
|
||||
headless: false
|
||||
browser: ${{ matrix.browser }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: failure()
|
||||
with:
|
||||
name: ${{ matrix.browser }}-cypress-screenshots
|
||||
path: cypress/screenshots
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: ${{ matrix.browser }}-cypress-videos
|
47
.github/workflows/validate-api-json.yml
vendored
47
.github/workflows/validate-api-json.yml
vendored
@@ -1,47 +0,0 @@
|
||||
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@v2
|
||||
with:
|
||||
version: 8
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.1
|
||||
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
|
12
.gitignore
vendored
12
.gitignore
vendored
@@ -20,9 +20,6 @@ packages/frontend/.yarn/cache
|
||||
packages/backend/.yarn/cache
|
||||
packages/sw/.yarn/cache
|
||||
|
||||
# pnpm
|
||||
.pnpm-store
|
||||
|
||||
# Cypress
|
||||
cypress/screenshots
|
||||
cypress/videos
|
||||
@@ -41,11 +38,10 @@ docker-compose.yml
|
||||
# misskey
|
||||
/build
|
||||
built
|
||||
built-test
|
||||
/data
|
||||
/.cache-loader
|
||||
/db
|
||||
/meili_data
|
||||
/elasticsearch
|
||||
npm-debug.log
|
||||
*.pem
|
||||
run.bat
|
||||
@@ -56,9 +52,6 @@ api-docs.json
|
||||
.DS_Store
|
||||
/files
|
||||
ormconfig.json
|
||||
temp
|
||||
/packages/frontend/src/**/*.stories.ts
|
||||
tsdoc-metadata.json
|
||||
|
||||
# blender backups
|
||||
*.blend1
|
||||
@@ -66,6 +59,3 @@ tsdoc-metadata.json
|
||||
*.blend3
|
||||
*.blend4
|
||||
*.blend5
|
||||
|
||||
# VSCode addon
|
||||
.favorites.json
|
||||
|
@@ -1 +1 @@
|
||||
20.10.0
|
||||
v18.13.0
|
||||
|
6
.vscode/extensions.json
vendored
6
.vscode/extensions.json
vendored
@@ -1,11 +1,9 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"editorconfig.editorconfig",
|
||||
"eg2.vscode-npm-script",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"Vue.volar",
|
||||
"Vue.vscode-typescript-vue-plugin",
|
||||
"Orta.vscode-jest",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"mrmlnc.vscode-json5"
|
||||
"Vue.vscode-typescript-vue-plugin"
|
||||
]
|
||||
}
|
||||
|
22
.vscode/settings.json
vendored
22
.vscode/settings.json
vendored
@@ -1,15 +1,9 @@
|
||||
{
|
||||
"search.exclude": {
|
||||
"**/node_modules": true
|
||||
},
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"files.associations": {
|
||||
"*.test.ts": "typescript"
|
||||
},
|
||||
"jest.jestCommandLine": "pnpm run jest",
|
||||
"jest.autoRun": "off",
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll": "explicit"
|
||||
},
|
||||
"editor.formatOnSave": false
|
||||
}
|
||||
"search.exclude": {
|
||||
"**/node_modules": true
|
||||
},
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"files.associations": {
|
||||
"*.test.ts": "typescript"
|
||||
}
|
||||
}
|
1028
CHANGELOG.md
1028
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
@@ -2,131 +2,45 @@
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
## Our Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
<syuilotan@yahoo.co.jp>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at syuilotan@yahoo.co.jp. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||
[https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
|
116
CONTRIBUTING.md
116
CONTRIBUTING.md
@@ -15,7 +15,7 @@ Before creating an issue, please check the following:
|
||||
- To avoid duplication, please search for similar issues before creating a new issue.
|
||||
- Do not use Issues to ask questions or troubleshooting.
|
||||
- Issues should only be used to feature requests, suggestions, and bug tracking.
|
||||
- Please ask questions or troubleshooting in [GitHub Discussions](https://github.com/misskey-dev/misskey/discussions) or [Discord](https://discord.gg/Wp8gVStHW3).
|
||||
- Please ask questions or troubleshooting in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3).
|
||||
|
||||
> **Warning**
|
||||
> Do not close issues that are about to be resolved. It should remain open until a commit that actually resolves it is merged.
|
||||
@@ -106,7 +106,7 @@ If your language is not listed in Crowdin, please open an issue.
|
||||

|
||||
|
||||
## Development
|
||||
During development, it is useful to use the
|
||||
During development, it is useful to use the
|
||||
|
||||
```
|
||||
pnpm dev
|
||||
@@ -117,10 +117,6 @@ command.
|
||||
- Server-side source files and automatically builds them if they are modified. Automatically start the server process(es).
|
||||
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
|
||||
- Service Worker is watched by esbuild.
|
||||
- The front end can be viewed by accessing `http://localhost:5173`.
|
||||
- The backend listens on the port configured with `port` in .config/default.yml.
|
||||
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.
|
||||
|
||||
### Dev Container
|
||||
Instead of running `pnpm` locally, you can use Dev Container to set up your development environment.
|
||||
@@ -154,7 +150,7 @@ Prepare DB/Redis for testing.
|
||||
```
|
||||
docker compose -f packages/backend/test/docker-compose.yml up
|
||||
```
|
||||
Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
|
||||
Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
|
||||
|
||||
Run all test.
|
||||
```
|
||||
@@ -169,11 +165,6 @@ pnpm jest -- foo.ts
|
||||
### e2e tests
|
||||
TODO
|
||||
|
||||
## Environment Variable
|
||||
|
||||
- `MISSKEY_CONFIG_YML`: Specify the file path of config.yml instead of default.yml (e.g. `2nd.yml`).
|
||||
- `MISSKEY_WEBFINGER_USE_HTTP`: If it's set true, WebFinger requests will be http instead of https, useful for testing federation between servers in localhost. NEVER USE IN PRODUCTION.
|
||||
|
||||
## Continuous integration
|
||||
Misskey uses GitHub Actions for executing automated tests.
|
||||
Configuration files are located in [`/.github/workflows`](/.github/workflows).
|
||||
@@ -212,105 +203,7 @@ niraxは、Misskeyで使用しているオリジナルのフロントエンド
|
||||
vue-routerとの最大の違いは、niraxは複数のルーターが存在することを許可している点です。
|
||||
これにより、アプリ内ウィンドウでブラウザとは個別にルーティングすることなどが可能になります。
|
||||
|
||||
## Storybook
|
||||
|
||||
Misskey uses [Storybook](https://storybook.js.org/) for UI development.
|
||||
|
||||
### Setup & Run
|
||||
|
||||
#### Setup
|
||||
|
||||
```bash
|
||||
pnpm --filter misskey-js build
|
||||
```
|
||||
|
||||
#### Run
|
||||
|
||||
```bash
|
||||
pnpm --filter frontend storybook-dev
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
When you create a new component (in this example, `MyComponent.vue`), the story file (`MyComponent.stories.ts`) will be automatically generated by the `.storybook/generate.js` script.
|
||||
You can override the default story by creating a impl story file (`MyComponent.stories.impl.ts`).
|
||||
|
||||
```ts
|
||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||
import { StoryObj } from '@storybook/vue3';
|
||||
import MyComponent from './MyComponent.vue';
|
||||
export const Default = {
|
||||
render(args) {
|
||||
return {
|
||||
components: {
|
||||
MyComponent,
|
||||
},
|
||||
setup() {
|
||||
return {
|
||||
args,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
props() {
|
||||
return {
|
||||
...this.args,
|
||||
};
|
||||
},
|
||||
},
|
||||
template: '<MyComponent v-bind="props" />',
|
||||
};
|
||||
},
|
||||
args: {
|
||||
foo: 'bar',
|
||||
},
|
||||
parameters: {
|
||||
layout: 'centered',
|
||||
},
|
||||
} satisfies StoryObj<typeof MkAvatar>;
|
||||
```
|
||||
|
||||
If you want to opt-out from the automatic generation, create a `MyComponent.stories.impl.ts` file and add the following line to the file.
|
||||
|
||||
```ts
|
||||
import MyComponent from './MyComponent.vue';
|
||||
void MyComponent;
|
||||
```
|
||||
|
||||
You can override the component meta by creating a meta story file (`MyComponent.stories.meta.ts`).
|
||||
|
||||
```ts
|
||||
export const argTypes = {
|
||||
scale: {
|
||||
control: {
|
||||
type: 'range',
|
||||
min: 1,
|
||||
max: 4,
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
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';
|
||||
export const handlers = [
|
||||
rest.post('/api/notes/timeline', (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.json([]),
|
||||
);
|
||||
}),
|
||||
];
|
||||
```
|
||||
|
||||
Don't forget to re-run the `.storybook/generate.js` script after adding, editing, or removing the above files.
|
||||
|
||||
## Notes
|
||||
|
||||
### Misskeyのドメイン固有の概念は`Mi`をprefixする
|
||||
例えばGoogleが自社サービスをMap、Earth、DriveではなくGoogle Map、Google Earth、Google Driveのように命名するのと同じ
|
||||
コード上でMisskeyのドメイン固有の概念には`Mi`をprefixすることで、他のドメインの同様の概念と区別できるほか、名前の衝突を防ぐ。
|
||||
ただし、文脈上Misskeyのものを指すことが明らかであり、名前の衝突の恐れがない場合は、一時的なローカル変数に限って`Mi`を省略してもよい。
|
||||
|
||||
### How to resolve conflictions occurred at pnpm-lock.yaml?
|
||||
|
||||
Just execute `pnpm` to fix it.
|
||||
@@ -440,6 +333,3 @@ marginはそのコンポーネントを使う側が設定する
|
||||
## その他
|
||||
### HTMLのクラス名で follow という単語は使わない
|
||||
広告ブロッカーで誤ってブロックされる
|
||||
|
||||
### indexというファイル名を使うな
|
||||
ESMではディレクトリインポートは廃止されているのと、ディレクトリインポートせずともファイル名が index だと何故か一部のライブラリ?でディレクトリインポートだと見做されてエラーになる
|
||||
|
2
COPYING
2
COPYING
@@ -1,5 +1,5 @@
|
||||
Unless otherwise stated this repository is
|
||||
Copyright © 2014-2024 syuilo and contributors
|
||||
Copyright © 2014-2023 syuilo and contributers
|
||||
|
||||
And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE.
|
||||
|
||||
|
66
Dockerfile
66
Dockerfile
@@ -1,10 +1,8 @@
|
||||
# syntax = docker/dockerfile:1.4
|
||||
|
||||
ARG NODE_VERSION=20.10.0-bullseye
|
||||
ARG NODE_VERSION=18.13.0-bullseye
|
||||
|
||||
# build assets & compile TypeScript
|
||||
|
||||
FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder
|
||||
FROM node:${NODE_VERSION} AS builder
|
||||
|
||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||
@@ -23,9 +21,6 @@ COPY --link ["scripts", "./scripts"]
|
||||
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/misskey-js/package.json", "./packages/misskey-js/"]
|
||||
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
||||
COPY --link ["packages/misskey-bubble-game/package.json", "./packages/misskey-bubble-game/"]
|
||||
|
||||
RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \
|
||||
pnpm i --frozen-lockfile --aggregate-output
|
||||
@@ -38,62 +33,35 @@ RUN git submodule update --init
|
||||
RUN pnpm build
|
||||
RUN rm -rf .git/
|
||||
|
||||
# build native dependencies for target platform
|
||||
|
||||
FROM --platform=$TARGETPLATFORM node:${NODE_VERSION} AS target-builder
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -yqq --no-install-recommends \
|
||||
build-essential
|
||||
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /misskey
|
||||
|
||||
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/misskey-js/package.json", "./packages/misskey-js/"]
|
||||
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
||||
COPY --link ["packages/misskey-bubble-game/package.json", "./packages/misskey-bubble-game/"]
|
||||
|
||||
RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked \
|
||||
pnpm i --frozen-lockfile --aggregate-output
|
||||
|
||||
FROM --platform=$TARGETPLATFORM node:${NODE_VERSION}-slim AS runner
|
||||
FROM node:${NODE_VERSION}-slim AS runner
|
||||
|
||||
ARG UID="991"
|
||||
ARG GID="991"
|
||||
|
||||
RUN apt-get update \
|
||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean \
|
||||
; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ffmpeg tini curl libjemalloc-dev libjemalloc2 \
|
||||
&& ln -s /usr/lib/$(uname -m)-linux-gnu/libjemalloc.so.2 /usr/local/lib/libjemalloc.so \
|
||||
ffmpeg tini curl \
|
||||
&& corepack enable \
|
||||
&& groupadd -g "${GID}" misskey \
|
||||
&& useradd -l -u "${UID}" -g "${GID}" -m -d /misskey misskey \
|
||||
&& find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /u+s -ignore_readdir_race -exec chmod u-s {} \; \
|
||||
&& find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /g+s -ignore_readdir_race -exec chmod g-s {} \; \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists
|
||||
&& find / -type f -perm /u+s -ignore_readdir_race -exec chmod u-s {} \; \
|
||||
&& find / -type f -perm /g+s -ignore_readdir_race -exec chmod g-s {} \;
|
||||
|
||||
USER misskey
|
||||
WORKDIR /misskey
|
||||
|
||||
COPY --chown=misskey:misskey --from=target-builder /misskey/node_modules ./node_modules
|
||||
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/backend/node_modules ./packages/backend/node_modules
|
||||
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-js/node_modules ./packages/misskey-js/node_modules
|
||||
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-reversi/node_modules ./packages/misskey-reversi/node_modules
|
||||
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-bubble-game/node_modules ./packages/misskey-bubble-game/node_modules
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/built ./built
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-js/built ./packages/misskey-js/built
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-reversi/built ./packages/misskey-reversi/built
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-bubble-game/built ./packages/misskey-bubble-game/built
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/backend/built ./packages/backend/built
|
||||
COPY --chown=misskey:misskey --from=native-builder /misskey/fluent-emojis /misskey/fluent-emojis
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/node_modules ./node_modules
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/built ./built
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/packages/backend/node_modules ./packages/backend/node_modules
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/packages/backend/built ./packages/backend/built
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/packages/frontend/node_modules ./packages/frontend/node_modules
|
||||
COPY --chown=misskey:misskey --from=builder /misskey/fluent-emojis /misskey/fluent-emojis
|
||||
COPY --chown=misskey:misskey . ./
|
||||
|
||||
ENV LD_PRELOAD=/usr/local/lib/libjemalloc.so
|
||||
ENV NODE_ENV=production
|
||||
HEALTHCHECK --interval=5s --retries=20 CMD ["/bin/bash", "/misskey/healthcheck.sh"]
|
||||
ENTRYPOINT ["/usr/bin/tini", "--"]
|
||||
|
31
README.md
31
README.md
@@ -2,15 +2,15 @@
|
||||
<a href="https://misskey-hub.net">
|
||||
<img src="./assets/title_float.svg" alt="Misskey logo" style="border-radius:50%" width="400"/>
|
||||
</a>
|
||||
|
||||
|
||||
**🌎 **[Misskey](https://misskey-hub.net/)** is an open source, decentralized social media platform that's free forever! 🚀**
|
||||
|
||||
|
||||
---
|
||||
|
||||
<a href="https://misskey-hub.net/servers/">
|
||||
<a href="https://misskey-hub.net/instances.html">
|
||||
<img src="https://custom-icon-badges.herokuapp.com/badge/find_an-instance-acea31?logoColor=acea31&style=for-the-badge&logo=misskey&labelColor=363B40" alt="find an instance"/></a>
|
||||
|
||||
<a href="https://misskey-hub.net/docs/for-admin/install/guides/">
|
||||
<a href="https://misskey-hub.net/docs/install.html">
|
||||
<img src="https://custom-icon-badges.herokuapp.com/badge/create_an-instance-FBD53C?logoColor=FBD53C&style=for-the-badge&logo=server&labelColor=363B40" alt="create an instance"/></a>
|
||||
|
||||
<a href="./CONTRIBUTING.md">
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<a href="https://www.patreon.com/syuilo">
|
||||
<img src="https://custom-icon-badges.herokuapp.com/badge/become_a-patron-F96854?logoColor=F96854&style=for-the-badge&logo=patreon&labelColor=363B40" alt="become a patron"/></a>
|
||||
|
||||
|
||||
---
|
||||
|
||||
[](https://codecov.io/gh/misskey-dev/misskey)
|
||||
@@ -51,28 +51,9 @@ With Misskey's built in drive, you get cloud storage right in your social media,
|
||||
|
||||
## Documentation
|
||||
|
||||
Misskey Documentation can be found at [Misskey Hub](https://misskey-hub.net/docs/), some of the links and graphics above also lead to specific portions of it.
|
||||
Misskey Documentation can be found at [Misskey Hub](https://misskey-hub.net/), some of the links and graphics above also lead to specific portions of it.
|
||||
|
||||
## Sponsors
|
||||
|
||||
<div align="center">
|
||||
<a class="rss3" title="RSS3" href="https://rss3.io/" target="_blank"><img src="https://rss3.mypinata.cloud/ipfs/QmUG6H3Z7D5P511shn7sB4CPmpjH5uZWu4m5mWX7U3Gqbu" alt="RSS3" height="60"></a>
|
||||
</div>
|
||||
|
||||
## Thanks
|
||||
|
||||
<a href="https://www.chromatic.com/"><img src="https://user-images.githubusercontent.com/321738/84662277-e3db4f80-af1b-11ea-88f5-91d67a5e59f6.png" height="30" alt="Chromatic" /></a>
|
||||
|
||||
Thanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us review UI changes and catch visual regressions.
|
||||
|
||||
<a href="https://about.codecov.io/for/open-source/"><img src="https://about.codecov.io/wp-content/themes/codecov/assets/brand/sentry-cobranding/logos/codecov-by-sentry-logo.svg" height="30" alt="Codecov" /></a>
|
||||
|
||||
Thanks to [Codecov](https://about.codecov.io/for/open-source/) for providing the code coverage platform that helps us improve our test coverage.
|
||||
|
||||
<a href="https://crowdin.com/"><img src="https://user-images.githubusercontent.com/20679825/230709597-1299a011-171a-4294-a91e-355a9b37c672.svg" height="30" alt="Crowdin" /></a>
|
||||
|
||||
Thanks to [Crowdin](https://crowdin.com/) for providing the localization platform that helps us translate Misskey into many languages.
|
||||
|
||||
<a href="https://hub.docker.com/"><img src="https://user-images.githubusercontent.com/20679825/230148221-f8e73a32-a49b-47c3-9029-9a15c3824f92.png" height="30" alt="Docker" /></a>
|
||||
|
||||
Thanks to [Docker](https://hub.docker.com/) for providing the container platform that helps us run Misskey in production.
|
||||
|
@@ -6,7 +6,6 @@ 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
|
||||
@@ -23,7 +22,7 @@ This is the phase we are at now. We need to make a high-maintenance environment
|
||||
Once Phase 1 is complete and an environment conducive to the development of a stable system is in place, the implementation of new functions can begin gradually.
|
||||
|
||||
- Improve features for moderation
|
||||
- ~~OAuth2 support https://github.com/misskey-dev/misskey/issues/8262~~ → Done ✔️
|
||||
- OAuth2 support https://github.com/misskey-dev/misskey/issues/8262
|
||||
- GraphQL support?
|
||||
|
||||
## (3) Improve scalability
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Reporting Security Issues
|
||||
|
||||
If you discover a security issue in Misskey, please report it by **[this form](https://github.com/misskey-dev/misskey/security/advisories/new)**.
|
||||
If you discover a security issue in Misskey, please report it by sending an
|
||||
email to [syuilotan@yahoo.co.jp](mailto:syuilotan@yahoo.co.jp).
|
||||
|
||||
This will allow us to assess the risk, and make a fix available before we add a
|
||||
bug report to the GitHub repository.
|
||||
|
@@ -23,13 +23,13 @@
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<style>
|
||||
#g8 {
|
||||
#g8 {
|
||||
animation-name: floating;
|
||||
animation-duration: 3s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
|
||||
@keyframes floating {
|
||||
0% { transform: translate(0, 0px); }
|
||||
50% { transform: translate(0, -5px); }
|
||||
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -72,67 +72,25 @@ db:
|
||||
#extra:
|
||||
# ssl: true
|
||||
|
||||
dbReplications: false
|
||||
|
||||
# You can configure any number of replicas here
|
||||
#dbSlaves:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
# -
|
||||
# host:
|
||||
# port:
|
||||
# db:
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Redis configuration └─────────────────────────────────────
|
||||
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
#pass: example-pass
|
||||
#prefix: example-prefix
|
||||
#db: 1
|
||||
|
||||
#redisForPubsub:
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
#redisForJobQueue:
|
||||
# host: localhost
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
#redisForTimelines:
|
||||
# host: redis
|
||||
# port: 6379
|
||||
# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
|
||||
# #pass: example-pass
|
||||
# #prefix: example-prefix
|
||||
# #db: 1
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
#meilisearch:
|
||||
# host: localhost
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: true
|
||||
# index: ''
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
@@ -143,7 +101,6 @@ redis:
|
||||
|
||||
# Available methods:
|
||||
# aid ... Short, Millisecond accuracy
|
||||
# aidx ... Millisecond accuracy
|
||||
# meid ... Similar to ObjectID, Millisecond accuracy
|
||||
# ulid ... Millisecond accuracy
|
||||
# objectid ... This is left for backward compatibility
|
||||
@@ -151,7 +108,7 @@ redis:
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# ID SETTINGS AFTER THAT!
|
||||
|
||||
id: "aidx"
|
||||
id: "aid"
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Other configuration └─────────────────────────────────────
|
||||
|
||||
@@ -167,7 +124,7 @@ id: "aidx"
|
||||
|
||||
# Job rate limiter
|
||||
# deliverJobPerSec: 128
|
||||
# inboxJobPerSec: 32
|
||||
# inboxJobPerSec: 16
|
||||
|
||||
# Job attempts
|
||||
# deliverJobMaxAttempts: 12
|
||||
|
@@ -3,16 +3,16 @@ kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "misskey.fullname" . }}
|
||||
labels:
|
||||
{{- include "misskey.labels" . | nindent 4 }}
|
||||
{{- include "misskey.labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "misskey.selectorLabels" . | nindent 6 }}
|
||||
{{- include "misskey.selectorLabels" . | nindent 6 }}
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "misskey.selectorLabels" . | nindent 8 }}
|
||||
{{- include "misskey.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
containers:
|
||||
- name: misskey
|
||||
@@ -27,7 +27,7 @@ spec:
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
- name: postgres
|
||||
image: postgres:15-alpine
|
||||
image: postgres:14-alpine
|
||||
env:
|
||||
- name: POSTGRES_USER
|
||||
value: "example-misskey-user"
|
||||
@@ -38,7 +38,7 @@ spec:
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
- name: redis
|
||||
image: redis:7-alpine
|
||||
image: redis:alpine
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
volumes:
|
||||
|
@@ -11,4 +11,4 @@ spec:
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "misskey.selectorLabels" . | nindent 4 }}
|
||||
{{- include "misskey.selectorLabels" . | nindent 4 }}
|
||||
|
@@ -10,14 +10,14 @@ describe('Before setup instance', () => {
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
it('setup instance', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
|
||||
cy.intercept('POST', '/api/admin/accounts/create').as('signup');
|
||||
|
||||
|
||||
cy.get('[data-cy-admin-username] input').type('admin');
|
||||
cy.get('[data-cy-admin-password] input').type('admin1234');
|
||||
cy.get('[data-cy-admin-ok]').click();
|
||||
@@ -43,51 +43,22 @@ describe('After setup instance', () => {
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
it('signup', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
|
||||
cy.intercept('POST', '/api/signup').as('signup');
|
||||
|
||||
cy.get('[data-cy-signup]').click();
|
||||
cy.get('[data-cy-signup-rules-continue]').should('be.disabled');
|
||||
cy.get('[data-cy-signup-rules-notes-agree] [data-cy-switch-toggle]').click();
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
cy.get('[data-cy-signup-rules-continue]').should('not.be.disabled');
|
||||
cy.get('[data-cy-signup-rules-continue]').click();
|
||||
|
||||
cy.get('[data-cy-signup-submit]').should('be.disabled');
|
||||
cy.get('[data-cy-signup-username] input').type('alice');
|
||||
cy.get('[data-cy-signup-submit]').should('be.disabled');
|
||||
cy.get('[data-cy-signup-password] input').type('alice1234');
|
||||
cy.get('[data-cy-signup-submit]').should('be.disabled');
|
||||
cy.get('[data-cy-signup-password-retype] input').type('alice1234');
|
||||
cy.get('[data-cy-signup-submit]').should('not.be.disabled');
|
||||
cy.get('[data-cy-signup-submit]').click();
|
||||
|
||||
cy.wait('@signup');
|
||||
});
|
||||
|
||||
it('signup with duplicated username', () => {
|
||||
cy.registerUser('alice', 'alice1234');
|
||||
|
||||
cy.visitHome();
|
||||
|
||||
// ユーザー名が重複している場合の挙動確認
|
||||
cy.get('[data-cy-signup]').click();
|
||||
cy.get('[data-cy-signup-rules-continue]').should('be.disabled');
|
||||
cy.get('[data-cy-signup-rules-notes-agree] [data-cy-switch-toggle]').click();
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
cy.get('[data-cy-signup-rules-continue]').should('not.be.disabled');
|
||||
cy.get('[data-cy-signup-rules-continue]').click();
|
||||
|
||||
cy.get('[data-cy-signup-username] input').type('alice');
|
||||
cy.get('[data-cy-signup-password] input').type('alice1234');
|
||||
cy.get('[data-cy-signup-password-retype] input').type('alice1234');
|
||||
cy.get('[data-cy-signup-submit]').should('be.disabled');
|
||||
});
|
||||
});
|
||||
|
||||
describe('After user signup', () => {
|
||||
@@ -108,11 +79,11 @@ describe('After user signup', () => {
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
it('signin', () => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
|
||||
cy.intercept('POST', '/api/signin').as('signin');
|
||||
|
||||
@@ -130,7 +101,7 @@ describe('After user signup', () => {
|
||||
userId: this.alice.id,
|
||||
});
|
||||
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
|
||||
cy.get('[data-cy-signin]').click();
|
||||
cy.get('[data-cy-signin-username] input').type('alice');
|
||||
@@ -141,7 +112,7 @@ describe('After user signup', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('After user signed in', () => {
|
||||
describe('After user singed in', () => {
|
||||
beforeEach(() => {
|
||||
cy.resetState();
|
||||
|
||||
@@ -161,77 +132,15 @@ describe('After user signed in', () => {
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get('[data-cy-user-setup-continue]').should('be.visible');
|
||||
cy.get('[data-cy-open-post-form]').should('be.visible');
|
||||
});
|
||||
|
||||
it('account setup wizard', () => {
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
|
||||
cy.get('[data-cy-user-setup-user-name] input').type('ありす');
|
||||
cy.get('[data-cy-user-setup-user-description] textarea').type('ほげ');
|
||||
// TODO: アイコン設定テスト
|
||||
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
|
||||
// プライバシー設定
|
||||
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
|
||||
// フォローはスキップ
|
||||
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
|
||||
// プッシュ通知設定はスキップ
|
||||
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
|
||||
cy.get('[data-cy-user-setup-continue]').click();
|
||||
});
|
||||
});
|
||||
|
||||
describe('After user setup', () => {
|
||||
beforeEach(() => {
|
||||
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]').click();
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
|
||||
// waitを入れることでそれを防止できる
|
||||
cy.wait(1000);
|
||||
});
|
||||
|
||||
it('note', () => {
|
||||
cy.get('[data-cy-open-post-form]').should('be.visible');
|
||||
cy.get('[data-cy-open-post-form]').click();
|
||||
cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
|
||||
cy.get('[data-cy-open-post-form-submit]').click();
|
||||
|
||||
cy.contains('Hello, Misskey!');
|
||||
});
|
||||
|
||||
it('open note form with hotkey', () => {
|
||||
// Wait until the page loads
|
||||
cy.get('[data-cy-open-post-form]').should('be.visible');
|
||||
// Use trigger() to give different `code` to test if hotkeys also work on non-QWERTY keyboards.
|
||||
cy.document().trigger("keydown", { eventConstructor: 'KeyboardEvent', key: "n", code: "KeyL" });
|
||||
// See if the form is opened
|
||||
cy.get('[data-cy-post-form-text]').should('be.visible');
|
||||
// Close it
|
||||
cy.focused().trigger("keydown", { eventConstructor: 'KeyboardEvent', key: "Escape", code: "Escape" });
|
||||
// See if the form is closed
|
||||
cy.get('[data-cy-post-form-text]').should('not.be.visible');
|
||||
});
|
||||
});
|
||||
|
||||
|
@@ -1,4 +1,3 @@
|
||||
/* flaky
|
||||
describe('After user signed in', () => {
|
||||
beforeEach(() => {
|
||||
cy.resetState();
|
||||
@@ -11,10 +10,6 @@ describe('After user signed in', () => {
|
||||
cy.registerUser('alice', 'alice1234');
|
||||
|
||||
cy.login('alice', 'alice1234');
|
||||
|
||||
// アカウント初期設定ウィザード
|
||||
cy.get('[data-cy-user-setup] [data-cy-modal-window-close]').click();
|
||||
cy.get('[data-cy-modal-dialog-ok]').click();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -24,27 +19,27 @@ describe('After user signed in', () => {
|
||||
});
|
||||
|
||||
it('widget edit toggle is visible', () => {
|
||||
cy.get('[data-cy-widget-edit]').should('be.visible');
|
||||
cy.get('.mk-widget-edit').should('be.visible');
|
||||
});
|
||||
|
||||
it('widget select should be visible in edit mode', () => {
|
||||
cy.get('[data-cy-widget-edit]').click();
|
||||
cy.get('[data-cy-widget-select]').should('be.visible');
|
||||
cy.get('.mk-widget-edit').click();
|
||||
cy.get('.mk-widget-select').should('be.visible');
|
||||
});
|
||||
|
||||
it('first widget should be removed', () => {
|
||||
cy.get('[data-cy-widget-edit]').click();
|
||||
cy.get('[data-cy-customize-container]:first-child [data-cy-customize-container-remove]._button').click();
|
||||
cy.get('[data-cy-customize-container]').should('have.length', 2);
|
||||
cy.get('.mk-widget-edit').click();
|
||||
cy.get('.data-cy-customize-container:first-child .data-cy-customize-container-remove._button').click();
|
||||
cy.get('.data-cy-customize-container').should('have.length', 2);
|
||||
});
|
||||
|
||||
function buildWidgetTest(widgetName) {
|
||||
it(`${widgetName} widget should get added`, () => {
|
||||
cy.get('[data-cy-widget-edit]').click();
|
||||
cy.get('[data-cy-widget-select] select').select(widgetName, { force: true });
|
||||
cy.get('[data-cy-bg]._modalBg[data-cy-transparent]').click({ multiple: true, force: true });
|
||||
cy.get('[data-cy-widget-add]').click({ force: true });
|
||||
cy.get(`[data-cy-mkw-${widgetName}]`).should('exist');
|
||||
cy.get('.mk-widget-edit').click();
|
||||
cy.get('.mk-widget-select select').select(widgetName, { force: true });
|
||||
cy.get('.data-cy-bg._modalBg.data-cy-transparent').click({ multiple: true, force: true });
|
||||
cy.get('.mk-widget-add').click({ force: true });
|
||||
cy.get(`.data-cy-mkw-${widgetName}`).should('exist');
|
||||
});
|
||||
}
|
||||
|
||||
@@ -68,4 +63,3 @@ describe('After user signed in', () => {
|
||||
buildWidgetTest('aiscript');
|
||||
buildWidgetTest('aichan');
|
||||
});
|
||||
*/
|
||||
|
@@ -24,11 +24,6 @@
|
||||
// -- This will overwrite an existing command --
|
||||
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
|
||||
|
||||
Cypress.Commands.add('visitHome', () => {
|
||||
cy.visit('/');
|
||||
cy.get('button', { timeout: 30000 }).should('be.visible');
|
||||
})
|
||||
|
||||
Cypress.Commands.add('resetState', () => {
|
||||
cy.window(win => {
|
||||
win.indexedDB.deleteDatabase('keyval-store');
|
||||
@@ -48,7 +43,7 @@ Cypress.Commands.add('registerUser', (username, password, isAdmin = false) => {
|
||||
});
|
||||
|
||||
Cypress.Commands.add('login', (username, password) => {
|
||||
cy.visitHome();
|
||||
cy.visit('/');
|
||||
|
||||
cy.intercept('POST', '/api/signin').as('signin');
|
||||
|
||||
|
@@ -21,8 +21,6 @@ import './commands'
|
||||
|
||||
Cypress.on('uncaught:exception', (err, runnable) => {
|
||||
if ([
|
||||
'The source image cannot be decoded',
|
||||
|
||||
// Chrome
|
||||
'ResizeObserver loop limit exceeded',
|
||||
|
||||
|
@@ -1,42 +0,0 @@
|
||||
version: "3"
|
||||
|
||||
# このconfigは、 dockerでMisskey本体を起動せず、 redisとpostgresql などだけを起動します
|
||||
|
||||
services:
|
||||
redis:
|
||||
restart: always
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- ./redis:/data
|
||||
healthcheck:
|
||||
test: "redis-cli ping"
|
||||
interval: 5s
|
||||
retries: 20
|
||||
|
||||
db:
|
||||
restart: always
|
||||
image: postgres:15-alpine
|
||||
ports:
|
||||
- "5432:5432"
|
||||
env_file:
|
||||
- .config/docker.env
|
||||
volumes:
|
||||
- ./db:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
|
||||
interval: 5s
|
||||
retries: 20
|
||||
|
||||
# meilisearch:
|
||||
# restart: always
|
||||
# image: getmeili/meilisearch:v1.3.4
|
||||
# environment:
|
||||
# - MEILI_NO_ANALYTICS=true
|
||||
# - MEILI_ENV=production
|
||||
# env_file:
|
||||
# - .config/meilisearch.env
|
||||
# volumes:
|
||||
# - ./meili_data:/meili_data
|
||||
|
@@ -7,8 +7,7 @@ services:
|
||||
links:
|
||||
- db
|
||||
- redis
|
||||
# - mcaptcha
|
||||
# - meilisearch
|
||||
# - es
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
@@ -49,48 +48,16 @@ services:
|
||||
interval: 5s
|
||||
retries: 20
|
||||
|
||||
# mcaptcha:
|
||||
# es:
|
||||
# restart: always
|
||||
# image: mcaptcha/mcaptcha:latest
|
||||
# networks:
|
||||
# internal_network:
|
||||
# external_network:
|
||||
# aliases:
|
||||
# - localhost
|
||||
# ports:
|
||||
# - 7493:7493
|
||||
# env_file:
|
||||
# - .config/docker.env
|
||||
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
|
||||
# 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
|
||||
# environment:
|
||||
# - MEILI_NO_ANALYTICS=true
|
||||
# - MEILI_ENV=production
|
||||
# env_file:
|
||||
# - .config/meilisearch.env
|
||||
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
# - "TAKE_FILE_OWNERSHIP=111"
|
||||
# networks:
|
||||
# - internal_network
|
||||
# volumes:
|
||||
# - ./meili_data:/meili_data
|
||||
# - ./elasticsearch:/usr/share/elasticsearch/data
|
||||
|
||||
networks:
|
||||
internal_network:
|
25
docs/DONATORS.md
Normal file
25
docs/DONATORS.md
Normal file
@@ -0,0 +1,25 @@
|
||||
DONATORS
|
||||
========
|
||||
The list of people who have sent donation for Misskey.
|
||||
|
||||
(In random order, honorific titles are omitted.)
|
||||
|
||||
* らふぁ
|
||||
* 俺様
|
||||
* なぎうり
|
||||
* スルメ https://surume.tk/
|
||||
* 藍
|
||||
* 音船 https://otofune.me/
|
||||
* aqz https://misskey.xyz/aqz
|
||||
* kotodu "虚無創作中"
|
||||
* Maya Minatsuki
|
||||
* Knzk https://knzk.me/@Knzk
|
||||
* ねじりわさび https://knzk.me/@y
|
||||
* NCLS https://knzk.me/@imncls]
|
||||
* こじま @skoji@sandbox.skoji.jp
|
||||
|
||||
:heart: Thanks for donating, guys!
|
||||
|
||||
---
|
||||
|
||||
If your name is missing, please contact us!
|
65
gulpfile.js
Normal file
65
gulpfile.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Gulp tasks
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const gulp = require('gulp');
|
||||
const replace = require('gulp-replace');
|
||||
const terser = require('gulp-terser');
|
||||
const cssnano = require('gulp-cssnano');
|
||||
|
||||
const locales = require('./locales');
|
||||
const meta = require('./package.json');
|
||||
|
||||
gulp.task('copy:backend:views', () =>
|
||||
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views'))
|
||||
);
|
||||
|
||||
gulp.task('copy:frontend:fonts', () =>
|
||||
gulp.src('./packages/frontend/node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/_frontend_dist_/fonts/'))
|
||||
);
|
||||
|
||||
gulp.task('copy:frontend:tabler-icons', () =>
|
||||
gulp.src('./packages/frontend/node_modules/@tabler/icons-webfont/**/*').pipe(gulp.dest('./built/_frontend_dist_/tabler-icons/'))
|
||||
);
|
||||
|
||||
gulp.task('copy:frontend:locales', cb => {
|
||||
fs.mkdirSync('./built/_frontend_dist_/locales', { recursive: true });
|
||||
|
||||
const v = { '_version_': meta.version };
|
||||
|
||||
for (const [lang, locale] of Object.entries(locales)) {
|
||||
fs.writeFileSync(`./built/_frontend_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
|
||||
}
|
||||
|
||||
cb();
|
||||
});
|
||||
|
||||
gulp.task('build:backend:script', () => {
|
||||
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js'])
|
||||
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
||||
.pipe(terser({
|
||||
toplevel: true
|
||||
}))
|
||||
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||
});
|
||||
|
||||
gulp.task('build:backend:style', () => {
|
||||
return gulp.src(['./packages/backend/src/server/web/style.css', './packages/backend/src/server/web/bios.css', './packages/backend/src/server/web/cli.css'])
|
||||
.pipe(cssnano({
|
||||
zindex: false
|
||||
}))
|
||||
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||
});
|
||||
|
||||
gulp.task('build', gulp.parallel(
|
||||
'copy:frontend:locales', 'copy:backend:views', 'build:backend:script', 'build:backend:style', 'copy:frontend:fonts', 'copy:frontend:tabler-icons'
|
||||
));
|
||||
|
||||
gulp.task('default', gulp.task('build'));
|
||||
|
||||
gulp.task('watch', () => {
|
||||
gulp.watch([
|
||||
'./packages/*/src/**/*',
|
||||
], { ignoreInitial: false }, gulp.task('build'));
|
||||
});
|
@@ -1,7 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SPDX-FileCopyrightText: syuilo and other misskey contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
PORT=$(grep '^port:' /misskey/.config/default.yml | awk 'NR==1{print $2; exit}')
|
||||
curl -s -S -o /dev/null "http://localhost:${PORT}"
|
||||
|
@@ -2,7 +2,6 @@
|
||||
_lang_: "العربية"
|
||||
headlineMisskey: "شبكة مرتبطة بالملاحظات"
|
||||
introMisskey: "اهلا بك! ميسكي هو منصة تدوين مصغر لا مركزية ومفتوحة المصدر.\nيمكنك مشاركة \"ملاحظات\" عن ما يجري حولك، وإخبار الجميع عن نفسك 📡\nتسمح لك \"الانفعالات\" بتعبير عن شعورك حول ملاحظات الآخرين 👍\nاكتشف عالمًا جديدًا 🚀"
|
||||
poweredByMisskeyDescription: "{name} هو إحدى الخِدمات التي تستخدم المنصة مفتوحة المصدر <b>ميسكي</b> (يشار إليه كمثيل ميسكي)"
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "البحث"
|
||||
notifications: "الإشعارات"
|
||||
@@ -20,7 +19,6 @@ noNotes: "لم يُعثر على أية ملاحظات"
|
||||
noNotifications: "ليس هناك أية اشعارات"
|
||||
instance: "مثيل الخادم"
|
||||
settings: "الاعدادات"
|
||||
notificationSettings: "إعدادات الإشعارات"
|
||||
basicSettings: "الاعدادات الأساسية"
|
||||
otherSettings: "إعدادات أخرى"
|
||||
openInWindow: "افتح في نافذة جديدة"
|
||||
@@ -41,23 +39,16 @@ unfavorite: "إزالة من المفضلة"
|
||||
favorited: "أُضيف إلى المفضلة."
|
||||
alreadyFavorited: "تمت إضافته بالفعل إلى المفضلة."
|
||||
cantFavorite: "تعذرت الإضافة إلى المفضلة."
|
||||
pin: "ثبتها على الصفحة الشخصية"
|
||||
unpin: "فكها من ملفك الشخصي"
|
||||
pin: "دبّسها على الصفحة الشخصية"
|
||||
unpin: "ألغ تدبيسها من ملفك الشخصي"
|
||||
copyContent: "انسخ المحتوى"
|
||||
copyLink: "انسخ الرابط"
|
||||
delete: "حذف"
|
||||
deleteAndEdit: "إزالة وإعادة الصياغة"
|
||||
deleteAndEditConfirm: "أمتأكد من حذف الملاحظة؟ ستفقد كل مشاركاتها، والتفاعلات، والردود عليها."
|
||||
addToList: "أضفه إلى قائمة"
|
||||
addToAntenna: "أضف إلى هوائي"
|
||||
sendMessage: "أرسل رسالة"
|
||||
copyRSS: "انسخ رابط RSS"
|
||||
copyUsername: "انسخ اسم المستخدم"
|
||||
copyUserId: "انسخ معرف المستخدم"
|
||||
copyNoteId: "انسخ معرف الملاحظة"
|
||||
copyFileId: "انسخ معرّف الملف"
|
||||
copyFolderId: "انسخ معرّف المجلد"
|
||||
copyProfileUrl: "انسخ رابط الملف الشخصي"
|
||||
searchUser: "ابحث عن مستخدمين"
|
||||
reply: "رد"
|
||||
loadMore: "عرض المزيد"
|
||||
@@ -110,16 +101,15 @@ renoted: "أُعيد نشره"
|
||||
cantRenote: "لا يمكن إعادة نشر الملاحظة"
|
||||
cantReRenote: "لا يمكنك إعادة نشر ملاحظة معاد نشرها"
|
||||
quote: "اقتبس"
|
||||
inChannelRenote: "إعادة نشر في قناة"
|
||||
inChannelQuote: "اقتباس في قناة"
|
||||
pinnedNote: "ملاحظة مثبتة"
|
||||
pinned: "ثبتها على الصفحة الشخصية"
|
||||
pinnedNote: "ملاحظة مدبسة"
|
||||
pinned: "دبّسها على الصفحة الشخصية"
|
||||
you: "أنت"
|
||||
clickToShow: "اضغط للعرض"
|
||||
sensitive: "محتوى حساس"
|
||||
add: "إضافة"
|
||||
reaction: "التفاعلات"
|
||||
reactions: "التفاعلات"
|
||||
reactionSetting: "التفاعلات المراد عرضها في منتقي التفاعلات."
|
||||
reactionSettingDescription2: "اسحب لترتيب ، انقر للحذف ، استخدم \"+\" للإضافة."
|
||||
rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات"
|
||||
attachCancel: "أزل المرفق"
|
||||
@@ -128,8 +118,6 @@ unmarkAsSensitive: "ألغ تعيينه كمحتوى حساس"
|
||||
enterFileName: "ادخل اسم الملف"
|
||||
mute: "اكتم"
|
||||
unmute: "إلغاء الكتم"
|
||||
renoteMute: "اكتم إعادة النشر"
|
||||
renoteUnmute: "ارفع الكتم عن إعادة النشر"
|
||||
block: "احجب"
|
||||
unblock: "إلغاء الحجب"
|
||||
suspend: "علِق"
|
||||
@@ -139,10 +127,7 @@ unblockConfirm: "أمتأكد من إلغاء حجب هذا الحساب؟"
|
||||
suspendConfirm: "أمتأكد من تعليق الحساب؟"
|
||||
unsuspendConfirm: "أمتأكد من إلغاء تعليق؟"
|
||||
selectList: "اختر قائمة"
|
||||
editList: "عدّل القائمة"
|
||||
selectChannel: "اختر قناة"
|
||||
selectAntenna: "اختر هوائيًا"
|
||||
editAntenna: "عدّل الهوائي"
|
||||
selectWidget: "اختر ودجة"
|
||||
editWidgets: "عدّل الودجات"
|
||||
editWidgetsExit: "تم"
|
||||
@@ -154,7 +139,6 @@ emojiUrl: "رابط الإيموجي"
|
||||
addEmoji: "إضافة إيموجي"
|
||||
settingGuide: "الإعدادات المستحسنة"
|
||||
cacheRemoteFiles: "خزن مؤقتا الملفات البعيدة"
|
||||
cacheRemoteFilesDescription: "إذا عُطل هذا الإعداد، ستُحمل الملفات من المثيل البعيد، هذا سيقلل من المساحة المستغلة على القرص لكن سيزيد حجم تدفق البيانات وهذا لأن الصور المصغرة لن تولّد."
|
||||
flagAsBot: "علّمه كحساب آلي"
|
||||
flagAsBotDescription: "فعّل هذا الخيار إذا كان هذا الحساب يُدار عبر برمجية. إذا فُعل فسيكون بمثابة علامة للمطورين الآخرين لتجنب سلاسل لا متناهية من التفاعل بين حسابات الآلية وضبط أنظمة ميسكي للتعامل مع هذا الحساب كآلي."
|
||||
flagAsCat: "علّم هذا الحساب كحساب قط"
|
||||
@@ -213,7 +197,7 @@ blockedUsers: "الحسابات المحجوبة"
|
||||
noUsers: "ليس هناك مستخدمون"
|
||||
editProfile: "تعديل الملف التعريفي"
|
||||
noteDeleteConfirm: "هل تريد حذف هذه الملاحظة؟"
|
||||
pinLimitExceeded: "لا يمكنك تثبيت الملاحظات بعد الآن."
|
||||
pinLimitExceeded: "لا يمكنك تدبيس الملاحظات بعد الآن."
|
||||
intro: "لقد انتهت عملية تنصيب Misskey. الرجاء إنشاء حساب إداري."
|
||||
done: "تمّ"
|
||||
processing: "المعالجة جارية"
|
||||
@@ -266,16 +250,12 @@ noMoreHistory: "لا يوجد المزيد من التاريخ"
|
||||
startMessaging: "ابدأ محادثة"
|
||||
nUsersRead: "قرأه {n}"
|
||||
agreeTo: "اوافق على {0}"
|
||||
agree: "أقبل"
|
||||
agreeBelow: "أقبل ما يلي"
|
||||
basicNotesBeforeCreateAccount: "ملاحظات مهمة"
|
||||
termsOfService: "شروط الخدمة"
|
||||
tos: "شروط الخدمة"
|
||||
start: "البداية"
|
||||
home: "الرئيسي"
|
||||
remoteUserCaution: "هذه المعلومات قد لا تكون مكتملة بما أن المستخدم من مثيل بعيد."
|
||||
activity: "النشاط"
|
||||
images: "صور"
|
||||
image: "صور"
|
||||
images: "الصور"
|
||||
birthday: "تاريخ الميلاد"
|
||||
yearsOld: "{age} سنة"
|
||||
registeredDate: "انضم في"
|
||||
@@ -312,7 +292,7 @@ copyUrl: "انسخ الرابط"
|
||||
rename: "إعادة التسمية"
|
||||
avatar: "الصورة الرمزية"
|
||||
banner: "الصورة الرأسية"
|
||||
displayOfSensitiveMedia: "عرض المحتوى الحساس"
|
||||
nsfw: "محتوى حساس"
|
||||
whenServerDisconnected: "عند فقدان الاتصال بالخادم"
|
||||
disconnectedFromServer: "قُطِع الإتصال بالخادم"
|
||||
reload: "انعش"
|
||||
@@ -347,21 +327,20 @@ invite: "دعوة"
|
||||
driveCapacityPerLocalAccount: "حصة التخزين لكل مستخدم محلي"
|
||||
driveCapacityPerRemoteAccount: "حصة التخزين لكل مستخدم بعيد"
|
||||
inMb: "بالميغابايت"
|
||||
iconUrl: "رابط الأيقونة"
|
||||
bannerUrl: "رابط صورة اللافتة"
|
||||
backgroundImageUrl: "رابط صورة الخلفية"
|
||||
basicInfo: "المعلومات الأساسية "
|
||||
pinnedUsers: "المستخدمون المثبتون"
|
||||
pinnedUsersDescription: "قائمة المستخدمين المثبتين في لسان \"استكشف\" ، اجعل كل اسم مستخدم في سطر لوحده."
|
||||
pinnedPages: "الصفحات المثبتة"
|
||||
pinnedPagesDescription: "أدخل مسار الصفحات التي تريد تثبيتها في أعلى هذا الموقع، اجعل كل مسار في سطر لوحده."
|
||||
pinnedClipId: "معرّف المشبك المثبت"
|
||||
pinnedNotes: "ملاحظة مثبتة"
|
||||
pinnedUsers: "المستخدمون المدبسون"
|
||||
pinnedUsersDescription: "قائمة المستخدمين المدبسين في لسان \"استكشف\" ، اجعل كل اسم مستخدم في سطر لوحده."
|
||||
pinnedPages: "الصفحات المدبسة"
|
||||
pinnedPagesDescription: "أدخل مسار الصفحات التي تريد تدبيسها في أعلى هذا الموقع، اجعل كل مسار في سطر لوحده."
|
||||
pinnedClipId: "معرّف المشبك المدبس"
|
||||
pinnedNotes: "ملاحظة مدبسة"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "فعّل hCaptcha"
|
||||
hcaptchaSiteKey: "مفتاح الموقع"
|
||||
hcaptchaSecretKey: "المفتاح السري"
|
||||
mcaptchaSiteKey: "مفتاح الموقع"
|
||||
mcaptchaSecretKey: "المفتاح السري"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "تمكين reCAPTCHA"
|
||||
recaptchaSiteKey: "مفتاح الموقع"
|
||||
@@ -378,7 +357,6 @@ antennaExcludeKeywords: "الكلمات المفتاحية المستثناة"
|
||||
antennaKeywordsDescription: "افصل بينهم بمسافة لاستخدام معامل \"و\" أو بسطر لاستخدام معامل \"أو\""
|
||||
notifyAntenna: "نبهني بصول ملاحظات جديدة"
|
||||
withFileAntenna: "ملاحظات تحوي ملفات فقط"
|
||||
enableServiceworker: "فعّل إرسال الإشعارات للمتصفح"
|
||||
antennaUsersDescription: "اكتب اسم مستخدم لكل سطر"
|
||||
caseSensitive: "حساسية حالة الأحرف"
|
||||
withReplies: "بالردود"
|
||||
@@ -401,15 +379,11 @@ about: "عن"
|
||||
aboutMisskey: "عن Misskey"
|
||||
administrator: "المدير"
|
||||
token: "الرمز المميز"
|
||||
2fa: "الاستيثاق بعاملَيْن"
|
||||
totp: "تطبيق استيثاق"
|
||||
moderator: "مشرِف"
|
||||
moderation: "الإشراف"
|
||||
nUsersMentioned: "{n} مستخدمين أُشير إليهم"
|
||||
securityKeyAndPasskey: "الأمن ومفاتيح الأمان"
|
||||
securityKey: "مفتاح الأمان"
|
||||
lastUsed: "آخر استخدام"
|
||||
lastUsedAt: "آخر استخدام: {t}"
|
||||
unregister: "إلغاء التسجيل"
|
||||
passwordLessLogin: "لِج مِن دون كلمة سرية"
|
||||
resetPassword: "أعد تعيين كلمتك السرية"
|
||||
@@ -419,6 +393,7 @@ share: "شارِك"
|
||||
notFound: "غير موجود"
|
||||
notFoundDescription: "تعذر العثور على صفحة يقود إليها هذا الرابط."
|
||||
uploadFolder: "المجلد الافتراضي للرفع"
|
||||
cacheClear: "مسح ذاكرة التخزين المؤقت"
|
||||
markAsReadAllNotifications: "وضع جميع الإشعارات كأنها مقروءة"
|
||||
markAsReadAllUnreadNotes: "علّم جميع الملاحظات كمقروءة"
|
||||
markAsReadAllTalkMessages: "علّم جميع الرسائل كمقروءة"
|
||||
@@ -459,8 +434,6 @@ or: "أو"
|
||||
language: "اللغة"
|
||||
uiLanguage: "لغة واجهة المستخدم"
|
||||
aboutX: "عن {x}"
|
||||
emojiStyle: "نمط الوجوه التعبيرية"
|
||||
showNoteActionsOnlyHover: "أظهر الإجراءات عند التمرير فوق الملاحظة"
|
||||
noHistory: "السجل فارغ"
|
||||
signinHistory: "تاريخ تسجيل الدخول"
|
||||
doing: "انتظر لحظة"
|
||||
@@ -471,7 +444,6 @@ createAccount: "أنشئ حسابًا"
|
||||
existingAccount: "الحسابات الموجودة"
|
||||
regenerate: "أعِد التوليد"
|
||||
fontSize: "حجم الخط"
|
||||
limitTo: "سقفهُ لـ{x}"
|
||||
noFollowRequests: "ليس لديك طلبات متابعة معلقة"
|
||||
openImageInNewTab: "إفتح الصورة بصفحة جديدة"
|
||||
dashboard: "لوحة التحكم"
|
||||
@@ -493,16 +465,13 @@ objectStoragePrefix: "البادئة"
|
||||
objectStoragePrefixDesc: "ستُحفظ الملفات في مجلدات تحوي اسماءها هذه البادئة."
|
||||
objectStorageEndpoint: "نقطة النهاية"
|
||||
objectStorageRegion: "المنطقة"
|
||||
objectStorageRegionDesc: "حدد منطقة مثل \"xx-east-1\". إذا كانت خدمتك لا تميز بين المناطق استخدم \"us-east-1\" أو اتركها فارغة إذا كنت تستخدم متغيرات البيئة أو ملفات ضبط AWS."
|
||||
objectStorageUseSSL: "استخدم SSL"
|
||||
objectStorageUseSSLDesc: "عطل هذا الخيار إذا لم ترد استخدام API عبر HTTPS"
|
||||
objectStorageUseProxy: "اتصل عبر وكيل"
|
||||
objectStorageUseProxyDesc: "عطل هذا الخيار إذا لم ترد استخدام API عبر وكيل"
|
||||
objectStorageSetPublicRead: "عينها ك\"علنية\" عند الرفع"
|
||||
serverLogs: "سجلات الخادم"
|
||||
deleteAll: "حذف الكل"
|
||||
showFixedPostForm: "أظهر نموذج الكتابة في أعلى الصفحة"
|
||||
showFixedPostFormInChannel: "أظهر نموذج الكتابة في أعلى الخط الزمني (قنوات)"
|
||||
newNoteRecived: "هناك ملاحظات جديدة"
|
||||
sounds: "الرنات"
|
||||
sound: "الرنات"
|
||||
@@ -537,12 +506,9 @@ userSuspended: "عُلق هذا المستخدم."
|
||||
userSilenced: "كُتم هذا المستخدم."
|
||||
yourAccountSuspendedTitle: "هذا الحساب معلق"
|
||||
yourAccountSuspendedDescription: "عُلق الحساب بسبب انتهاك شروط خدمة المثيل و ما شابه. إذا أردت معرفة التفصيل تواصل مع مدير المثيل. رجاءً لا تنشئ حساب جديد."
|
||||
accountDeleted: "حُذف الحساب"
|
||||
accountDeletedDescription: "حُذف هذا الحساب."
|
||||
menu: "القائمة"
|
||||
divider: "فاصل"
|
||||
addItem: "إضافة عنصر"
|
||||
rearrange: "أعد الترتيب"
|
||||
relays: "المُرَحلات"
|
||||
addRelay: "إضافة مُرحّل"
|
||||
inboxUrl: "رابط صندوق الوارد"
|
||||
@@ -565,8 +531,6 @@ author: "الكاتب"
|
||||
leaveConfirm: "لديك تغييرات غير محفوظة. أتريد المتابعة دون حفظها؟"
|
||||
manage: "إدارة "
|
||||
plugins: "الإضافات"
|
||||
preferencesBackups: "النُسخ الاحتياطية للإعدادات"
|
||||
useBlurEffectForModal: "استخدم تأثير الطمس في المشروط"
|
||||
useFullReactionPicker: "استخدم الحجم الكامل لمنتقي التفاعلات"
|
||||
width: "العرض"
|
||||
height: "الإرتفاع"
|
||||
@@ -581,6 +545,7 @@ tokenRequested: "منح حق الوصول إلى الحساب"
|
||||
pluginTokenRequestedDescription: "ستتمكن الإضافة من استخدام هذه الأذونات."
|
||||
notificationType: "أنواع الإشعارات"
|
||||
edit: "التعديل"
|
||||
useStarForReactionFallback: "استخدم ★ كبديل إذا كان التفاعل مجهولًا"
|
||||
emailServer: "خادم البريد الإلكتروني"
|
||||
emailConfigInfo: "يستخدم لتأكيد عنوان بريدك الإلكتروني ولإعادة تعيين كلمة المرور إن نسيتها."
|
||||
email: "البريد الإلكتروني "
|
||||
@@ -642,9 +607,7 @@ clip: "مِشبك"
|
||||
createNew: "أنشِئ جديد"
|
||||
optional: "اختياري"
|
||||
createNewClip: "أنشئ مِشبكَا جديدًا"
|
||||
confirmToUnclipAlreadyClippedNote: "هذه الملاحظة تنتمي للمشبك {name} سلفًا، أتريد حذفها منه⸮"
|
||||
public: "علني"
|
||||
private: "خاص"
|
||||
i18nInfo: "يترجم متطوعون ميسكي إلى عدة لغات، يمكنك المساعدة عبر {link}"
|
||||
manageAccessTokens: "إدارة رموز الوصول"
|
||||
accountInfo: "معلومات الحساب"
|
||||
@@ -665,7 +628,6 @@ driveFilesCount: "عدد الملفات في قرص التخزين"
|
||||
driveUsage: "المستغل من قرص التخزين"
|
||||
noCrawle: "ارفض فهرسة زاحف الويب"
|
||||
noCrawleDescription: "يطلب من محركات البحث ألّا يُفهرسوا ملفك الشخصي وملاحظات وصفحاتك وما شابه."
|
||||
lockedAccountInfo: "ستكون هذه الملاحظة مرئية للجميع مالم تحدد مرئتيها إلى \"للمتابعين فقط\""
|
||||
alwaysMarkSensitive: "علّم افتراضيًا جميع ملاحظاتي كذات محتوى حساس"
|
||||
loadRawImages: "حمّل الصور الأصلية بدلًا من المصغرات"
|
||||
disableShowingAnimatedImages: "لا تشغّل الصور المتحركة"
|
||||
@@ -679,13 +641,10 @@ contact: "التواصل"
|
||||
useSystemFont: "استخدم الخط الافتراضية للنظام"
|
||||
clips: "مشابك"
|
||||
experimentalFeatures: "ميّزات اختبارية"
|
||||
experimental: "اختباري"
|
||||
developer: "المطور"
|
||||
makeExplorable: "أظهر الحساب في صفحة \"استكشاف\""
|
||||
makeExplorableDescription: "بتعطيل هذا الخيار لن يظهر حسابك في صفحة \"استكشاف\""
|
||||
showGapBetweenNotesInTimeline: "أظهر فجوات بين المشاركات في الخيط الزمني"
|
||||
left: "يسار"
|
||||
center: "وسط"
|
||||
wide: "عريض"
|
||||
narrow: "رفيع"
|
||||
reloadToApplySetting: "سيُطبق هذا الإعداد بعد إعادة تحميل الصفحة، أتريد إعادة تحميلها الآن؟"
|
||||
@@ -703,7 +662,6 @@ accentColor: "طابع لوني"
|
||||
textColor: "لون النص"
|
||||
saveAs: "احفظ كـ..."
|
||||
advanced: "متقدم"
|
||||
advancedSettings: "إعدادات متقدمة"
|
||||
value: "القيمة"
|
||||
createdAt: "أُنشئ في"
|
||||
updatedAt: "حُدّث في"
|
||||
@@ -723,7 +681,6 @@ editCode: "حرر الشفرة"
|
||||
apply: "تطبيق"
|
||||
receiveAnnouncementFromInstance: "استلم إشعارات من هذا المثيل"
|
||||
emailNotification: "إشعارات البريد الكتروني"
|
||||
publish: "علني"
|
||||
inChannelSearch: "ابحث عن قناة"
|
||||
useReactionPickerForContextMenu: "افتح منتقي التفاعلات عند النقر بالزر الأيمن"
|
||||
typingUsers: "{users} يكتب(ون)..."
|
||||
@@ -736,7 +693,7 @@ unlikeConfirm: "أتريد إلغاء إعجابك؟"
|
||||
fullView: "ملء الشاشة"
|
||||
quitFullView: "اخرج من وضع ملء للشاشة"
|
||||
addDescription: "أضف وصفًا"
|
||||
userPagePinTip: "لعرض ملاحظة هنا اختر \"ثبتها على الصفحة الشخصية\" من قائمة تلك الملاحظة."
|
||||
userPagePinTip: "لعرض ملاحظة هنا اختر \"دبسها على الصفحة الشخصية\" من قائمة تلك الملاحظة."
|
||||
notSpecifiedMentionWarning: "في الملاحظة ذكر لمستخدمين لن يستلموها."
|
||||
info: "عن"
|
||||
userInfo: "معلومات المستخدم"
|
||||
@@ -763,14 +720,12 @@ noMaintainerInformationWarning: "لم تُضبط معلومات المدير"
|
||||
noBotProtectionWarning: "لم تضبط الحماية من الحسابات الآلية"
|
||||
configure: "اضبط"
|
||||
postToGallery: "انشر في المعرض"
|
||||
postToHashtag: "انشر بهذا الوسم"
|
||||
gallery: "المعرض"
|
||||
recentPosts: "المشاركات الحديثة"
|
||||
popularPosts: "المشاركات المتداولة"
|
||||
shareWithNote: "شاركه في ملاحظة"
|
||||
ads: "الإعلانات"
|
||||
expiration: "ينتهي استطلاع الرأي في"
|
||||
startingperiod: "ابدأ"
|
||||
memo: "تذكير"
|
||||
priority: "الأولوية"
|
||||
high: "عالية"
|
||||
@@ -796,18 +751,13 @@ translate: "ترجم"
|
||||
translatedFrom: "تُرجم من {x}"
|
||||
accountDeletionInProgress: "حذف الحساب جارٍ"
|
||||
usernameInfo: "الاسم الذي يميزك عن بافي مستخدمي هذا الخادم، يمكنك استخدام الحروف اللاتينية (a~z, A~Z) والأرقام (0~9) والشرطة السفلية (_). لا يمكنك تغييره بعد تسجيله."
|
||||
devMode: "وضع المُطوّر"
|
||||
keepCw: "أبقِ على تحذيرات المحتوى"
|
||||
pubSub: "حسابات Pub/Sub"
|
||||
lastCommunication: "آخر تواصل"
|
||||
resolved: "عولج"
|
||||
unresolved: "لم يعالج"
|
||||
breakFollow: "إلغاء الاشتراك"
|
||||
breakFollowConfirm: "أمتأكد من إزالة المتابِع ؟"
|
||||
itsOn: "مفعّل"
|
||||
itsOff: "معطّل"
|
||||
on: "مفعل"
|
||||
off: "معطل"
|
||||
emailRequiredForSignup: "عنوان البريد الإلكتروني إلزامي للتسجيل"
|
||||
unread: "غير مقروءة"
|
||||
filter: "رشّح"
|
||||
@@ -818,7 +768,8 @@ makeReactionsPublicDescription: "هذا سيجعل قائمة تفاعلاتك
|
||||
classic: "تقليدي"
|
||||
muteThread: "اكتم النقاش"
|
||||
unmuteThread: "ارفع الكتم عن النقاش"
|
||||
continueThread: "اعرض بقية النقاش"
|
||||
ffVisibility: "مرئية المتابِعين/المتابَعين"
|
||||
ffVisibilityDescription: "يسمح لك بتحديد من يمكنهم رؤية متابِعيك ومتابَعيك."
|
||||
deleteAccountConfirm: "سيحذف حسابك نهائيًا، أتريد المتابعة؟"
|
||||
incorrectPassword: "كلمة السر خاطئة."
|
||||
voteConfirm: "متيقِّن من تصويتك لـ {choice}؟"
|
||||
@@ -834,284 +785,28 @@ size: "الحجم"
|
||||
numberOfColumn: "عدد الأعمدة"
|
||||
searchByGoogle: "غوغل"
|
||||
mutePeriod: "مدة الكتم"
|
||||
period: "ينتهي استطلاع الرأي في"
|
||||
indefinitely: "أبدًا"
|
||||
tenMinutes: "10 دقائق"
|
||||
oneHour: "ساعة"
|
||||
oneDay: "يوم"
|
||||
oneWeek: "أسبوع"
|
||||
oneMonth: "شهر"
|
||||
failedToFetchAccountInformation: "تعذر جلب معلومات الحساب"
|
||||
cropImage: "اقتصاص الصورة"
|
||||
cropImageAsk: "أتريد اقتصاص هذه الصورة"
|
||||
cropYes: "اقتص"
|
||||
cropNo: "استخدمها كما هي"
|
||||
file: "الملفات"
|
||||
recentNHours: "آخر {n} ساعة"
|
||||
recentNDays: "آخر {n} أيام"
|
||||
noEmailServerWarning: "خادم البريد غير مضبوط."
|
||||
thereIsUnresolvedAbuseReportWarning: "توجد بلاغات غير معالجة."
|
||||
recommended: "مقترح"
|
||||
check: "التحقق"
|
||||
driveCapOverrideLabel: "غيّر حجم قرص التخزين لهذا المستخدم"
|
||||
driveCapOverrideCaption: "أعد الحجم إلى القيمة الافتراضية بإدخال 0 أو أقل."
|
||||
requireAdminForView: "لاستعراض هذه الصفحة وجب عليك الولوج كمدير."
|
||||
isSystemAccount: "حساب أنشأه النظام ويُدار من قِبله."
|
||||
typeToConfirm: "أدخل {x} للتأكيد"
|
||||
deleteAccount: "احذف الحساب"
|
||||
document: "التوثيق"
|
||||
numberOfPageCache: "عدد الصفحات المخزنة مؤقتًا"
|
||||
numberOfPageCacheDescription: "رفع الرقم سيسحن تجربة المستخدم لكن سيرفع استهلاك الذاكرة."
|
||||
logoutConfirm: "أتريد الخروج؟"
|
||||
lastActiveDate: "آخر استخدام"
|
||||
statusbar: "شريط الحالة"
|
||||
pleaseSelect: "حدد خيارًا"
|
||||
reverse: "اقلب"
|
||||
colored: "ملوّن"
|
||||
refreshInterval: "مهلة التحديث"
|
||||
label: "التسمية"
|
||||
type: "نوع"
|
||||
speed: "سرعة"
|
||||
slow: "بطيء"
|
||||
fast: "سريع"
|
||||
sensitiveMediaDetection: "التعرف على المحتوى الحساس"
|
||||
localOnly: "المحلي فقط"
|
||||
remoteOnly: "بُعدي فقط"
|
||||
failedToUpload: "فشل الرفع"
|
||||
cannotUploadBecauseInappropriate: "تعذر رفع الملف لوجود محتوى حساس فيه."
|
||||
cannotUploadBecauseNoFreeSpace: "تعذر رفع الملف لنقص مساحة التخزين."
|
||||
cannotUploadBecauseExceedsFileSizeLimit: "تعذر رفع الملف بسبب تجاوز حجمه للحد المسموح"
|
||||
beta: "بيتا"
|
||||
enableAutoSensitive: "تعيين تلقائي كمحتوى حساس NSFW"
|
||||
enableAutoSensitiveDescription: "عند الاستطاعة يسمح باكتشاف المحتوى حساس NSFW تلقائيًا في الوسائط باستخدام تعلم الآلة ووسمها تبعًا لذلك. قد يكون هذا الخيار مفعلا من جهة الخادم وسيعمل حتى وان عُطل."
|
||||
activeEmailValidationDescription: "يتحقق من صحة عنوان البريد الإلكتروني بشكل أكثر حزمًا وذلك عبر تحديد ما إذا كان عنوان بريد إلكتروني مؤقت وإمكانية التواصل معه. إذا لم يحدد هذا الخيار فسيتحقق من نسق عنوان البريد الإلكتروني."
|
||||
navbar: "شريط التنقل"
|
||||
shuffle: "خلط"
|
||||
account: "الحسابات"
|
||||
move: "أنقل"
|
||||
pushNotification: "إرسال الإشعارات"
|
||||
subscribePushNotification: "فعّل إرسال الإشعارات"
|
||||
unsubscribePushNotification: "عطل إرسال الإشعارات"
|
||||
pushNotificationAlreadySubscribed: "إرسال الإشعارات مفعل سلفًا"
|
||||
pushNotificationNotSupported: "متصفحك لا يدعم إرسال الإشعارات أو المثيل لا يدعمها."
|
||||
sendPushNotificationReadMessage: "احذف الإشعارات فور قراءتها"
|
||||
sendPushNotificationReadMessageCaption: "هذا قد يزيد من معدل استهلاك الطاقة لجهازك."
|
||||
windowMaximize: "املأ الشاشة"
|
||||
windowRestore: "استرجاع"
|
||||
caption: "التعليق التوضيحي"
|
||||
loggedInAsBot: "والج كآلي"
|
||||
tools: "أدوات"
|
||||
cannotLoad: "تعذر التحميل"
|
||||
numberOfProfileView: "مشاهدات الملف الشخصي"
|
||||
like: "أعجبني"
|
||||
unlike: "ألغِ الإعجاب"
|
||||
numberOfLikes: "الإعجابات"
|
||||
show: "المظهر"
|
||||
neverShow: "لا تظهره مجددًا"
|
||||
remindMeLater: "ربما لاحقا"
|
||||
didYouLikeMisskey: "هل أعجبك ميسكي؟"
|
||||
pleaseDonate: "يستخدم {host} البرمجية الحرة ميسكي. نتمنى أن تتبرعوا للمشروع مما سيسمح لنا متابعة تطويره!"
|
||||
roles: "الأدوار"
|
||||
role: "الدور"
|
||||
noRole: "لم يُعثر على دور"
|
||||
normalUser: "مستخدم عادي"
|
||||
undefined: "غير معرّف"
|
||||
assign: "أسند"
|
||||
unassign: "ألغ الإسناد"
|
||||
color: "اللون"
|
||||
manageCustomEmojis: "إدارة الإيموجي المخصصة"
|
||||
youCannotCreateAnymore: "وصلت لسقف الإنشاء."
|
||||
cannotPerformTemporary: "غير متاح مؤقتاً"
|
||||
invalidParamError: "معاملات غير صالحة"
|
||||
permissionDeniedError: "رُفضة العملية"
|
||||
preset: "إعدادات مسبقة"
|
||||
selectFromPresets: "اختر من الإعدادات المسبقة"
|
||||
achievements: "الإنجازات"
|
||||
gotInvalidResponseError: "استجابة غير متوقعة من الخادم"
|
||||
gotInvalidResponseErrorDescription: "يتعذر الوصول إلى الخادم أوأنه يُصان، رجاءً حاول لاحقًا."
|
||||
thisPostMayBeAnnoying: "هذا قد يزعج الآخرين."
|
||||
thisPostMayBeAnnoyingHome: "أنشر في الخط الزمني الرئيس"
|
||||
thisPostMayBeAnnoyingCancel: "ألغِ"
|
||||
internalServerError: "خطأ داخلي في الخادم"
|
||||
internalServerErrorDescription: "واجه الخادم خطأ غي متوقع."
|
||||
copyErrorInfo: "انسخ تفاصيل الخطأ"
|
||||
joinThisServer: "سجل في هذا المثيل"
|
||||
exploreOtherServers: "اعثر على مثيل آخر"
|
||||
disableFederationOk: "عطّل"
|
||||
invitationRequiredToRegister: "هذا المثيل للمدعوين فقط. لتسجيل فيه تحتاج رمزًا صالحًا."
|
||||
postToTheChannel: "انشر في قناة"
|
||||
cannotBeChangedLater: "لا يمكن تغييره لاحقًا."
|
||||
reactionAcceptance: "قبول التفاعلات"
|
||||
rolesAssignedToMe: "الأدوار المسندة إلي"
|
||||
resetPasswordConfirm: "هل تريد إعادة تعيين كلمة السر؟"
|
||||
license: "الرخصة"
|
||||
unfavoriteConfirm: "أتريد إزالتها من المفضلة؟"
|
||||
reactionsDisplaySize: "حجم التفاعلات"
|
||||
limitWidthOfReaction: "تصغير حجم التفاعلات"
|
||||
noteIdOrUrl: "معرف الملاحظة أو رابطها"
|
||||
video: "فيديو"
|
||||
videos: "فيديوهات"
|
||||
dataSaver: "موفر البيانات"
|
||||
accountMigration: "ترحيل الحساب"
|
||||
accountMoved: "نقل هذا المستخدم حسابه:"
|
||||
accountMovedShort: "رُحل هذا الحساب."
|
||||
operationForbidden: "عملية ممنوعة"
|
||||
forceShowAds: "أظهر الإعلانات التجارية دائما"
|
||||
reactionsList: "التفاعلات"
|
||||
renotesList: "إعادات النشر"
|
||||
notificationDisplay: "إشعارات"
|
||||
leftTop: "أعلى اليسار"
|
||||
rightTop: "أعلى اليمين"
|
||||
leftBottom: "أسفل اليسار"
|
||||
rightBottom: "أسفل اليمين"
|
||||
stackAxis: "اتجاه التكديس"
|
||||
vertical: "عمودي"
|
||||
horizontal: "جانبي"
|
||||
position: "الموضع"
|
||||
serverRules: "قوانين الخادم"
|
||||
pleaseConfirmBelowBeforeSignup: "رجاءً وافق على ما يلي قبل التسجيل."
|
||||
pleaseAgreeAllToContinue: "للمتابعة وافق على الحقول أعلاه."
|
||||
continue: "متابعة"
|
||||
preservedUsernames: "أسماء المستخدمين المحجوزة"
|
||||
preservedUsernamesDescription: "قائمة بأسماء المستخدمين المحجوزة كلٌ في سطر. لن يُقبل التسجيل بهذه الأسماء وستبقى محصورة على التسجيل اليدوي بواسطة المديرين. لن يتأثر المستخدمون الذين يملكون هذه الأسماء سلفًا."
|
||||
createNoteFromTheFile: "أنشئ ملاحظة من هذا الملف"
|
||||
archive: "الأرشيف"
|
||||
channelArchiveConfirmTitle: "أتريد أرشفت {name}؟"
|
||||
channelArchiveConfirmDescription: "لن يمكنك نشر ملاحظات في القناة المأرشفة ولن تظهر في قائمة القنوات ولا في نتائج البحث."
|
||||
thisChannelArchived: "أُرشفت هذه القناة."
|
||||
displayOfNote: "عرض الملاحظة"
|
||||
initialAccountSetting: "إعداد الملف الشخصي"
|
||||
youFollowing: "متابَع"
|
||||
preventAiLearning: "منع استخدام البيانات في تعليم الآلة"
|
||||
options: "خيارات"
|
||||
specifyUser: "مستخدم محدد"
|
||||
failedToPreviewUrl: "تتعذر المعاينة"
|
||||
update: "حدِّث"
|
||||
rolesThatCanBeUsedThisEmojiAsReaction: "الأدوار التي يُسمح لأصحابها استخدام هذا اإيموجي في اللتفاعل"
|
||||
rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription: "إذا لم تحدد دورًا يمكن للجميع استخدام هذا الإيموجي في التفاعل."
|
||||
rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "يجب أن تكون الأدوار علنية."
|
||||
cancelReactionConfirm: "أتريد حذف تفاعلك؟"
|
||||
changeReactionConfirm: "أتريد تعديل تفاعلك؟"
|
||||
later: "لاحقاً"
|
||||
goToMisskey: "لميسكي"
|
||||
additionalEmojiDictionary: "قواميس إيموجي إضافية"
|
||||
installed: "مُثبت"
|
||||
enableServerMachineStats: "نشر إحصائيات عتاد الخادم"
|
||||
turnOffToImprovePerformance: "تفعيله قد يزيد الأداء."
|
||||
createInviteCode: "ولِّد دعوة"
|
||||
inviteCodeCreated: "ولِّدت دعوة"
|
||||
inviteLimitExceeded: "وصلتَ لحد عدد الدعوات المسموح لك توليدها."
|
||||
createLimitRemaining: "حد عدد الدعوات: {limit} دعوة"
|
||||
expirationDate: "تاريخ انتهاء الصلاحية"
|
||||
noExpirationDate: "لا نهاية لصلاحيتها"
|
||||
inviteCodeUsedAt: "اُستخدم رمز الدعوة في"
|
||||
registeredUserUsingInviteCode: "اِستخدم رمز الدعوة"
|
||||
unused: "غير مستعمَل"
|
||||
expired: "منتهية صلاحيته"
|
||||
icon: "الصورة الرمزية"
|
||||
replies: "رد"
|
||||
renotes: "أعد النشر"
|
||||
flip: "اقلب"
|
||||
lastNDays: "آخر {n} أيام"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "نجح إنشاء حسابك!"
|
||||
letsStartAccountSetup: "إذا كنت جديدًا لنعدّ حسابك الشخصي."
|
||||
letsFillYourProfile: "أولًا لنعد ملفك الشخصي."
|
||||
profileSetting: "إعدادات الملف الشخصي"
|
||||
privacySetting: "إعدادات الخصوصية"
|
||||
theseSettingsCanEditLater: "يمكنك تغيير هذه الإعدادات لاحقًا."
|
||||
skipAreYouSure: "أتريد تخطي إعداد الملف الشخصي؟"
|
||||
laterAreYouSure: "أتريد إعداد الملف الشخصي لاحقًا؟"
|
||||
_serverRules:
|
||||
description: "مجموعة من القواعد لعرضها عند التسجيل، من المستحسن كتابة ملخصٍ للشروط الخدمة."
|
||||
_accountMigration:
|
||||
moveFrom: "انقل حسابًا آخر لهذا الحساب"
|
||||
moveFromLabel: "الحساب الأصلي #{n}"
|
||||
moveTo: "انقل هذا الحساب لحساب آخر"
|
||||
moveToLabel: "الحساب الوجهة:"
|
||||
moveCannotBeUndone: "لا يمكن التراجع عن نقل الحساب."
|
||||
movedTo: "الحساب الوجهة:"
|
||||
_achievements:
|
||||
_types:
|
||||
_notes1:
|
||||
description: "انشر ملاحظتك الأولى"
|
||||
flavor: "تمتع باستخدام ميسكي!"
|
||||
_notes10:
|
||||
title: "بعض الملاحظات"
|
||||
description: "انشر 10 ملاحظات"
|
||||
_notes100:
|
||||
title: "كثير من الملاحظات"
|
||||
description: "انشر 100 ملاحظة"
|
||||
_notes500:
|
||||
description: "انشر 500 ملاحظة"
|
||||
_notes1000:
|
||||
title: "جبل ملاحظات"
|
||||
description: "انشر 1000 ملاحظة"
|
||||
_notes5000:
|
||||
description: "انشر 5000 ملاحظة"
|
||||
_notes10000:
|
||||
description: "انشر 10000 ملاحظة"
|
||||
_notes20000:
|
||||
title: "أريد...ملاحظات...أكثر"
|
||||
description: "انشر 20000 ملاحظة"
|
||||
_notes30000:
|
||||
title: "ملاحظات وملاحظات وملاحظات"
|
||||
description: "انشر 30000 ملاحظة"
|
||||
_notes40000:
|
||||
title: "مصنع ملاحظات"
|
||||
description: "انشر 40000 ملاحظة"
|
||||
_notes50000:
|
||||
title: "كوكب ملاحظات"
|
||||
description: "انشر 50000 ملاحظة"
|
||||
_notes60000:
|
||||
title: "نجم ملاحظات"
|
||||
description: "انشر 60000 ملاحظة"
|
||||
_notes70000:
|
||||
title: "ثقب أسود للملاحظات"
|
||||
description: "انشر 70000 ملاحظة"
|
||||
_notes80000:
|
||||
title: "مجرة ملاحظات"
|
||||
description: "انشر 80000 ملاحظة"
|
||||
_notes90000:
|
||||
title: "كوْن ملاحظات"
|
||||
description: "انشر 90000 ملاحظة"
|
||||
_notes100000:
|
||||
title: "كل ملاحظاتك لنا"
|
||||
description: "انشر 100000 ملاحظة"
|
||||
flavor: "حقًا لديك الكثير من القصص"
|
||||
_login3:
|
||||
title: "مبتدأ I"
|
||||
_noteFavorited1:
|
||||
description: "فضًِل ملاحظتك الأولى"
|
||||
_myNoteFavorited1:
|
||||
title: "ساعٍ للنجوم"
|
||||
description: "أعجب شخص آخر بإحدى ملاحظاتك"
|
||||
_profileFilled:
|
||||
title: "مستعد"
|
||||
description: "أعدّ حسابك"
|
||||
_markedAsCat:
|
||||
title: "أنا قط"
|
||||
_role:
|
||||
new: "دور جديد"
|
||||
edit: "حرر الأدوار"
|
||||
name: "اسم الدور"
|
||||
description: "وصف الدور"
|
||||
permission: "أذونات الدور"
|
||||
assignTarget: "نوع الإسناد"
|
||||
condition: "الشرط"
|
||||
options: "خيارات"
|
||||
policies: "السياسة العامة"
|
||||
priority: "الأولوية"
|
||||
_priority:
|
||||
low: "منخفضة"
|
||||
middle: "متوسط"
|
||||
high: "عالية"
|
||||
_options:
|
||||
canManageCustomEmojis: "إدارة الإيموجي المخصصة"
|
||||
pinMax: "حد عدد الملاحظات المثبتة"
|
||||
_condition:
|
||||
isLocal: "مستخدم محلي"
|
||||
isRemote: "مستخدم بعيد"
|
||||
_emailUnavailable:
|
||||
used: "هذا البريد الإلكتروني مستخدم"
|
||||
format: "صيغة البريد الإلكتروني غير صالحة"
|
||||
@@ -1154,10 +849,6 @@ _plugin:
|
||||
install: "ثبّت إضافات"
|
||||
installWarn: "رجاءً لا تثبت إضافات غير موثوقة."
|
||||
manage: "إدارة الإضافات"
|
||||
viewSource: "اظهر المصدر"
|
||||
_preferencesBackups:
|
||||
createdAt: "تم إنشاؤه: {date} {time}"
|
||||
updatedAt: "آخر تحديث: {date} {time}"
|
||||
_registry:
|
||||
scope: "الحيّز"
|
||||
key: "مفتاح"
|
||||
@@ -1173,6 +864,10 @@ _aboutMisskey:
|
||||
donate: "تبرع لميسكي"
|
||||
morePatrons: "نحن نقدر الدعم الذي قدمه العديد من الأشخاص الذين لم نذكرهم. شكرًا لكم 🥰"
|
||||
patrons: "الداعمون"
|
||||
_nsfw:
|
||||
respect: "اخف الوسائط ذات المحتوى الحساس"
|
||||
ignore: "اعرض الوسائط ذات المحتوى الحساس"
|
||||
force: "اخف كل الوسائط"
|
||||
_instanceTicker:
|
||||
none: "لا تظهره بتاتًا"
|
||||
remote: "أظهر للمستخدمين البِعاد"
|
||||
@@ -1198,6 +893,11 @@ _wordMute:
|
||||
muteWords: "الكلمات المحظورة"
|
||||
muteWordsDescription: "افصل بينهم بمسافة لاستخدام معامل \"و\" أو بسطر لاستخدام معامل \"أو\"."
|
||||
muteWordsDescription2: "احصر الكلمات المفتاحية بين بين شرطتين مائلتين لاستخدامها كتعابير نمطية"
|
||||
softDescription: "اخف الملاحظات التي تستوف الشروط من الخيط الزمني."
|
||||
hardDescription: "اخف الملاحظات التي تستوف الشروط من الخيط الزمني.بالإضافة إلى أن هذه الملاحظات ستبقى مخفية حتى وإن تغيرت الشروط."
|
||||
soft: "لينة"
|
||||
hard: "قاسية"
|
||||
mutedNotes: "الملاحظات المكتومة"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "هذه سيحجب كل ملاحظات الخوادم المحجوبة ومشاركاتها والردود على تلك الملاحظات حتى وإن كانت من خادم غير محجوب."
|
||||
instanceMuteDescription2: "مدخلة لكل سطر"
|
||||
@@ -1257,6 +957,8 @@ _sfx:
|
||||
note: "الملاحظات"
|
||||
noteMy: "ملاحظتي"
|
||||
notification: "الإشعارات"
|
||||
chat: "المحادثة"
|
||||
chatBg: "المحادثة (الخلفية)"
|
||||
antenna: "الهوائيات"
|
||||
channel: "إشعارات القنات"
|
||||
_ago:
|
||||
@@ -1275,6 +977,29 @@ _time:
|
||||
minute: "د"
|
||||
hour: "سا"
|
||||
day: "ي"
|
||||
_tutorial:
|
||||
title: "كيف تستخدم Misskey"
|
||||
step1_1: "مرحبًا!"
|
||||
step1_2: "تدعى هذه الصفحة 'الخيط الزمني' وهي تحوي ملاحظات الأشخاص الذي تتابعهم مرتبة حسب تاريخ نشرها."
|
||||
step1_3: "خيطك الزمني فارغ حاليًا بما أنك لا تتابع أي شخص ولم تنشر أي ملاحظة."
|
||||
step2_1: "لننهي إعداد ملفك الشخصي قبل كتابة ملاحظة أو متابعة أشخاص."
|
||||
step2_2: "أعطاء معلومات عن شخصيتك يمنح من له نفس إهتماماتك فرصة متابعتك والتفاعل مع ملاحظاتك."
|
||||
step3_1: "هل أنهيت إعداد حسابك؟"
|
||||
step3_2: "إذا تاليًا لتنشر ملاحظة. أنقر على أيقونة القلم في أعلى الشاشة"
|
||||
step3_3: "املأ النموذج وانقر الزرّ الموجود في أعلى اليمين للإرسال."
|
||||
step3_4: "ليس لديك ما تقوله؟ إذا اكتب \"بدأتُ استخدم ميسكي\"."
|
||||
step4_1: "هل نشرت ملاحظتك الأولى؟"
|
||||
step4_2: "مرحى! يمكنك الآن رؤية ملاحظتك في الخيط الزمني."
|
||||
step5_1: "والآن، لنجعل الخيط الزمني أكثر حيوية وذلك بمتابعة بعض المستخدمين."
|
||||
step5_2: "تعرض صفحة {features} الملاحظات المتداولة في هذا المثيل ويتيح لك {Explore} العثور على المستخدمين الرائدين. اعثر على الأشخاص الذين يثيرون إهتمامك وتابعهم!"
|
||||
step5_3: "لمتابعة مستخدمين ادخل ملفهم الشخصي بالنقر على صورتهم الشخصية ثم اضغط زر 'تابع'."
|
||||
step5_4: "إذا كان لدى المستخدم رمز قفل بجوار اسمه ، وجب عليك انتظاره ليقبل طلب المتابعة يدويًا."
|
||||
step6_1: "الآن ستتمكن من رؤية ملاحظات المستخدمين المتابَعين في الخيط الزمني."
|
||||
step6_2: "يمكنك التفاعل بسرعة مع الملاحظات عن طريق إضافة \"تفاعل\"."
|
||||
step6_3: "لإضافة تفاعل لملاحظة ، انقر فوق علامة \"+\" أسفل للملاحظة واختر الإيموجي المطلوب."
|
||||
step7_1: "مبارك ! أنهيت الدورة التعليمية الأساسية لاستخدام ميسكي."
|
||||
step7_2: "إذا أردت معرفة المزيد عن ميسكي زر {help}."
|
||||
step7_3: "حظًا سعيدًا واستمتع بوقتك مع ميسكي! 🚀"
|
||||
_2fa:
|
||||
alreadyRegistered: "سجلت سلفًا جهازًا للاستيثاق بعاملين."
|
||||
step1: "أولًا ثبّت تطبيق استيثاق على جهازك (مثل {a} و{b})."
|
||||
@@ -1352,7 +1077,6 @@ _widgets:
|
||||
onlineUsers: "المتّصلون"
|
||||
jobQueue: "قائمة الانتظار"
|
||||
serverMetric: "إحصائيات الخادم"
|
||||
userList: "قائمة المستخدمين"
|
||||
_userList:
|
||||
chooseList: "اختر قائمة"
|
||||
_cw:
|
||||
@@ -1416,8 +1140,6 @@ _profile:
|
||||
changeBanner: "غيّر اللافتة"
|
||||
_exportOrImport:
|
||||
allNotes: "كل الملاحظات"
|
||||
favoritedNotes: " الملاحظات المفضلة"
|
||||
clips: "مِشبك"
|
||||
followingList: "المتابَعون"
|
||||
muteList: "المستخدمون المكتومون"
|
||||
blockingList: "المستخدمون المحجوبون"
|
||||
@@ -1436,8 +1158,6 @@ _charts:
|
||||
notesTotal: "إجمالي الملاحظات"
|
||||
filesIncDec: "تباين عدد الملفات"
|
||||
filesTotal: "العدد الإجمالي للملفات"
|
||||
storageUsageIncDec: "التباين في استغلال مساحة التخزين"
|
||||
storageUsageTotal: "اجمالي مساحة التخزين المستغلة"
|
||||
_instanceCharts:
|
||||
requests: "الطلبات"
|
||||
users: "تباين عدد المستخدمين"
|
||||
@@ -1483,7 +1203,7 @@ _pages:
|
||||
url: "رابط الصفحة"
|
||||
summary: "ملخص الصفحة"
|
||||
alignCenter: "توسيط العناصر"
|
||||
hideTitleWhenPinned: "اخف عنوان الصفحة عند تثبيتها في ملف الشخصي"
|
||||
hideTitleWhenPinned: "اخف عنوان الصفحة عند تدبيسها في ملف الشخصي"
|
||||
font: "الخط"
|
||||
fontSerif: "Serif"
|
||||
fontSansSerif: "Sans Serif"
|
||||
@@ -1498,7 +1218,7 @@ _pages:
|
||||
text: "نص"
|
||||
textarea: "حقل نصي"
|
||||
section: "قسم"
|
||||
image: "صور"
|
||||
image: "الصور"
|
||||
button: "زرّ"
|
||||
note: "ملاحظة مضمّنة"
|
||||
_note:
|
||||
@@ -1513,22 +1233,22 @@ _notification:
|
||||
fileUploaded: "نجح رفع الملف"
|
||||
youGotMention: "{name} أشار إليك"
|
||||
youGotReply: "ردّ عليك {name}"
|
||||
youGotQuote: "اقتبس {name} منشورك"
|
||||
youRenoted: "أعاد {name} نشر منشورك"
|
||||
youGotQuote: "اقتبس منك {name}"
|
||||
youRenoted: "إعادت نشر من {name}"
|
||||
youWereFollowed: "يتابعك"
|
||||
youReceivedFollowRequest: "تلقيتَ طلب متابعة"
|
||||
yourFollowRequestAccepted: "قُبل طلب المتابعة"
|
||||
pollEnded: "انتهى الاستطلاع"
|
||||
pollEnded: "ظهرت نتائج الاستطلاع"
|
||||
unreadAntennaNote: "هوائي {name}"
|
||||
_types:
|
||||
all: "الكل"
|
||||
follow: "متابِعون جدد"
|
||||
mention: "الإشارات"
|
||||
reply: "الردود"
|
||||
renote: "أعاد النشر"
|
||||
renote: "أعد النشر"
|
||||
quote: "الاقتباسات"
|
||||
reaction: "التفاعل"
|
||||
receiveFollowRequest: "طلبات المتابعة"
|
||||
reaction: "التفاعلات"
|
||||
receiveFollowRequest: "طلبات المتابعة المتلقاة"
|
||||
followRequestAccepted: "طلبات المتابعة المقبولة"
|
||||
app: "إشعارات التطبيقات المرتبطة"
|
||||
_actions:
|
||||
@@ -1536,35 +1256,21 @@ _notification:
|
||||
reply: "رد"
|
||||
renote: "أعد النشر"
|
||||
_deck:
|
||||
alwaysShowMainColumn: "أظهر العمود الأساسي دائمًا"
|
||||
columnAlign: "محاذاة الأعمدة"
|
||||
addColumn: "إضافة عمود"
|
||||
swapLeft: "التحريك إلى اليسار"
|
||||
swapRight: "التحريك إلى اليمين"
|
||||
swapUp: "التحريك إلى الأعلى"
|
||||
swapDown: "التحريك إلى الأسفل"
|
||||
profile: "حسابي الشخصي"
|
||||
newProfile: "ملف تعريفي جديد"
|
||||
deleteProfile: "حذف الملف التعريفي"
|
||||
alwaysShowMainColumn: "أظهر العمود الرئيسي دائمًا"
|
||||
columnAlign: "حاذِ الأعمدة"
|
||||
addColumn: "أضف عمودًا"
|
||||
swapLeft: "حرّك لليسار"
|
||||
swapRight: "حرّك لليمين"
|
||||
swapUp: "حرّك لأعلى"
|
||||
swapDown: "حرّك لأسفل"
|
||||
profile: "الملف الشخصي"
|
||||
_columns:
|
||||
main: "الرئيسية"
|
||||
widgets: "التطبيقات المُصغّرة"
|
||||
main: "الرئيسي"
|
||||
widgets: "الودجات"
|
||||
notifications: "الإشعارات"
|
||||
tl: "الخط الزمني"
|
||||
tl: "الخيط الزمني"
|
||||
antenna: "الهوائيات"
|
||||
list: "القوائم"
|
||||
channel: "القنوات"
|
||||
mentions: "الإشارات"
|
||||
direct: "مباشرة"
|
||||
_webhookSettings:
|
||||
name: "الاسم"
|
||||
active: "مُفعّل"
|
||||
_events:
|
||||
reaction: "عند التفاعل"
|
||||
_moderationLogTypes:
|
||||
suspend: "علِق"
|
||||
resetPassword: "أعد تعيين كلمتك السرية"
|
||||
createInvitation: "ولِّد دعوة"
|
||||
_reversi:
|
||||
total: "المجموع"
|
||||
|
||||
|
@@ -2,7 +2,6 @@
|
||||
_lang_: "বাংলা"
|
||||
headlineMisskey: "নোট ব্যাবহার করে সংযুক্ত নেটওয়ার্ক"
|
||||
introMisskey: "স্বাগতম! মিসকি একটি ওপেন সোর্স, ডিসেন্ট্রালাইজড মাইক্রোব্লগিং পরিষেবা। \n\"নোট\" তৈরির মাধ্যমে যা ঘটছে তা সবার সাথে শেয়ার করুন 📡\n\"রিঅ্যাকশন\" গুলির মাধ্যমে যেকোনো নোট সম্পর্কে আপনার অনুভূতি ব্যাক্ত করতে পারেন 👍\nএকটি নতুন দুনিয়া ঘুরে দেখুন 🚀\n"
|
||||
poweredByMisskeyDescription: "{name} হল ওপেন সোর্স প্ল্যাটফর্ম <b>Misskey</b>-এর সার্ভারগুলির একটি৷"
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "খুঁজুন"
|
||||
notifications: "বিজ্ঞপ্তি"
|
||||
@@ -13,14 +12,12 @@ fetchingAsApObject: "ফেডিভার্স থেকে খবর আন
|
||||
ok: "ঠিক"
|
||||
gotIt: "বুঝেছি"
|
||||
cancel: "বাতিল"
|
||||
noThankYou: "না, ধন্যবাদ"
|
||||
enterUsername: "ইউজারনেম লিখুন"
|
||||
renotedBy: "{user} রিনোট করেছেন"
|
||||
noNotes: "কোন নোট নেই"
|
||||
noNotifications: "কোনো বিজ্ঞপ্তি নেই"
|
||||
instance: "ইন্সট্যান্স"
|
||||
settings: "সেটিংস"
|
||||
notificationSettings: "বিজ্ঞপ্তির সেটিংস"
|
||||
basicSettings: "সাধারণ সেটিংস"
|
||||
otherSettings: "অন্যান্য সেটিংস"
|
||||
openInWindow: "নতুন উইন্ডোতে খুলা"
|
||||
@@ -45,20 +42,12 @@ pin: "পিন করা"
|
||||
unpin: "পিন সরান"
|
||||
copyContent: "বিষয়বস্তু কপি করুন"
|
||||
copyLink: "লিঙ্ক কপি করুন"
|
||||
copyLinkRenote: "রিনোট লিঙ্ক কপি করুন"
|
||||
delete: "মুছুন"
|
||||
deleteAndEdit: "মুছুন এবং সম্পাদনা করুন"
|
||||
deleteAndEditConfirm: "আপনি কি এই নোটটি মুছে এটি সম্পাদনা করার বিষয়ে নিশ্চিত? আপনি এটির সমস্ত রিঅ্যাকশন, রিনোট এবং জবাব হারাবেন।"
|
||||
addToList: "লিস্ট এ যোগ করুন"
|
||||
addToAntenna: "অ্যান্টেনা এ যোগ করুন"
|
||||
sendMessage: "একটি বার্তা পাঠান"
|
||||
copyRSS: "RSS কপি করুন"
|
||||
copyUsername: "ব্যবহারকারীর নাম কপি করুন"
|
||||
copyUserId: "ব্যবহারকারীর ID কপি করুন"
|
||||
copyNoteId: "নোটের ID কপি করুন"
|
||||
copyFileId: "ফাইল ID কপি করুন"
|
||||
copyFolderId: "ফোল্ডার ID কপি করুন"
|
||||
copyProfileUrl: "প্রোফাইল URL কপি করুন"
|
||||
searchUser: "ব্যবহারকারী খুঁজুন..."
|
||||
reply: "জবাব"
|
||||
loadMore: "আরও দেখুন"
|
||||
@@ -111,8 +100,6 @@ renoted: "রিনোট করা হয়েছে"
|
||||
cantRenote: "এই নোটটি রিনোট করা যাবে না।"
|
||||
cantReRenote: "রিনোটকে রিনোট করা যাবে না।"
|
||||
quote: "উদ্ধৃতি"
|
||||
inChannelRenote: "চ্যানেলে রিনোট"
|
||||
inChannelQuote: "চ্যানেলে উদ্ধৃতি"
|
||||
pinnedNote: "পিন করা নোট"
|
||||
pinned: "পিন করা"
|
||||
you: "আপনি"
|
||||
@@ -121,10 +108,7 @@ sensitive: "সংবেদনশীল বিষয়বস্তু"
|
||||
add: "যুক্ত করুন"
|
||||
reaction: "প্রতিক্রিয়া"
|
||||
reactions: "প্রতিক্রিয়া"
|
||||
emojiPicker: "ইমোজি পিকার"
|
||||
pinnedEmojisForReactionSettingDescription: "রিঅ্যাকশন দেয়ার সময় আপনি ইমোজিটিকে পিন করা এবং প্রদর্শিত হওয়ার জন্য সেট করতে পারেন।"
|
||||
pinnedEmojisSettingDescription: "ইমোজি ইনপুট দেয়ার সময় আপনি ইমোজিটিকে পিন করা এবং প্রদর্শিত হওয়ার জন্য সেট করতে পারেন।"
|
||||
emojiPickerDisplay: "পিকার ডিসপ্লে"
|
||||
reactionSetting: "রিঅ্যাকশন পিকারে যেসকল প্রতিক্রিয়া দেখানো হবে"
|
||||
reactionSettingDescription2: "পুনরায় সাজাতে টেনে আনুন, মুছতে ক্লিক করুন, যোগ করতে + টিপুন।"
|
||||
rememberNoteVisibility: "নোটের দৃশ্যমান্যতার সেটিংস মনে রাখুন"
|
||||
attachCancel: "অ্যাটাচমেন্ট সরান "
|
||||
@@ -268,12 +252,12 @@ noMoreHistory: "আর কোন ইতিহাস নেই"
|
||||
startMessaging: "চ্যাট শুরু করুন"
|
||||
nUsersRead: "{n} জন পড়েছেন"
|
||||
agreeTo: "{0} এর প্রতি আমি সম্মত"
|
||||
tos: "পরিষেবার শর্তাদি"
|
||||
start: "শুরু করুন"
|
||||
home: "মূল পাতা"
|
||||
remoteUserCaution: "এই ব্যাবহারকারী রিমোট ইন্সট্যান্সের, নিম্নক্ত তথ্য অসম্পূর্ণ হতে পারে।"
|
||||
activity: "কার্যকলাপ"
|
||||
images: "ছবি"
|
||||
image: "ছবি"
|
||||
birthday: "জন্মদিন"
|
||||
yearsOld: "{age} বছর"
|
||||
registeredDate: "যোগদানের তারিখ"
|
||||
@@ -310,6 +294,7 @@ copyUrl: "URL কপি করুন"
|
||||
rename: "পুনঃনামকরণ"
|
||||
avatar: "প্রোফাইল ছবি"
|
||||
banner: "ব্যানার"
|
||||
nsfw: "সংবেদনশীল বিষয়বস্তু"
|
||||
whenServerDisconnected: "সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হয়ে গেলে"
|
||||
disconnectedFromServer: "সার্ভার থেকে সংযোগ বিচ্ছিন্ন হয়েছে"
|
||||
reload: "আবার লোড করুন"
|
||||
@@ -344,6 +329,7 @@ invite: "আমন্ত্রণ"
|
||||
driveCapacityPerLocalAccount: "প্রত্যেক স্থানীয় ব্যাবহারকারীর জন্য ড্রাইভের জায়গা"
|
||||
driveCapacityPerRemoteAccount: "প্রত্যেক রিমোট ব্যাবহারকারীর জন্য ড্রাইভের জায়গা"
|
||||
inMb: "মেগাবাইটে লিখুন"
|
||||
iconUrl: "আইকনের URL (ফ্যাভিকন, ইত্যাদি)"
|
||||
bannerUrl: "ব্যানার ছবির URL"
|
||||
backgroundImageUrl: "পটভূমির চিত্রের URL"
|
||||
basicInfo: "আপনার ব্যক্তিগত তথ্য"
|
||||
@@ -357,8 +343,6 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "hCaptcha চালু করুন"
|
||||
hcaptchaSiteKey: "সাইট কী"
|
||||
hcaptchaSecretKey: "সিক্রেট কী"
|
||||
mcaptchaSiteKey: "সাইট কী"
|
||||
mcaptchaSecretKey: "সিক্রেট কী"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "reCAPTCHA চালু করুন"
|
||||
recaptchaSiteKey: "সাইট কী"
|
||||
@@ -411,6 +395,7 @@ share: "শেয়ার"
|
||||
notFound: "পাওয়া যায়নি"
|
||||
notFoundDescription: "এই URL-এর সাথে সম্পর্কিত কোনো পৃষ্ঠা নেই।"
|
||||
uploadFolder: "আপলোডের জন্য ডিফল্ট ফোল্ডার"
|
||||
cacheClear: "ক্যাশ পরিষ্কার করুন"
|
||||
markAsReadAllNotifications: "সমস্ত বিজ্ঞপ্তিগুলি পঠিত হিসাবে চিহ্নিত করুন"
|
||||
markAsReadAllUnreadNotes: "সমস্ত নোটগুলি পঠিত হিসাবে চিহ্নিত করুন"
|
||||
markAsReadAllTalkMessages: "সমস্ত মেসেজ পঠিত হিসাবে চিহ্নিত করুন"
|
||||
@@ -577,6 +562,7 @@ tokenRequested: "অ্যাকাউন্টে অ্যাক্সেস
|
||||
pluginTokenRequestedDescription: "এই প্লাগইনটি এখানে দেওয়া অনুমুতিসমূহ ব্যাবহার করবে"
|
||||
notificationType: "বিজ্ঞপ্তির ধরন"
|
||||
edit: "সম্পাদনা"
|
||||
useStarForReactionFallback: "রিঅ্যাকশনের ইমোজি না জানলে ★ ব্যবহার করুন"
|
||||
emailServer: "ইমেইল সার্ভার"
|
||||
enableEmail: "ইমেইল বিতরণ চালু করুন"
|
||||
emailConfigInfo: "আপনার ইমেল ঠিকানা নিশ্চিত করতে এবং আপনার পাসওয়ার্ড পুনরায় সেট করতে ব্যবহৃত হয়"
|
||||
@@ -644,7 +630,6 @@ createNew: "নতুন"
|
||||
optional: "প্রয়োজনীয় নয়"
|
||||
createNewClip: "নতুন ক্লিপ তৈরি করুন"
|
||||
public: "সর্বজনীন"
|
||||
private: "ব্যাক্তিগত"
|
||||
i18nInfo: "Misskey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।"
|
||||
manageAccessTokens: "অ্যাক্সেস টোকেন পরিচালনা করুন"
|
||||
accountInfo: "অ্যাকাউন্টের তথ্য"
|
||||
@@ -812,6 +797,8 @@ makeReactionsPublicDescription: "আপনার পূর্ববর্তী
|
||||
classic: "ক্লাসিক"
|
||||
muteThread: "থ্রেড মিউট করুন"
|
||||
unmuteThread: "থ্রেড আনমিউট করুন"
|
||||
ffVisibility: "অনুসরণ/অনুসরণকারীদের দৃশ্যমান্যতা"
|
||||
ffVisibilityDescription: "আপনি কাকে অনুসরণ করেন এবং কে আপনাকে অনুসরণ করে, সেটা কারা দেখতে পাবে তা নির্ধারণ করে।"
|
||||
continueThread: "আরো থ্রেড দেখুন"
|
||||
deleteAccountConfirm: "আপনার অ্যাকাউন্ট মুছে ফেলা হবে। ঠিক আছে?"
|
||||
incorrectPassword: "আপনার দেওয়া পাসওয়ার্ডটি ভুল।"
|
||||
@@ -832,7 +819,6 @@ instanceDefaultLightTheme: "ইন্সট্যান্সের ডিফল
|
||||
instanceDefaultDarkTheme: "ইন্সট্যান্সের ডিফল্ট ডার্ক থিম"
|
||||
instanceDefaultThemeDescription: "অবজেক্ট ফরম্যাটে থিম কোড লিখুন"
|
||||
mutePeriod: "মিউটের সময়কাল"
|
||||
period: "পোলের সময়সীমা"
|
||||
indefinitely: "অনির্দিষ্ট"
|
||||
tenMinutes: "১০ মিনিট"
|
||||
oneHour: "১ ঘণ্টা"
|
||||
@@ -850,12 +836,6 @@ account: "অ্যাকাউন্টগুলি"
|
||||
like: "পছন্দ করা"
|
||||
show: "প্রদর্শন"
|
||||
color: "রং"
|
||||
horizontal: "পাশে"
|
||||
youFollowing: "অনুসরণ করা হচ্ছে"
|
||||
icon: "প্রোফাইল ছবি"
|
||||
replies: "জবাব"
|
||||
renotes: "রিনোট"
|
||||
flip: "উল্টান"
|
||||
_role:
|
||||
priority: "অগ্রাধিকার"
|
||||
_priority:
|
||||
@@ -905,7 +885,6 @@ _plugin:
|
||||
install: "প্লাগইন ইন্সটল করুন"
|
||||
installWarn: "অবিশ্বস্ত প্লাগইন ইনস্টল করবেন না।"
|
||||
manage: "প্লাগইন ম্যানেজ করুন"
|
||||
viewSource: "উৎস দেখুন"
|
||||
_registry:
|
||||
scope: "স্কোপ"
|
||||
key: "কী"
|
||||
@@ -921,6 +900,10 @@ _aboutMisskey:
|
||||
donate: "Misskey তে দান করুন"
|
||||
morePatrons: "আরও অনেকে আমাদের সাহায্য করছেন। তাদের সবাইকে ধন্যবাদ 🥰"
|
||||
patrons: "সমর্থনকারী"
|
||||
_nsfw:
|
||||
respect: "স্পর্শকাতর মিডিয়া লুকান"
|
||||
ignore: "স্পর্শকাতর মিডিয়া লুকাবেন না"
|
||||
force: "সকল মিডিয়া লুকান"
|
||||
_instanceTicker:
|
||||
none: "দেখাবেন না"
|
||||
remote: "রিমোট ব্যাবহারকারীদের জন্য দেখান"
|
||||
@@ -948,6 +931,11 @@ _wordMute:
|
||||
muteWords: "নিঃশব্দ করা শব্দগুলি"
|
||||
muteWordsDescription: "স্পেস দিয়ে আলাদা করলে AND শর্ত তৈরি হবে এবং আলাদা লাইনে লিখলে OR শর্ত তৈরি হবে।"
|
||||
muteWordsDescription2: "রেগুলার এক্সপ্রেশন ব্যবহার করতে স্ল্যাশ দিয়ে কীওয়ার্ডকে ঘিরে রাখুন।"
|
||||
softDescription: "টাইমলাইন থেকে নির্দিষ্ট শর্তানুযায়ী নোট লুকিয়ে রাখে।"
|
||||
hardDescription: "নির্দিষ্ট শর্তানুযায়ী নোটগুলিকে টাইমলাইন থেকে বাদ দেয়। আপনি শর্ত পরিবর্তন করলেও যে নোটগুলি যোগ করা হয়নি সেগুলি বাদ দেওয়া হবে।"
|
||||
soft: "নমনীয়"
|
||||
hard: "কঠোর"
|
||||
mutedNotes: "মিউট করা নোটগুলি"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "কনফিগার করা ইন্সট্যান্সের সব নোট এবং রিনোট মিউট করুন, মিউট করা ইন্সট্যান্সের ব্যবহারকারীদের উত্তর সহ।"
|
||||
instanceMuteDescription2: "প্রতিটিকে আলাদা লাইনে লিখুন"
|
||||
@@ -1011,6 +999,9 @@ _theme:
|
||||
infoFg: "তথ্যের পাঠ্য"
|
||||
infoWarnBg: "ওয়ার্নিং এর পটভূমি"
|
||||
infoWarnFg: "ওয়ার্নিং এর পাঠ্য"
|
||||
cwBg: "CW বাটনের পটভূমি"
|
||||
cwFg: "CW বাটনের পাঠ্য"
|
||||
cwHoverBg: "CW বাটনের পটভূমি (হভার)"
|
||||
toastBg: "বিজ্ঞপ্তির পটভূমি"
|
||||
toastFg: "বিজ্ঞপ্তির পাঠ্য"
|
||||
buttonBg: "বাটনের পটভূমি"
|
||||
@@ -1028,6 +1019,8 @@ _sfx:
|
||||
note: "নোটগুলি"
|
||||
noteMy: "নোট (আপনার)"
|
||||
notification: "বিজ্ঞপ্তি"
|
||||
chat: "চ্যাট"
|
||||
chatBg: "চ্যাট (ব্যাকগ্রাউন্ড)"
|
||||
antenna: "অ্যান্টেনাগুলি"
|
||||
channel: "চ্যানেলের বিজ্ঞপ্তি"
|
||||
_ago:
|
||||
@@ -1046,14 +1039,37 @@ _time:
|
||||
minute: "মিনিট"
|
||||
hour: "ঘণ্টা"
|
||||
day: "দিন"
|
||||
_tutorial:
|
||||
title: "Misskey কিভাবে ব্যাবহার করবেন"
|
||||
step1_1: "স্বাগতম!"
|
||||
step1_2: "এই স্ক্রীনটিকে \"টাইমলাইন\" বলা হয় এবং কালানুক্রমিক ক্রমে আপনার এবং আপনি যাদের \"অনুসরণ করেন\" তাদের \"নোটগুলি\" দেখায়৷"
|
||||
step1_3: "আপনি আপনার টাইমলাইনে কিছু দেখতে পাবেন না কারণ আপনি এখনও কোনো নোট পোস্ট করেননি এবং আপনি কাউকে অনুসরণ করছেন না৷"
|
||||
step2_1: "নোট তৈরি করার আগে বা কাউকে অনুসরণ করার আগে প্রথমে আপনার প্রোফাইলটি সম্পূর্ণ করুন।"
|
||||
step2_2: "আপনি কে তা জানা অনেক লোকের জন্য আপনার নোটগুলি দেখা এবং অনুসরণ করাকে সহজ করে তোলে৷"
|
||||
step3_1: "আপনি কি সফলভাবে আপনার প্রোফাইল সেট আপ করেছেন?"
|
||||
step3_2: "এখন, কিছু নোট পোস্ট করার চেষ্টা করুন। পোস্ট ফর্ম খুলতে পেন্সিল চিহ্নযুক্ত বাটনে ক্লিক করুন।"
|
||||
step3_3: "বিষয়বস্তু লেখার পরে, আপনি ফর্মের উপরের ডানদিকের বাটনে ক্লিক করে পোস্ট করতে পারেন।"
|
||||
step3_4: "পোস্ট করার মত কিছু মনে পরছে না? \"আমি মিসকি সেট আপ করছি\" বললে কেমন হয়?"
|
||||
step4_1: "পোস্ট করেছেন?"
|
||||
step4_2: "সাবাশ! এখন আপনার নোট টাইমলাইনে দেখা যাবে।"
|
||||
step5_1: "এখন অন্যদেরকে অনুসরণ করে আপনার টাইমলাইনকে প্রাণবন্ত করে তুলুন।"
|
||||
step5_2: "আপনি {featured}-এ জনপ্রিয় নোটগুলি দেখতে পারেন, যাতে আপনি যে ব্যক্তিকে পছন্দ করেন তাকে বেছে নিতে এবং অনুসরণ করতে পারেন, অথবা {explore}-এ জনপ্রিয় ব্যবহারকারীদের দেখতে পারেন৷"
|
||||
step5_3: "একজন ব্যবহারকারীকে অনুসরণ করতে, ব্যবহারকারীর আইকনে ক্লিক করুন এবং ব্যবহারকারীর পৃষ্ঠাতে \"অনুসরণ করুন\" বাটনে ক্লিক করুন।"
|
||||
step5_4: "যদি ব্যবহারকারীর নামের পাশে একটি লক আইকন থাকে তাহলে আপনার অনুসরণের অনুরোধ গ্রহণ করার জন্য তারা কিছু সময় নিতে পারে।"
|
||||
step6_1: "সবকিছু ঠিক থাকলে আপনি টাইমলাইনে অন্য ব্যবহারকারীদের নোট দেখতে পাবেন।"
|
||||
step6_2: "আপনি সহজেই আপনার প্রতিক্রিয়া জানাতে অন্য ব্যক্তির নোটে \"রিঅ্যাকশন\" যোগ করতে পারেন।"
|
||||
step6_3: "একটি রিঅ্যাকশন যোগ করতে, নোটে \"+\" চিহ্নে ক্লিক করুন এবং আপনার পছন্দের রিঅ্যাকশন নির্বাচন করুন।"
|
||||
step7_1: "অভিনন্দন! আপনি এখন Misskey-র প্রাথমিক টিউটোরিয়ালটি শেষ করেছেন।"
|
||||
step7_2: "আপনি যদি Misskey সম্পর্কে আরও জানতে চান, তাহলে {help} এ দেখুন।"
|
||||
step7_3: "এখন Misskey উপভোগ করুন 🚀"
|
||||
_2fa:
|
||||
alreadyRegistered: "আপনি ইতিমধ্যে একটি 2-ফ্যাক্টর অথেনটিকেশন ডিভাইস নিবন্ধন করেছেন৷"
|
||||
step1: "প্রথমে, আপনার ডিভাইসে {a} বা {b} এর মতো একটি অথেনটিকেশন অ্যাপ ইনস্টল করুন৷"
|
||||
step2: "এরপরে, অ্যাপের সাহায্যে প্রদর্শিত QR কোডটি স্ক্যান করুন।"
|
||||
step2Url: "ডেস্কটপ অ্যাপে, নিম্নলিখিত URL লিখুন:"
|
||||
step3: "অ্যাপে প্রদর্শিত টোকেনটি লিখুন এবং আপনার কাজ শেষ।"
|
||||
step4: "আপনাকে এখন থেকে লগ ইন করার সময়, এইভাবে টোকেন লিখতে হবে।"
|
||||
securityKeyInfo: "আপনি একটি হার্ডওয়্যার সিকিউরিটি কী ব্যবহার করে লগ ইন করতে পারেন যা FIDO2 বা ডিভাইসের ফিঙ্গারপ্রিন্ট সেন্সর বা পিন সমর্থন করে৷"
|
||||
renewTOTPCancel: "না, ধন্যবাদ"
|
||||
_permissions:
|
||||
"read:account": "অ্যাকাউন্টের তথ্য দেখুন"
|
||||
"write:account": "অ্যাকাউন্টের তথ্য সম্পাদন করুন"
|
||||
@@ -1192,7 +1208,6 @@ _profile:
|
||||
changeBanner: "ব্যানার পরিবর্তন করুন"
|
||||
_exportOrImport:
|
||||
allNotes: "সকল নোট"
|
||||
clips: "ক্লিপ"
|
||||
followingList: "অনুসরণ করা হচ্ছে"
|
||||
muteList: "মিউট"
|
||||
blockingList: "ব্লক"
|
||||
@@ -1338,12 +1353,3 @@ _deck:
|
||||
channel: "চ্যানেলগুলি"
|
||||
mentions: "উল্লেখসমূহ"
|
||||
direct: "ডাইরেক্ট নোটগুলি"
|
||||
_webhookSettings:
|
||||
name: "নাম"
|
||||
active: "চালু"
|
||||
_moderationLogTypes:
|
||||
suspend: "স্থগিত করা"
|
||||
resetPassword: "পাসওয়ার্ড রিসেট করুন"
|
||||
_reversi:
|
||||
total: "মোট"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
1257
locales/cs-CZ.yml
1257
locales/cs-CZ.yml
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,2 @@
|
||||
---
|
||||
_lang_: "Dansk"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -104,6 +104,7 @@ clickToShow: "Κάντε κλικ για εμφάνιση"
|
||||
add: "Προσθέστε"
|
||||
reaction: "Αντιδράσεις"
|
||||
reactions: "Αντιδράσεις"
|
||||
reactionSetting: "Αντιδράσεις για εμφάνιση στην επιλογή αντίδρασης"
|
||||
reactionSettingDescription2: "Σύρετε για να αλλάξετε τη σειρά, κάντε κλικ για να διαγράψετε, πατήστε \"+\" για να προσθέσετε."
|
||||
rememberNoteVisibility: "Θυμήσου τις ρυθμίσεις ορατότητας σημειώματος"
|
||||
attachCancel: "Διαγραφή αρχείου"
|
||||
@@ -171,11 +172,11 @@ explore: "Εξερευνήστε"
|
||||
messageRead: "Διαβάστηκε"
|
||||
startMessaging: "Ξεκινήστε μία συνομιλία"
|
||||
nUsersRead: "διαβάστηκε από {n}"
|
||||
tos: "Όροι χρήσης"
|
||||
start: "Ας αρχίσουμε"
|
||||
home: "Κεντρικό"
|
||||
activity: "Δραστηριότητα"
|
||||
images: "Εικόνες"
|
||||
image: "Εικόνες"
|
||||
birthday: "Γενέθλια"
|
||||
registeredDate: "Έγινε μέλος στις"
|
||||
location: "Τοποθεσία"
|
||||
@@ -227,6 +228,7 @@ userList: "Λίστες"
|
||||
about: "Πληροφορίες"
|
||||
moderator: "Συντονιστής"
|
||||
moderation: "Συντονισμός"
|
||||
cacheClear: "Εκκαθάριση προσωρινής μνήμης"
|
||||
markAsReadAllNotifications: "Όλες οι ειδοποιήσεις διαβάστηκαν"
|
||||
members: "Μέλη"
|
||||
transfer: "Μεταφορά"
|
||||
@@ -285,9 +287,6 @@ searchByGoogle: "Αναζήτηση"
|
||||
file: "Αρχεία"
|
||||
recommended: "Προτεινόμενα"
|
||||
cannotUploadBecauseNoFreeSpace: "Το ανέβασμα απέτυχε λόγω ανεπαρκούς Αποθηκευτικού Χώρου"
|
||||
icon: "Εικονίδιο"
|
||||
replies: "Απάντηση"
|
||||
renotes: "Κοινοποίηση σημειώματος"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Έχετε ένα νέο ακόλουθο"
|
||||
@@ -301,6 +300,8 @@ _theme:
|
||||
_sfx:
|
||||
note: "Σημειώματα"
|
||||
notification: "Ειδοποιήσεις"
|
||||
chat: "Συνομιλία"
|
||||
chatBg: "Συνομιλία (Παρασκήνιο)"
|
||||
antenna: "Αντένες"
|
||||
channel: "Ειδοποιήσεις καναλιών"
|
||||
_ago:
|
||||
@@ -356,7 +357,6 @@ _profile:
|
||||
username: "Όνομα μέλους"
|
||||
_exportOrImport:
|
||||
allNotes: "Όλα τα σημειώματα"
|
||||
clips: "Κλιπ"
|
||||
followingList: "Ακολουθεί"
|
||||
muteList: "Μέλη σε σίγαση"
|
||||
blockingList: "Μπλοκαρισμένα μέλη"
|
||||
@@ -392,10 +392,3 @@ _deck:
|
||||
antenna: "Αντένες"
|
||||
list: "Λίστα"
|
||||
mentions: "Επισημάνσεις"
|
||||
_webhookSettings:
|
||||
name: "Όνομα"
|
||||
_moderationLogTypes:
|
||||
suspend: "Αποβολή"
|
||||
_reversi:
|
||||
total: "Σύνολο"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,230 +0,0 @@
|
||||
import * as fs from 'node:fs';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname } from 'node:path';
|
||||
import * as yaml from 'js-yaml';
|
||||
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]) => {
|
||||
const node = ts.factory.createPropertySignature(
|
||||
undefined,
|
||||
ts.factory.createStringLiteral(k),
|
||||
undefined,
|
||||
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.createIdentifier('locales'),
|
||||
undefined,
|
||||
ts.factory.createTypeLiteralNode([
|
||||
ts.factory.createIndexSignature(
|
||||
undefined,
|
||||
[
|
||||
ts.factory.createParameterDeclaration(
|
||||
undefined,
|
||||
undefined,
|
||||
ts.factory.createIdentifier('lang'),
|
||||
undefined,
|
||||
ts.factory.createKeywordTypeNode(
|
||||
ts.SyntaxKind.StringKeyword,
|
||||
),
|
||||
undefined,
|
||||
),
|
||||
],
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('Locale'),
|
||||
undefined,
|
||||
),
|
||||
),
|
||||
]),
|
||||
undefined,
|
||||
),
|
||||
],
|
||||
ts.NodeFlags.Const,
|
||||
),
|
||||
),
|
||||
ts.factory.createFunctionDeclaration(
|
||||
[ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
|
||||
undefined,
|
||||
ts.factory.createIdentifier('build'),
|
||||
undefined,
|
||||
[],
|
||||
ts.factory.createTypeReferenceNode(
|
||||
ts.factory.createIdentifier('Locale'),
|
||||
undefined,
|
||||
),
|
||||
undefined,
|
||||
),
|
||||
ts.factory.createExportDefault(ts.factory.createIdentifier('locales')),
|
||||
];
|
||||
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(
|
||||
ts.ListFormat.MultiLine,
|
||||
ts.factory.createNodeArray(elements),
|
||||
ts.createSourceFile(
|
||||
'index.d.ts',
|
||||
'',
|
||||
ts.ScriptTarget.ESNext,
|
||||
true,
|
||||
ts.ScriptKind.TS,
|
||||
),
|
||||
);
|
||||
|
||||
fs.writeFileSync(`${__dirname}/index.d.ts`, printed, 'utf-8');
|
||||
}
|
@@ -1,6 +1 @@
|
||||
---
|
||||
_lang_: "japanski"
|
||||
ok: "OK"
|
||||
gotIt: "Razumijem"
|
||||
cancel: "otkazati"
|
||||
|
||||
|
@@ -1,19 +1 @@
|
||||
---
|
||||
_lang_: "Japonè"
|
||||
password: "modpas"
|
||||
ok: "OK"
|
||||
gotIt: "Konprann"
|
||||
cancel: "anile"
|
||||
noThankYou: "Sispann"
|
||||
instance: "sèvè"
|
||||
profile: "pwofil"
|
||||
save: "kenbe"
|
||||
delete: "efase"
|
||||
instances: "sèvè"
|
||||
remove: "efase"
|
||||
smtpPass: "modpas"
|
||||
_2fa:
|
||||
renewTOTPCancel: "Sispann"
|
||||
_widgets:
|
||||
profile: "pwofil"
|
||||
|
||||
|
@@ -1,105 +0,0 @@
|
||||
---
|
||||
_lang_: "Japán"
|
||||
monthAndDay: "{month}.{day}."
|
||||
search: "Keresés"
|
||||
notifications: "Értesítések"
|
||||
username: "Felhasználónév"
|
||||
password: "Jelszó"
|
||||
forgotPassword: "Elfelejtett jelszó"
|
||||
ok: "OK"
|
||||
gotIt: "Rendben"
|
||||
cancel: "Mégse"
|
||||
noThankYou: "Nem, köszönöm"
|
||||
enterUsername: "Felhasználónév megadása"
|
||||
renotedBy: "{user} Renotolta"
|
||||
noNotes: "Nincs Note"
|
||||
noNotifications: "Nincs értesítés"
|
||||
instance: "Szerver"
|
||||
settings: "Beállítások"
|
||||
notificationSettings: "Értesítés beállításai"
|
||||
basicSettings: "Alapbeállítás"
|
||||
otherSettings: "Egyéb beállítások"
|
||||
openInWindow: "Megnyitás ablakban"
|
||||
profile: "Saját profil"
|
||||
timeline: "Idővonal"
|
||||
noAccountDescription: "Nincs leírás"
|
||||
login: "Bejelentkezés"
|
||||
loggingIn: "Belépés"
|
||||
logout: "Kijelentkezés"
|
||||
signup: "Regisztráció"
|
||||
uploading: "Feltöltés"
|
||||
save: "Mentés"
|
||||
users: "Felhasználók"
|
||||
addUser: "Felhasználó hozzáadása"
|
||||
favorite: "Kedvencek"
|
||||
favorites: "Kedvencek"
|
||||
unfavorite: "Törlés a kedvencek közül."
|
||||
favorited: "Kedvencek közé rakva."
|
||||
alreadyFavorited: "Már a kedvencek között van."
|
||||
cantFavorite: "Nem sikerült a kedvencek közé rakni."
|
||||
pin: "Rögzítés"
|
||||
unpin: "Rögzítés feloldása"
|
||||
copyContent: "Tartalom másolása"
|
||||
copyLink: "Hivatkozás Másolása"
|
||||
delete: "Törlés"
|
||||
deleteAndEdit: "Törlés és szerkesztés"
|
||||
deleteAndEditConfirm: "Biztosan törlöd ezt a jegyzetet és újrafogalmazza? Így eveszíted az összes reakciót, renote-ot és választ."
|
||||
addToList: "Hozzáadás a listákhoz"
|
||||
privacy: "Adatvédelem"
|
||||
makeFollowManuallyApprove: "Csak jóváhagyással követhetnek"
|
||||
defaultNoteVisibility: "Alapértelmezett láthatóság"
|
||||
follow: "Követés"
|
||||
followRequest: "Követés kérése"
|
||||
followRequests: "Követési kérések"
|
||||
unfollow: "Követés visszavonása"
|
||||
followRequestPending: "Függőben levő követési kérés"
|
||||
enterEmoji: "Írj egy emoji-t"
|
||||
renote: "Renote"
|
||||
unrenote: "Renote visszavonása"
|
||||
renoted: "Renotolva"
|
||||
cantRenote: "Nem lehet Renotolni"
|
||||
cantReRenote: "A Renote nem renotálható"
|
||||
quote: "Idézet"
|
||||
inChannelRenote: "Csak csatornán bellüli Renote"
|
||||
inChannelQuote: "Csak csatornán bellüli idézet"
|
||||
pinnedNote: "Csatolt jegyzet"
|
||||
pinned: "Rögzítés"
|
||||
you: "Te"
|
||||
clickToShow: "Kattints ide"
|
||||
sensitive: "Érzékeny"
|
||||
add: "Hozzáad"
|
||||
reaction: "Reakciók"
|
||||
reactions: "Reakciók"
|
||||
instances: "Szerver"
|
||||
remove: "Törlés"
|
||||
pinnedNotes: "Csatolt jegyzet"
|
||||
smtpUser: "Felhasználónév"
|
||||
smtpPass: "Jelszó"
|
||||
user: "Felhasználók"
|
||||
searchByGoogle: "Keresés"
|
||||
renotes: "Renote"
|
||||
_theme:
|
||||
keys:
|
||||
renote: "Renote"
|
||||
_sfx:
|
||||
notification: "Értesítések"
|
||||
_2fa:
|
||||
renewTOTPCancel: "Nem, köszönöm"
|
||||
_widgets:
|
||||
profile: "Saját profil"
|
||||
notifications: "Értesítések"
|
||||
timeline: "Idővonal"
|
||||
_profile:
|
||||
username: "Felhasználónév"
|
||||
_notification:
|
||||
_types:
|
||||
renote: "Renote"
|
||||
quote: "Idézet"
|
||||
reaction: "Reakciók"
|
||||
_actions:
|
||||
renote: "Renote"
|
||||
_deck:
|
||||
_columns:
|
||||
notifications: "Értesítések"
|
||||
tl: "Idővonal"
|
||||
|
File diff suppressed because it is too large
Load Diff
9605
locales/index.d.ts
vendored
9605
locales/index.d.ts
vendored
File diff suppressed because it is too large
Load Diff
@@ -2,8 +2,8 @@
|
||||
* Languages Loader
|
||||
*/
|
||||
|
||||
import * as fs from 'node:fs';
|
||||
import * as yaml from 'js-yaml';
|
||||
const fs = require('fs');
|
||||
const yaml = require('js-yaml');
|
||||
|
||||
const merge = (...args) => args.reduce((a, c) => ({
|
||||
...a,
|
||||
@@ -51,37 +51,20 @@ const primaries = {
|
||||
// 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く
|
||||
const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '');
|
||||
|
||||
export function build() {
|
||||
const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(new URL(`${c}.yml`, import.meta.url), 'utf-8'))) || {}, a), {});
|
||||
const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8'))) || {}, a), {});
|
||||
|
||||
// 空文字列が入ることがあり、フォールバックが動作しなくなるのでプロパティごと消す
|
||||
const removeEmpty = (obj) => {
|
||||
for (const [k, v] of Object.entries(obj)) {
|
||||
if (v === '') {
|
||||
delete obj[k];
|
||||
} else if (typeof v === 'object') {
|
||||
removeEmpty(v);
|
||||
}
|
||||
module.exports = Object.entries(locales)
|
||||
.reduce((a, [k ,v]) => (a[k] = (() => {
|
||||
const [lang] = k.split('-');
|
||||
switch (k) {
|
||||
case 'ja-JP': return v;
|
||||
case 'ja-KS':
|
||||
case 'en-US': return merge(locales['ja-JP'], v);
|
||||
default: return merge(
|
||||
locales['ja-JP'],
|
||||
locales['en-US'],
|
||||
locales[`${lang}-${primaries[lang]}`] || {},
|
||||
v
|
||||
);
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
removeEmpty(locales);
|
||||
|
||||
return Object.entries(locales)
|
||||
.reduce((a, [k, v]) => (a[k] = (() => {
|
||||
const [lang] = k.split('-');
|
||||
switch (k) {
|
||||
case 'ja-JP': return v;
|
||||
case 'ja-KS':
|
||||
case 'en-US': return merge(locales['ja-JP'], v);
|
||||
default: return merge(
|
||||
locales['ja-JP'],
|
||||
locales['en-US'],
|
||||
locales[`${lang}-${primaries[lang]}`] ?? {},
|
||||
v
|
||||
);
|
||||
}
|
||||
})(), a), {});
|
||||
}
|
||||
|
||||
export default build();
|
||||
})(), a), {});
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1201
locales/ja-KS.yml
1201
locales/ja-KS.yml
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1 @@
|
||||
---
|
||||
_lang_: "la .lojban."
|
||||
headlineMisskey: "lo se tcana noi jorne fi loi notci"
|
||||
|
||||
|
@@ -56,7 +56,6 @@ accounts: "Imiḍan"
|
||||
searchByGoogle: "Nadi"
|
||||
file: "Ifuyla"
|
||||
account: "Imiḍan"
|
||||
replies: "Err"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Yeṭṭafaṛ-ik·em-id"
|
||||
@@ -104,4 +103,3 @@ _deck:
|
||||
_columns:
|
||||
notifications: "Ilɣuyen"
|
||||
list: "Tibdarin"
|
||||
|
||||
|
@@ -61,7 +61,6 @@ smtpPass: "ಗುಪ್ತಪದ"
|
||||
user: "ಬಳಕೆದಾರ"
|
||||
searchByGoogle: "ಹುಡುಕು"
|
||||
file: "ಕಡತಗಳು"
|
||||
replies: "ಉತ್ತರಿಸು"
|
||||
_email:
|
||||
_follow:
|
||||
title: "ಹಿಂಬಾಲಿಸಿದರು"
|
||||
@@ -84,4 +83,3 @@ _deck:
|
||||
notifications: "ಅಧಿಸೂಚನೆಗಳು"
|
||||
tl: "ಸಮಯಸಾಲು"
|
||||
mentions: "ಹೆಸರಿಸಿದ"
|
||||
|
||||
|
@@ -1,729 +0,0 @@
|
||||
---
|
||||
_lang_: "한국어(경상)"
|
||||
headlineMisskey: "노트로 이언 네트워크"
|
||||
introMisskey: "어서 오이소! Misskey넌 오픈소스 분산헹 마이크로 블로그 서비스입니다.\n‘노트’럴 맨걸어서 지검 일나넌 일얼 노누던가 내 이바구럴 남한데 서 보이소.📡\n‘리액션’ 기넝서 남으 노트에 억수로 빠리게 답할 수 잇십니다.👍\n새롭운 세게럴 탐험해 보입시다.🚀"
|
||||
poweredByMisskeyDescription: "{name} 서버넌 오픈소스 플랫폼 <b>Misskey</b>으 서버 가운데 하나입니다."
|
||||
monthAndDay: "{month}월 {day}일"
|
||||
search: "찾기"
|
||||
notifications: "알림"
|
||||
username: "사용자 이럼"
|
||||
password: "비밀번호"
|
||||
forgotPassword: "비밀번호럴 잊엇뿟십니꺼?"
|
||||
fetchingAsApObject: "연합서 찾아보고 잇어예"
|
||||
ok: "예"
|
||||
gotIt: "알것어예"
|
||||
cancel: "아이예"
|
||||
noThankYou: "뎃어예"
|
||||
enterUsername: "사용자 이럼 서기"
|
||||
renotedBy: "{user}님이 리노트햇어예"
|
||||
noNotes: "노트가 없십니다"
|
||||
noNotifications: "알림이 없십니다"
|
||||
instance: "서버"
|
||||
settings: "설정"
|
||||
notificationSettings: "알림 설정"
|
||||
basicSettings: "기본 설정"
|
||||
otherSettings: "다린 설정"
|
||||
openInWindow: "창서 옐기"
|
||||
profile: "프로필"
|
||||
timeline: "타임라인"
|
||||
noAccountDescription: "자기소개가 없십니다"
|
||||
login: "로그인"
|
||||
loggingIn: "로그인하고 잇어예"
|
||||
logout: "로그아웃"
|
||||
signup: "가입하기"
|
||||
uploading: "올리고 잇어예"
|
||||
save: "저장하기"
|
||||
users: "사용자"
|
||||
addUser: "사용자 옇기"
|
||||
favorite: "질겨찾기"
|
||||
favorites: "질겨찾기"
|
||||
unfavorite: "질겨찾기서 어ᇝ애기"
|
||||
favorited: "질겨찾기에 담앗십니다."
|
||||
alreadyFavorited: "벌시로 질겨찾기에 담기 잇십니다."
|
||||
cantFavorite: "질겨찾기에 몬 담았십니다."
|
||||
pin: "프로필에 붙이기"
|
||||
unpin: "프로필서 띠기"
|
||||
copyContent: "내용 복사하기"
|
||||
copyLink: "링크 복사하기"
|
||||
copyLinkRenote: "리노트 링크 복사"
|
||||
delete: "내삐리기"
|
||||
deleteAndEdit: "내삐리고 새로 적기"
|
||||
deleteAndEditConfirm: "요 노트럴 뭉캐고 새로 적십니꺼? 요 노트서 리액션하고 리노트, 답하기도 말캉 뭉캐집니다."
|
||||
addToList: "리스트에 옇기"
|
||||
addToAntenna: "안테나에 옇기"
|
||||
sendMessage: "메시지 보내기"
|
||||
copyRSS: "알에스에스 복사하기"
|
||||
copyUsername: "사용자 이럼 복사하기"
|
||||
copyUserId: "사용자 아이디 복사하기"
|
||||
copyNoteId: "노트 아이디 복사하기"
|
||||
copyFileId: "파일 아이디 복사하기"
|
||||
copyFolderId: "폴더 아이디 복사하기"
|
||||
copyProfileUrl: "프로필 주소 복사하기"
|
||||
searchUser: "사용자 찾기"
|
||||
reply: "답하기"
|
||||
loadMore: "더 볼래예"
|
||||
showMore: "더 볼래예"
|
||||
showLess: "꺼기"
|
||||
youGotNewFollower: "새 팔로워가 잇십니다"
|
||||
receiveFollowRequest: "팔로잉 요청이 잇십니다"
|
||||
followRequestAccepted: "팔로잉이 받아딜이젓십니다"
|
||||
mention: "멘션"
|
||||
mentions: "받언 멘션"
|
||||
directNotes: "쪽지 서기"
|
||||
importAndExport: "가오기하고 내가기"
|
||||
import: "가오기"
|
||||
export: "내가기"
|
||||
files: "파일"
|
||||
download: "내리받기"
|
||||
driveFileDeleteConfirm: "‘{name}’ 파일얼 뭉캡니꺼? 요 파일얼 서넌 콘텐츠도 뭉캐집니다."
|
||||
unfollowConfirm: "{name}님얼 고마 팔로잉합니꺼?"
|
||||
exportRequested: "내가기 요청얼 햇십니다. 시간이 쪼매 걸릴 깁니다. 요청이 껕나모 ‘드라이브’에 옇십니다."
|
||||
importRequested: "가오기 요청얼 햇십니다. 시간이 쪼매 걸릴 깁니다."
|
||||
lists: "리스트"
|
||||
noLists: "리스트가 없십니다"
|
||||
note: "노트"
|
||||
notes: "노트"
|
||||
following: "팔로잉"
|
||||
followers: "팔로워"
|
||||
followsYou: "내럴 팔로잉합니다"
|
||||
createList: "리스트 맨걸기"
|
||||
manageLists: "리스트 간리하기"
|
||||
error: "우짭니꺼"
|
||||
somethingHappened: "먼가 일낫십니다"
|
||||
retry: "다시 하기"
|
||||
pageLoadError: "하멘 부리오기가 아이뎁니다."
|
||||
pageLoadErrorDescription: "네트워크나 브라우저 캐시 때문일 깁니다. 캐시럴 뭉캐던가 쪼매 잇다 새로 해 주이소."
|
||||
serverIsDead: "서버가 대답얼 아이합니다. 쪼매 잇다 새로 해 주이소."
|
||||
youShouldUpgradeClient: "요 하멘얼 볼라먼 새로 곤치던가 새 버전으 클라이언트럴 받아 서 보이소."
|
||||
enterListName: "리스트 이럼 서기"
|
||||
privacy: "개인 정보"
|
||||
makeFollowManuallyApprove: "팔로잉얼 하나석 받아딜이기"
|
||||
defaultNoteVisibility: "기본 공개 범위"
|
||||
follow: "팔로우"
|
||||
followRequest: "팔로우 요청하기"
|
||||
followRequests: "팔로우 요청"
|
||||
unfollow: "팔로우 무루기"
|
||||
followRequestPending: "팔로우 수락 지둘림"
|
||||
enterEmoji: "이모지 서기"
|
||||
renote: "리노트"
|
||||
unrenote: "리노트 무루기"
|
||||
renoted: "리노트럴 햇십니다."
|
||||
cantRenote: "요 걸언 리노트럴 몬 합니다."
|
||||
cantReRenote: "리노트넌 지럴 리노트 몬 합니다."
|
||||
quote: "따오기"
|
||||
inChannelRenote: "채널 안 리노트"
|
||||
inChannelQuote: "채널 안 따오기"
|
||||
pinnedNote: "붙인 노트"
|
||||
pinned: "프로필에 붙이기"
|
||||
you: "나"
|
||||
clickToShow: "누질라서 보기"
|
||||
sensitive: "수ᇚ힛섭니다"
|
||||
add: "옇기"
|
||||
reaction: "반엉"
|
||||
reactions: "반엉"
|
||||
reactionSettingDescription2: "꺼시서 두고, 누질라서 뭉캐고, ‘+’럴 누질라서 옇십니다."
|
||||
rememberNoteVisibility: "공개 범위럴 기억하기"
|
||||
attachCancel: "붙임 빼기"
|
||||
markAsSensitive: "수ᇚ힘 설정"
|
||||
unmarkAsSensitive: "수ᇚ힘 무루기"
|
||||
enterFileName: "파일 이럼 서기"
|
||||
mute: "수ᇚ후기"
|
||||
unmute: "수ᇚ훈 거 무루기"
|
||||
renoteMute: "리노트 수ᇚ후기"
|
||||
renoteUnmute: "리노트 수ᇚ훈 거 무루기"
|
||||
block: "차단하기"
|
||||
unblock: "차단 무루기"
|
||||
suspend: "얼우기"
|
||||
unsuspend: "얼우기 풀기"
|
||||
blockConfirm: "차단합니꺼?"
|
||||
unblockConfirm: "차단얼 무룹니꺼?"
|
||||
suspendConfirm: "얼웁니꺼?"
|
||||
unsuspendConfirm: "얼운 거 풉니꺼?"
|
||||
selectList: "리스트 개리기"
|
||||
editList: "리스트 적기"
|
||||
selectChannel: "채널 개리기"
|
||||
selectAntenna: "안테나 개리기"
|
||||
editAntenna: "안테나 적기"
|
||||
selectWidget: "위젯 개리기"
|
||||
editWidgets: "위젯 적기"
|
||||
editWidgetsExit: "고마 적기"
|
||||
customEmojis: "사용자 지정 이모지"
|
||||
emoji: "이모지"
|
||||
emojis: "이모지"
|
||||
emojiName: "이모지 이럼"
|
||||
emojiUrl: "이모지 주소"
|
||||
addEmoji: "이모지 옇기"
|
||||
settingGuide: "개않언 설정"
|
||||
cacheRemoteFiles: "웬겍 파일 캐시하기"
|
||||
cacheRemoteFilesDescription: "요 설정얼 키모 웬겍 파일얼 요 서버으 스토리지에 캐시합니다. 미디어가 사게 비이지먼 서버으 스토리지럴 마이 섭니다. 웬겍 사용자가 얼매나 캐시럴 둘 긴가넌 고 옉할으 드라이브 크기 제한마중 다립니다. 요 제한얼 넘구모 엣날 파일버터 캐시서 뭉캐지서 링크가 뎁니다. 요 설정얼 꺼모 웬겍 파일언 첨버터 링크가 뎁니다. 이미지으 섬네일얼 맨걸던 사용자으 개인 정보럴 징키던 할라먼 default.yml서 proxyRemoteFiles럴 ture로 하입시다."
|
||||
youCanCleanRemoteFilesCache: "파일 간리으 🗑️ 모냥얼 누질리모 캐시럴 말캉 뭉캘 수 잇십니다."
|
||||
cacheRemoteSensitiveFiles: "웬겍으 수ᇚ힌 파일얼 캐시하기"
|
||||
cacheRemoteSensitiveFilesDescription: "요 설정얼 꺼모 웬겍 수ᇚ힌 파일이 캐시하지 아이하고 바리 링크합니다."
|
||||
flagAsBot: "자동 게정입니다"
|
||||
flagAsBotDescription: "요 게정얼 프로그램서 설라먼 키야 합니다. 키모 다런 개발자가 반엉얼 끋없이 데풀이하지 몬 하게 도아 줄 수 잇고 Misskey으 시스템서 자동 게정이 뎁니다."
|
||||
flagAsCat: "애웅애웅애웅애웅!"
|
||||
flagAsCatDescription: "애옹?"
|
||||
flagShowTimelineReplies: "타임라인서 노트으 답하기 보기"
|
||||
flagShowTimelineRepliesDescription: "키모 타임라인서 다런 사용자덜으 답하기도 봅니다."
|
||||
autoAcceptFollowed: "팔로잉하넌 사용자으 팔로잉 요청 바리 받아딜이기"
|
||||
addAccount: "게정 옇기"
|
||||
reloadAccountsList: "게정 리스트으 정보 새로 바꾸기"
|
||||
loginFailed: "로그인이 아이뎁니다."
|
||||
showOnRemote: "웬겍서 보기"
|
||||
general: "일반"
|
||||
wallpaper: "벡지"
|
||||
setWallpaper: "벡지 설정"
|
||||
removeWallpaper: "벡지 뭉캐기"
|
||||
searchWith: "찾기: {q}"
|
||||
youHaveNoLists: "리스트가 없십니다"
|
||||
followConfirm: "{name}님얼 팔로잉합니꺼?"
|
||||
proxyAccount: "프락시 게정"
|
||||
proxyAccountDescription: "프락시 게정언 턱벨한 조겐서 웬겍 팔로잉얼 하넌 게정입니다. 사용자가 웬겍 사용자럴 리스트에 옇얼 때 리스트에 옇언 사용자럴 누도 팔로잉 아이하모 할동이 서버로 아이 오니께 요 게정이 아인 프락시 게정얼 팔로잉하게 합니다."
|
||||
host: "호스트 이럼"
|
||||
selectUser: "사용자 개리기"
|
||||
recipient: "받넌 사람"
|
||||
annotation: "주석"
|
||||
federation: "옌합"
|
||||
instances: "서버"
|
||||
registeredAt: "첫 발겐"
|
||||
latestRequestReceivedAt: "막죽에 받언 요청"
|
||||
latestStatus: "막죽 상태"
|
||||
storageUsage: "스토리지 사용량"
|
||||
charts: "차트"
|
||||
perHour: "한 시간마중"
|
||||
perDay: "하리마중"
|
||||
stopActivityDelivery: "할동 고마 보내기"
|
||||
blockThisInstance: "요 서버 차단하기"
|
||||
silenceThisInstance: "서버 수ᇚ후기"
|
||||
operations: "동작"
|
||||
software: "소프트웨어"
|
||||
version: "버전"
|
||||
metadata: "메타데이터"
|
||||
withNFiles: "파일 {n}개"
|
||||
monitor: "모니터"
|
||||
jobQueue: "작업 대기옐"
|
||||
cpuAndMemory: "시피유하고 메모리"
|
||||
network: "네트워크"
|
||||
disk: "디스크"
|
||||
instanceInfo: "서버 정보"
|
||||
statistics: "통게"
|
||||
clearQueue: "대기옐 비우기"
|
||||
clearQueueConfirmTitle: "대기옐얼 비웁니꺼?"
|
||||
clearQueueConfirmText: "대기옐에 잇넌 걸얼 아이 보냅니다. 흐이 요 동작언 할 필요가 없십니다."
|
||||
clearCachedFiles: "캐시 비우기"
|
||||
clearCachedFilesConfirm: "캐시한 웬겍 파일얼 말캉 뭉캡니꺼?"
|
||||
blockedInstances: "차단한 서버"
|
||||
blockedInstancesDescription: "차단할라넌 서버으 호스트럴 줄 바꿈해서로 비이 줍니다. 차단한 서버넌 요 서버하고 교류 몬 합니다."
|
||||
silencedInstances: "수ᇚ훈 서버"
|
||||
silencedInstancesDescription: "수ᇚ훌라넌 서버으 호스트럴 줄 바꿈해서로 비이 줍니다. 수ᇚ훈 서버으 게정언 말캉 ‘수ᇚ후기’가 데서 팔로잉 요청만 데고 팔로워가 아인 로컬 게정서 멘션얼 몬 합니다. 차단한 서버넌 상간 없십니다."
|
||||
muteAndBlock: "수ᇚ훔하고 차단"
|
||||
mutedUsers: "수ᇚ훈 사용자"
|
||||
blockedUsers: "차단한 사용자"
|
||||
noUsers: "사용자가 없십니다"
|
||||
editProfile: "프로필 적기"
|
||||
noteDeleteConfirm: "요 노트럴 뭉캡니꺼?"
|
||||
pinLimitExceeded: "더 몬 붙입니다"
|
||||
intro: "Misskey럴 다 깔앗십니다! 간리자 게정얼 맨걸어 보입시다."
|
||||
done: "햇어예"
|
||||
processing: "처리하고 잇어예"
|
||||
preview: "미리보기"
|
||||
default: "기본값"
|
||||
defaultValueIs: "기본값: {value}"
|
||||
noCustomEmojis: "이모지가 없십니다"
|
||||
noJobs: "작업이 없십니다"
|
||||
federating: "옌합하고 잇어예"
|
||||
blocked: "차단햇어예"
|
||||
suspended: "고만 보내예"
|
||||
all: "말캉"
|
||||
subscribing: "구독하고 잇어예"
|
||||
publishing: "보내고 잇어예"
|
||||
notResponding: "답이 없어예"
|
||||
instanceFollowing: "서버으 팔로잉"
|
||||
instanceFollowers: "서버으 팔로워"
|
||||
instanceUsers: "서버으 사용자"
|
||||
changePassword: "비밀번호 바꾸기"
|
||||
security: "보안"
|
||||
retypedNotMatch: "선 거가 안 맞십니다."
|
||||
currentPassword: "지검 비밀번호"
|
||||
newPassword: "새 비밀번호"
|
||||
newPasswordRetype: "새 비밀번호 다시 서기"
|
||||
attachFile: "파일 붙이기"
|
||||
more: "더 볼래예!"
|
||||
featured: "인기"
|
||||
usernameOrUserId: "사용자 이럼이나 사용자 아이디"
|
||||
noSuchUser: "사용자럴 몬 찾앗십니다"
|
||||
lookup: "찾아보기"
|
||||
announcements: "공지 걸"
|
||||
imageUrl: "이미지 주소"
|
||||
remove: "내삐리기"
|
||||
removed: "뭉캣십니다"
|
||||
removeAreYouSure: "‘{x}’(얼)럴 뭉캡니꺼?"
|
||||
deleteAreYouSure: "‘{x}’(얼)럴 뭉캡니꺼?"
|
||||
resetAreYouSure: "아시로 데돌립니꺼?"
|
||||
areYouSure: "갠찮십니꺼?"
|
||||
saved: "저장햇십니다"
|
||||
messaging: "대화"
|
||||
upload: "올리기"
|
||||
keepOriginalUploading: "온본 두기"
|
||||
keepOriginalUploadingDescription: "이미지럴 올릴 때 온본얼 고대로 둡니다. 꺼모 올릴 때 브라우저서 웹 공개 이미지럴 맨겁니다."
|
||||
fromDrive: "드라이브서"
|
||||
fromUrl: "주소서"
|
||||
uploadFromUrl: "주소 올리기"
|
||||
uploadFromUrlDescription: "올리기할라넌 파일으 주소"
|
||||
uploadFromUrlRequested: "올리기럴 요청햇십니다"
|
||||
uploadFromUrlMayTakeTime: "올리기가 껕날라먼 시간이 쪼매 걸릴 깁니다."
|
||||
explore: "살펴보기"
|
||||
messageRead: "이럿어예"
|
||||
noMoreHistory: "요카마 엣날 기록이 없십니다"
|
||||
startMessaging: "대화하기"
|
||||
nUsersRead: "{n}멩이 이럿십니다"
|
||||
agreeTo: "{0}에 동이하기"
|
||||
agree: "동이합니다"
|
||||
agreeBelow: "밑으 내용에 동이합니다"
|
||||
basicNotesBeforeCreateAccount: "주이할 내용"
|
||||
termsOfService: "이용 약간"
|
||||
start: "시작하기"
|
||||
home: "덜머리"
|
||||
remoteUserCaution: "웬겍 사용자넌 정보가 학실하지 아이할 수 잇십니다."
|
||||
activity: "할동"
|
||||
images: "이미지"
|
||||
image: "이미지"
|
||||
birthday: "생일"
|
||||
yearsOld: "{age}살"
|
||||
registeredDate: "맨건 날"
|
||||
location: "장소"
|
||||
theme: "테마"
|
||||
themeForLightMode: "볽엄 모드서 설 테마"
|
||||
themeForDarkMode: "어덥엄 모드서 설 테마"
|
||||
light: "볽엄"
|
||||
dark: "어덥엄"
|
||||
lightThemes: "볽언 테마"
|
||||
darkThemes: "어덥언 테마"
|
||||
syncDeviceDarkMode: "디바이스 쪽 어덥엄 모드하고 같구로 마추기"
|
||||
drive: "드라이브"
|
||||
fileName: "파일 이럼"
|
||||
selectFile: "파일 개리기"
|
||||
selectFiles: "파일 개리기"
|
||||
selectFolder: "폴더 개리기"
|
||||
selectFolders: "폴더 개리기"
|
||||
renameFile: "파일 이럼 바꾸기"
|
||||
folderName: "폴더 이럼"
|
||||
createFolder: "폴더 맨걸기"
|
||||
renameFolder: "폴더 이럼 바꾸기"
|
||||
deleteFolder: "폴더 뭉캐기"
|
||||
folder: "폴더"
|
||||
addFile: "파일 옇기"
|
||||
emptyDrive: "드라이브가 비잇십니다"
|
||||
emptyFolder: "폴더가 비잇십니다"
|
||||
unableToDelete: "몬 뭉캡니다"
|
||||
inputNewFileName: "새 파일 이럼얼 서 보이소"
|
||||
inputNewDescription: "새 설멩얼 서 보이소"
|
||||
inputNewFolderName: "새 폴더 이럼얼 서 보이소"
|
||||
circularReferenceFolder: "엚길 폴더으 아래 폴더입니다."
|
||||
hasChildFilesOrFolders: "요 폴더넌 아이 비잇어니께 몬 뭉캡니다."
|
||||
copyUrl: "주소 복사하기"
|
||||
rename: "이럼 바꾸기"
|
||||
avatar: "아바타"
|
||||
banner: "배너"
|
||||
displayOfSensitiveMedia: "수ᇚ힌 옝상물 보기"
|
||||
whenServerDisconnected: "서버하고 옌겔이 껂기모"
|
||||
disconnectedFromServer: "서버하고 옌겔이 껂깃십니다"
|
||||
reload: "새로곤침"
|
||||
doNothing: "무시하기"
|
||||
reloadConfirm: "새로곤침합니꺼?"
|
||||
watch: "간심 갖기"
|
||||
unwatch: "간심 고마 갖기"
|
||||
accept: "받기"
|
||||
reject: "아이 받기"
|
||||
normal: "일반"
|
||||
instanceName: "서버 이럼"
|
||||
instanceDescription: "서버 소개"
|
||||
maintainerName: "간리자 이럼"
|
||||
maintainerEmail: "간리자 전자우펜"
|
||||
tosUrl: "이용 약간 주소"
|
||||
thisYear: "올개"
|
||||
thisMonth: "요달"
|
||||
today: "오올"
|
||||
dayX: "{day}일"
|
||||
monthX: "{month}월"
|
||||
yearX: "{year}년"
|
||||
pages: "바닥"
|
||||
integration: "옌겔"
|
||||
connectService: "옌겔하기"
|
||||
disconnectService: "껂기"
|
||||
enableLocalTimeline: "로컬 타임라인 키기"
|
||||
enableGlobalTimeline: "글로벌 타임라인 키기"
|
||||
disablingTimelinesInfo: "요 타임라인얼 꺼도 간리자하고 중재자넌 고대로 설 수 잇십니다."
|
||||
registration: "맨걸기"
|
||||
enableRegistration: "누라도 새로 맨걸 수 잇거로 하기"
|
||||
invite: "초대하기"
|
||||
driveCapacityPerLocalAccount: "로컬 사용자 하나마중 드라이브 커기"
|
||||
driveCapacityPerRemoteAccount: "웬겍 사용자 하나마중 드라이브 커기"
|
||||
inMb: "메가바이트 단이"
|
||||
bannerUrl: "배너 이미지 주소"
|
||||
backgroundImageUrl: "배겡 이미지 주소"
|
||||
basicInfo: "기본 정보"
|
||||
pinnedUsers: "붙인 사용자"
|
||||
pinnedUsersDescription: "‘살펴보기’서 붙일라넌 사용자럴 줄 바꿈해서로 적십니다."
|
||||
pinnedPages: "붙인 바닥"
|
||||
pinnedPagesDescription: "서버으 대문서 붙일라넌 바닥으 겡로럴 줄 바꿈해서로 적십니다."
|
||||
pinnedClipId: "붙일 클립으 아이디"
|
||||
pinnedNotes: "붙인 노트"
|
||||
hcaptcha: "에이치캡차"
|
||||
enableHcaptcha: "에이치캡차 키기"
|
||||
hcaptchaSiteKey: "사이트키"
|
||||
hcaptchaSecretKey: "시크릿키"
|
||||
mcaptchaSiteKey: "사이트키"
|
||||
mcaptchaSecretKey: "시크릿키"
|
||||
recaptcha: "리캡차"
|
||||
enableRecaptcha: "리캡차 키기"
|
||||
recaptchaSiteKey: "사이트키"
|
||||
recaptchaSecretKey: "시크릿키"
|
||||
turnstile: "턴스타일"
|
||||
enableTurnstile: "턴스타일 키기"
|
||||
turnstileSiteKey: "사이트키"
|
||||
turnstileSecretKey: "시크릿키"
|
||||
avoidMultiCaptchaConfirm: "오만 캡차럴 서모 간섭이 잇얼 깁니다. 다린 캡차를 껍니꺼? ‘아이예’럴 누질리모 오만 캡차럴 키 둘 수도 잇십니다."
|
||||
antennas: "안테나"
|
||||
manageAntennas: "안테나 간리"
|
||||
name: "이럼"
|
||||
antennaSource: "받얼 소스"
|
||||
antennaKeywords: "받얼 검색어"
|
||||
antennaExcludeKeywords: "수ᇚ훌 검색어"
|
||||
antennaKeywordsDescription: "띠어서기럴 하모 ‘거라고’가 데고 줄 바꿈얼 하모 ‘아이먼’이 뎁니다"
|
||||
notifyAntenna: "새 노트럴 알리기"
|
||||
withFileAntenna: "파일이 붙언 노트마"
|
||||
enableServiceworker: "브라우저서 알림 포시럴 키기"
|
||||
antennaUsersDescription: "사용자 이럼얼 줄 바꿈해서로 섭니다"
|
||||
caseSensitive: "대소문자럴 구벨하기"
|
||||
withReplies: "답하기도 옇기"
|
||||
connectedTo: "요 게정하고 옌겔데어 잇십니다"
|
||||
notesAndReplies: "걸하고 답걸"
|
||||
withFiles: "파일에 붙이기"
|
||||
silence: "수ᇚ후기"
|
||||
silenceConfirm: "수ᇚ훕니꺼?"
|
||||
unsilence: "수ᇚ후기 어ᇝ애기"
|
||||
unsilenceConfirm: "수ᇚ후기럴 어ᇝ앱니꺼?"
|
||||
popularUsers: "소문난 사용자"
|
||||
recentlyUpdatedUsers: "얼마 전에 걸 선 사용자"
|
||||
recentlyRegisteredUsers: "얼마 전에 맨건 사용자"
|
||||
recentlyDiscoveredUsers: "얼마 전에 찾언 사용자"
|
||||
exploreUsersCount: "사용자 {count}멩이 잇십니다."
|
||||
exploreFediverse: "옌합우주 탐험하기"
|
||||
popularTags: "소문난 태그"
|
||||
userList: "리스트"
|
||||
about: "정보"
|
||||
aboutMisskey: "Misskey넌예"
|
||||
administrator: "간리자"
|
||||
token: "학인 기호"
|
||||
2fa: "두 단게 정멩"
|
||||
setupOf2fa: "두 단게 정멩 설정"
|
||||
totp: "정멩 앱"
|
||||
totpDescription: "정멩 앱서 단헤용 비밀번호 서기"
|
||||
moderator: "중재자"
|
||||
moderation: "중재"
|
||||
moderationNote: "중재 노트"
|
||||
addModerationNote: "중재 노트 옇기"
|
||||
moderationLogs: "중재 일지"
|
||||
nUsersMentioned: "{n}멩이 이바구하고 잇어예"
|
||||
securityKeyAndPasskey: "보안키·패스키"
|
||||
securityKey: "보안키"
|
||||
lastUsed: "마지막 쓰임"
|
||||
lastUsedAt: "마지막 쓰임: {t}"
|
||||
unregister: "맨걸기 무루기"
|
||||
passwordLessLogin: "비밀번호 없시 로그인"
|
||||
passwordLessLoginDescription: "비밀번호 말고 보안키나 패스키 같은 것만 써 가 로그인합니다."
|
||||
resetPassword: "비밀번호 재설정"
|
||||
newPasswordIs: "새 비밀번호는 \"{password}\" 입니다"
|
||||
reduceUiAnimation: "화면 움직임 효과들을 수ᇚ후기"
|
||||
share: "노누기"
|
||||
notFound: "몬 찾앗십니다"
|
||||
notFoundDescription: "고런 주소로 들어가는 하멘은 없십니다."
|
||||
uploadFolder: "기본 업로드 위치"
|
||||
markAsReadAllNotifications: "모든 알림 이럿다고 표시"
|
||||
markAsReadAllUnreadNotes: "모든 글 이럿다고 표시"
|
||||
markAsReadAllTalkMessages: "모든 대화 이럿다고 표시"
|
||||
help: "도움말"
|
||||
inputMessageHere: "여따가 메시지를 입력해주이소"
|
||||
close: "닫기"
|
||||
invites: "초대하기"
|
||||
members: "멤버"
|
||||
transfer: "양도"
|
||||
title: "제목"
|
||||
text: "글"
|
||||
enable: "키기"
|
||||
next: "다음"
|
||||
retype: "다시 서기"
|
||||
noteOf: "{user}님으 노트"
|
||||
quoteAttached: "따옴"
|
||||
quoteQuestion: "따와가 작성하겠십니까?"
|
||||
noMessagesYet: "아직 대화가 없십니다"
|
||||
newMessageExists: "새 메시지가 있십니다"
|
||||
onlyOneFileCanBeAttached: "메시지엔 파일 하나까제밖에 몬 넣십니다"
|
||||
invitations: "초대하기"
|
||||
invitationCode: "초대장"
|
||||
checking: "학인하고 잇십니다"
|
||||
passwordMatched: "맞십니다"
|
||||
passwordNotMatched: "안 맞십니다"
|
||||
signinFailed: "로그인 몬 했십니다. 고 이름이랑 비밀번호 제대로 썼는가 확인해 주이소."
|
||||
or: "아니면"
|
||||
language: "언어"
|
||||
uiLanguage: "UI 표시 언어"
|
||||
aboutX: "{x}에 대해서"
|
||||
emojiStyle: "이모지 모양"
|
||||
native: "기본"
|
||||
disableDrawer: "드로어 메뉴 쓰지 않기"
|
||||
showNoteActionsOnlyHover: "마우스 올맀을 때만 노트 액션 버턴 보이기"
|
||||
noHistory: "기록이 없십니다"
|
||||
signinHistory: "로그인 기록"
|
||||
enableAdvancedMfm: "복잡한 MFM 키기"
|
||||
enableAnimatedMfm: "정신사나운 MFM 키기"
|
||||
doing: "잠만예"
|
||||
category: "카테고리"
|
||||
tags: "태그"
|
||||
docSource: "요 문서의 원본"
|
||||
createAccount: "게정 맨걸기"
|
||||
existingAccount: "원래 게정"
|
||||
regenerate: "엎고 다시 맨걸기"
|
||||
fontSize: "글자 크기"
|
||||
mediaListWithOneImageAppearance: "사진 하나짜리 미디어 목록의 높이"
|
||||
limitTo: "{x}로 제한"
|
||||
noFollowRequests: "지둘리는 팔로우 요청이 없십니다"
|
||||
openImageInNewTab: "새 탭서 사진 열기"
|
||||
dashboard: "대시보드"
|
||||
local: "로컬"
|
||||
remote: "웬겍"
|
||||
total: "합계"
|
||||
weekOverWeekChanges: "저번주보다"
|
||||
dayOverDayChanges: "어제보다"
|
||||
appearance: "모냥"
|
||||
clientSettings: "클라이언트 설정"
|
||||
accountSettings: "게정 설정"
|
||||
promotion: "선전"
|
||||
promote: "선전하기"
|
||||
numberOfDays: "며칠동안"
|
||||
hideThisNote: "요 노트를 수ᇚ후기"
|
||||
showFeaturedNotesInTimeline: "타임라인에다 추천 노트 보이기"
|
||||
objectStorage: "오브젝트 스토리지"
|
||||
useObjectStorage: "오브젝트 스토리지 키기"
|
||||
objectStorageBaseUrl: "Base URL"
|
||||
objectStorageBaseUrlDesc: "오브젝트 (미디어) 참조 링크 만들 때 쓰는 URL임다. CDN 내지 프락시를 쓴다 카멘은 그 URL을 갖다 늫고, 아이면 써먹을 서비스네 가이드를 봐봐가 공개적으로 접근할 수 있는 주소를 여 넣어 주이소. 그니께, 내가 AWS S3을 쓴다 카면은 'https://<bucket>.s3.amazonaws.com', GCS를 쓴다 카면 'https://storage.googleapis.com/<bucket>' 처럼 쓰믄 되입니더."
|
||||
objectStorageBucket: "Bucket"
|
||||
objectStorageBucketDesc: "써먹을 서비스의 바께쓰 이름을 여 써 주이소."
|
||||
objectStoragePrefix: "Prefix"
|
||||
objectStoragePrefixDesc: "요 Prefix 디렉토리 안에다가 파일이 들어감다."
|
||||
objectStorageEndpoint: "Endpoint"
|
||||
objectStorageEndpointDesc: "AWS S3을 쓸라멘 요는 비워두고, 아이멘은 그 서비스 가이드에 맞게 endpoint를 넣어 주이소. '<host>' 내지 '<host>:<port>'처럼 넣십니다."
|
||||
objectStorageRegion: "Region"
|
||||
objectStorageRegionDesc: "'xx-east-1' 같은 region 이름을 옇어 주이소. 써먹을 서비스에 region 개념 같은 게 읎다! 카면은 대신에 'us-east-1'을 옇어 놓으이소. AWS 설정 파일이나 환경 변수를 갖다 끌어다 쓸 거면은 요는 비워 두이소."
|
||||
objectStorageUseSSL: "SSL 쓰기"
|
||||
objectStorageUseSSLDesc: "API 호출할 때 HTTPS 안 쓸거면은 꺼 두이소"
|
||||
objectStorageUseProxy: "연결에 프락시 사용"
|
||||
objectStorageUseProxyDesc: "오브젝트 스토리지 API 호출에 프락시 안 쓸 거면 꺼 두이소"
|
||||
objectStorageSetPublicRead: "업로드할 때 'public-read' 설정하기"
|
||||
s3ForcePathStyleDesc: "s3ForcePathStyle을 키면, 바께쓰 이름을 URL의 호스트명 말고 경로의 일부로써 취급합니다. 셀프 호스트 Minio 같은 걸 굴릴라믄 켜놔야 될 수도 있십니다."
|
||||
serverLogs: "서버 로그"
|
||||
deleteAll: "말캉 뭉캐기"
|
||||
showFixedPostForm: "타임라인 우에 글 작성 칸 박기"
|
||||
showFixedPostFormInChannel: "채널 타임라인 우에 글 작성 칸 박기"
|
||||
withRepliesByDefaultForNewlyFollowed: "팔로우 할 때 기본적으로 답걸도 타임라인에 나오게 하기"
|
||||
newNoteRecived: "새 노트 있어예"
|
||||
sounds: "소리"
|
||||
sound: "소리"
|
||||
listen: "듣기"
|
||||
none: "없음"
|
||||
showInPage: "바닥서 보기"
|
||||
popout: "새 창 열기"
|
||||
volume: "음량"
|
||||
masterVolume: "대빵 음량"
|
||||
notUseSound: "음소거하기"
|
||||
useSoundOnlyWhenActive: "Misskey가 활성화되어 있을 때만 소리 내기"
|
||||
details: "좀 더"
|
||||
chooseEmoji: "이모지 선택"
|
||||
unableToProcess: "작업 다 몬 했십니다"
|
||||
recentUsed: "최근 쓴 놈"
|
||||
install: "설치"
|
||||
uninstall: "삭제"
|
||||
installedApps: "설치된 애플리케이션"
|
||||
nothing: "뭣도 없어예"
|
||||
installedDate: "설치한 날"
|
||||
lastUsedDate: "마지막 사용"
|
||||
state: "상태"
|
||||
sort: "정렬하기"
|
||||
ascendingOrder: "작은 순"
|
||||
descendingOrder: "큰 순"
|
||||
scratchpad: "스크래치 패드"
|
||||
scratchpadDescription: "스크래치 패드는 AiScript를 끼적거리는 창입니더. Misskey랑 갖다 이리저리 상호작용하는 코드를 서가 굴리멘은 그 결과도 바로 확인할 수 있십니다."
|
||||
output: "출력"
|
||||
script: "스크립트"
|
||||
disablePagesScript: "온갖 바닥서 AiScript를 쓰지 않음"
|
||||
updateRemoteUser: "원겍 사용자 근황 알아오기"
|
||||
unsetUserAvatar: "아바타 치우기"
|
||||
unsetUserAvatarConfirm: "아바타 갖다 치울까예?"
|
||||
unsetUserBanner: "배너 치우기"
|
||||
unsetUserBannerConfirm: "배너 갖다 치울까예?"
|
||||
deleteAllFiles: "파일 말캉 뭉캐기"
|
||||
deleteAllFilesConfirm: "파일을 싸그리 다 뭉캐삐릴까예?"
|
||||
removeAllFollowing: "팔로잉 말캉 무루기"
|
||||
removeAllFollowingDescription: "{host} 서버랑 걸어놓은 모든 팔로잉을 무룹니다. 고 서버가 아예 없어지삐맀든가, 그런 경우에 하이소."
|
||||
userSuspended: "요 게정은... 얼어 있십니다."
|
||||
userSilenced: "요 게정은... 수ᇚ혀 있십니다."
|
||||
relays: "릴레이"
|
||||
addRelay: "릴레이 옇기"
|
||||
addedRelays: "옇은 릴레이"
|
||||
enableInfiniteScroll: "알아서 더 보기"
|
||||
author: "맨던 사람"
|
||||
manage: "간리"
|
||||
emailServer: "전자우펜 서버"
|
||||
email: "전자우펜"
|
||||
emailAddress: "전자우펜 주소"
|
||||
smtpHost: "호스트 이럼"
|
||||
smtpPort: "포트"
|
||||
smtpUser: "사용자 이럼"
|
||||
smtpPass: "비밀번호"
|
||||
display: "보기"
|
||||
create: "맨걸기"
|
||||
abuseReports: "신고하기"
|
||||
reportAbuse: "신고하기"
|
||||
reportAbuseRenote: "리노트 신고하기"
|
||||
reportAbuseOf: "{name}님얼 신고하기"
|
||||
reporter: "신고한 사람"
|
||||
reporteeOrigin: "신고덴 사람"
|
||||
reporterOrigin: "신고한 곳"
|
||||
forwardReport: "웬겍 서버에 신고 보내기"
|
||||
random: "무작이"
|
||||
system: "시스템"
|
||||
clip: "클립 맨걸기"
|
||||
createNew: "새로 맨걸기"
|
||||
notesCount: "노트 수"
|
||||
renotesCount: "리노트한 수"
|
||||
renotedCount: "리노트덴 수"
|
||||
followingCount: "팔로우 수"
|
||||
followersCount: "팔로워 수"
|
||||
clips: "클립 맨걸기"
|
||||
clearCache: "캐시 비우기"
|
||||
unlikeConfirm: "좋네예럴 무룹니꺼?"
|
||||
info: "정보"
|
||||
user: "사용자"
|
||||
administration: "간리"
|
||||
on: "킴"
|
||||
off: "껌"
|
||||
clickToFinishEmailVerification: "[{ok}]럴 누질라서 전자우펜 정멩얼 껕내이소."
|
||||
searchByGoogle: "찾기"
|
||||
tenMinutes: "십 분"
|
||||
oneHour: "한 시간"
|
||||
oneDay: "하리"
|
||||
oneWeek: "한 주"
|
||||
oneMonth: "한 달"
|
||||
file: "파일"
|
||||
tools: "도구"
|
||||
like: "좋네예!"
|
||||
unlike: "좋네예 무루기"
|
||||
numberOfLikes: "좋네예 수"
|
||||
show: "보기"
|
||||
roles: "옉할"
|
||||
role: "옉할"
|
||||
noRole: "옉할이 없십니다"
|
||||
thisPostMayBeAnnoyingCancel: "아이예"
|
||||
likeOnly: "좋네예마"
|
||||
icon: "아바타"
|
||||
replies: "답하기"
|
||||
renotes: "리노트"
|
||||
_initialAccountSetting:
|
||||
startTutorial: "길라잡이 하기"
|
||||
_initialTutorial:
|
||||
launchTutorial: "길라잡이 보기"
|
||||
title: "길라잡이"
|
||||
skipAreYouSure: "길라잡이럴 껕냅니까?"
|
||||
_landing:
|
||||
title: "길라잡이에 어서 오이소"
|
||||
_done:
|
||||
title: "길라잡이가 껕낫십니다!🎉"
|
||||
_achievements:
|
||||
_types:
|
||||
_tutorialCompleted:
|
||||
description: "길라잡이럴 껕냇십니다"
|
||||
_gallery:
|
||||
liked: "좋네예한 걸"
|
||||
like: "좋네예!"
|
||||
unlike: "좋네예 무루기"
|
||||
_email:
|
||||
_follow:
|
||||
title: "새 팔로워가 잇십니다"
|
||||
_serverDisconnectedBehavior:
|
||||
reload: "알아서 새로곤침"
|
||||
_channel:
|
||||
removeBanner: "배너 뭉캐기"
|
||||
_theme:
|
||||
keys:
|
||||
mention: "멘션"
|
||||
_sfx:
|
||||
note: "새 노트"
|
||||
notification: "알림"
|
||||
_2fa:
|
||||
step3Title: "학인 기호럴 서기"
|
||||
renewTOTPCancel: "뎃어예"
|
||||
_widgets:
|
||||
profile: "프로필"
|
||||
instanceInfo: "서버 정보"
|
||||
notifications: "알림"
|
||||
timeline: "타임라인"
|
||||
activity: "할동"
|
||||
federation: "옌합"
|
||||
jobQueue: "작업 대기옐"
|
||||
_userList:
|
||||
chooseList: "리스트 개리기"
|
||||
_cw:
|
||||
show: "더 볼래예"
|
||||
_visibility:
|
||||
home: "덜머리"
|
||||
followers: "팔로워"
|
||||
_profile:
|
||||
name: "이럼"
|
||||
username: "사용자 이럼"
|
||||
_exportOrImport:
|
||||
clips: "클립 맨걸기"
|
||||
followingList: "팔로잉"
|
||||
muteList: "수ᇚ후기"
|
||||
blockingList: "차단하기"
|
||||
userLists: "리스트"
|
||||
_charts:
|
||||
federation: "옌합"
|
||||
_timelines:
|
||||
home: "덜머리"
|
||||
_play:
|
||||
script: "스크립트"
|
||||
_pages:
|
||||
like: "좋네예"
|
||||
unlike: "좋네예 무루기"
|
||||
blocks:
|
||||
image: "이미지"
|
||||
_note:
|
||||
id: "노트 아이디"
|
||||
_notification:
|
||||
youWereFollowed: "새 팔로워가 잇십니다"
|
||||
_types:
|
||||
follow: "팔로잉"
|
||||
mention: "멘션"
|
||||
quote: "따오기"
|
||||
reaction: "반엉"
|
||||
_actions:
|
||||
reply: "답하기"
|
||||
_deck:
|
||||
_columns:
|
||||
notifications: "알림"
|
||||
tl: "타임라인"
|
||||
antenna: "안테나"
|
||||
list: "리스트"
|
||||
mentions: "받언 멘션"
|
||||
_webhookSettings:
|
||||
name: "이럼"
|
||||
_moderationLogTypes:
|
||||
suspend: "얼우기"
|
||||
deleteNote: "노트 뭉캐기"
|
||||
deleteUserAnnouncement: "사용자 공지 걸 뭉캐기"
|
||||
resetPassword: "비밀번호 재설정"
|
||||
resolveAbuseReport: "신고 해겔하기"
|
||||
_reversi:
|
||||
total: "합계"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
---
|
||||
_lang_: "ພາສາລາວ"
|
||||
headlineMisskey: "ເຊື່ອມຕໍ່ເຄືອຂ່າຍໂດຍ note"
|
||||
introMisskey: "ຍິນດີຕ້ອນຮັບ! Misskey ເປັນຊອຟແວopensource, ສຳລັບບໍລິການ microblogging ແບບ decentralized\nສ້າງ “note” ເພື່ອແບ່ງປັນຄວາມຄິດຂອງທ່ານກັບທຸກໆ ຄົນທີ່ຢູ່ອ້ອມຮອບທ່ານ 📡\nຢ່າລືມ “reaction” ໂນຕຂອງລາວເພື່ອສະແດງຄວາມຮູ້ສຶກ 👍\nມາສຳຫຼວດໂລກໃໝ່ແນ! 🚀"
|
||||
headlineMisskey: "ເຊື່ອມຕໍ່ເຄືອຂ່າຍໂດຍຫມາຍເຫດ"
|
||||
introMisskey: "ຍິນດີຕ້ອນຮັບ! Misskey ເປັນແຫຼ່ງເປີດ, ການບໍລິການ microblogging ກະຈາຍ\nສ້າງ \"ບັນທຶກ\" ເພື່ອແບ່ງປັນຄວາມຄິດຂອງທ່ານກັບທຸກໆຄົນທີ່ຢູ່ອ້ອມຮອບທ່ານ 📡\nດ້ວຍ \"ປະຕິກິລິຍາ\", ທ່ານຍັງສາມາດສະແດງຄວາມຮູ້ສຶກຂອງທ່ານຢ່າງໄວວາກ່ຽວກັບບັນທຶກຂອງທຸກໆຄົນ 👍\nມາສຳຫຼວດໂລກໃໝ່! 🚀"
|
||||
poweredByMisskeyDescription: "{name} ແມ່ນສ່ວນໜຶ່ງຂອງການບໍລິການທີ່ຂັບເຄື່ອນໂດຍແພລດຟອມ open source. <b>Misskey</b> (ເອີ້ນວ່າ \"Misskey instance\")"
|
||||
monthAndDay: "ເດືອນ{month} / ວັນ{day}"
|
||||
monthAndDay: "{ເດືອນ}/{ມື້}"
|
||||
search: "ຄົ້ນຫາ"
|
||||
notifications: "ການແຈ້ງເຕືອນ"
|
||||
username: "ຊື່ຜູ້ໃຊ້"
|
||||
@@ -15,25 +15,24 @@ gotIt: "ເຂົ້າໃຈແລ້ວ!"
|
||||
cancel: "ຍົກເລີກ"
|
||||
noThankYou: "ບໍ່ແມ່ນຕອນນີ້"
|
||||
enterUsername: "ປ້ອນຊື່ຜູ້ໃຊ້"
|
||||
renotedBy: "Renoted ໂດຍ {user}"
|
||||
noNotes: "ບໍ່ມີ note"
|
||||
renotedBy: "Renoted ໂດຍ {ຜູ້ໃຊ້}"
|
||||
noNotes: "ບໍ່ມີຫມາຍເຫດ"
|
||||
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,24 +40,17 @@ unfavorite: "ລຶບອອກຈາກລາຍການທີ່ມັກ"
|
||||
favorited: "ເພີ່ມໃສ່ລາຍການທີ່ມັກແລ້ວ"
|
||||
alreadyFavorited: "ເພີ່ມເຂົ້າໃນລາຍການທີ່ມັກແລ້ວ."
|
||||
cantFavorite: "ບໍ່ສາມາດເພີ່ມໃສ່ລາຍການທີ່ມັກໄດ້."
|
||||
pin: "ປັກໝຸດ"
|
||||
unpin: "ຖອດປັກໝຸດອອກ"
|
||||
pin: "ປັກໝຸດໄປຫາໂປຣໄຟລ໌"
|
||||
unpin: "ຖອດປັກໝຸດອອກຈາກໂປຣໄຟລ໌"
|
||||
copyContent: "ຄັດລອກເນື້ອຫາ"
|
||||
copyLink: "ຄັດລອກລິ້ງ"
|
||||
copyLinkRenote: "ຄັດລອກລິ້ງຂອງ renote"
|
||||
copyLink: "ສຳເນົາລິ້ງ"
|
||||
delete: "ລຶບ"
|
||||
deleteAndEdit: "ລຶບແລະແກ້ໄຂ"
|
||||
deleteAndEditConfirm: "ເຈົ້າແນ່ໃຈບໍ່? ທີ່ທ່ານຕ້ອງການທີ່ຈະລຶບ note ນີ້ ແລະແກ້ໄຂມັນ ທ່ານອາດຈະສູນເສຍ reaction, renote, ແລະການຕອບກັບທັງໝົດ"
|
||||
deleteAndEdit: "ລົບແລະແກ້ໄຂ"
|
||||
deleteAndEditConfirm: "ເຈົ້າແນ່ໃຈບໍ່? ທີ່ທ່ານຕ້ອງການທີ່ຈະລຶບບັນທຶກນີ້ແລະແກ້ໄຂມັນ ທ່ານອາດຈະສູນເສຍການໂຕ້ຕອບ, ບັນທຶກ, ແລະການຕອບກັບທັງໝົດ"
|
||||
addToList: "ເພີ່ມໃສ່ລາຍຊື່"
|
||||
addToAntenna: "ເພີ່ມໃສ່ເສົາອາກາດ"
|
||||
sendMessage: "ສົ່ງຂໍ້ຄວາມ"
|
||||
copyRSS: "ສຳເນົາ RSS"
|
||||
copyUsername: "ສຳເນົາຊື່ຜູ້ໃຊ້"
|
||||
copyUserId: "ສຳເນົາ ID ຜູ້ໃຊ້"
|
||||
copyNoteId: "ສຳເນົາ ID ບັນທຶກ"
|
||||
copyFileId: "ສຳເນົາ ID ໄຟລ໌"
|
||||
copyFolderId: "ສຳເນົາ ID ໂຟນເດີ"
|
||||
copyProfileUrl: "ສຳເນົາ URL ໂປຣໄຟລ໌"
|
||||
searchUser: "ຄົ້ນຫາຜູ້ໃຊ້"
|
||||
reply: "ຕອບໄປທີ"
|
||||
loadMore: "ໂຫຼດເພີ່ມເຕີມ"
|
||||
@@ -67,15 +59,15 @@ showLess: "ປິດ"
|
||||
youGotNewFollower: "ໄດ້ຕິດຕາມທ່ານ"
|
||||
receiveFollowRequest: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍທີ່ໄດ້ຮັບ"
|
||||
followRequestAccepted: "ຜູ້ຕິດຕາມໄດ້ຍອມຮັບຄໍາຮ້ອງຂໍຂອງທ່ານ"
|
||||
mention: "ກ່າວຖືງ"
|
||||
mention: "ໄດ້ກ່າວມາ"
|
||||
mentions: "ກ່າວເຖິງ"
|
||||
directNotes: "ໂພສ Direct note"
|
||||
directNotes: "ໂດຍກົງຫມາຍເຫດ"
|
||||
importAndExport: "ນໍາເຂົ້າ / ສົ່ງອອກ"
|
||||
import: "ນຳເຂົ້າ"
|
||||
export: "ສົ່ງອອກ"
|
||||
export: "ນຳອອກ"
|
||||
files: "ໄຟລ໌"
|
||||
download: "ດາວໂຫລດ"
|
||||
driveFileDeleteConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການລຶບໄຟລ໌ \"{name}\"? note ທີ່ມີໄຟລ໌ແນບນີ້ຈະຖືກລຶບຖິ້ມ"
|
||||
driveFileDeleteConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການລຶບໄຟລ໌ \"{name}\"? ບັນທຶກທີ່ມີໄຟລ໌ແນບນີ້ຈະຖືກລຶບຖິ້ມ"
|
||||
unfollowConfirm: "ທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການເຊົາຕິດຕາມ {name}?"
|
||||
exportRequested: "ໃນເວລາທີ່ທ່ານໄດ້ຮ້ອງຂໍການສົ່ງອອກ ມັນອາດຈະໃຊ້ເວລາບາງເວລາ ແລະມັນຈະຖືກເພີ່ມໃສ່ drive ຂອງທ່ານເມື່ອມັນສຳເລັດແລ້ວ"
|
||||
importRequested: "ໃນເວລາທີ່ທ່ານໄດ້ຮ້ອງຂໍການນໍາເຂົ້າ ມັນອາດຈະໃຊ້ເວລາບາງເວລາ"
|
||||
@@ -87,7 +79,7 @@ following: "ກຳລັງຕິດຕາມ"
|
||||
followers: "ຜູ້ຕິດຕາມ"
|
||||
followsYou: "ຕິດຕາມເຈົ້າ"
|
||||
createList: "ສ້າງລາຍຊື່"
|
||||
manageLists: "ຈັດການລາຍຊື່"
|
||||
manageLists: "ການບໍລິຫານບັນຊີລາຍການ"
|
||||
error: "ຂໍ້ຜິດພາດ"
|
||||
somethingHappened: "ອຸຍ, ມີບາງຢ່າງຜິດພາດ"
|
||||
retry: "ລອງໃຫມ່"
|
||||
@@ -97,31 +89,26 @@ serverIsDead: "ເຊີບເວີນີ້ບໍ່ຕອບສະໜອງ
|
||||
youShouldUpgradeClient: "ເພື່ອເບິ່ງໜ້ານີ້, ກະລຸນາໂຫຼດຂໍ້ມູນຄືນໃໝ່ເພື່ອອັບເດດລູກຄ້າຂອງທ່ານ"
|
||||
enterListName: "ໃສ່ຊື່ສຳລັບລາຍຊື່"
|
||||
privacy: "ຄວາມເປັນສ່ວນຕົວ"
|
||||
makeFollowManuallyApprove: "ຕິດຕາມຄຳຂໍທີ່ຕ້ອງໄດ້ຮັບການອະນຸມັດ"
|
||||
defaultNoteVisibility: "ການເບິ່ງເຫັນທີ່ເປັນຄ່າເລີ່ມຕົ້ນ"
|
||||
makeFollowManuallyApprove: "ປະຕິບັດຕາມການຮ້ອງຂໍຮຽກຮ້ອງໃຫ້ມີການອະນຸມັດ"
|
||||
defaultNoteVisibility: "ເປັນຄ່າເລີ່ມຕົ້ນ"
|
||||
follow: "ກຳລັງຕິດຕາມ"
|
||||
followRequest: "ສົ່ງຄຳຂໍຕິດຕາມ"
|
||||
followRequests: "ສົ່ງຄຳຂໍຕິດຕາມ"
|
||||
followRequest: "ສົ່ງການຮ້ອງຂໍປະຕິບຕາມ"
|
||||
followRequests: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍ"
|
||||
unfollow: "ເຊົາຕິດຕາມ"
|
||||
followRequestPending: "ລໍຖ້າການອະນຸມັດໃຫ້ຕິດຕາມ"
|
||||
enterEmoji: "ປ້ອນເອໂມຈິ"
|
||||
followRequestPending: "ປະຕິບັດຕາມຄໍາຮ້ອງຂໍທີ່ລໍຖ້າຢູ່"
|
||||
enterEmoji: "ປ້ອນອີໂມຈິ"
|
||||
renote: "Renote"
|
||||
unrenote: "ເລີກ Renote"
|
||||
renoted: "renote ແລ້ວ"
|
||||
cantRenote: "ໂພສນີ້ບໍ່ສາມາດ renote ໃໝ່ໄດ້"
|
||||
cantReRenote: "ບໍ່ສາມາດບັນທຶກຄືນໃໝ່ໄດ້"
|
||||
quote: "ອ້າງອີງ"
|
||||
inChannelRenote: "Renote ໃນ channel ເທົ່ານັ້ນ"
|
||||
inChannelQuote: "ອ້າງອິງໃນ channel ເທົ່ານັ້ນ"
|
||||
pinnedNote: "note ທີ່ປັກໝຸດໄວ້"
|
||||
pinned: "ປັກໝຸດ"
|
||||
renoted: "ເກັບບັນທຶກໄວ້"
|
||||
quote: "ລວມຂໍ້ຄວາມອ້າງອີງ"
|
||||
pinnedNote: "ບັນທຶກທີ່ປັກໝຸດໄວ້"
|
||||
pinned: "ປັກໝຸດໄປຫາໂປຣໄຟລ໌"
|
||||
you: "ເຈົ້າ"
|
||||
clickToShow: "ກົດເພື່ອສະແດງໃຫ້ເຫັນ"
|
||||
sensitive: "NSFW"
|
||||
add: "ເພີ່ມ"
|
||||
reaction: "reaction"
|
||||
reactions: "reaction"
|
||||
attachCancel: "ເອົາໄຟລ໌ແນບ"
|
||||
reaction: "ປະຕິກິລິຍາ"
|
||||
reactions: "ປະຕິກິລິຍາ"
|
||||
mute: "ປີດສຽງ"
|
||||
unmute: "ເປີດສຽງ"
|
||||
block: "ບ໋ອກ"
|
||||
@@ -129,10 +116,6 @@ unblock: "ຍົກເລີກກາຮົບລັອກ"
|
||||
suspend: "ລະງັບ"
|
||||
unsuspend: "ເຊົາລະງັບ"
|
||||
selectList: "ເລືອກບັນຊີລາຍການ"
|
||||
editList: "ແກ້ໄຂລາຍຊື່"
|
||||
selectChannel: "ເລືອກຊ່ອງ"
|
||||
selectAntenna: "ເລືອກເສົາອາກາດ"
|
||||
editAntenna: "ແກ້ໄຂເສົາອາກາດ"
|
||||
selectWidget: "ເລືອກວິກເຈັດ"
|
||||
editWidgets: "ແກ້ໄຂ Widget"
|
||||
editWidgetsExit: "ສຳເລັດແລ້ວ"
|
||||
@@ -142,7 +125,6 @@ emojis: "ອີໂມຈິ"
|
||||
emojiName: "ຊື່ Emoji"
|
||||
emojiUrl: "URL ອີໂມຈິ"
|
||||
addEmoji: "ຕື່ມອີໂມຈິ"
|
||||
settingGuide: "ການຕັ້ງຄ່າທີ່ແນະນໍາ"
|
||||
flagAsBot: "ໝາຍບັນຊີນີ້ເປັນບັອດ"
|
||||
flagAsCat: "ໝາຍບັນຊີນີ້ເປັນແມວ"
|
||||
flagAsCatDescription: "ເປີດໃຊ້ຕົວເລືອກນີ້ເພື່ອໝາຍບັນຊີນີ້ເປັນແມວ"
|
||||
@@ -151,13 +133,10 @@ flagShowTimelineRepliesDescription: "ສະແດງການຕອບກັບ
|
||||
autoAcceptFollowed: "ອະນຸມັດອັດຕະໂນມັດຕາມຄຳຮ້ອງຂໍຈາກຜູ້ໃຊ້ທີ່ທ່ານກຳລັງຕິດຕາມຢູ່"
|
||||
addAccount: "ເພີ່ມບັນຊີ"
|
||||
loginFailed: "ການເຂົ້າສູ່ລະບົບບໍ່ສຳເລັດ"
|
||||
showOnRemote: "ເບິ່ງຢູ່ໃນຕົວຢ່າງໄລຍະໄກ"
|
||||
general: "ທົ່ວໄປ"
|
||||
wallpaper: "ພາບພື້ນຫລັງ"
|
||||
setWallpaper: "ຕັ້ງເປັນພາບພື້ນຫຼັງ"
|
||||
removeWallpaper: "ລຶບຮູບວໍເປເປີອອກ"
|
||||
searchWith: "ຊອກຫາ: {q}"
|
||||
youHaveNoLists: "ທ່ານບໍ່ມີລາຍການໃດໆ"
|
||||
proxyAccount: "ບັນຊີພຣັອກຊີ"
|
||||
host: "ໂຮດສ"
|
||||
selectUser: "ເລືອກຜູ້ໃຊ້"
|
||||
@@ -176,9 +155,7 @@ operations: "ການດຳເນີນງານ"
|
||||
software: "ຊອບແວ"
|
||||
version: "ສະບັບ"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} ໄຟລ໌(s)"
|
||||
monitor: "ຈໍພາບ"
|
||||
jobQueue: "ຄິວວຽກ"
|
||||
cpuAndMemory: "CPU ແລະ ຫນ່ວຍຄວາມຈໍາ"
|
||||
network: "ເຄືອຂ່າຍ"
|
||||
disk: "ດິສກ໌"
|
||||
@@ -186,18 +163,12 @@ instanceInfo: "ອີນສະແຕນ"
|
||||
statistics: "ສະຖິຕິ"
|
||||
clearQueue: "ລ້າງຄິວ"
|
||||
clearCachedFiles: "ລຶບລ້າງແຄສ"
|
||||
noUsers: "ບໍ່ພົບຜູ້ໃຊ້"
|
||||
editProfile: "ແກ້ໄຂໂປຣໄຟລ໌"
|
||||
done: "ສຳເລັດ"
|
||||
processing: "ກຳລັງປະມວນຜົນ"
|
||||
preview: "ສະແດງເປັນຕົວຢ່າງ"
|
||||
default: "ຄ່າເລີ່ມຕົ້ນ"
|
||||
defaultValueIs: "ຄ່າເລີ່ມຕົ້ນ: {value}"
|
||||
noCustomEmojis: "ບໍ່ມີອີໂມຈິ"
|
||||
noJobs: "ບໍ່ມີຊິ້ນວຽກ"
|
||||
federating: "ສະຫະພັນ"
|
||||
blocked: "ບລັອກແລ້ວ "
|
||||
suspended: "ໂຈະ"
|
||||
all: "ທັງໝົດ"
|
||||
subscribing: "ສະໝັກສະມາຊິກແລັວ"
|
||||
publishing: "ການພິມເຜີຍແຜ່"
|
||||
@@ -206,209 +177,47 @@ instanceFollowing: "ກຳລັງຕິດຕາມສຸດຕົວຢ່າ
|
||||
instanceFollowers: "ຜູ້ຕິດຕາມຕົວຢ່າງ"
|
||||
instanceUsers: "ຜູ້ຊົມໃຊ້ຂອງຕົວຢ່າງນີ້"
|
||||
changePassword: "ປ່ຽນລະຫັດຜ່ານ"
|
||||
security: "ຄວາມປອດໄພ"
|
||||
retypedNotMatch: "ວັດສະດຸປ້ອນບໍ່ກົງກັນ"
|
||||
currentPassword: "ລະຫັດຜ່ານປະຈຸບັນ"
|
||||
newPassword: "ລະຫັດຜ່ານໃໝ່"
|
||||
newPasswordRetype: "ໃສ່ລະຫັດຜ່ານໃໝ່ອີກເທື່ອໜຶ່ງ"
|
||||
attachFile: "ແນບໄຟລ໌"
|
||||
more: "ເພີ່ມເຕີມ!"
|
||||
featured: "ໄຮໄລທ໌"
|
||||
usernameOrUserId: "ຊື່ຜູ້ໃຊ້ ຫຼື id ຜູ້ໃຊ້"
|
||||
noSuchUser: "ບໍ່ພົບຜູ້ໃຊ້"
|
||||
lookup: "ຄົ້ນຫາ"
|
||||
announcements: "ປະກາດ"
|
||||
imageUrl: "URL ຮູບພາບ"
|
||||
remove: "ລຶບ"
|
||||
removed: "ລຶບແລ້ວ"
|
||||
resetAreYouSure: "ຣີເຊັດບໍ?"
|
||||
saved: "ບັນທຶກແລ້ວ"
|
||||
messaging: "ແຊ໋ດ"
|
||||
upload: "ອັບໂຫຼດ"
|
||||
keepOriginalUploading: "ຮັກສາຮູບພາບຕົ້ນສະບັບ"
|
||||
fromDrive: "ຈາກ Drive"
|
||||
fromUrl: "ຈາກ URL"
|
||||
uploadFromUrl: "ອັບໂຫຼດຈາກ URL"
|
||||
uploadFromUrlDescription: "URL ຂອງໄຟລ໌ທີ່ທ່ານຕ້ອງການອັບໂຫລດ"
|
||||
uploadFromUrlRequested: "ຮ້ອງຂໍການອັບໂຫລດ"
|
||||
explore: "ສຳຫຼວດ"
|
||||
messageRead: "ອ່ານແລ້ວ"
|
||||
startMessaging: "ເລີ່ມການສົນທະນາໃໝ່"
|
||||
nUsersRead: "ອ່ານໂດຍ {n}"
|
||||
agree: "ຍອມຮັບ"
|
||||
termsOfService: "ເງື່ອນໄຂການບໍລິການ"
|
||||
tos: "ເງື່ອນໄຂການໃຫ້ບໍລິການ"
|
||||
start: "ເລີ່ມຕົ້ນນຳໃຊ້ເລີຍ"
|
||||
home: "ໜ້າຫຼັກ"
|
||||
activity: "ກິດຈະກຳ"
|
||||
images: "ຮູບພາບ"
|
||||
image: "ຮູບພາບ"
|
||||
birthday: "ວັນເກີດ"
|
||||
yearsOld: "{age} ປີ"
|
||||
registeredDate: "ວັນທີ່ເປັນສະມາຊິກ"
|
||||
location: "ທີ່ຕັ້ງ"
|
||||
theme: "ແທ໋ມ"
|
||||
themeForLightMode: "ຮູບແບບສີສັນເພື່ອໃຊ້ໃນໂໝດແສງ"
|
||||
themeForDarkMode: "ຮູບແບບສີສັນທີ່ຈະໃຊ້ຢູ່ໃນໂໝດມືດ"
|
||||
light: "ສະຫວ່າງ"
|
||||
dark: "ມືດ"
|
||||
lightThemes: "ຊຸດຮູບແບບສະຫວ່າງ"
|
||||
darkThemes: "ຮູບແບບສີສັນມືດ"
|
||||
syncDeviceDarkMode: "ຊິງຄ໌ໂໝດມືດກັບການຕັ້ງຄ່າທົ່ວອຸປະກອນ"
|
||||
drive: "ຂັບ"
|
||||
fileName: "ຊື່ໄຟລ໌"
|
||||
selectFile: "ເລືອກໄຟລ໌"
|
||||
selectFiles: "ເລືອກໄຟລ໌"
|
||||
selectFolder: "ເລືອກໂຟລເດີ"
|
||||
selectFolders: "ເລືອກໂຟລເດີ"
|
||||
renameFile: "ປ່ຽນຊື່ໄຟລ໌"
|
||||
folderName: "ຊື່ໂຟນເດີ"
|
||||
createFolder: "ສ້າງໂຟລເດີ"
|
||||
renameFolder: "ປ່ຽນຊື່ໂຟນເດີນີ້"
|
||||
deleteFolder: "ລົບໂຟລເດີ"
|
||||
addFile: "ເພີ່ມໄຟລ໌"
|
||||
emptyDrive: "Drive ຂອງທ່ານຫວ່າງເປົ່າ"
|
||||
emptyFolder: "ໂຟນເດີນີ້ເປົ່າຫວ່າງ"
|
||||
unableToDelete: "ບໍ່ສາມາດລົບໄດ້"
|
||||
inputNewFileName: "ໃສ່ຊື່ໄຟລ໌ໃໝ່"
|
||||
inputNewDescription: "ໃສ່ຄຳບັນຍາຍໃໝ່"
|
||||
inputNewFolderName: "ໃສ່ຊື່ໂຟນເດີໃໝ່"
|
||||
circularReferenceFolder: "ໂຟນເດີປາຍທາງແມ່ນໂຟນເດີຍ່ອຍຂອງໂຟນເດີທີ່ທ່ານຕ້ອງການຍ້າຍ"
|
||||
rename: "ປ່ຽນຊື່"
|
||||
doNothing: "ບໍ່ສົນໃຈ"
|
||||
watch: "ເບິ່ງ"
|
||||
unwatch: "ຢຸດເບິ່ງ"
|
||||
nsfw: "NSFW"
|
||||
accept: "ອະນຸຍາດ"
|
||||
reject: "ປະຕິເສດ"
|
||||
normal: "ປົກກະຕິ"
|
||||
instanceName: "ຊື່ເຊີເວີ້"
|
||||
instanceDescription: "ຄໍາອະທິບາຍຕົວຢ່າງ"
|
||||
maintainerName: "ຜູ້ດູແລ"
|
||||
maintainerEmail: "ອີເມວ admin"
|
||||
tosUrl: "ເງື່ອນໄຂການໃຫ້ບໍລິການ URL"
|
||||
thisYear: "ປີນີ້"
|
||||
thisMonth: "ເດືອນນີ້"
|
||||
today: "ມື້ນີ້"
|
||||
dayX: "ວັນ {day}"
|
||||
monthX: "ເດືອນ {month}"
|
||||
yearX: "ປີ {year}"
|
||||
pages: "ໜ້າ"
|
||||
integration: "ຄວາມສຳພັນຂອງ"
|
||||
connectService: "ເຊື່ອມຕໍ່"
|
||||
disconnectService: "ຕັດການເຊື່ອມຕໍ່"
|
||||
enableLocalTimeline: "ເປີດໃຊ້ທາມລາຍທ້ອງຖິ່ນ"
|
||||
enableGlobalTimeline: "ເປີດໃຊ້ທາມລາຍທົ່ວໂລກ"
|
||||
disablingTimelinesInfo: "ຜູ້ເບິ່ງແຍງລະບົບ ແລະຜູ້ຄວບຄຸມຈະມີການເຂົ້າເຖິງທຸກກຳນົດເວລາ, ເຖິງແມ່ນວ່າຈະບໍ່ໄດ້ເປີດໃຊ້ງານກໍຕາມ"
|
||||
registration: "ລົງທະບຽນ"
|
||||
enableRegistration: "ເປີດໃຊ້ການລົງທະບຽນຜູ້ໃຊ້ໃໝ່"
|
||||
invite: "ເຊີນ"
|
||||
driveCapacityPerLocalAccount: "ຄວາມອາດສາມາດຂັບຕໍ່ຜູ້ໃຊ້ທ້ອງຖິ່ນ"
|
||||
driveCapacityPerRemoteAccount: "ໄດຣຟ໌ຄວາມອາດສາມາດຕໍ່ຜູ້ໃຊ້ທາງໄກ"
|
||||
basicInfo: "ຂໍ້ມຸນເບື້ອງຕົ້ນ"
|
||||
pinnedNotes: "ບັນທຶກທີ່ປັກໝຸດໄວ້"
|
||||
hcaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
hcaptchaSecretKey: "ກະແຈລັບ"
|
||||
mcaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
mcaptchaSecretKey: "ກະແຈລັບ"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "ເປີດໃຊ້ງານລີແຄ໋ບຈາ"
|
||||
recaptchaSiteKey: "ກະແຈໄຊທ໌"
|
||||
recaptchaSecretKey: "ກະແຈລັບ"
|
||||
turnstileSiteKey: "ກະແຈໄຊທ໌"
|
||||
turnstileSecretKey: "ກະແຈລັບ"
|
||||
name: "ຊື່"
|
||||
userList: "ລາຍການ"
|
||||
about: "ກ່ຽວກັບ"
|
||||
aboutMisskey: "ກ່ຽວກັບ Misskey"
|
||||
administrator: "ຜູ້ບໍລິຫານ"
|
||||
token: "ໂທເຄັນ"
|
||||
share: "ແບ່ງປັນ"
|
||||
notFound: "ບໍ່ພົບ"
|
||||
help: "ຊ່ວຍເຫຼືອ"
|
||||
close: "ປິດ"
|
||||
invites: "ເຊີນ"
|
||||
members: "ສະມາຊິກ"
|
||||
transfer: "ໂອນຍ້າຍ"
|
||||
title: "ຫົວຂໍ້"
|
||||
text: "ຂໍ້ຄວາມ"
|
||||
enable: "ເປີດໃຊ້"
|
||||
next: "ຕໍ່ໄປ"
|
||||
retype: "ເຂົ້າໄປອີກຄັ້ງ"
|
||||
quoteAttached: "ວົງຢືມ"
|
||||
invitations: "ເຊີນ"
|
||||
unavailable: "ບໍ່ສາມາດໃຊ້ໄດ້"
|
||||
language: "ພາສາ"
|
||||
aboutX: "ກ່ຽວກັບ {x}"
|
||||
emojiStyle: "ຮູບແບບອີໂມຈິ"
|
||||
native: "ພາສາແມ່"
|
||||
noHistory: "ບໍ່ມີລາຍການຢູ່ບ່ອນນີ້"
|
||||
doing: "ກຳລັງປະມວນຜົນ..."
|
||||
category: "ຫມວດຫມູ່"
|
||||
tags: "ແທ໋ກ"
|
||||
createAccount: "ສ້າງບັນຊີ"
|
||||
existingAccount: "ທີ່ມີຢູ່"
|
||||
dashboard: "ໜ້າປັດ"
|
||||
local: "ທ້ອງຖິ່ນ"
|
||||
numberOfDays: "ຈຳນວນມື້"
|
||||
objectStorageBucket: "Bucket"
|
||||
objectStoragePrefix: "Prefix"
|
||||
objectStorageEndpoint: "Endpoint"
|
||||
objectStorageRegion: "ພາກພື້ນ"
|
||||
deleteAll: "ລຶບທັງໝົດ"
|
||||
sounds: "ສຽງ"
|
||||
sound: "ສຽງ"
|
||||
none: "ບໍ່ມີ"
|
||||
volume: "ລະດັບສຽງ"
|
||||
details: "ລາຍລະອຽດ"
|
||||
install: "ຕິດຕັ້ງ"
|
||||
uninstall: "ຖອນການຕິດຕັ້ງ"
|
||||
state: "ສະຖານະ"
|
||||
sort: "ຈັດຮຽງໂດຍ"
|
||||
ascendingOrder: "ນ້ອຍໄປຫາໃຫຍ່"
|
||||
descendingOrder: "ໃຫຍ່ຫານ້ອຍ"
|
||||
output: "ຜົນຜະລິດ"
|
||||
script: "ບົດຄວາມ"
|
||||
menu: "ເມນູ"
|
||||
rearrange: "ຈັດລຽງຄືນ"
|
||||
poll: "ການພູນ"
|
||||
description: "ລາຍລະອຽດ"
|
||||
author: "ຜູ້ຂຽນ"
|
||||
manage: "ການຈັດການ"
|
||||
plugins: "ປລັ໋ກອີນ"
|
||||
width: "ກວ້າງ"
|
||||
height: "ຄວາມສູງ"
|
||||
large: "ໃຫຍ່."
|
||||
medium: "ປານກາງ"
|
||||
small: "ເລັກ"
|
||||
permission: "ການອະນຸຍາດ"
|
||||
notificationType: "ປະເພດການແຈ້ງເຕືອນ"
|
||||
edit: "ແກ້ໄຂ"
|
||||
email: "ອີເມວ"
|
||||
smtpHost: "ໂຮດສ"
|
||||
smtpUser: "ຊື່ຜູ້ໃຊ້"
|
||||
smtpPass: "ລະຫັດຜ່ານ"
|
||||
clearCache: "ລຶບລ້າງແຄສ"
|
||||
info: "ກ່ຽວກັບ"
|
||||
user: "ຜູ້ໃຊ້ຕ່າງໆ"
|
||||
administration: "ການຈັດການ"
|
||||
middle: "ປານກາງ"
|
||||
searchByGoogle: "ຄົ້ນຫາ"
|
||||
file: "ໄຟລ໌"
|
||||
replies: "ຕອບໄປທີ"
|
||||
renotes: "Renote"
|
||||
_role:
|
||||
_priority:
|
||||
middle: "ປານກາງ"
|
||||
_email:
|
||||
_follow:
|
||||
title: "ໄດ້ຕິດຕາມທ່ານ"
|
||||
_theme:
|
||||
description: "ລາຍລະອຽດ"
|
||||
keys:
|
||||
mention: "ໄດ້ກ່າວມາ"
|
||||
renote: "Renote"
|
||||
_sfx:
|
||||
note: "ບັນທຶກ"
|
||||
notification: "ການແຈ້ງເຕືອນ"
|
||||
chat: "ແຊ໋ດ"
|
||||
_2fa:
|
||||
renewTOTPCancel: "ບໍ່ແມ່ນຕອນນີ້"
|
||||
_widgets:
|
||||
@@ -416,9 +225,7 @@ _widgets:
|
||||
instanceInfo: "ອີນສະແຕນ"
|
||||
notifications: "ການແຈ້ງເຕືອນ"
|
||||
timeline: "ເສັ້ນກຳນົດເວລາ"
|
||||
activity: "ກິດຈະກຳ"
|
||||
federation: "ສະຫະພັນ"
|
||||
jobQueue: "ຄິວວຽກ"
|
||||
_userList:
|
||||
chooseList: "ເລືອກບັນຊີລາຍການ"
|
||||
_cw:
|
||||
@@ -427,7 +234,6 @@ _visibility:
|
||||
home: "ໜ້າຫຼັກ"
|
||||
followers: "ຜູ້ຕິດຕາມ"
|
||||
_profile:
|
||||
name: "ຊື່"
|
||||
username: "ຊື່ຜູ້ໃຊ້"
|
||||
_exportOrImport:
|
||||
followingList: "ກຳລັງຕິດຕາມ"
|
||||
@@ -438,9 +244,6 @@ _charts:
|
||||
federation: "ສະຫະພັນ"
|
||||
_timelines:
|
||||
home: "ໜ້າຫຼັກ"
|
||||
_play:
|
||||
script: "ບົດຄວາມ"
|
||||
summary: "ລາຍລະອຽດ"
|
||||
_pages:
|
||||
blocks:
|
||||
image: "ຮູບພາບ"
|
||||
@@ -462,8 +265,3 @@ _deck:
|
||||
list: "ລາຍການ"
|
||||
channel: "ຊ່ອງ"
|
||||
mentions: "ກ່າວເຖິງ"
|
||||
_webhookSettings:
|
||||
name: "ຊື່"
|
||||
_moderationLogTypes:
|
||||
suspend: "ລະງັບ"
|
||||
|
||||
|
@@ -20,7 +20,6 @@ noNotes: "Geen notities"
|
||||
noNotifications: "Geen meldingen"
|
||||
instance: "Server"
|
||||
settings: "Instellingen"
|
||||
notificationSettings: "Notificatie instellingen"
|
||||
basicSettings: "Basisinstellingen"
|
||||
otherSettings: "Overige instellingen"
|
||||
openInWindow: "In een venster openen"
|
||||
@@ -45,20 +44,12 @@ pin: "Vastmaken aan profielpagina"
|
||||
unpin: "Losmaken van profielpagina"
|
||||
copyContent: "Kopiëren inhoud"
|
||||
copyLink: "Kopiëren link"
|
||||
copyLinkRenote: ""
|
||||
delete: "Verwijderen"
|
||||
deleteAndEdit: "Verwijderen en bewerken"
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan bewerken? Je verliest alle reacties, herdelingen en antwoorden erop."
|
||||
addToList: "Aan lijst toevoegen"
|
||||
addToAntenna: "Voeg toe aan antenne"
|
||||
sendMessage: "Verstuur bericht"
|
||||
copyRSS: "Kopieer RSS"
|
||||
copyUsername: "Kopiëren gebruikersnaam "
|
||||
copyUserId: "Kopieer gebruiker ID"
|
||||
copyNoteId: "Kopieer notitie ID"
|
||||
copyFileId: "Kopieer veld ID"
|
||||
copyFolderId: "Kopieer folder ID"
|
||||
copyProfileUrl: "Kopieer profiel URL"
|
||||
searchUser: "Zoeken een gebruiker"
|
||||
reply: "Antwoord"
|
||||
loadMore: "Laad meer"
|
||||
@@ -119,6 +110,7 @@ sensitive: "NSFW"
|
||||
add: "Toevoegen"
|
||||
reaction: "Reacties"
|
||||
reactions: "Reacties"
|
||||
reactionSetting: "Reacties die in de reactie-selector worden getoond"
|
||||
reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen"
|
||||
rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen"
|
||||
attachCancel: "Verwijder bijlage"
|
||||
@@ -262,12 +254,12 @@ noMoreHistory: "Er is geen verdere geschiedenis"
|
||||
startMessaging: "Start een gesprek"
|
||||
nUsersRead: "gelezen door {n}"
|
||||
agreeTo: "Ik stem in met {0}"
|
||||
tos: "Gebruiksvoorwaarden"
|
||||
start: "Aan de slag"
|
||||
home: "Startpagina"
|
||||
remoteUserCaution: "Aangezien deze gebruiker van een externe server afkomstig is, kan de weergegeven informatie onvolledig zijn."
|
||||
activity: "Activiteit"
|
||||
images: "Afbeeldingen"
|
||||
image: "Afbeeldingen"
|
||||
birthday: "Geboortedatum"
|
||||
yearsOld: "{age} jaar"
|
||||
registeredDate: "Inschrijvingsdatum"
|
||||
@@ -304,6 +296,7 @@ copyUrl: "URL kopiëren"
|
||||
rename: "Hernoemen"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
nsfw: "NSFW"
|
||||
whenServerDisconnected: "Wanneer de verbinding met de server wordt onderbroken"
|
||||
disconnectedFromServer: "Verbinding met de server onderbroken."
|
||||
reload: "Verversen"
|
||||
@@ -338,6 +331,7 @@ invite: "Uitnodigen"
|
||||
driveCapacityPerLocalAccount: "Opslagruimte per lokale gebruiker"
|
||||
driveCapacityPerRemoteAccount: "Opslagruimte per externe gebruiker"
|
||||
inMb: "in megabytes"
|
||||
iconUrl: "Pictogram URL"
|
||||
bannerUrl: "Banner URL"
|
||||
backgroundImageUrl: "URL afbeelding"
|
||||
basicInfo: "Basisinformatie"
|
||||
@@ -348,8 +342,6 @@ 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"
|
||||
@@ -397,6 +389,7 @@ reduceUiAnimation: "Verminder beweging in de UI"
|
||||
share: "Delen"
|
||||
notFound: "Niet gevonden"
|
||||
uploadFolder: "Standaardmap voor uploaden"
|
||||
cacheClear: "Cache verwijderen"
|
||||
markAsReadAllNotifications: "Markeer alle meldingen als gelezen"
|
||||
markAsReadAllUnreadNotes: "Markeer alle berichten als gelezen"
|
||||
markAsReadAllTalkMessages: "Markeer alle berichten als gelezen"
|
||||
@@ -426,9 +419,6 @@ pushNotificationAlreadySubscribed: "Pushberichtrn al ingeschakeld"
|
||||
windowMaximize: "Maximaliseren"
|
||||
windowRestore: "Herstellen"
|
||||
loggedInAsBot: "Momenteel als bot ingelogd"
|
||||
icon: "Avatar"
|
||||
replies: "Antwoord"
|
||||
renotes: "Herdelen"
|
||||
_email:
|
||||
_follow:
|
||||
title: "volgde jou"
|
||||
@@ -439,6 +429,7 @@ _theme:
|
||||
_sfx:
|
||||
note: "Notities"
|
||||
notification: "Meldingen"
|
||||
chat: "Chat"
|
||||
_2fa:
|
||||
renewTOTPCancel: "Nee, bedankt"
|
||||
_widgets:
|
||||
@@ -492,9 +483,3 @@ _deck:
|
||||
antenna: "Antennes"
|
||||
list: "Lijsten"
|
||||
mentions: "Vermeldingen"
|
||||
_webhookSettings:
|
||||
name: "Naam"
|
||||
_moderationLogTypes:
|
||||
suspend: "Opschorten"
|
||||
resetPassword: "Wachtwoord terugzetten"
|
||||
|
||||
|
@@ -1,723 +1,2 @@
|
||||
---
|
||||
_lang_: "Norsk Bokmål"
|
||||
headlineMisskey: "Et nettverk forbundet med Notes"
|
||||
introMisskey: "Velkommen! Misskey er en desentralisert mikrobloggtjeneste med åpen kildekode.\nOpprett \"Notes\" for å dele tankene dine med alle rundt deg. 📡\nMed \"reaksjoner\" kan du også raskt gi uttrykk for hva du synes om alles Notes. 👍\nLa oss utforske en ny verden! 🚀"
|
||||
monthAndDay: "{day}-{month}"
|
||||
search: "Søk"
|
||||
notifications: "Varsler"
|
||||
username: "Brukernavn"
|
||||
password: "Passord"
|
||||
forgotPassword: "Glemt passord"
|
||||
fetchingAsApObject: "Henter fra Fediverse..."
|
||||
ok: "OK"
|
||||
gotIt: "Skjønner"
|
||||
cancel: "Avbryt"
|
||||
noThankYou: "Ikke nå"
|
||||
enterUsername: "Skriv inn brukernavn"
|
||||
renotedBy: "Renotes av {user}"
|
||||
noNotes: "Ingen Notes"
|
||||
noNotifications: "Ingen varsler"
|
||||
instance: "Server"
|
||||
settings: "Innstillinger"
|
||||
notificationSettings: "Varslingsinnstillinger"
|
||||
basicSettings: "Grunnleggende innstillinger"
|
||||
otherSettings: "Andre innstillinger"
|
||||
openInWindow: "Åpne i vindu"
|
||||
profile: "Profil"
|
||||
timeline: "Tidslinje"
|
||||
noAccountDescription: "Denne brukeren har ikke skrevet sin biografi ennå."
|
||||
login: "Logg inn"
|
||||
loggingIn: "Logget inn"
|
||||
logout: "Logg ut"
|
||||
signup: "Bli med"
|
||||
uploading: "Laster opp"
|
||||
save: "Lagre"
|
||||
users: "Brukere"
|
||||
addUser: "Legg til bruker"
|
||||
favorite: "Legg til i favoritter"
|
||||
favorites: "Favoritter"
|
||||
unfavorite: "Fjern fra favoritter"
|
||||
favorited: "Lagt til i favoritter."
|
||||
alreadyFavorited: "Allerede lagt til i favoritter."
|
||||
cantFavorite: "Kunne ikke legge til i favoritter."
|
||||
pin: "Fest til profil"
|
||||
unpin: "Fjern fra profil"
|
||||
copyContent: "Kopier innhold"
|
||||
copyLink: "Kopier lenke"
|
||||
delete: "Slett"
|
||||
deleteAndEdit: "Slett og rediger"
|
||||
deleteAndEditConfirm: "Er du sikker på at du vil slette denne Noten og redigere den? Du vil miste alle reaksjoner, Renotes og svar på den."
|
||||
addToList: "Legg til i liste"
|
||||
sendMessage: "Send en melding"
|
||||
copyRSS: "Kopier RSS"
|
||||
copyUsername: "Kopier brukernavn"
|
||||
searchUser: "Søk brukere"
|
||||
reply: "Svar"
|
||||
loadMore: "Vis mer"
|
||||
showMore: "Vis mer"
|
||||
showLess: "Lukk"
|
||||
youGotNewFollower: "fulgte deg"
|
||||
followRequestAccepted: "Følgeforespørsel akseptert"
|
||||
importAndExport: "Importer og eksporter"
|
||||
import: "Importer"
|
||||
export: "Eksporter"
|
||||
files: "Filer"
|
||||
download: "Nedlastinger"
|
||||
driveFileDeleteConfirm: "Er du sikker på at du vil slette \"{name}\"? Det vil også forsvinne fra alt innhold som bruker det."
|
||||
unfollowConfirm: "Er du sikker på at du vil slutte å følge {name}?"
|
||||
importRequested: "Du har bedt om import. Dette kan ta en stund."
|
||||
lists: "Lister"
|
||||
noLists: "Ingen lister"
|
||||
note: "Note"
|
||||
notes: "Notes"
|
||||
following: "Følger"
|
||||
followers: "Følgere"
|
||||
followsYou: "Følger deg"
|
||||
createList: "Opprett liste"
|
||||
error: "Feil"
|
||||
somethingHappened: "En feil har oppstått"
|
||||
retry: "Prøv igjen"
|
||||
pageLoadError: "Kunne ikke hente side."
|
||||
serverIsDead: "Denne serveren svarer ikke. Vennligst vent en stund og prøv igjen."
|
||||
enterListName: "Skriv inn et navn på listen"
|
||||
privacy: "Personvern"
|
||||
defaultNoteVisibility: "Standard synlighet"
|
||||
follow: "Følg"
|
||||
followRequest: "Følgeforespørsel"
|
||||
followRequests: "Følgeforespørsel"
|
||||
unfollow: "Avfølg"
|
||||
followRequestPending: "Venter på godkjenning"
|
||||
enterEmoji: "Skriv inn en emoji"
|
||||
renote: "Renote"
|
||||
renoted: "Renotet."
|
||||
cantRenote: "Dette innlegget kan ikke renotes."
|
||||
cantReRenote: "En Renote kan ikke renotes."
|
||||
quote: "Sitat"
|
||||
inChannelRenote: "Renote kun for kanal"
|
||||
inChannelQuote: "Sitat kun for kanal"
|
||||
pinnedNote: "Festet Note"
|
||||
pinned: "Fest til profil"
|
||||
you: "Du"
|
||||
clickToShow: "Klikk for å vise"
|
||||
add: "Legg til"
|
||||
reaction: "Reaksjon"
|
||||
reactions: "Reaksjoner"
|
||||
reactionSettingDescription2: "Dra for å endre rekkefølgen, klikk for å slette, trykk \"+\" for å legge til."
|
||||
rememberNoteVisibility: "Husk innstillingene for synlighet av Notes"
|
||||
attachCancel: "Fjern vedlegg"
|
||||
enterFileName: "Skriv inn filnavn"
|
||||
mute: "Skjul"
|
||||
unmute: "Vis"
|
||||
renoteMute: "Skjul Renotes"
|
||||
renoteUnmute: "Vis Renotes"
|
||||
block: "Blokker"
|
||||
unblock: "Opphev blokkering"
|
||||
suspend: "Suspender"
|
||||
blockConfirm: "Er du sikker på at du vil blokke denne kontoen?"
|
||||
unblockConfirm: "Er du sikker på at du vil oppheve blokkeringen av denne kontoen?"
|
||||
suspendConfirm: "Er du sikker på at du vil suspendere denne kontoen?"
|
||||
selectList: "Velg en liste"
|
||||
selectChannel: "Velg en kanal"
|
||||
selectAntenna: "Velg en antenne"
|
||||
selectWidget: "Velg en widget"
|
||||
editWidgets: "Rediger widgeter"
|
||||
editWidgetsExit: "Ferdig"
|
||||
emoji: "Emoji"
|
||||
emojis: "Emojier"
|
||||
addEmoji: "Legg til emoji"
|
||||
settingGuide: "Anbefalte innstillinger"
|
||||
flagAsBot: "Merk denne kontoen som en bot"
|
||||
flagAsBotDescription: "Aktiver dette alternativet hvis denne kontoen styres av et program. Hvis det er aktivert, vil det fungere som et flagg for andre utviklere for å forhindre endeløse interaksjonskjeder med andre roboter og justere Misskeys interne systemer til å behandle denne kontoen som en bot."
|
||||
flagAsCat: "Merk denne kontoen som en katt"
|
||||
flagAsCatDescription: "Aktiver dette alternativet for å merke denne kontoen som en katt."
|
||||
flagShowTimelineReplies: "Vis svar i tidslinje"
|
||||
addAccount: "Legg til konto"
|
||||
reloadAccountsList: "Last inn kontoliste på nytt"
|
||||
loginFailed: "Kunne ikke logge inn"
|
||||
general: "Generelt"
|
||||
searchWith: "Søk: {q}"
|
||||
youHaveNoLists: "Du har ingen lister"
|
||||
followConfirm: "Er du sikker på at du vil følge {name}?"
|
||||
host: "Vert"
|
||||
selectUser: "Velg en bruker"
|
||||
recipient: "Mottaker"
|
||||
annotation: "Kommentarer"
|
||||
federation: "Føderasjon"
|
||||
instances: "Servere"
|
||||
registeredAt: "Registrerte seg"
|
||||
latestRequestReceivedAt: "Siste forespørsel mottatt"
|
||||
latestStatus: "Siste status"
|
||||
charts: "Diagrammer"
|
||||
perHour: "Per time"
|
||||
perDay: "Per dag"
|
||||
stopActivityDelivery: "Slutt å sende aktiviteter"
|
||||
blockThisInstance: "Blokker denne serveren"
|
||||
operations: "Operasjoner"
|
||||
software: "Programvare"
|
||||
version: "Versjon"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} fil(er)"
|
||||
network: "Nettverk"
|
||||
instanceInfo: "Serverinformasjon"
|
||||
statistics: "Statistikk"
|
||||
clearQueue: "Tøm kø"
|
||||
clearQueueConfirmTitle: "Er du sikker på at du vil tømme køen?"
|
||||
blockedInstances: "Blokkerte severe"
|
||||
blockedInstancesDescription: "Skriv opp vertsnavnene til serverne du vil blokkere, atskilt med linjeskift. Serverne i listen vil ikke lenger kunne kommunisere med denne serveren."
|
||||
muteAndBlock: "Skjul og blokker"
|
||||
mutedUsers: "Skjulte brukere"
|
||||
blockedUsers: "Blokkerte brukere"
|
||||
noUsers: "Det er ingen brukere"
|
||||
editProfile: "Rediger profil"
|
||||
noteDeleteConfirm: "Er du sikker på at du vil slette denne Noten?"
|
||||
pinLimitExceeded: "Du kan ikke feste flere."
|
||||
intro: "Installasjonen av Misskey er ferdig! Vennligst opprett en administratorkonto."
|
||||
done: "Ferdig"
|
||||
default: "Standard"
|
||||
defaultValueIs: "Standard: {value}"
|
||||
noCustomEmojis: "Det er ingen emoji"
|
||||
noJobs: "Det er ingen jobber"
|
||||
blocked: "Blokkert"
|
||||
suspended: "Suspendert"
|
||||
all: "Alle"
|
||||
notResponding: "Svarer ikke"
|
||||
changePassword: "Endre passord"
|
||||
security: "Sikkerhet"
|
||||
retypedNotMatch: "Inngangene stemmer ikke overens."
|
||||
currentPassword: "Nåværende passord"
|
||||
newPassword: "Nytt passord"
|
||||
newPasswordRetype: "Nytt passord (gjenta)"
|
||||
attachFile: "Legg ved filer"
|
||||
more: "Mer!"
|
||||
noSuchUser: "Bruker ikke funnet"
|
||||
announcements: "Kunngjøringer"
|
||||
remove: "Slett"
|
||||
removed: "Vellykket slettet"
|
||||
removeAreYouSure: "Er du sikker på at du vil fjerne \"{x}\"?"
|
||||
deleteAreYouSure: "Er du sikker på at du vil slette \"{x}\"?"
|
||||
saved: "Lagret"
|
||||
upload: "Laste opp"
|
||||
keepOriginalUploading: "Behold originalbildet"
|
||||
fromUrl: "Fra URL"
|
||||
uploadFromUrl: "Last opp fra en URL"
|
||||
uploadFromUrlDescription: "URL til filen du vil laste opp"
|
||||
explore: "Utforsk"
|
||||
messageRead: "Lest"
|
||||
nUsersRead: "lest av {n}"
|
||||
agreeTo: "Jeg godtar {0}"
|
||||
agree: "Godta"
|
||||
agreeBelow: "Jeg godtar følgende"
|
||||
basicNotesBeforeCreateAccount: "Viktige merknader"
|
||||
termsOfService: "Vilkår for bruk"
|
||||
home: "Hjem"
|
||||
activity: "Aktivitet"
|
||||
images: "Bilder"
|
||||
image: "Bilde"
|
||||
birthday: "Bursdag"
|
||||
yearsOld: "{age} år gammel"
|
||||
theme: "Temaer"
|
||||
light: "Lys"
|
||||
dark: "Mørk"
|
||||
lightThemes: "Lyse temaer"
|
||||
darkThemes: "Mørke temaer"
|
||||
syncDeviceDarkMode: "Synkroniser mørkmodus med enhetens innstillinger"
|
||||
fileName: "Filnavn"
|
||||
selectFile: "Velg en fil"
|
||||
selectFiles: "Velg filer"
|
||||
selectFolder: "Velg en mappe"
|
||||
selectFolders: "Velg mapper"
|
||||
renameFile: "Endre filnavn"
|
||||
folderName: "Mappenavn"
|
||||
createFolder: "Opprett en mappe"
|
||||
renameFolder: "Endre mappenavn"
|
||||
deleteFolder: "Slett denne mappen"
|
||||
addFile: "Legg til en fil"
|
||||
emptyFolder: "Denne mappen er tom"
|
||||
unableToDelete: "Kan ikke slette"
|
||||
inputNewFileName: "Skriv inn et nytt filnavn"
|
||||
inputNewDescription: "Skriv inn ny bildetekst"
|
||||
inputNewFolderName: "Skriv inn et nytt mappenavn"
|
||||
circularReferenceFolder: "Målmappen er en undermappe til mappen du ønsker å flytte."
|
||||
hasChildFilesOrFolders: "Siden denne mappen ikke er tom, kan den ikke slettes."
|
||||
copyUrl: "Kopier URL"
|
||||
rename: "Endre navn"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
doNothing: "Ignorer"
|
||||
accept: "Tillatt"
|
||||
reject: "Avslå"
|
||||
instanceName: "Servernavn"
|
||||
instanceDescription: "Serverbeskrivelse"
|
||||
thisYear: "År"
|
||||
thisMonth: "Måned"
|
||||
today: "I dag"
|
||||
dayX: "{day}"
|
||||
monthX: "{month}"
|
||||
yearX: "{year}"
|
||||
pages: "Sider"
|
||||
integration: "Integrasjon"
|
||||
enableLocalTimeline: "Aktiver lokal tidslinje"
|
||||
enableGlobalTimeline: "Aktiver global tidslinje"
|
||||
disablingTimelinesInfo: "Administratorer og Moderatorer vil alltid ha tilgang til alle tidslinjer, selv om de ikke er aktivert."
|
||||
registration: "Registrer"
|
||||
enableRegistration: "Aktiver registrering av nye brukere"
|
||||
invite: "Inviter"
|
||||
basicInfo: "Grunnleggende informasjon"
|
||||
pinnedUsers: "Festede brukrere"
|
||||
pinnedUsersDescription: "Liste over brukernavn atskilt med linjeskift som skal festes i \"Utforsk\" fanen."
|
||||
pinnedPages: "Festede sider"
|
||||
pinnedNotes: "Festet Note"
|
||||
hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Aktiver hCaptcha"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Aktiver reCAPTCHA"
|
||||
turnstile: "Turnstile"
|
||||
enableTurnstile: "Aktiver Turnstile"
|
||||
antennas: "Antenner"
|
||||
name: "Navn"
|
||||
antennaSource: "Antennekilde"
|
||||
notifyAntenna: "Varsle om nye Notes"
|
||||
withFileAntenna: "Bare Notes med filer"
|
||||
notesAndReplies: "Notes og svar"
|
||||
popularUsers: "Populære brukere"
|
||||
exploreUsersCount: "Det finnes {count} brukere"
|
||||
exploreFediverse: "Utforsk Fediverse"
|
||||
userList: "Lister"
|
||||
about: "Informasjon"
|
||||
aboutMisskey: "Om Misskey"
|
||||
newPasswordIs: "Det nye passordet er \"{password}\"."
|
||||
share: "Del"
|
||||
notFound: "Ikke funnet"
|
||||
markAsReadAllNotifications: "Merk alle varsler som lest"
|
||||
markAsReadAllUnreadNotes: "Merk alle Notes som lest"
|
||||
help: "Hjelp"
|
||||
inputMessageHere: "Skriv inn melding her"
|
||||
close: "Lukk"
|
||||
invites: "Inviter"
|
||||
members: "Medlemmer"
|
||||
title: "Tittel"
|
||||
text: "Tekst"
|
||||
next: "Neste"
|
||||
retype: "Gjenta"
|
||||
quoteAttached: "Sitat"
|
||||
noMessagesYet: "Ingen meldinger ennå"
|
||||
newMessageExists: "Det er nye meldinger"
|
||||
onlyOneFileCanBeAttached: "Du kan bare legge ved én fil i en melding"
|
||||
invitations: "Inviter"
|
||||
available: "Tilgjengelig"
|
||||
unavailable: "Utilgjengelig"
|
||||
tooShort: "For kort"
|
||||
tooLong: "For langt"
|
||||
weakPassword: "Svakt passord"
|
||||
normalPassword: "Gjennomsnittlig passord"
|
||||
strongPassword: "Sterkt passord"
|
||||
signinWith: "Logg inn med {x}"
|
||||
signinFailed: "Kunne ikke logge inn. Det oppgitte brukernavnet eller passordet er feil."
|
||||
or: "eller"
|
||||
language: "Språk"
|
||||
aboutX: "Om {x}"
|
||||
category: "Kategori"
|
||||
createAccount: "Opprett konto"
|
||||
openImageInNewTab: "Åpne bilder i ny fane"
|
||||
clientSettings: "Klientinnstillinger"
|
||||
accountSettings: "Kontoinnstillinger"
|
||||
objectStorageRegion: "Region"
|
||||
objectStorageUseSSL: "Bruk SSL"
|
||||
objectStorageUseProxy: "Bruk Proxy"
|
||||
deleteAll: "Slett alt"
|
||||
newNoteRecived: "Det er nye Notes"
|
||||
listen: "Lytt"
|
||||
none: "Ingen"
|
||||
volume: "Volum"
|
||||
chooseEmoji: "Velg emoji"
|
||||
recentUsed: "Sist brukte"
|
||||
install: "Installer"
|
||||
uninstall: "Avinstaller"
|
||||
nothing: "Ingenting"
|
||||
deleteAllFiles: "Slett alle filer"
|
||||
deleteAllFilesConfirm: "Er du sikker på at du vil slette alle filer?"
|
||||
userSuspended: "Denne brukeren har blitt suspendert."
|
||||
accountDeleted: "Kontoen blir slettet"
|
||||
accountDeletedDescription: "Denne kontoen har blitt slettet."
|
||||
menu: "Meny"
|
||||
poll: "Avstemning"
|
||||
description: "Beskrivelse"
|
||||
author: "Forfatter"
|
||||
height: "Høyde"
|
||||
large: "Stor"
|
||||
small: "Liten"
|
||||
notificationType: "Varseltype"
|
||||
edit: "Rediger"
|
||||
email: "E-post"
|
||||
smtpHost: "Vert"
|
||||
smtpUser: "Brukernavn"
|
||||
smtpPass: "Passord"
|
||||
userSaysSomething: "{name} sa noe"
|
||||
copy: "Kopier"
|
||||
channel: "Kanaler"
|
||||
create: "Opprett"
|
||||
notificationSetting: "Varslingsinnstillinger"
|
||||
other: "Andre"
|
||||
behavior: "Oppførsel"
|
||||
sample: "Eksempel"
|
||||
abuseReports: "Rappoter"
|
||||
reportAbuse: "Rappoter"
|
||||
send: "Send"
|
||||
openInNewTab: "Åpne i ny fane"
|
||||
waitingFor: "Venter på {x}"
|
||||
random: "Tilfeldig"
|
||||
system: "System"
|
||||
desktop: "Skrivebord"
|
||||
i18nInfo: "Misskey oversettes til flere språk av frivillige. Du kan hjelpe til på {link}."
|
||||
followingCount: "Følger"
|
||||
followersCount: "Følgere"
|
||||
yes: "Ja"
|
||||
no: "Nei"
|
||||
contact: "Kontakt"
|
||||
developer: "Utvikler"
|
||||
makeExplorable: "Gjør konto synlig i \"Utforsk\""
|
||||
makeExplorableDescription: "Hvis du slår av dette, vises ikke kontoen din i \"Utforsk\" delen."
|
||||
left: "Venstre"
|
||||
nNotes: "{n} Notes"
|
||||
saveAs: "Lagre som"
|
||||
value: "Verdi"
|
||||
deleteConfirm: "Vil du slette?"
|
||||
invalidValue: "Verdien er ugyldig."
|
||||
closeAccount: "Avslutt konto"
|
||||
emailNotification: "E-postvarsler"
|
||||
inChannelSearch: "Søk i kanal"
|
||||
clear: "Tøm"
|
||||
markAllAsRead: "Merk alt som lest"
|
||||
addDescription: "Legg til beskrivelse"
|
||||
info: "Infomasjon"
|
||||
unknown: "Ukjent"
|
||||
selectAccount: "Velg konto"
|
||||
user: "Brukere"
|
||||
accounts: "Kontoer"
|
||||
switch: "Bytt"
|
||||
gallery: "Galleri"
|
||||
ads: "Annonser"
|
||||
memo: "Notat"
|
||||
high: "Høy"
|
||||
low: "Lav"
|
||||
sent: "Sendt"
|
||||
received: "Mottatt"
|
||||
learnMore: "Les mer"
|
||||
misskeyUpdated: "Misskey har blitt oppdatert!"
|
||||
translate: "Oversett"
|
||||
translatedFrom: "Oversatt fra {x}"
|
||||
unread: "Ulest"
|
||||
manageAccounts: "Administrer konto"
|
||||
classic: "Klassisk"
|
||||
muteThread: "Skjul denne tråden"
|
||||
unmuteThread: "Vis denne tråden"
|
||||
continueThread: "Vis fortsettelse av tråden"
|
||||
hide: "Skjul"
|
||||
smartphone: "Smarttelefon"
|
||||
tablet: "Nettbrett"
|
||||
auto: "Automatisk"
|
||||
size: "Størrelse"
|
||||
searchByGoogle: "Søk"
|
||||
tenMinutes: "10 minutter"
|
||||
oneHour: "1 time"
|
||||
oneDay: "1 dag"
|
||||
oneWeek: "1 uke"
|
||||
oneMonth: "1 måned"
|
||||
file: "Filer"
|
||||
recommended: "Anbefalt"
|
||||
check: "Sjekk"
|
||||
deleteAccount: "Slett konto"
|
||||
document: "Dokumenter"
|
||||
logoutConfirm: "Vil du logge ut?"
|
||||
pleaseSelect: "Velg et alternativ"
|
||||
type: "Type"
|
||||
beta: "Beta"
|
||||
account: "Konto"
|
||||
move: "Flytt"
|
||||
pushNotification: "Push-varsler"
|
||||
tools: "Verktøy"
|
||||
like: "Liker!"
|
||||
unlike: "Liker ikke"
|
||||
numberOfLikes: "Likerklikk"
|
||||
show: "Vis"
|
||||
neverShow: "Ikke vis igjen"
|
||||
remindMeLater: "Kanskje senere"
|
||||
didYouLikeMisskey: "Likte du Misskey?"
|
||||
roles: "Roller"
|
||||
role: "Rolle"
|
||||
color: "Farge"
|
||||
youCannotCreateAnymore: "Du kan ikke opprette flere."
|
||||
cannotPerformTemporary: "Midlertidig utilgjengelig"
|
||||
achievements: "Prestasjoner"
|
||||
thisPostMayBeAnnoyingCancel: "Avbryt"
|
||||
exploreOtherServers: "Utforsk andre severe"
|
||||
letsLookAtTimeline: "La oss se på tidslinje"
|
||||
cannotBeChangedLater: "Du kan ikke endre senere."
|
||||
likeOnly: "Bare liker"
|
||||
retryAllQueuesConfirmTitle: "Vil du prøve igjen akkurat nå?"
|
||||
video: "Video"
|
||||
videos: "Videoer"
|
||||
continue: "Fortsett"
|
||||
youFollowing: "Følger"
|
||||
options: "Alternativ"
|
||||
icon: "Avatar"
|
||||
replies: "Svar"
|
||||
renotes: "Renote"
|
||||
_initialAccountSetting:
|
||||
theseSettingsCanEditLater: "Du kan endre disse innstillingene senere."
|
||||
_achievements:
|
||||
_types:
|
||||
_notes10:
|
||||
title: "Noen Notes"
|
||||
_notes100:
|
||||
title: "Mange Notes"
|
||||
_notes500:
|
||||
title: "Dekket i Notes"
|
||||
_notes1000:
|
||||
title: "Et fjell av Notes"
|
||||
_notes5000:
|
||||
title: "Overfylte Notes"
|
||||
_notes10000:
|
||||
title: "Super Notes"
|
||||
_notes20000:
|
||||
title: "Trenger... mer... Notes..."
|
||||
_notes30000:
|
||||
title: "Notes Notes Notes!"
|
||||
_notes40000:
|
||||
title: "Note fabrikk"
|
||||
_notes50000:
|
||||
title: "Planet av Notes"
|
||||
_notes100000:
|
||||
flavor: "Du har jammen mye å si."
|
||||
_noteFavorited1:
|
||||
title: "Stjernekikker"
|
||||
_myNoteFavorited1:
|
||||
title: "Jeg vil gjerne få en stjerne"
|
||||
_following50:
|
||||
title: "Mange venner"
|
||||
_following100:
|
||||
title: "100 venner"
|
||||
_following300:
|
||||
title: "For mange venner"
|
||||
_followers10:
|
||||
title: "Følg meg!"
|
||||
_followers100:
|
||||
title: "Populær"
|
||||
_postedAtLateNight:
|
||||
flavor: "Det er på tide å gå til sengs."
|
||||
_driveFolderCircularReference:
|
||||
title: "Rundskrivreferanse"
|
||||
_reactWithoutRead:
|
||||
title: "Leste du det virkelig?"
|
||||
_clickedClickHere:
|
||||
title: "Klikk her"
|
||||
description: "Du har klikket her"
|
||||
_justPlainLucky:
|
||||
title: "Rett og slett heldig"
|
||||
_setNameToSyuilo:
|
||||
description: "Du satte navnet ditt til \"syuilo\""
|
||||
_passedSinceAccountCreated1:
|
||||
title: "Ett års jubileum"
|
||||
description: "Det har gått ett år siden kontoen din ble opprettet"
|
||||
_passedSinceAccountCreated2:
|
||||
title: "To års jubileum"
|
||||
description: "Det har gått to år siden kontoen din ble opprettet"
|
||||
_passedSinceAccountCreated3:
|
||||
title: "Tre års jubileum"
|
||||
description: "Det har gått tre år siden kontoen din ble opprettet"
|
||||
_loggedInOnBirthday:
|
||||
title: "Gratulerer med dagen"
|
||||
description: "Du logget inn på bursdagen din"
|
||||
_loggedInOnNewYearsDay:
|
||||
title: "Godt nytt år"
|
||||
description: "Du logget inn på årets første dag"
|
||||
_cookieClicked:
|
||||
description: "Du klikket på kjeksen"
|
||||
flavor: "Er du på riktig nettsted?"
|
||||
_brainDiver:
|
||||
title: "Brain Diver"
|
||||
flavor: "Misskey-Misskey La-Tu-Ma"
|
||||
_role:
|
||||
options: "Alternativ"
|
||||
_priority:
|
||||
low: "Lav"
|
||||
high: "Høy"
|
||||
_emailUnavailable:
|
||||
used: "Allerede brukt"
|
||||
_accountDelete:
|
||||
accountDelete: "Slett konto"
|
||||
_ad:
|
||||
hide: "Ikke vis"
|
||||
_gallery:
|
||||
like: "Liker!"
|
||||
unlike: "Liker ikke"
|
||||
_email:
|
||||
_follow:
|
||||
title: "fulgte deg"
|
||||
_preferencesBackups:
|
||||
saveNew: "Lagre som ny"
|
||||
cannotSave: "Kunne ikke lagre"
|
||||
_registry:
|
||||
key: "Nøkkel"
|
||||
keys: "Nøkler"
|
||||
_aboutMisskey:
|
||||
about: "Misskey er programvare med åpen kildekode som har blitt utviklet av syuilo siden 2014."
|
||||
translation: "Oversett Misskey"
|
||||
_instanceTicker:
|
||||
none: "Ikke vis"
|
||||
always: "Alltid vis"
|
||||
_channel:
|
||||
create: "Opprett kanal"
|
||||
edit: "Rediger kanal"
|
||||
featured: "Populært"
|
||||
following: "Følger"
|
||||
nameAndDescription: "Navn og beskrivelse"
|
||||
_menuDisplay:
|
||||
hide: "Skjul"
|
||||
_theme:
|
||||
description: "Beskrivelse"
|
||||
color: "Farge"
|
||||
key: "Nøkkel"
|
||||
keys:
|
||||
link: "Lenke"
|
||||
renote: "Renote"
|
||||
_sfx:
|
||||
note: "Notes"
|
||||
notification: "Varsler"
|
||||
_ago:
|
||||
future: "Fremitid"
|
||||
justNow: "Akkurat nå"
|
||||
secondsAgo: "{n}s siden"
|
||||
minutesAgo: "{n}m siden"
|
||||
hoursAgo: "{n}t siden"
|
||||
daysAgo: "{n}d siden"
|
||||
weeksAgo: "{n} uker siden"
|
||||
monthsAgo: "{n} måneder siden"
|
||||
yearsAgo: "{n} år siden"
|
||||
invalid: "Ingenting"
|
||||
_time:
|
||||
second: "Sekunder"
|
||||
minute: "Minutter"
|
||||
hour: "Timer"
|
||||
day: "Dager"
|
||||
_2fa:
|
||||
renewTOTPCancel: "Avbryt"
|
||||
_weekday:
|
||||
sunday: "Søndag"
|
||||
monday: "Mandag"
|
||||
tuesday: "Tirsdag"
|
||||
wednesday: "Onsdag"
|
||||
thursday: "Torsdag"
|
||||
friday: "Fredag"
|
||||
saturday: "Lørdag"
|
||||
_widgets:
|
||||
profile: "Profil"
|
||||
instanceInfo: "Serverinformasjon"
|
||||
notifications: "Varsler"
|
||||
timeline: "Tidslinje"
|
||||
calendar: "Kalender"
|
||||
trends: "Populært"
|
||||
clock: "Klokke"
|
||||
activity: "Aktivitet"
|
||||
photos: "Bilder"
|
||||
federation: "Føderasjon"
|
||||
button: "Knapp"
|
||||
aiscriptApp: "AiScript App"
|
||||
userList: "Brukerliste"
|
||||
_userList:
|
||||
chooseList: "Velg liste"
|
||||
_cw:
|
||||
hide: "Skjul"
|
||||
show: "Vis mer"
|
||||
_poll:
|
||||
noOnlyOneChoice: "Trenger minst to valger."
|
||||
choiceN: "Valg {n}"
|
||||
noMore: "Du kan ikke legge til flere."
|
||||
deadlineTime: "Timer"
|
||||
votesCount: "{n} stemmer"
|
||||
vote: "Stem"
|
||||
showResult: "Vis resultatet"
|
||||
voted: "Stemt"
|
||||
closed: "Avsluttet"
|
||||
_visibility:
|
||||
home: "Hjem"
|
||||
followers: "Følgere"
|
||||
_postForm:
|
||||
_placeholders:
|
||||
a: "Hva skjer?"
|
||||
_profile:
|
||||
name: "Navn"
|
||||
username: "Brukernavn"
|
||||
description: "Biografi"
|
||||
metadataContent: "Innhold"
|
||||
_exportOrImport:
|
||||
followingList: "Følg"
|
||||
muteList: "Skjul"
|
||||
blockingList: "Blokker"
|
||||
userLists: "Lister"
|
||||
_charts:
|
||||
federation: "Føderasjon"
|
||||
filesIncDec: "Forskjell på antall filer"
|
||||
_instanceCharts:
|
||||
users: "Forskjell på antall brukere"
|
||||
ff: "Forskjell på antall Følg/Følgere"
|
||||
files: "Forskjell på antall filer"
|
||||
_timelines:
|
||||
home: "Hjem"
|
||||
_play:
|
||||
new: "Opprett Play"
|
||||
edit: "Rediger Play"
|
||||
featured: "Populært"
|
||||
title: "Tittel"
|
||||
summary: "Beskrivelse"
|
||||
_pages:
|
||||
invalidNameText: "Pass på at sidetittelen ikke er tom"
|
||||
like: "Liker"
|
||||
unlike: "Liker ikke"
|
||||
my: "Mine sider"
|
||||
featured: "Populært"
|
||||
contents: "Innhold"
|
||||
title: "Tittel"
|
||||
url: "Side URL"
|
||||
hideTitleWhenPinned: "Skjul sidetittel når festet til profil"
|
||||
fontSerif: "Serif"
|
||||
fontSansSerif: "Sans Serif"
|
||||
selectType: "Velg type"
|
||||
blocks:
|
||||
text: "Tekst"
|
||||
section: "Seksjon"
|
||||
image: "Bilde"
|
||||
button: "Knapp"
|
||||
_notification:
|
||||
youWereFollowed: "fulgte deg"
|
||||
unreadAntennaNote: "Antenne {name}"
|
||||
achievementEarned: "Prestasjon låst opp"
|
||||
_types:
|
||||
follow: "Nye følgere"
|
||||
reply: "Svar"
|
||||
renote: "Renotes"
|
||||
quote: "Sitater"
|
||||
reaction: "Reaksjoner"
|
||||
_actions:
|
||||
reply: "Svar"
|
||||
renote: "Renote"
|
||||
_deck:
|
||||
swapLeft: "Flytt til venstre"
|
||||
swapRight: "Flytt til høyre"
|
||||
swapUp: "Flytt opp"
|
||||
swapDown: "Flytt ned"
|
||||
profile: "Profil"
|
||||
newProfile: "Ny profil"
|
||||
deleteProfile: "Slett profil"
|
||||
_columns:
|
||||
notifications: "Varsler"
|
||||
tl: "Tidslinje"
|
||||
antenna: "Antenner"
|
||||
list: "Lister"
|
||||
channel: "Kanaler"
|
||||
direct: "Direkte"
|
||||
_webhookSettings:
|
||||
name: "Navn"
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspender"
|
||||
|
||||
|
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
@@ -111,6 +111,7 @@ sensitive: "NSFW"
|
||||
add: "Dodaj"
|
||||
reaction: "Reakcja"
|
||||
reactions: "Reakcja"
|
||||
reactionSetting: "Reakcje do pokazania w wyborniku reakcji"
|
||||
reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć, naciśnij „+” aby dodać"
|
||||
rememberNoteVisibility: "Zapamiętuj ustawienia widoczności wpisu"
|
||||
attachCancel: "Usuń załącznik"
|
||||
@@ -128,7 +129,6 @@ unblockConfirm: "Czy na pewno chcesz odblokować to konto?"
|
||||
suspendConfirm: "Czy na pewno chcesz zawiesić to konto?"
|
||||
unsuspendConfirm: "Czy na pewno chcesz cofnąć zawieszenie tego konta?"
|
||||
selectList: "Wybierz listę"
|
||||
selectChannel: "Wybierz kanał"
|
||||
selectAntenna: "Wybierz Antennę"
|
||||
selectWidget: "Wybierz widżet"
|
||||
editWidgets: "Edytuj widżety"
|
||||
@@ -149,7 +149,6 @@ flagAsCatDescription: "Przełącz tę opcję, aby konto było oznaczone jako kot
|
||||
flagShowTimelineReplies: "Pokazuj odpowiedzi na osi czasu"
|
||||
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników, których obserwujesz"
|
||||
addAccount: "Dodaj konto"
|
||||
reloadAccountsList: "Odśwież listę kont"
|
||||
loginFailed: "Nie udało się zalogować"
|
||||
showOnRemote: "Zobacz na zdalnej instancji"
|
||||
general: "Ogólne"
|
||||
@@ -160,7 +159,6 @@ searchWith: "Szukaj: {q}"
|
||||
youHaveNoLists: "Nie masz żadnej listy"
|
||||
followConfirm: "Czy na pewno chcesz zaobserwować {name}?"
|
||||
proxyAccount: "Konto proxy"
|
||||
proxyAccountDescription: "Opis konta pełnomocniczego"
|
||||
host: "Host"
|
||||
selectUser: "Wybierz użytkownika"
|
||||
recipient: "Odbiorca"
|
||||
@@ -255,13 +253,12 @@ noMoreHistory: "Nie ma dalszej historii"
|
||||
startMessaging: "Rozpocznij czat"
|
||||
nUsersRead: "przeczytano przez {n}"
|
||||
agreeTo: "Wyrażam zgodę na {0}"
|
||||
agreeBelow: "Zaakceptuj poniżej"
|
||||
tos: "Regulamin"
|
||||
start: "Rozpocznij"
|
||||
home: "Strona główna"
|
||||
remoteUserCaution: "Te informacje mogą nie być aktualne, ponieważ użytkownik pochodzi ze zdalnej instancji."
|
||||
activity: "Aktywność"
|
||||
images: "Zdjęcia"
|
||||
image: "Zdjęcia"
|
||||
birthday: "Data urodzenia"
|
||||
yearsOld: "{age} lat"
|
||||
registeredDate: "Zarejestrowano"
|
||||
@@ -298,6 +295,7 @@ copyUrl: "Skopiuj adres URL"
|
||||
rename: "Zmień nazwę"
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
nsfw: "NSFW"
|
||||
whenServerDisconnected: "Po utracie połączenia z serwerem"
|
||||
disconnectedFromServer: "Utracono połączenie z serwerem."
|
||||
reload: "Odśwież"
|
||||
@@ -332,6 +330,7 @@ invite: "Zaproś"
|
||||
driveCapacityPerLocalAccount: "Powierzchnia dyskowa na lokalnego użytkownika"
|
||||
driveCapacityPerRemoteAccount: "Powierzchnia dyskowa na zdalnego użytkownika"
|
||||
inMb: "W megabajtach"
|
||||
iconUrl: "Adres URL ikony"
|
||||
bannerUrl: "Adres URL banera"
|
||||
backgroundImageUrl: "Adres URL tła"
|
||||
basicInfo: "Podstawowe informacje"
|
||||
@@ -345,8 +344,6 @@ 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"
|
||||
@@ -388,19 +385,13 @@ about: "Informacje"
|
||||
aboutMisskey: "O Misskey"
|
||||
administrator: "Admin"
|
||||
token: "Token"
|
||||
2fa: "Klucz 2FA "
|
||||
totp: "Klucz aplikacji uwierzytelniającej (totp)"
|
||||
totpDescription: "Opis klucza czasowego"
|
||||
moderator: "Moderator"
|
||||
moderation: "Moderacja"
|
||||
nUsersMentioned: "{n} wspomnianych użytkowników"
|
||||
securityKeyAndPasskey: "Klucz bezpieczeństwa i klucze Passkey"
|
||||
securityKey: "Klucz bezpieczeństwa"
|
||||
lastUsed: "Ostatnio używane"
|
||||
lastUsedAt: "Ostatnio używane w"
|
||||
unregister: "Cofnij rejestrację"
|
||||
passwordLessLogin: "Skonfiguruj logowanie bez użycia hasła"
|
||||
passwordLessLoginDescription: "Opis logowania bez użycia hasła"
|
||||
resetPassword: "Zresetuj hasło"
|
||||
newPasswordIs: "Nowe hasło to „{password}”"
|
||||
reduceUiAnimation: "Ogranicz animacje w UI"
|
||||
@@ -408,6 +399,7 @@ share: "Udostępnij"
|
||||
notFound: "Nie znaleziono"
|
||||
notFoundDescription: "Nie ma strony odpowiadającej określonemu adresowi URL."
|
||||
uploadFolder: "Domyślne położenie wysłanych"
|
||||
cacheClear: "Wyczyść pamięć podręczną"
|
||||
markAsReadAllNotifications: "Oznacz wszystkie powiadomienia jako przeczytane"
|
||||
markAsReadAllUnreadNotes: "Oznacz wszystkie wpisy jako przeczytane"
|
||||
markAsReadAllTalkMessages: "Oznacz wszystkie wiadomości jako przeczytane"
|
||||
@@ -526,16 +518,11 @@ disablePagesScript: "Wyłącz AiScript na Stronach"
|
||||
updateRemoteUser: "Aktualizuj zdalne dane o użytkowniku"
|
||||
deleteAllFiles: "Usuń wszystkie pliki"
|
||||
deleteAllFilesConfirm: "Czy na pewno chcesz usunąć wszystkie pliki?"
|
||||
removeAllFollowing: "Przestań obserwować"
|
||||
removeAllFollowingDescription: "Przestań obserwować wszystkie konta z {host}. Wykonaj to, jeżeli instancja już nie istnieje."
|
||||
userSuspended: "To konto zostało zawieszone."
|
||||
userSilenced: "Ten użytkownik został wyciszony."
|
||||
yourAccountSuspendedTitle: "To konto jest zawieszone"
|
||||
yourAccountSuspendedDescription: "To konto zostało zawieszone z powodu złamania regulaminu serwera lub innych podobnych. Skontaktuj się z administratorem, jeśli chciałbyś poznać bardziej szczegółowy powód. Proszę nie zakładać nowego konta."
|
||||
tokenRevoked: "Token odrzucony"
|
||||
tokenRevokedDescription: "Opis odrzuconego tokena"
|
||||
accountDeleted: "Konto usunięte"
|
||||
accountDeletedDescription: "Opis konta usuniętego"
|
||||
menu: "Menu"
|
||||
divider: "Rozdzielacz"
|
||||
addItem: "Dodaj element"
|
||||
@@ -561,9 +548,7 @@ author: "Autor"
|
||||
leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?"
|
||||
manage: "Zarządzanie"
|
||||
plugins: "Wtyczki"
|
||||
preferencesBackups: "Kopia zapasowa ustawień"
|
||||
deck: "Tablica"
|
||||
undeck: "oddkouj"
|
||||
useBlurEffectForModal: "Używaj efektu rozmycia w modalach"
|
||||
useFullReactionPicker: "Używaj pełnowymiarowego wybornika reakcji"
|
||||
width: "Szerokość"
|
||||
@@ -579,6 +564,7 @@ tokenRequested: "Przydziel dostęp do konta"
|
||||
pluginTokenRequestedDescription: "Ta wtyczka będzie mogła korzystać z ustawionych tu uprawnień."
|
||||
notificationType: "Rodzaj powiadomień"
|
||||
edit: "Edytuj"
|
||||
useStarForReactionFallback: "Użyj ★ jako zapasowego emoji, gdy emoji reakcji jest nieznane"
|
||||
emailServer: "Serwer poczty e-mail"
|
||||
enableEmail: "Włącz dostarczanie wiadomości e-mail"
|
||||
emailConfigInfo: "Wykorzystywany do potwierdzenia adresu e-mail w trakcie rejestracji, lub gdy zapomnisz hasła"
|
||||
@@ -643,7 +629,6 @@ createNewClip: "Utwórz nowy klip"
|
||||
unclip: "Odczep"
|
||||
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?"
|
||||
public: "Publiczny"
|
||||
private: "Prywatne"
|
||||
i18nInfo: "Misskey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}."
|
||||
manageAccessTokens: "Zarządzaj tokenami dostępu"
|
||||
accountInfo: "Informacje o koncie"
|
||||
@@ -808,6 +793,8 @@ makeReactionsPublicDescription: "To spowoduje, że lista wszystkich Twoich dotyc
|
||||
classic: "Klasyczny"
|
||||
muteThread: "Wycisz wątek"
|
||||
unmuteThread: "Wyłącz wyciszenie wątku"
|
||||
ffVisibility: "Widoczność obserwowanych/obserwujących"
|
||||
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz i kto Cię obserwuje."
|
||||
continueThread: "Pokaż kontynuację wątku"
|
||||
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
|
||||
incorrectPassword: "Nieprawidłowe hasło."
|
||||
@@ -823,14 +810,11 @@ auto: "Automatycznie"
|
||||
size: "Rozmiar"
|
||||
numberOfColumn: "Liczba kolumn"
|
||||
searchByGoogle: "Szukaj"
|
||||
period: "Ankieta kończy się"
|
||||
indefinitely: "Nigdy"
|
||||
tenMinutes: "10 minut"
|
||||
oneHour: "1 godzina"
|
||||
oneDay: "1 dzień"
|
||||
oneWeek: "1 tydzień"
|
||||
oneMonth: "jeden miesiąc"
|
||||
failedToFetchAccountInformation: "Nie udało się uzyskać informacji o koncie"
|
||||
file: "Pliki"
|
||||
recommended: "Zalecane"
|
||||
check: "Zweryfikuj"
|
||||
@@ -867,11 +851,6 @@ loggedInAsBot: "Jesteś obecnie zalogowany/a jako bot"
|
||||
like: "Polub"
|
||||
show: "Wyświetlanie"
|
||||
color: "Kolor"
|
||||
youFollowing: "Śledzeni"
|
||||
icon: "Awatar"
|
||||
replies: "Odpowiedz"
|
||||
renotes: "Udostępnij"
|
||||
flip: "Odwróć"
|
||||
_role:
|
||||
priority: "Priorytet"
|
||||
_priority:
|
||||
@@ -924,7 +903,6 @@ _plugin:
|
||||
install: "Zainstaluj wtyczki"
|
||||
installWarn: "Nie instaluj niezaufanych wtyczek."
|
||||
manage: "Zarządzanie wtyczkami"
|
||||
viewSource: "Zobacz źródło"
|
||||
_preferencesBackups:
|
||||
list: "Utworzone kopie zapasowe"
|
||||
saveNew: "Zapisz nową kopię zapasową"
|
||||
@@ -957,6 +935,10 @@ _aboutMisskey:
|
||||
donate: "Przekaż darowiznę na Misskey"
|
||||
morePatrons: "Naprawdę doceniam wsparcie ze strony wielu niewymienionych tu osób. Dziękuję! 🥰"
|
||||
patrons: "Wspierający"
|
||||
_nsfw:
|
||||
respect: "Ukrywaj media NSFW"
|
||||
ignore: "Nie ukrywaj mediów NSFW"
|
||||
force: "Ukrywaj wszystkie media"
|
||||
_instanceTicker:
|
||||
none: "Nigdy nie pokazuj"
|
||||
remote: "Pokaż dla zdalnych użytkowników"
|
||||
@@ -981,6 +963,9 @@ _menuDisplay:
|
||||
_wordMute:
|
||||
muteWords: "Słowo do wyciszenia"
|
||||
muteWordsDescription2: "Otocz słowa kluczowe ukośnikami, aby używać wyrażeń regularnych."
|
||||
soft: "Łagodny"
|
||||
hard: "Twardy"
|
||||
mutedNotes: "Wyciszone wpisy"
|
||||
_instanceMute:
|
||||
title: "Ukrywa wpisy z wymienionych instancji."
|
||||
heading: "Lista instancji do wyciszenia"
|
||||
@@ -1042,6 +1027,9 @@ _theme:
|
||||
infoFg: "Tekst informacji"
|
||||
infoWarnBg: "Tło ostrzeżenia"
|
||||
infoWarnFg: "Tekst ostrzeżenia"
|
||||
cwBg: "Tło CW"
|
||||
cwFg: "Tekst CW"
|
||||
cwHoverBg: "Tło CW (po najechaniu)"
|
||||
toastBg: "Tło powiadomień"
|
||||
toastFg: "Tekst powiadomień"
|
||||
buttonBg: "Tło przycisku"
|
||||
@@ -1059,6 +1047,8 @@ _sfx:
|
||||
note: "Wpisy"
|
||||
noteMy: "Mój wpis"
|
||||
notification: "Powiadomienia"
|
||||
chat: "Wiadomości"
|
||||
chatBg: "Rozmowy (tło)"
|
||||
antenna: "Anteny"
|
||||
channel: "Powiadomienia kanału"
|
||||
_ago:
|
||||
@@ -1077,6 +1067,32 @@ _time:
|
||||
minute: "minuta"
|
||||
hour: "godz."
|
||||
day: "dzień"
|
||||
_tutorial:
|
||||
title: "Jak korzystać z Misskey"
|
||||
step1_1: "Witaj!"
|
||||
step1_2: "Ta strona nazywa się „oś czasu”. Pokazuje chronologicznie uporządkowane wpisy osób, które „śledzisz”."
|
||||
step1_3: "Twoja oś czasu jest jeszcze pusta, ponieważ nie opublikowałeś(-aś) jeszcze żadnych wpisów i nie obserwujesz jeszcze nikogo."
|
||||
step2_1: "Ukończmy konfigurację profilu zanim utworzymy wpis lub zaczniemy kogoś obserwować."
|
||||
step2_2: "Podanie pewnych informacji o tym, kim jesteś, ułatwi innym określenie, czy chcą widzieć Twoje wpisy lub Cię obserwować."
|
||||
step3_1: "Zakończyłeś(-aś) konfigurację profilu?"
|
||||
step3_2: "Następnie spróbujmy opublikować wpis. Możesz to zrobić, naciskając przycisk z ikoną ołówka na ekranie."
|
||||
step3_3: "Wypełnij pole i kliknij przycisk w prawym górnym rogu by wysłać post."
|
||||
step3_4: "Nie masz nic do powiedzenia? Spróbuj \"ustawiam swój misskey\"!"
|
||||
step4_1: "Zakończyłeś publikowanie pierwszego wpisu?"
|
||||
step4_2: "Hurra! Teraz Twój pierwszy wpis powinien być wyświetlany na Twojej osi czasu."
|
||||
step5_1: "Teraz spróbujmy ożywić Twoją oś czasu, przez zaobserwowanie innych ludzi."
|
||||
step5_2: "{featured} pokaże Ci popularne wpisy na tej instancji. {explore} pozwoli Ci znaleźć popularnych użytkowników. Spróbuj znaleźć tam osoby, które chcesz obserwować!"
|
||||
step5_3: "Aby obserwować innych użytkowników, kliknij ich ikonę i naciśnij przycisk \"Obserwuj\" na ich profilu."
|
||||
step5_4: "Jeśli inny użytkownik ma ikonę kłódki obok swojej nazwy, może minąć trochę czasu, zanim ten użytkownik ręcznie zatwierdzi Twoją prośbę o obserwowanie."
|
||||
step6_1: "Powinieneś teraz widzieć wpisy innych użytkowników na swojej osi czasu."
|
||||
step6_2: "Możesz także umieścić „reakcje” na wpisach innych osób, aby szybko na nie odpowiedzieć."
|
||||
step6_3: "Aby dodać \"reakcję\", naciśnij znak \"+\" na wpisie innego użytkownika i wybierz emotikonę, którą chcesz zareagować."
|
||||
step7_1: "Gratulacje! Ukończyłeś podstawowy samouczek Misskey."
|
||||
step7_2: "Jeśli chcesz dowiedzieć się więcej o Misskey, wypróbuj sekcję {help}."
|
||||
step7_3: "A teraz powodzenia i baw się dobrze z Misskey! 🚀"
|
||||
step8_1: "Na sam koniec, czy nie chciał(a)byś włączyć powiadomień push?"
|
||||
step8_2: "Włączenie tej opcji pozwoli ci otrzymywać powiadomienia o reakcjach, śledzeniach i wzmiankach nawet wtedy, gdy Misskey nie będzie otwarty."
|
||||
step8_3: "Ustawienia powiadomień można zmienić później."
|
||||
_2fa:
|
||||
alreadyRegistered: "Zarejestrowałeś już urządzenie do uwierzytelniania dwuskładnikowego."
|
||||
step1: "Najpierw, zainstaluj aplikację uwierzytelniającą (taką jak {a} lub {b}) na swoim urządzeniu."
|
||||
@@ -1084,8 +1100,6 @@ _2fa:
|
||||
step3: "Wprowadź token podany w aplikacji, aby ukończyć konfigurację."
|
||||
step4: "Od teraz, przy każdej próbie logowania otrzymasz prośbę o token logowania."
|
||||
removeKeyConfirm: "Usunąć kopię zapasową {name}?"
|
||||
renewTOTPConfirm: "Spowoduje to, że kody weryfikacyjne z poprzedniej aplikacji przestaną działać"
|
||||
renewTOTPOk: "Rekonfiguruj"
|
||||
renewTOTPCancel: "Nie teraz"
|
||||
_permissions:
|
||||
"read:account": "Wyświetl informacje o swoim koncie"
|
||||
@@ -1099,10 +1113,8 @@ _permissions:
|
||||
"read:following": "Wyświetlanie informacji o obserwowanych"
|
||||
"write:following": "Obserwowanie lub cofanie obserwacji innych kont"
|
||||
"read:messaging": "Zobacz swoje czaty"
|
||||
"write:messaging": "Tworzenie lub usuwanie wiadomości czatu"
|
||||
"read:mutes": "Wyświetlanie listy osób, które wyciszyłeś(-aś)"
|
||||
"write:mutes": "Edycja listy osób, które wyciszyłeś(-aś)"
|
||||
"write:notes": "Tworzenie lub usuwanie wpisów"
|
||||
"read:notifications": "Wyświetlanie powiadomień"
|
||||
"write:notifications": "Działanie na powiadomieniach"
|
||||
"read:reactions": "Wyświetlanie reakcji"
|
||||
@@ -1118,23 +1130,9 @@ _permissions:
|
||||
"write:channels": "Edytuj swoje kanały"
|
||||
"read:gallery": "Zobacz swoją galerię"
|
||||
"write:gallery": "Edytuj swoją galerię"
|
||||
"read:gallery-likes": "Wyświetlanie listy polubionych postów w galerii"
|
||||
"write:gallery-likes": "Edytowanie listy polubionych postów w galerii"
|
||||
_auth:
|
||||
shareAccessTitle: "Przyznawanie uprawnień aplikacji"
|
||||
shareAccess: "Czy chcesz autoryzować „{name}” do dostępu do tego konta?"
|
||||
shareAccessAsk: "Czy na pewno chcesz zezwolić tej aplikacji na dostęp do Twojego konta?"
|
||||
permission: "{name} żąda następujących uprawnień"
|
||||
permissionAsk: "Ta aplikacja wymaga następujących uprawnień:"
|
||||
pleaseGoBack: "Proszę, wróć do aplikacji"
|
||||
callback: "Powracanie do aplikacji"
|
||||
denied: "Odmowa dostępu"
|
||||
pleaseLogin: "Zaloguj się, aby autoryzować aplikacje."
|
||||
_antennaSources:
|
||||
all: "Wszystkie wpisy"
|
||||
homeTimeline: "Wpisy obserwowanych użytkowników"
|
||||
users: "Wpisy określonych użytkowników"
|
||||
userList: "Wpisy z określonej listy użytkowników"
|
||||
_weekday:
|
||||
sunday: "Niedziela"
|
||||
monday: "Poniedziałek"
|
||||
@@ -1167,10 +1165,8 @@ _widgets:
|
||||
serverMetric: "Metryka serwera"
|
||||
aiscript: "Konsola AiScript"
|
||||
aichan: "Ai"
|
||||
userList: "Lista użytkowników"
|
||||
_userList:
|
||||
chooseList: "Wybierz listę"
|
||||
clicker: "Clicker"
|
||||
_cw:
|
||||
hide: "Ukryj"
|
||||
show: "Załaduj więcej"
|
||||
@@ -1202,16 +1198,10 @@ _visibility:
|
||||
public: "Publiczny"
|
||||
publicDescription: "Twój wpis pojawi się w publicznych osiach czasu"
|
||||
home: "Strona główna"
|
||||
homeDescription: "Publikuj tylko na głównej osi czasu"
|
||||
followers: "Obserwujący"
|
||||
followersDescription: "Widoczne tylko dla obserwujących"
|
||||
specified: "Bezpośredni"
|
||||
specifiedDescription: "Napisz tylko określonym użytkownikom"
|
||||
disableFederationDescription: "Nie przesyłaj do innych instancji"
|
||||
_postForm:
|
||||
replyPlaceholder: "Odpowiedz na ten wpis..."
|
||||
quotePlaceholder: "Zacytuj ten wpis…"
|
||||
channelPlaceholder: "Publikuj na kanale..."
|
||||
_placeholders:
|
||||
a: "Co się dzieje?"
|
||||
b: "Co się wydarzyło?"
|
||||
@@ -1233,30 +1223,17 @@ _profile:
|
||||
changeBanner: "Zmień baner"
|
||||
_exportOrImport:
|
||||
allNotes: "Wszystkie wpisy"
|
||||
favoritedNotes: "Ulubione wpisy"
|
||||
clips: "Klip"
|
||||
followingList: "Obserwowani"
|
||||
muteList: "Wycisz"
|
||||
blockingList: "Zablokuj"
|
||||
userLists: "Listy"
|
||||
excludeMutingUsers: "Wyklucz wyciszonych użytkowników"
|
||||
excludeInactiveUsers: "Wyklucz nieaktywnych użytkowników"
|
||||
_charts:
|
||||
federation: "Federacja"
|
||||
apRequest: "Żądania"
|
||||
usersIncDec: "Różnica w liczbie użytkowników"
|
||||
usersTotal: "Łącznie # użytkowników"
|
||||
activeUsers: "Aktywni użytkownicy"
|
||||
notesIncDec: "Różnica w liczbie wpisów"
|
||||
notesTotal: "Całkowita liczba wpisów"
|
||||
filesIncDec: "Różnica w liczbie plików"
|
||||
filesTotal: "Całkowita liczba plików"
|
||||
storageUsageIncDec: "Różnica w wykorzystaniu pamięci"
|
||||
storageUsageTotal: "Całkowite wykorzystanie pamięci"
|
||||
_instanceCharts:
|
||||
requests: "Żądania"
|
||||
users: "Różnica w liczbie użytkowników"
|
||||
notes: "Różnica w liczbie wpisów"
|
||||
notesTotal: "Łącznie # wpisów"
|
||||
ff: "Różnica w # obserwujących"
|
||||
ffTotal: "Łączna liczba # obserwujących"
|
||||
@@ -1380,23 +1357,3 @@ _deck:
|
||||
channel: "Kanały"
|
||||
mentions: "Wspomnienia"
|
||||
direct: "Bezpośredni"
|
||||
_webhookSettings:
|
||||
createWebhook: "Stwórz Webhook"
|
||||
name: "Nazwa"
|
||||
secret: "Sekret"
|
||||
events: "Uruchomienie Webhooka"
|
||||
active: "Właczono"
|
||||
_events:
|
||||
follow: "Po zaobserwowaniu użytkownika"
|
||||
followed: "Po zostaniu zaobserwowanym"
|
||||
note: "Po opublikowaniu wpisu"
|
||||
reply: "Po otrzymaniu odpowiedzi"
|
||||
renote: "Po udostępnieniu wpisu"
|
||||
reaction: "Po otrzymaniu reakcji"
|
||||
mention: "Po zostaniu wspomnianym"
|
||||
_moderationLogTypes:
|
||||
suspend: "Zawieś"
|
||||
resetPassword: "Zresetuj hasło"
|
||||
_reversi:
|
||||
total: "Łącznie"
|
||||
|
||||
|
1218
locales/pt-PT.yml
1218
locales/pt-PT.yml
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,6 @@
|
||||
_lang_: "Română"
|
||||
headlineMisskey: "O rețea conectată prin note"
|
||||
introMisskey: "Bine ai venit! Misskey este un serviciu de microblogging open source și decentralizat.\nCreează \"note\" cu care să îți poți împărți gândurile cu oricine din jurul tău. 📡\nCu \"reacții\" îți poți expirma rapid părerea despre notele oricui. 👍\nHai să explorăm o lume nouă! 🚀"
|
||||
poweredByMisskeyDescription: "{name} este unul dintre serviciile care se folosește de platforma open source <b>Misskey</b>."
|
||||
monthAndDay: "{day}/{month}"
|
||||
search: "Caută"
|
||||
notifications: "Notificări"
|
||||
@@ -13,14 +12,12 @@ fetchingAsApObject: "Se aduce din Fediverse..."
|
||||
ok: "OK"
|
||||
gotIt: "Am înțeles!"
|
||||
cancel: "Anulează"
|
||||
noThankYou: "Nu, mulțumesc."
|
||||
enterUsername: "Introdu numele de utilizator"
|
||||
renotedBy: "Re-notat de {user}"
|
||||
noNotes: "Nicio notă"
|
||||
noNotifications: "Nicio notificare"
|
||||
instance: "Instanță"
|
||||
settings: "Setări"
|
||||
notificationSettings: "Setări notificări"
|
||||
basicSettings: "Setări generale"
|
||||
otherSettings: "Alte Setări"
|
||||
openInWindow: "Deschide într-o fereastră"
|
||||
@@ -45,20 +42,12 @@ pin: "Fixează pe profil"
|
||||
unpin: "Anulati fixare"
|
||||
copyContent: "Copiază conținutul"
|
||||
copyLink: "Copiază link-ul"
|
||||
copyLinkRenote: "Copiază linkul pentru renote"
|
||||
delete: "Şterge"
|
||||
deleteAndEdit: "Șterge și editează"
|
||||
deleteAndEditConfirm: "Ești sigur că vrei să ștergi această notă și să o editezi? Vei pierde reacțiile, re-notele și răspunsurile acesteia."
|
||||
addToList: "Adaugă în listă"
|
||||
addToAntenna: "Adaugă la antenă"
|
||||
sendMessage: "Trimite un mesaj"
|
||||
copyRSS: "Copiază RSS"
|
||||
copyUsername: "Copiază numele de utilizator"
|
||||
copyUserId: "Copiază numele de utilizator"
|
||||
copyNoteId: "Copiază ID-ul notiței"
|
||||
copyFileId: "Copiază ID-ul fișierului"
|
||||
copyFolderId: "Copiază ID-ul folderului"
|
||||
copyProfileUrl: "Copiază URL profil"
|
||||
searchUser: "Caută un utilizator"
|
||||
reply: "Răspunde"
|
||||
loadMore: "Incarcă mai mult"
|
||||
@@ -111,8 +100,6 @@ renoted: "Re-notat."
|
||||
cantRenote: "Această postare nu poate fi re-notată."
|
||||
cantReRenote: "O re-notă nu poate fi re-notată."
|
||||
quote: "Citează"
|
||||
inChannelRenote: "Renotează în canal"
|
||||
inChannelQuote: "Citează în canal"
|
||||
pinnedNote: "Notă fixată"
|
||||
pinned: "Fixat pe profil"
|
||||
you: "Tu"
|
||||
@@ -121,6 +108,7 @@ sensitive: "NSFW"
|
||||
add: "Adaugă"
|
||||
reaction: "Reacție"
|
||||
reactions: "Reacție"
|
||||
reactionSetting: "Reacții care să apară in selectorul de reacții"
|
||||
reactionSettingDescription2: "Trage pentru a rearanja, apasă pe \"+\" pentru a adăuga."
|
||||
rememberNoteVisibility: "Amintește setarea de vizibilitate a notelor"
|
||||
attachCancel: "Înlătură atașament"
|
||||
@@ -129,8 +117,6 @@ unmarkAsSensitive: "Demarchează ca NSFW"
|
||||
enterFileName: "Introduceţi numele fişierului"
|
||||
mute: "Amuțește"
|
||||
unmute: "Înlătură amuțirea"
|
||||
renoteMute: "Renotări pe modul silențios"
|
||||
renoteUnmute: "Scoate renotările de pe modul silențios"
|
||||
block: "Blochează"
|
||||
unblock: "Deblochează"
|
||||
suspend: "Suspendă"
|
||||
@@ -140,10 +126,7 @@ unblockConfirm: "Ești sigur ca vrei să deblochezi acest cont?"
|
||||
suspendConfirm: "Ești sigur ca vrei să suspendezi acest cont?"
|
||||
unsuspendConfirm: "Ești sigur ca vrei să nu mai suspendezi acest cont?"
|
||||
selectList: "Selectează o listă"
|
||||
editList: "Editați lista"
|
||||
selectChannel: "Selectaţi canalul"
|
||||
selectAntenna: "Selectează o antenă"
|
||||
editAntenna: "Editează antena"
|
||||
selectWidget: "Selectați un widget"
|
||||
editWidgets: "Editează widget-urile"
|
||||
editWidgetsExit: "Terminat"
|
||||
@@ -156,7 +139,6 @@ addEmoji: "Adaugă un emoji"
|
||||
settingGuide: "Setări recomandate"
|
||||
cacheRemoteFiles: "Ține fișierele externe in cache"
|
||||
cacheRemoteFilesDescription: "Când această setare este dezactivată, fișierele externe sunt încărcate direct din instanța externă. Dezactivarea va scădea utilizarea spațiului de stocare, dar va crește traficul, deoarece thumbnail-urile nu vor fi generate."
|
||||
youCanCleanRemoteFilesCache: "Poți goli cache-ul prin a apăsa pe butonul de 🗑️ din fereastra de gestionare a fișierelor."
|
||||
flagAsBot: "Marchează acest cont ca bot"
|
||||
flagAsBotDescription: "Activează această opțiune dacă acest cont este controlat de un program. Daca e activată, aceasta va juca rolul unui indicator pentru dezvoltatori pentru a preveni interacțiunea în lanțuri infinite cu ceilalți boți și ajustează sistemele interne al Misskey pentru a trata acest cont drept un bot."
|
||||
flagAsCat: "Marchează acest cont ca pisică"
|
||||
@@ -270,12 +252,12 @@ noMoreHistory: "Nu există mai mult istoric"
|
||||
startMessaging: "Începe un chat nou"
|
||||
nUsersRead: "citit de {n}"
|
||||
agreeTo: "Sunt de acord cu {0}"
|
||||
tos: "Termenii de utilizare"
|
||||
start: "Să începem"
|
||||
home: "Acasă"
|
||||
remoteUserCaution: "Deoarece acest utilizator este dintr-o instanță externă, informația afișată poate fi incompletă."
|
||||
activity: "Activitate"
|
||||
images: "Imagini"
|
||||
image: "Imagini"
|
||||
birthday: "Zi de naștere"
|
||||
yearsOld: "{age} ani"
|
||||
registeredDate: "Data înregistrării"
|
||||
@@ -312,6 +294,7 @@ copyUrl: "Copiază URL"
|
||||
rename: "Redenumește"
|
||||
avatar: "Avatar"
|
||||
banner: "Banner"
|
||||
nsfw: "NSFW"
|
||||
whenServerDisconnected: "Când pierzi conexiunea cu serverul"
|
||||
disconnectedFromServer: "Conecțiunea cu serverul a fost pierdută"
|
||||
reload: "Reîncarcă"
|
||||
@@ -346,6 +329,7 @@ invite: "Invită"
|
||||
driveCapacityPerLocalAccount: "Capacitatea Drive-ului per utilizator local"
|
||||
driveCapacityPerRemoteAccount: "Capacitatea Drive-ului per utilizator extern"
|
||||
inMb: "În megabytes"
|
||||
iconUrl: "URL-ul iconiței"
|
||||
bannerUrl: "URL-ul imaginii de banner"
|
||||
backgroundImageUrl: "URL-ul imaginii de fundal"
|
||||
basicInfo: "Informații de bază"
|
||||
@@ -359,8 +343,6 @@ 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"
|
||||
@@ -413,6 +395,7 @@ share: "Distribuie"
|
||||
notFound: "Nu a fost găsit"
|
||||
notFoundDescription: "N-a fost găsită nicio pagină cu acest URL."
|
||||
uploadFolder: "Folder implicit pentru încărcări"
|
||||
cacheClear: "Golește cache-ul"
|
||||
markAsReadAllNotifications: "Marchează toate notificările drept citit"
|
||||
markAsReadAllUnreadNotes: "Marchează toate notele drept citit"
|
||||
markAsReadAllTalkMessages: "Marchează toate mesajele drept citit"
|
||||
@@ -578,6 +561,7 @@ tokenRequested: "Acordă acces la cont"
|
||||
pluginTokenRequestedDescription: "Acest plugin va putea să folosească permisiunile setate aici."
|
||||
notificationType: "Tipul notificării"
|
||||
edit: "Editează"
|
||||
useStarForReactionFallback: "Folosește ★ ca fallback dacă emoji-ul este necunoscut"
|
||||
emailServer: "Server email"
|
||||
enableEmail: "Activează distribuția de emailuri"
|
||||
emailConfigInfo: "Folosit pentru a confirma emailul tău în timpul logări dacă îți uiți parola"
|
||||
@@ -648,9 +632,6 @@ sent: "Trimite"
|
||||
searchByGoogle: "Caută"
|
||||
file: "Fișiere"
|
||||
show: "Arată"
|
||||
icon: "Avatar"
|
||||
replies: "Răspunde"
|
||||
renotes: "Re-notează"
|
||||
_role:
|
||||
_priority:
|
||||
middle: "Mediu"
|
||||
@@ -666,10 +647,9 @@ _theme:
|
||||
_sfx:
|
||||
note: "Note"
|
||||
notification: "Notificări"
|
||||
chat: "Chat"
|
||||
_ago:
|
||||
invalid: "Nu e nimic de văzut aici"
|
||||
_2fa:
|
||||
renewTOTPCancel: "Nu, mulțumesc."
|
||||
_widgets:
|
||||
profile: "Profil"
|
||||
instanceInfo: "Informații despre instanță"
|
||||
@@ -722,11 +702,3 @@ _deck:
|
||||
list: "Liste"
|
||||
channel: "Canale"
|
||||
mentions: "Mențiuni"
|
||||
_webhookSettings:
|
||||
name: "Nume"
|
||||
_moderationLogTypes:
|
||||
suspend: "Suspendă"
|
||||
resetPassword: "Resetează parola"
|
||||
_reversi:
|
||||
total: "Total"
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
_lang_: "Русский"
|
||||
headlineMisskey: "Сеть, сплетённая из заметок"
|
||||
introMisskey: "Добро пожаловать! Misskey — это децентрализованный сервис микроблогов с открытым исходным кодом.\nПишите «заметки» — делитесь со всеми происходящим вокруг или рассказывайте о себе 📡\nСтавьте «реакции» — выражайте свои чувства и эмоции от заметок других 👍\nОткройте для себя новый мир 🚀"
|
||||
poweredByMisskeyDescription: "{name} – сервис на платформе с открытым исходным кодом <b>Misskey</b>, называемый инстансом Misskey."
|
||||
poweredByMisskeyDescription: "{name} – один из инстансов (также называемый экземпляром Misskey), использующий платформу с открытым исходным кодом <b>Misskey</b>."
|
||||
monthAndDay: "{day}.{month}"
|
||||
search: "Поиск"
|
||||
notifications: "Уведомления"
|
||||
@@ -20,7 +20,6 @@ noNotes: "Нет ни одной заметки"
|
||||
noNotifications: "Нет ни одного уведомления"
|
||||
instance: "Инстанс"
|
||||
settings: "Настройки"
|
||||
notificationSettings: "Настройки уведомлений"
|
||||
basicSettings: "Основные настройки"
|
||||
otherSettings: "Прочие настройки"
|
||||
openInWindow: "Открыть в плавающем окне"
|
||||
@@ -49,19 +48,13 @@ delete: "Удалить"
|
||||
deleteAndEdit: "Удалить и отредактировать"
|
||||
deleteAndEditConfirm: "Удалить эту заметку и создать отредактированную? Все реакции, ссылки и ответы на существующую будут будут потеряны."
|
||||
addToList: "Добавить в список"
|
||||
addToAntenna: "Добавить к антенне"
|
||||
sendMessage: "Отправить сообщение"
|
||||
copyRSS: "Скопировать RSS"
|
||||
copyUsername: "Скопировать имя пользователя"
|
||||
copyUserId: "Скопировать идентификатор пользователя"
|
||||
copyNoteId: "Скопировать идентификатор заметки"
|
||||
copyFileId: "Скопировать ID файла"
|
||||
copyFolderId: "Скопировать ID папки"
|
||||
copyProfileUrl: "Скопировать URL профиля "
|
||||
searchUser: "Поиск людей"
|
||||
reply: "Ответ"
|
||||
reply: "Ответить"
|
||||
loadMore: "Показать еще"
|
||||
showMore: "Показать ещё"
|
||||
showMore: "Показать еще"
|
||||
showLess: "Закрыть"
|
||||
youGotNewFollower: "Новый подписчик"
|
||||
receiveFollowRequest: "Получен запрос на подписку"
|
||||
@@ -120,12 +113,7 @@ sensitive: "Содержимое не для всех"
|
||||
add: "Добавить"
|
||||
reaction: "Реакции"
|
||||
reactions: "Реакции"
|
||||
emojiPicker: "Палитра эмодзи"
|
||||
pinnedEmojisForReactionSettingDescription: "Здесь можно закрепить эмодзи для реакций"
|
||||
pinnedEmojisSettingDescription: "Здесь можно закрепить эмодзи в общей палитре"
|
||||
emojiPickerDisplay: "Внешний вид палитры"
|
||||
overwriteFromPinnedEmojisForReaction: "Заменить на эмодзи из списка реакций"
|
||||
overwriteFromPinnedEmojis: "Заменить на эмодзи из общего списка закреплённых"
|
||||
reactionSetting: "Реакции, отображаемые в палитре"
|
||||
reactionSettingDescription2: "Расставляйте перетаскиванием, удаляйте нажатием, добавляйте кнопкой «+»."
|
||||
rememberNoteVisibility: "Запоминать видимость заметок"
|
||||
attachCancel: "Удалить вложение"
|
||||
@@ -134,8 +122,6 @@ unmarkAsSensitive: "Снять отметку «не для всех»"
|
||||
enterFileName: "Введите имя файла"
|
||||
mute: "Скрыть"
|
||||
unmute: "Отменить скрытие"
|
||||
renoteMute: "Скрыть репосты"
|
||||
renoteUnmute: "Открыть репосты"
|
||||
block: "Заблокировать"
|
||||
unblock: "Разблокировать"
|
||||
suspend: "Заморозить"
|
||||
@@ -145,10 +131,8 @@ unblockConfirm: "Разблокировать этот аккаунт?"
|
||||
suspendConfirm: "Заморозить этот аккаунт?"
|
||||
unsuspendConfirm: "Разморозить этот аккаунт?"
|
||||
selectList: "Выберите список"
|
||||
editList: "Редактировать список"
|
||||
selectChannel: "Выберите канал"
|
||||
selectAntenna: "Выберите антенну"
|
||||
editAntenna: "Редактировать антенну"
|
||||
selectWidget: "Выберите виджет"
|
||||
editWidgets: "Редактировать виджеты"
|
||||
editWidgetsExit: "Готово"
|
||||
@@ -161,8 +145,6 @@ addEmoji: "Добавить эмодзи"
|
||||
settingGuide: "Рекомендуемые настройки"
|
||||
cacheRemoteFiles: "Кешировать внешние файлы"
|
||||
cacheRemoteFilesDescription: "Когда эта настройка отключена, файлы с других сайтов будут загружаться прямо оттуда. Это сэкономит место на сервере, но увеличит трафик, так как не будут создаваться эскизы."
|
||||
cacheRemoteSensitiveFiles: "Кэшировать внешние файлы «не для всех»"
|
||||
cacheRemoteSensitiveFilesDescription: "Если отключено, файлы «не для всех» загружаются непосредственно с удалённых серверов, не кэшируясь."
|
||||
flagAsBot: "Аккаунт бота"
|
||||
flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит системе Misskey учитывать это, а также поможет разработчикам других ботов предотвратить бесконечные циклы взаимодействия."
|
||||
flagAsCat: "Аккаунт кота"
|
||||
@@ -171,7 +153,6 @@ flagShowTimelineReplies: "Показывать ответы на заметки
|
||||
flagShowTimelineRepliesDescription: "Если этот параметр включен, то в ленте, в дополнение к заметкам пользователя, отображаются ответы на другие заметки пользователя."
|
||||
autoAcceptFollowed: "Принимать подписчиков автоматически"
|
||||
addAccount: "Добавить учётную запись"
|
||||
reloadAccountsList: "Обновить список учётных записей"
|
||||
loginFailed: "Неудачная попытка входа"
|
||||
showOnRemote: "Перейти к оригиналу на сайт"
|
||||
general: "Общее"
|
||||
@@ -261,7 +242,6 @@ removed: "Удалено"
|
||||
removeAreYouSure: "Хотите удалить «{x}»?"
|
||||
deleteAreYouSure: "Хотите удалить «{x}»?"
|
||||
resetAreYouSure: "На самом деле сбросить?"
|
||||
areYouSure: "Вы уверены?"
|
||||
saved: "Сохранено"
|
||||
messaging: "Сообщения"
|
||||
upload: "Загрузить"
|
||||
@@ -279,16 +259,14 @@ noMoreHistory: "История закончилась"
|
||||
startMessaging: "Начать общение"
|
||||
nUsersRead: "Прочитали {n}"
|
||||
agreeTo: "Я соглашаюсь с {0}"
|
||||
agree: "Согласен"
|
||||
agreeBelow: "Согласен со следующими"
|
||||
basicNotesBeforeCreateAccount: "Записи, перед созданием аккаунта"
|
||||
termsOfService: "Условия использования"
|
||||
tos: "Пользовательское соглашение"
|
||||
start: "Начать"
|
||||
home: "Главная"
|
||||
remoteUserCaution: "Это пользователь с другого сайта, поэтому информация может быть неточной."
|
||||
activity: "Активность"
|
||||
images: "Изображения"
|
||||
image: "Изображения"
|
||||
birthday: "День рождения"
|
||||
yearsOld: "Возраст: {age}"
|
||||
registeredDate: "Дата регистрации"
|
||||
@@ -325,7 +303,7 @@ copyUrl: "Копировать ссылку"
|
||||
rename: "Переименовать"
|
||||
avatar: "Аватар"
|
||||
banner: "Шапка"
|
||||
displayOfSensitiveMedia: "Отображение содержимого не для всех"
|
||||
nsfw: "Содержимое не для всех"
|
||||
whenServerDisconnected: "Когда соединение с сервером потеряно"
|
||||
disconnectedFromServer: "Разорвано соединение с сервером"
|
||||
reload: "Перезагрузить"
|
||||
@@ -360,6 +338,7 @@ invite: "Пригласить"
|
||||
driveCapacityPerLocalAccount: "Объём диска на одного локального пользователя"
|
||||
driveCapacityPerRemoteAccount: "Объём диска на одного пользователя с другого сайта"
|
||||
inMb: "В мегабайтах"
|
||||
iconUrl: "Ссылка на аватар"
|
||||
bannerUrl: "Ссылка на изображение в шапке"
|
||||
backgroundImageUrl: "Ссылка на фоновое изображение"
|
||||
basicInfo: "Общая информация"
|
||||
@@ -373,8 +352,6 @@ hcaptcha: "hCaptcha"
|
||||
enableHcaptcha: "Включить hCaptcha"
|
||||
hcaptchaSiteKey: "Ключ сайта"
|
||||
hcaptchaSecretKey: "Секретный ключ"
|
||||
mcaptchaSiteKey: "Ключ сайта"
|
||||
mcaptchaSecretKey: "Секретный ключ"
|
||||
recaptcha: "reCAPTCHA"
|
||||
enableRecaptcha: "Включить reCAPTCHA"
|
||||
recaptchaSiteKey: "Ключ сайта"
|
||||
@@ -416,20 +393,13 @@ about: "Описание"
|
||||
aboutMisskey: "О Misskey"
|
||||
administrator: "Администратор"
|
||||
token: "Токен"
|
||||
2fa: "Двухфакторная аутентификация"
|
||||
setupOf2fa: "Настроить двухфакторную аутентификацию"
|
||||
totp: "Приложение-аутентификатор"
|
||||
totpDescription: "Описание приложения-аутентификатора"
|
||||
moderator: "Модератор"
|
||||
moderation: "Модерация"
|
||||
nUsersMentioned: "Упомянуло пользователей: {n}"
|
||||
securityKeyAndPasskey: "Ключ безопасности и парольная фраза"
|
||||
securityKey: "Ключ безопасности"
|
||||
lastUsed: "Последнее использование"
|
||||
lastUsedAt: "Последнее использование: {t}"
|
||||
unregister: "Отписаться"
|
||||
passwordLessLogin: "Настроить вход без пароля"
|
||||
passwordLessLoginDescription: "Вход без пароля"
|
||||
resetPassword: "Сброс пароля:"
|
||||
newPasswordIs: "Новый пароль — «{password}»."
|
||||
reduceUiAnimation: "Уменьшить анимацию в пользовательском интерфейсе"
|
||||
@@ -437,6 +407,7 @@ share: "Поделиться"
|
||||
notFound: "Не найдено"
|
||||
notFoundDescription: "Страница по указанной ссылке не найдена"
|
||||
uploadFolder: "Место загрузки по умолчанию"
|
||||
cacheClear: "Очистка кэша"
|
||||
markAsReadAllNotifications: "Отметить все уведомления как прочитанные"
|
||||
markAsReadAllUnreadNotes: "Отметить все заметки как прочитанные"
|
||||
markAsReadAllTalkMessages: "Отметить все реплики как прочитанные"
|
||||
@@ -480,7 +451,6 @@ aboutX: "Описание {x}"
|
||||
emojiStyle: "Стиль эмодзи"
|
||||
native: "Системные"
|
||||
disableDrawer: "Не использовать выдвижные меню"
|
||||
showNoteActionsOnlyHover: "Показывать кнопки у заметок только при наведении"
|
||||
noHistory: "История пока пуста"
|
||||
signinHistory: "Журнал посещений"
|
||||
enableAdvancedMfm: "Включить расширенный MFM"
|
||||
@@ -493,8 +463,6 @@ createAccount: "Новая учётная запись"
|
||||
existingAccount: "Существующая учётная запись"
|
||||
regenerate: "Создать повторно"
|
||||
fontSize: "Размер шрифта"
|
||||
mediaListWithOneImageAppearance: "Вид изображения, если оно единственное в списке"
|
||||
limitTo: "Ограничить до {x}"
|
||||
noFollowRequests: "Нерассмотренные запросы на подписку отсутствуют"
|
||||
openImageInNewTab: "Открыть изображение в новой вкладке"
|
||||
dashboard: "Панель управления"
|
||||
@@ -528,11 +496,9 @@ objectStorageUseSSLDesc: "Отключите, если не собираетес
|
||||
objectStorageUseProxy: "Использовать прокси"
|
||||
objectStorageUseProxyDesc: "Отключите, если не будете испоьзовать прокси для соединений по протоколу ObjectStorage."
|
||||
objectStorageSetPublicRead: "Устанавливать public-read при загрузке на сервер"
|
||||
s3ForcePathStyleDesc: "Включение s3ForcePathStyle приводит к тому, что имя корзины указывается как часть пути в URL, а не в имени хоста. Может потребоваться включить при использовании локального Minio или чего-то подобного."
|
||||
serverLogs: "Журнал сервера"
|
||||
deleteAll: "Удалить всё"
|
||||
showFixedPostForm: "Показывать поле для ввода новой заметки наверху ленты"
|
||||
showFixedPostFormInChannel: "Показывать поле для ввода новой заметки наверху ленты (каналы)"
|
||||
newNoteRecived: "Появилась новая заметка"
|
||||
sounds: "Звуки"
|
||||
sound: "Звуки"
|
||||
@@ -570,14 +536,9 @@ userSuspended: "Эта учётная запись заморожена"
|
||||
userSilenced: "Этот пользователь был заглушен"
|
||||
yourAccountSuspendedTitle: "Эта учетная запись заблокирована"
|
||||
yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись."
|
||||
tokenRevoked: "Токен недействителен"
|
||||
tokenRevokedDescription: "Срок действия вашего токена входа истек. Пожалуйста, войдите снова."
|
||||
accountDeleted: "Учетная запись удалена"
|
||||
accountDeletedDescription: "Эта учетная запись удалена"
|
||||
menu: "Меню"
|
||||
divider: "Линия-разделитель"
|
||||
addItem: "Добавить элемент"
|
||||
rearrange: "Сортировать по"
|
||||
relays: "Ретрансляторы"
|
||||
addRelay: "Добавить ретранслятор"
|
||||
inboxUrl: "URL ящика входящих сообщений"
|
||||
@@ -618,6 +579,7 @@ tokenRequested: "Открыть доступ к учётной записи"
|
||||
pluginTokenRequestedDescription: "Это расширение сможет пользоваться разрешениями, установленными здесь."
|
||||
notificationType: "Тип уведомления"
|
||||
edit: "Изменить"
|
||||
useStarForReactionFallback: "Ставить ★ в качестве реакции вместо неизвестного эмодзи"
|
||||
emailServer: "Сервер электронной почты"
|
||||
enableEmail: "Включить обмен электронной почтой"
|
||||
emailConfigInfo: "Используется для подтверждения адреса электронной почты и сброса пароля."
|
||||
@@ -650,26 +612,24 @@ create: "Создать"
|
||||
notificationSetting: "Настройки уведомлений"
|
||||
notificationSettingDesc: "Выберите тип уведомлений для отображения"
|
||||
useGlobalSetting: "Использовать глобальные настройки"
|
||||
useGlobalSettingDesc: "Если включено, будут использоваться настройки учётной записи. Если отключить, этот виджет можно будет настроить индивидуально."
|
||||
useGlobalSettingDesc: "Если включено, будут использоваться настройки учётной записи. Если включить, этот виджет можно будет настроить индивидуально."
|
||||
other: "Другие"
|
||||
regenerateLoginToken: "Создать новый токен для входа"
|
||||
regenerateLoginTokenDescription: "Создаёт новый токен, используемый внутри программы во время входа. Обычно в этом нет необходимости. При создании все устройства будут отключены."
|
||||
theKeywordWhenSearchingForCustomEmoji: "Это ключевое слово будет использовано при поиске эмодзи."
|
||||
setMultipleBySeparatingWithSpace: "Можно написать несколько через пробел"
|
||||
fileIdOrUrl: "Идентификатор файла или ссылка"
|
||||
behavior: "Поведение"
|
||||
sample: "Пример"
|
||||
abuseReports: "Жалобы"
|
||||
reportAbuse: "Жалоба"
|
||||
reportAbuseRenote: "Пожаловаться на репост"
|
||||
reportAbuseOf: "Пожаловаться на пользователя {name}"
|
||||
fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь о конкретной заметке, будьте добры приложить ссылку на неё."
|
||||
abuseReported: "Жалоба отправлена. Большое спасибо за информацию."
|
||||
reporter: "Сообщивший"
|
||||
reporteeOrigin: "О ком сообщено"
|
||||
reporterOrigin: "Кто сообщил"
|
||||
forwardReport: "Отправить жалобу на инстанс автора."
|
||||
forwardReportIsAnonymous: "Жалоба на удалённый инстанс будет отправлена анонимно. Вместо ваших данных у получателя будет отображена системная учётная запись."
|
||||
forwardReport: "Перенаправление отчета на инстант."
|
||||
forwardReportIsAnonymous: "Удаленный инстант не сможет увидеть вашу информацию и будет отображаться как анонимная системная учетная запись."
|
||||
send: "Отправить"
|
||||
abuseMarkAsResolved: "Отметить жалобу как решённую"
|
||||
openInNewTab: "Открыть в новой вкладке"
|
||||
@@ -689,7 +649,6 @@ createNewClip: "Новая подборка"
|
||||
unclip: "Убрать из подборки"
|
||||
confirmToUnclipAlreadyClippedNote: "Эта заметка уже есть в подборке «{name}». Удалить из этой подборки?"
|
||||
public: "Общедоступно"
|
||||
private: "Личное"
|
||||
i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}."
|
||||
manageAccessTokens: "Управление токенами доступа"
|
||||
accountInfo: "Сведения об учётной записи"
|
||||
@@ -724,8 +683,6 @@ contact: "Как связаться"
|
||||
useSystemFont: "Использовать шрифт, предлагаемый системой"
|
||||
clips: "Подборки"
|
||||
experimentalFeatures: "Экспериментальные функции"
|
||||
experimental: "Экспериментальные"
|
||||
thisIsExperimentalFeature: "Это экспериментальная функция. Её поведение, вероятно, поменяется в следующей версии, а ещё она может работать не так, как задумано."
|
||||
developer: "Разработчик"
|
||||
makeExplorable: "Опубликовать профиль в «Обзоре»."
|
||||
makeExplorableDescription: "Если выключить, ваш профиль не будет показан в разделе «Обзор»."
|
||||
@@ -810,14 +767,12 @@ noMaintainerInformationWarning: "Не заполнены сведения об
|
||||
noBotProtectionWarning: "Ботозащита не настроена"
|
||||
configure: "Настроить"
|
||||
postToGallery: "Опубликовать в галерею"
|
||||
postToHashtag: "Написать заметку с этим хэштегом"
|
||||
gallery: "Галерея"
|
||||
recentPosts: "Недавние публикации"
|
||||
popularPosts: "Популярные публикации"
|
||||
shareWithNote: "Поделиться заметкой"
|
||||
ads: "Реклама"
|
||||
expiration: "Опрос длится"
|
||||
startingperiod: "Начальный период"
|
||||
memo: "Памятка"
|
||||
priority: "Приоритет"
|
||||
high: "Высокий"
|
||||
@@ -839,23 +794,19 @@ useBlurEffect: "Размытие в интерфейсе"
|
||||
learnMore: "Подробнее"
|
||||
misskeyUpdated: "Misskey обновился!"
|
||||
whatIsNew: "Что новенького?"
|
||||
translate: "Перевести"
|
||||
translate: "Перевод"
|
||||
translatedFrom: "Перевод. Язык оригинала — {x}"
|
||||
accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи"
|
||||
usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже."
|
||||
aiChanMode: "Режим Ай"
|
||||
devMode: "Режим разработчика"
|
||||
keepCw: "Сохраняйте Предупреждения о содержимом"
|
||||
pubSub: "Учётные записи Pub/Sub"
|
||||
lastCommunication: "Последнее сообщение"
|
||||
resolved: "Решено"
|
||||
unresolved: "Без решения"
|
||||
breakFollow: "Отписка"
|
||||
breakFollowConfirm: "Действительно удалить этого подписчика?"
|
||||
itsOn: "Включено"
|
||||
itsOff: "Выключено"
|
||||
on: "Вкл."
|
||||
off: "Выкл."
|
||||
emailRequiredForSignup: "Для регистрации учётной записи нужен адрес электронной почты"
|
||||
unread: "Непрочитанное"
|
||||
filter: "Фильтры"
|
||||
@@ -866,6 +817,8 @@ makeReactionsPublicDescription: "Список сделанных вами реа
|
||||
classic: "Классика"
|
||||
muteThread: "Скрыть цепочку"
|
||||
unmuteThread: "Отменить сокрытие цепочки"
|
||||
ffVisibility: "Видимость подписок и подписчиков"
|
||||
ffVisibilityDescription: "Здесь можно настроить, кто будет видеть ваши подписки и подписчиков."
|
||||
continueThread: "Показать следующие ответы"
|
||||
deleteAccountConfirm: "Учётная запись будет безвозвратно удалена. Подтверждаете?"
|
||||
incorrectPassword: "Пароль неверен."
|
||||
@@ -884,15 +837,13 @@ numberOfColumn: "Количество столбцов"
|
||||
searchByGoogle: "Поиск"
|
||||
instanceDefaultLightTheme: "Светлая тема по умолчанию"
|
||||
instanceDefaultDarkTheme: "Темная тема по умолчанию"
|
||||
instanceDefaultThemeDescription: "Введите код темы в формате объекта."
|
||||
instanceDefaultThemeDescription: "Описание темы по умолчанию для инстанса"
|
||||
mutePeriod: "Продолжительность скрытия"
|
||||
period: "Опрос длится"
|
||||
indefinitely: "вечно"
|
||||
tenMinutes: "10 минут"
|
||||
oneHour: "1 час"
|
||||
oneDay: "1 день"
|
||||
oneWeek: "1 неделя"
|
||||
oneMonth: "1 месяц"
|
||||
reflectMayTakeTime: "Изменения могут занять время для отображения"
|
||||
failedToFetchAccountInformation: "Не удалось получить информацию об аккаунте"
|
||||
rateLimitExceeded: "Ограничение скорости превышено"
|
||||
@@ -908,7 +859,7 @@ thereIsUnresolvedAbuseReportWarning: "Остались нерешённые жа
|
||||
recommended: "Рекомендуем"
|
||||
check: "Проверить"
|
||||
driveCapOverrideLabel: "Изменение лимита дискового пространства для этого пользователя"
|
||||
driveCapOverrideCaption: "Введите нуль или меньше, чтобы использовать значение по умолчанию."
|
||||
driveCapOverrideCaption: "Укажите меньше или равное нулю для отмены"
|
||||
requireAdminForView: "Для просмотра необходимо иметь аккаунт администратора"
|
||||
isSystemAccount: "Данная учётная запись создана автоматически и управляется системой"
|
||||
typeToConfirm: "Введите {x} для продолжения"
|
||||
@@ -928,16 +879,15 @@ type: "Тип"
|
||||
speed: "Скорость"
|
||||
slow: "Медленная"
|
||||
fast: "Быстрая"
|
||||
sensitiveMediaDetection: "Распознание содержимого не для всех"
|
||||
sensitiveMediaDetection: "Определение содержимого деликатного характера"
|
||||
localOnly: "Локально"
|
||||
remoteOnly: "Только удалённо"
|
||||
failedToUpload: "Сбой выгрузки"
|
||||
cannotUploadBecauseInappropriate: "Файл не может быть загружен, так как было установлено, что он может содержать неприемлемое содержимое."
|
||||
cannotUploadBecauseNoFreeSpace: "Файл не может быть загружен, так как не осталось места на диске"
|
||||
cannotUploadBecauseExceedsFileSizeLimit: "Файл не может быть загружен, так как он превышает лимит размера файла."
|
||||
beta: "Бета"
|
||||
enableAutoSensitive: "Автоматическое определение содержимого не для всех"
|
||||
enableAutoSensitiveDescription: "Позволяет определять наличие содержимого не для всех при помощи искусственного интеллекта там, где это возможно. Даже если эту опцию отключить, она всё равно может быть включена на весь инстанс."
|
||||
enableAutoSensitive: "Автоматическое определение NSFW"
|
||||
enableAutoSensitiveDescription: "Если доступно, используйте машинное обучение для автоматической установки флага NSFW на носителе. Даже если эта функция отключена, она может быть установлена автоматически в зависимости от инстанта."
|
||||
activeEmailValidationDescription: "Если включено, будет проводиться более строгая проверка адреса электронной почты, в том числе на то, что он действительный и не временный. Если же отключено, то проверяется только корректность написания адреса."
|
||||
navbar: "Панель навигации"
|
||||
shuffle: "Перемешать"
|
||||
@@ -951,7 +901,6 @@ pushNotificationNotSupported: "Push-уведмления не поддержив
|
||||
sendPushNotificationReadMessage: "Удалять push-уведомления когда сообщение или прочитано"
|
||||
sendPushNotificationReadMessageCaption: "На мгновение появится уведомление \"{emptyPushNotificationMessage}\". Расход заряда батареи может увеличиться "
|
||||
windowMaximize: "Развернуть"
|
||||
windowMinimize: "Свернуть"
|
||||
windowRestore: "Восстановить"
|
||||
caption: "Подпись (Automatic Translation)"
|
||||
loggedInAsBot: "Вы под аккаунтом бота!"
|
||||
@@ -961,14 +910,13 @@ numberOfProfileView: "Количество профилей для просмо
|
||||
like: "Нравится!"
|
||||
unlike: "Отменить «нравится»"
|
||||
numberOfLikes: "Количество лайков"
|
||||
show: "Показать"
|
||||
show: "Отображение"
|
||||
neverShow: "Больше не показывать"
|
||||
remindMeLater: "Напомнить позже"
|
||||
didYouLikeMisskey: "Вам нравится Misskey?"
|
||||
pleaseDonate: "Сайт {host} работает на Misskey. Это бесплатное программное обеспечение, и ваши пожертвования очень бы помогли продолжать его разработку!"
|
||||
roles: "Роли"
|
||||
role: "Роль"
|
||||
noRole: "Нет роли"
|
||||
normalUser: "Обычный пользователь"
|
||||
undefined: "неопределён"
|
||||
assign: "Назначить"
|
||||
@@ -978,10 +926,6 @@ manageCustomEmojis: "Управлять пользовательскими эм
|
||||
youCannotCreateAnymore: "Вы достигли лимита создания."
|
||||
cannotPerformTemporary: "Временно недоступен"
|
||||
cannotPerformTemporaryDescription: "Это действие временно невозможно выполнить из-за превышения лимита выполнения."
|
||||
invalidParamError: "Ошибка параметра"
|
||||
invalidParamErrorDescription: "Проблема с параметрами запроса. Обычно это ошибка, но это также может быть связано с тем, что вы набрали слишком много символов."
|
||||
permissionDeniedError: "Операция запрещена"
|
||||
permissionDeniedErrorDescription: "У этой учетной записи нет разрешения на выполнение этой операции."
|
||||
preset: "Шаблоны"
|
||||
selectFromPresets: "Выбрать из шаблонов"
|
||||
achievements: "Достижения"
|
||||
@@ -995,111 +939,6 @@ collapseRenotes: "Свернуть репосты"
|
||||
internalServerError: "Внутренняя ошибка сервера"
|
||||
internalServerErrorDescription: "Внутри сервера произошла непредвиденная ошибка."
|
||||
copyErrorInfo: "Скопировать код ошибки"
|
||||
joinThisServer: "Присоединяйтесь к этому серверу"
|
||||
exploreOtherServers: "Искать другие сервера"
|
||||
letsLookAtTimeline: "Давайте посмотрим на ленту"
|
||||
disableFederationConfirm: "Отключить федерацию?"
|
||||
disableFederationConfirmWarn: "Дефедерация не делает заметку приватной. В большинстве случаев без федерации не обойтись."
|
||||
disableFederationOk: "Не федерируется"
|
||||
invitationRequiredToRegister: "Этот сервер в настоящее время только по приглашению. Зарегистрироваться могут только те, у кого есть код приглашения."
|
||||
emailNotSupported: "Доставка почты не поддерживается на этом сервере"
|
||||
postToTheChannel: "Отправить в канал"
|
||||
cannotBeChangedLater: "Это нельзя изменить позже"
|
||||
reactionAcceptance: "Допустимые реакции"
|
||||
likeOnly: "Только «нравится!»"
|
||||
likeOnlyForRemote: "Всё (с других серверов только «нравится!»)"
|
||||
nonSensitiveOnly: "Только безопасные"
|
||||
nonSensitiveOnlyForLocalLikeOnlyForRemote: "Только безопасные (с других серверов только «нравится!»)"
|
||||
rolesAssignedToMe: "Мои роли"
|
||||
resetPasswordConfirm: "Сбросить пароль?"
|
||||
sensitiveWords: "Чувствительные слова"
|
||||
sensitiveWordsDescription: "Установите общедоступный диапазон заметки, содержащей заданное слово, на домашний. Можно сделать несколько настроек, разделив их переносами строк."
|
||||
sensitiveWordsDescription2: "Разделение пробелом создаёт спецификацию AND, а разделение косой чертой создаёт регулярное выражение."
|
||||
notesSearchNotAvailable: "Поиск заметок недоступен"
|
||||
license: "Лицензия"
|
||||
unfavoriteConfirm: "Удалить избранное?"
|
||||
myClips: "Мои клипы"
|
||||
drivecleaner: "Очиститель дисков"
|
||||
retryAllQueuesNow: "Повторить все очереди сейчас"
|
||||
retryAllQueuesConfirmTitle: "Хотите попробовать ещё раз?"
|
||||
retryAllQueuesConfirmText: "Нагрузка на сервер может увеличиться"
|
||||
enableChartsForRemoteUser: "Создание диаграмм для удалённых пользователей"
|
||||
enableChartsForFederatedInstances: "Создание диаграмм для удалённых серверов"
|
||||
noteIdOrUrl: "ID или ссылка на заметку"
|
||||
video: "Видео"
|
||||
videos: "Видео"
|
||||
dataSaver: "Экономия трафика"
|
||||
accountMigration: "Перенос учётной записи"
|
||||
accountMoved: "Учётная запись перенесена"
|
||||
accountMovedShort: "Эта учётная запись перемещена"
|
||||
operationForbidden: "Это действие запрещено"
|
||||
forceShowAds: "Всегда отображать рекламу"
|
||||
addMemo: "Добавить памятку"
|
||||
editMemo: "Изменить памятку"
|
||||
reactionsList: "Список реакций"
|
||||
renotesList: "Репосты"
|
||||
notificationDisplay: "Отображение уведомлений"
|
||||
leftTop: "Влево вверх"
|
||||
rightTop: "Вправо вверх"
|
||||
leftBottom: "Влево вниз"
|
||||
rightBottom: "Вправо вниз"
|
||||
vertical: "Вертикальная"
|
||||
horizontal: "Сбоку"
|
||||
position: "Позиция"
|
||||
serverRules: "Правила сервера"
|
||||
pleaseConfirmBelowBeforeSignup: "Для регистрации на данном сервере, необходимо согласится с нижеследующими положениями."
|
||||
pleaseAgreeAllToContinue: "Чтобы продолжить, необходимо поставить отметки во всех полях \"согласен\"."
|
||||
continue: "Продолжить"
|
||||
preservedUsernames: "Зарезервированные имена пользователей"
|
||||
preservedUsernamesDescription: "Перечислите зарезервированные имена пользователей, отделяя их строками. Они станут недоступны при создании учётной записи. Это ограничение не применяется при создании учётной записи администраторами. Также, уже существующие учётные записи останутся без изменений."
|
||||
createNoteFromTheFile: "Создать заметку из этого файла"
|
||||
archive: "Архив"
|
||||
channelArchiveConfirmTitle: "Переместить {name} в архив?"
|
||||
channelArchiveConfirmDescription: "Архивированные каналы перестанут отображаться в списке каналов или результатах поиска. В них также нельзя будет добавлять новые записи."
|
||||
displayOfNote: "Отображение заметок"
|
||||
initialAccountSetting: "Настройка профиля"
|
||||
youFollowing: "Подписки"
|
||||
preventAiLearning: "Отказаться от использования в машинном обучении (Генеративный ИИ)"
|
||||
options: "Настройки ролей"
|
||||
specifyUser: "Указанный пользователь"
|
||||
failedToPreviewUrl: "Предварительный просмотр недоступен"
|
||||
update: "Обновить"
|
||||
rolesThatCanBeUsedThisEmojiAsReaction: "Роли тех, кому можно использовать эти эмодзи как реакцию"
|
||||
rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription: "Если здесь ничего не указать, в качестве реакции эту эмодзи сможет использовать каждый."
|
||||
later: "Позже"
|
||||
goToMisskey: "К Misskey"
|
||||
additionalEmojiDictionary: "Дополнительные словари эмодзи"
|
||||
installed: "Установлено"
|
||||
branding: "Бренд"
|
||||
enableIdenticonGeneration: "Включить генерацию иконки пользователя"
|
||||
turnOffToImprovePerformance: "Отключение этого параметра может повысить производительность."
|
||||
expirationDate: "Дата истечения"
|
||||
unused: "Неиспользуемый"
|
||||
expired: "Срок действия приглашения истёк"
|
||||
doYouAgree: "Согласны?"
|
||||
icon: "Аватар"
|
||||
replies: "Ответы"
|
||||
renotes: "Репост"
|
||||
loadReplies: "Показать ответы"
|
||||
flip: "Переворот"
|
||||
lastNDays: "Последние {n} сут"
|
||||
_initialAccountSetting:
|
||||
accountCreated: "Аккаунт успешно создан!"
|
||||
letsStartAccountSetup: "Давайте настроим вашу учётную запись."
|
||||
profileSetting: "Настройки профиля"
|
||||
privacySetting: "Настройки конфиденциальности"
|
||||
initialAccountSettingCompleted: "Первоначальная настройка успешно завершена!"
|
||||
skipAreYouSure: "Пропустить настройку?"
|
||||
_initialTutorial:
|
||||
_note:
|
||||
description: "Посты в Misskey называются 'Заметками.' Заметки отсортированы в хронологическом порядке в ленте и обновляются в режиме реального времени."
|
||||
_timelineDescription:
|
||||
home: "В персональной ленте располагаются заметки тех, на которых вы подписаны."
|
||||
local: "Местная лента показывает заметки всех пользователей этого сайта."
|
||||
social: "В социальной ленте собирается всё, что есть в персональной и местной лентах."
|
||||
global: "В глобальную ленту попадает вообще всё со связанных инстансов."
|
||||
_serverSettings:
|
||||
iconUrl: "Адрес на иконку роли"
|
||||
_achievements:
|
||||
earnedAt: "Разблокировано в"
|
||||
_types:
|
||||
@@ -1271,9 +1110,6 @@ _achievements:
|
||||
_client30min:
|
||||
title: "Перерыв на обед"
|
||||
description: "Прошло 30 минут с момента запуска клиента"
|
||||
_client60min:
|
||||
title: "Не наглядеться на Misskey"
|
||||
description: "Misskey был открыт 60 минут подряд"
|
||||
_noteDeletedWithin1min:
|
||||
title: "Ой, нет!"
|
||||
description: "Заметка удалена через минуту после публикации"
|
||||
@@ -1376,7 +1212,6 @@ _role:
|
||||
canInvite: "Может создавать пригласительные коды"
|
||||
canManageCustomEmojis: "Управлять пользовательскими эмодзи"
|
||||
driveCapacity: "Доступное пространство на «диске»"
|
||||
alwaysMarkNsfw: "Всегда отмечать файлы как «не для всех»"
|
||||
pinMax: "Доступное количество закреплённых заметок"
|
||||
antennaMax: "Доступное количество антенн"
|
||||
wordMuteMax: "Доступное количество знаков в списке скрытия слов"
|
||||
@@ -1404,7 +1239,7 @@ _sensitiveMediaDetection:
|
||||
description: "Машинное обучение может быть использовано для автоматического обнаружения чувствительных медиа для модерации. Нагрузка на сервер увеличивается незначительно."
|
||||
sensitivity: "Чувствительность обнаружения"
|
||||
sensitivityDescription: "Более низкая чувствительность уменьшает количество ложных срабатываний (false positives). Повышение чувствительности уменьшает утечку при обнаружении (ложноотрицательные результаты)."
|
||||
setSensitiveFlagAutomatically: "Обозначить как не для всех"
|
||||
setSensitiveFlagAutomatically: "Установить флаг NSFW"
|
||||
setSensitiveFlagAutomaticallyDescription: "Даже если этот параметр отключен, результат оценки сохраняется внутри системы."
|
||||
analyzeVideos: "Анализировать видео?"
|
||||
analyzeVideosDescription: "Анализируйте видео в дополнение к неподвижным изображениям. Нагрузка на сервер немного увеличивается."
|
||||
@@ -1451,7 +1286,6 @@ _plugin:
|
||||
install: "Установка расширений"
|
||||
installWarn: "Пожалуйста, не устанавливайте расширения, которым не доверяете."
|
||||
manage: "Управление расширениями"
|
||||
viewSource: "Просмотр исходника"
|
||||
_preferencesBackups:
|
||||
list: "Существующие резервные копии"
|
||||
saveNew: "Создать резервную копию"
|
||||
@@ -1485,6 +1319,10 @@ _aboutMisskey:
|
||||
donate: "Пожертвование на Misskey"
|
||||
morePatrons: "Большое спасибо и многим другим, кто принял участие в этом проекте! 🥰"
|
||||
patrons: "Материальная поддержка"
|
||||
_nsfw:
|
||||
respect: "Скрывать содержимое не для всех"
|
||||
ignore: "Показывать содержимое не для всех"
|
||||
force: "Скрывать вообще все файлы"
|
||||
_instanceTicker:
|
||||
none: "Не показывать"
|
||||
remote: "Только для других сайтов"
|
||||
@@ -1512,6 +1350,11 @@ _wordMute:
|
||||
muteWords: "Скрыть слово"
|
||||
muteWordsDescription: "Пишите слова через пробел в одной строке, чтобы фильтровать их появление вместе; а если хотите фильтровать любое из них, пишите в отдельных строках."
|
||||
muteWordsDescription2: "Здесь можно использовать регулярные выражения — просто заключите их между двумя дробными чертами (/)."
|
||||
softDescription: "Соответствующие условиям заметки будут спрятаны из вашей ленты."
|
||||
hardDescription: "Соответстующие условиям заметки вообще не будут попадать в вашу ленту. Даже если вы поменяете условия, отсеенные таким образом заметки уже не появятся."
|
||||
soft: "Мягко"
|
||||
hard: "Жёстко"
|
||||
mutedNotes: "Скрытые заметки"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "Заметки и репосты с указанных здесь инстансов, а также ответы пользователям оттуда же не будут отображаться."
|
||||
instanceMuteDescription2: "Пишите каждый инстанс на отдельной строке"
|
||||
@@ -1575,6 +1418,9 @@ _theme:
|
||||
infoFg: "Текст сообщения"
|
||||
infoWarnBg: "Фон предупреждения"
|
||||
infoWarnFg: "Текст предупреждения"
|
||||
cwBg: "Фон предупреждения о содержимом"
|
||||
cwFg: "Текст предупреждения о содержимом"
|
||||
cwHoverBg: "Фон предупреждения о содержимом (под указателем)"
|
||||
toastBg: "Фон оповещения"
|
||||
toastFg: "Текст оповещения"
|
||||
buttonBg: "Фон кнопки"
|
||||
@@ -1592,6 +1438,8 @@ _sfx:
|
||||
note: "Заметки"
|
||||
noteMy: "Собственные заметки"
|
||||
notification: "Уведомления"
|
||||
chat: "Сообщения"
|
||||
chatBg: "Сообщения (фон)"
|
||||
antenna: "Антенна"
|
||||
channel: "Канал"
|
||||
_ago:
|
||||
@@ -1605,40 +1453,46 @@ _ago:
|
||||
monthsAgo: "{n} мес. назад"
|
||||
yearsAgo: "{n} г. назад"
|
||||
invalid: "Ничего нет"
|
||||
_timeIn:
|
||||
seconds: "Через {n} с"
|
||||
minutes: "Через {n} мин"
|
||||
hours: "Через {n} ч"
|
||||
days: "Через {n} сут"
|
||||
weeks: "Через {n} нед."
|
||||
months: "Через {n} мес."
|
||||
years: "Через {n} г."
|
||||
_time:
|
||||
second: "с"
|
||||
minute: "мин"
|
||||
hour: "ч"
|
||||
day: "сут"
|
||||
_tutorial:
|
||||
title: "Как пользоваться Misskey"
|
||||
step1_1: "Добро пожаловать!"
|
||||
step1_2: "Эта страница называется «лента». Здесь будут появляться «заметки»: ваши личные и тех, на кого вы «подписаны». Они будут располагаться в порядке времени их появления."
|
||||
step1_3: "Правда, ваша лента пока пуста. Она начнёт заполняться, когда вы будете писать свои заметки и подписываться на других."
|
||||
step2_1: "Давайте, заполним профиль, прежде чем начать писать заметки и подписываться на других."
|
||||
step2_2: "То, что вы расскажете в профиле, поможет лучше вас узнать, а значит, многим будет легче присоединиться — вы скорее получите новых подписчиков и читателей."
|
||||
step3_1: "Успешно заполнили профиль?"
|
||||
step3_2: "Что ж, теперь самое время опубликовать заметку. Если нажать вверху страницы на изображение карандаша, появится форма для текста."
|
||||
step3_3: "Напишите в неё, что хотите, и нажмите на кнопку в правом верхнем углу."
|
||||
step3_4: "Ничего не приходит в голову? Как насчёт: «Я новенький, пока осваиваюсь в Misskey»?"
|
||||
step4_1: "С написанием первой заметки покончено?"
|
||||
step4_2: "Отлично, теперь она должна появиться в вашей ленте."
|
||||
step5_1: "А теперь самое время немного оживить ленту, подписавшись на других."
|
||||
step5_2: "На странице «{featured}» собраны популярные сегодня заметки, читая которые, вы можете найти кого-то вам интересного, а на странице «{explore}» можно посмотреть, кто популярен у остальных."
|
||||
step5_3: "Чтобы подписаться на кого-нибудь, щёлкните по его аватару и в открывшемся профиле нажмите кнопку «Подписаться»."
|
||||
step5_4: "Некоторые пользователи (около их имени «висит замок») вручную подтверждают чужие подписки. Так что иногда подписка начинает работать не сразу.\n"
|
||||
step6_1: "Если теперь в ленте видны и чужие заметки, значит у вас получилось."
|
||||
step6_2: "Здесь можно непринуждённо выразить свои чувства к чьей-то заметке, отметив «реакцию» под ней."
|
||||
step6_3: "Отмечайте реакции, нажмая на символ «+» под заметкой и выбирая значок по душе."
|
||||
step7_1: "На этом вводный урок по использованию Misskey закончен. Спасибо, что прошли его до конца!"
|
||||
step7_2: "Хотите изучить Misskey глубже — добро пожаловать в раздел «{help}»."
|
||||
step7_3: "Приятно вам провести время с Misskey🚀"
|
||||
step8_1: "Ах, да, не хотите ли включить push-уведомления?"
|
||||
step8_2: "С push-уведомлениями вы будете в курсе репостов, ответов, реакций и всего такого, даже когда закрыли Misskey."
|
||||
step8_3: "Эту настройку вы всегда сможете поменять"
|
||||
_2fa:
|
||||
alreadyRegistered: "Двухфакторная аутентификация уже настроена."
|
||||
registerTOTP: "Начните настраивать приложение-аутентификатор"
|
||||
step1: "Прежде всего, установите на устройство приложение для аутентификации, например, {a} или {b}."
|
||||
step2: "Далее отсканируйте отображаемый QR-код при помощи приложения."
|
||||
step2Click: "Нажав на QR-код, вы можете зарегистрироваться с помощью приложения для аутентификации или брелка для ключей, установленного на вашем устройстве."
|
||||
step3Title: "Введите проверочный код"
|
||||
step2Url: "Если пользуетесь приложением на компьютере, можете ввести в него эту строку (URL):"
|
||||
step3: "И наконец, введите код, который покажет приложение."
|
||||
step4: "Теперь при каждом входе на сайт вам нужно будет вводить код из приложения аналогичным образом."
|
||||
securityKeyNotSupported: "Ваш браузер не поддерживает ключи безопасности."
|
||||
registerTOTPBeforeKey: "Чтобы зарегистрировать ключ безопасности и пароль, сначала настройте приложение аутентификации."
|
||||
securityKeyInfo: "Вы можете настроить вход с помощью аппаратного ключа безопасности, поддерживающего FIDO2, или отпечатка пальца или PIN-кода на устройстве."
|
||||
registerSecurityKey: "Зарегистрируйте ключ безопасности ・Passkey"
|
||||
securityKeyName: "Введите имя для ключа"
|
||||
tapSecurityKey: "Пожалуйста, следуйте инструкциям в вашем браузере, чтобы зарегистрировать свой ключ безопасности или пароль"
|
||||
removeKey: "Удалить ключ безопасности"
|
||||
removeKeyConfirm: "Удалить резервную копию «{name}»?"
|
||||
whyTOTPOnlyRenew: "Если ключ безопасности зарегистрирован, вы не сможете отключить приложение аутентификации."
|
||||
renewTOTP: "Перенастроите приложение аутентификации"
|
||||
renewTOTPConfirm: "Проверочный код предыдущего приложения для аутентификации больше не будет доступен"
|
||||
renewTOTPOk: "Настроить"
|
||||
renewTOTPCancel: "Нет, спасибо"
|
||||
_permissions:
|
||||
"read:account": "Просматривать данные учётной записи"
|
||||
@@ -1699,7 +1553,7 @@ _weekday:
|
||||
_widgets:
|
||||
profile: "Профиль"
|
||||
instanceInfo: "Информация об инстансе"
|
||||
memo: "Памятки"
|
||||
memo: "Напоминания"
|
||||
notifications: "Уведомления"
|
||||
timeline: "Лента"
|
||||
calendar: "Календарь"
|
||||
@@ -1728,7 +1582,7 @@ _widgets:
|
||||
clicker: "Счётчик щелчков"
|
||||
_cw:
|
||||
hide: "Спрятать"
|
||||
show: "Показать"
|
||||
show: "Показать еще"
|
||||
chars: "знаков: {count}"
|
||||
files: "файлов: {count}"
|
||||
_poll:
|
||||
@@ -1762,8 +1616,6 @@ _visibility:
|
||||
followersDescription: "Только вашим подписчикам"
|
||||
specified: "Личное"
|
||||
specifiedDescription: "Тем, кого укажете"
|
||||
disableFederation: "Отключить федерацию"
|
||||
disableFederationDescription: "Не доставляет в другие экземпляры"
|
||||
_postForm:
|
||||
replyPlaceholder: "Ответ на заметку..."
|
||||
quotePlaceholder: "Пояснение к цитате..."
|
||||
@@ -1790,7 +1642,6 @@ _profile:
|
||||
_exportOrImport:
|
||||
allNotes: "Все заметки\n"
|
||||
favoritedNotes: "Избранное"
|
||||
clips: "Подборка"
|
||||
followingList: "Подписки"
|
||||
muteList: "Скрытые"
|
||||
blockingList: "Заблокированные"
|
||||
@@ -1920,11 +1771,10 @@ _notification:
|
||||
pollEnded: "Окончания опросов"
|
||||
receiveFollowRequest: "Получен запрос на подписку"
|
||||
followRequestAccepted: "Запрос на подписку одобрен"
|
||||
achievementEarned: "Получение достижений"
|
||||
app: "Уведомления из приложений"
|
||||
_actions:
|
||||
followBack: "отвечает взаимной подпиской"
|
||||
reply: "Ответ"
|
||||
reply: "Ответить"
|
||||
renote: "Репост"
|
||||
_deck:
|
||||
alwaysShowMainColumn: "Всегда показывать главную колонку"
|
||||
@@ -1953,23 +1803,3 @@ _deck:
|
||||
channel: "Каналы"
|
||||
mentions: "Упоминания"
|
||||
direct: "Личное"
|
||||
roleTimeline: "История Ролей"
|
||||
_dialog:
|
||||
charactersExceeded: "Превышено максимальное количество символов! У вас {current} / из {max}"
|
||||
charactersBelow: "Это ниже минимального количества символов! У вас {current} / из {min}"
|
||||
_disabledTimeline:
|
||||
title: "Лента отключена"
|
||||
description: "Ваша текущая роль не позволяет пользоваться этой лентой."
|
||||
_webhookSettings:
|
||||
createWebhook: "Создать вебхук"
|
||||
name: "Название"
|
||||
active: "Вкл."
|
||||
_moderationLogTypes:
|
||||
suspend: "Заморозить"
|
||||
addCustomEmoji: "Добавлено эмодзи"
|
||||
updateCustomEmoji: "Изменено эмодзи"
|
||||
deleteCustomEmoji: "Удалено эмодзи"
|
||||
resetPassword: "Сброс пароля:"
|
||||
_reversi:
|
||||
total: "Всего"
|
||||
|
||||
|
@@ -1,2 +1 @@
|
||||
---
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user