diff --git a/.config/devenv.yml b/.config/devenv.yml new file mode 100644 index 000000000..6c60f338a --- /dev/null +++ b/.config/devenv.yml @@ -0,0 +1,38 @@ +url: http://localhost:3000 +port: 3000 + +db: + host: 127.0.0.1 + port: 5432 + + db: calckey + + user: calckey + pass: calckey + +redis: + host: localhost + port: 6379 + family: 4 +#sonic: +# host: localhost +# port: 1491 +# auth: SecretPassword +# collection: notes +# bucket: default + +#elasticsearch: +# host: localhost +# port: 9200 +# ssl: false +# user: +# pass: + +id: 'aid' + +reservedUsernames: + - root + - admin + - administrator + - me + - system diff --git a/.config/example.yml b/.config/example.yml index 9d20e44a0..16fa67142 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -2,32 +2,31 @@ # Calckey configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# After starting your server, please don't change the URL! Doing so will break federation. + # ┌─────┐ #───┘ URL └───────────────────────────────────────────────────── # Final accessible URL seen by a user. -url: https://example.tld/ - -# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE -# URL SETTINGS AFTER THAT! +url: https://example.com/ # ┌───────────────────────┐ #───┘ Port and TLS settings └─────────────────────────────────── # -# Misskey requires a reverse proxy to support HTTPS connections. +# Calckey requires a reverse proxy to support HTTPS connections. # -# +----- https://example.tld/ ------------+ +# +----- https://example.com/ ------------+ # +------+ |+-------------+ +----------------+| -# | User | ---> || Proxy (443) | ---> | Misskey (3000) || +# | User | ---> || Proxy (443) | ---> | Calckey (3000) || # +------+ |+-------------+ +----------------+| # +---------------------------------------+ # -# You need to set up a reverse proxy. (e.g. nginx) +# You need to set up a reverse proxy. (e.g. nginx, caddy) # An encrypted connection with HTTPS is highly recommended # because tokens may be transferred in GET requests. -# The port that your Misskey server should listen on. +# The port that your Calckey server should listen on. port: 3000 # ┌──────────────────────────┐ @@ -62,6 +61,17 @@ redis: #prefix: example-prefix #db: 1 +# Please configure either MeiliSearch *or* Sonic. +# If both MeiliSearch and Sonic configurations are present, MeiliSearch will take precedence. + +# ┌───────────────────────────┐ +#───┘ MeiliSearch configuration └───────────────────────────────────── +#meilisearch: +# host: meilisearch +# port: 7700 +# ssl: false +# apiKey: + # ┌─────────────────────┐ #───┘ Sonic configuration └───────────────────────────────────── @@ -72,50 +82,39 @@ redis: # collection: notes # bucket: default -# ┌─────────────────────────────┐ -#───┘ Elasticsearch configuration └───────────────────────────── - -#elasticsearch: -# host: localhost -# port: 9200 -# ssl: false -# user: -# pass: # ┌───────────────┐ #───┘ ID generation └─────────────────────────────────────────── -# You can select the ID generation method. -# You don't usually need to change this setting, but you can -# change it according to your preferences. +# No need to uncomment in most cases, but you may want to change +# these settings if you plan to run a large and/or distributed server. -# Available methods: -# aid ... Short, Millisecond accuracy -# meid ... Similar to ObjectID, Millisecond accuracy -# ulid ... Millisecond accuracy -# objectid ... This is left for backward compatibility +# cuid: +# # Min 16, Max 24 +# length: 16 +# +# # Set this to a unique string across workers (e.g., machine's hostname) +# # if your workers are running in multiple hosts. +# fingerprint: my-fingerprint -# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE -# ID SETTINGS AFTER THAT! - -id: 'aid' # ┌─────────────────────┐ #───┘ Other configuration └───────────────────────────────────── -# Max note length, should be < 8000. +# Maximum length of a post (default 3000, max 8192) #maxNoteLength: 3000 -# Maximum lenght of an image caption or file comment (default 1500, max 8192) +# Maximum length of an image caption (default 1500, max 8192) #maxCaptionLength: 1500 # Reserved usernames that only the administrator can register with -reservedUsernames: - - root - - admin - - administrator - - me - - system +reservedUsernames: [ + 'root', + 'admin', + 'administrator', + 'me', + 'system' +] # Whether disable HSTS #disableHsts: true @@ -123,6 +122,9 @@ reservedUsernames: # Number of worker processes #clusterLimit: 1 +# Worker only mode +#onlyQueueProcessor: 1 + # Job concurrency per worker # deliverJobConcurrency: 128 # inboxJobConcurrency: 16 @@ -176,13 +178,21 @@ reservedUsernames: # Upload or download file size limits (bytes) #maxFileSize: 262144000 +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# Congrats, you've reached the end of the config file needed for most deployments! +# Enjoy your Calckey server! +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + + + +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # Managed hosting settings -# !!!!!!!!!! -# >>>>>> NORMAL SELF-HOSTERS, STAY AWAY! <<<<<< -# >>>>>> YOU DON'T NEED THIS! <<<<<< -# !!!!!!!!!! +# >>> NORMAL SELF-HOSTERS, STAY AWAY! <<< +# >>> YOU DON'T NEED THIS! <<< # Each category is optional, but if each item in each category is mandatory! # If you mess this up, that's on you, you've been warned... +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #maxUserSignups: 100 #isManagedHosting: true diff --git a/.config/helm_values_example.yml b/.config/helm_values_example.yml new file mode 100644 index 000000000..b600eb8aa --- /dev/null +++ b/.config/helm_values_example.yml @@ -0,0 +1,82 @@ +replicaCount: 1 + +resources: + requests: + cpu: 0.5 + memory: 512Mi + limits: + cpu: 1 + memory: 1Gi + +calckey: + domain: example.tld + smtp: + from_address: noreply@example.tld + port: 587 + server: smtp.gmail.com + useImplicitSslTls: false + login: me@example.tld + password: CHANGEME + objectStorage: + baseUrl: https://example-bucket.nyc3.cdn.digitaloceanspaces.com + access_key: CHANGEME + access_secret: CHANGEME + bucket: example-bucket + endpoint: nyc3.digitaloceanspaces.com:443 + region: nyc3 + allowedPrivateNetworks: [] + +ingress: + enabled: true + annotations: + cert-manager.io/cluster-issuer: letsencrypt + hosts: + - host: example.tld + paths: + - path: / + pathType: ImplementationSpecific + tls: + - secretName: example-tld-certificate + hosts: + - example.tld + +elasticsearch: + enabled: false + +postgresql: + auth: + password: CHANGEME + postgresPassword: CHANGEME + primary: + persistence: + enabled: true + storageClass: vultr-block-storage + size: 25Gi + resources: + requests: + cpu: 0.25 + memory: 256Mi + limits: + cpu: 0.5 + memory: 512Mi + metrics: + enabled: true + +redis: + auth: + password: CHANGEME + master: + resources: + requests: + cpu: 0.25 + memory: 256Mi + limits: + cpu: 0.5 + memory: 256Mi + persistence: + storageclass: vultr-block-storage + size: 10Gi + replica: + replicaCount: 0 + metrics: + enabled: true diff --git a/.envrc b/.envrc new file mode 100644 index 000000000..3ce7171a3 --- /dev/null +++ b/.envrc @@ -0,0 +1,4 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.3.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.3.0/direnvrc" "sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=" +fi +use flake . --impure diff --git a/.gitignore b/.gitignore index 5e1d4a26d..3a667851c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,9 @@ coverage # config /.config/* !/.config/example.yml +!/.config/devenv.yml !/.config/docker_example.env +!/.config/helm_values_example.yml #docker dev config /dev/docker-compose.yml @@ -56,3 +58,11 @@ packages/backend/assets/sounds/None.mp3 # old yarn .yarn yarn* + +# Nix Development shell items +.devenv +.direnv + +# Cargo cache for Docker +/.cargo-cache +/.cargo-target diff --git a/.node-version b/.node-version index 7fd023741..8ddbc0c64 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -v16.15.0 +v18.16.0 diff --git a/.woodpecker/dockerHubTag.yml b/.woodpecker/dockerHubTag.yml index fdead7a97..5543ae234 100644 --- a/.woodpecker/dockerHubTag.yml +++ b/.woodpecker/dockerHubTag.yml @@ -16,4 +16,3 @@ pipeline: # Push new version when version tag is created event: tag tag: v* - diff --git a/CALCKEY.md b/CALCKEY.md index 923cbe680..d1585adc3 100644 --- a/CALCKEY.md +++ b/CALCKEY.md @@ -11,7 +11,7 @@ - Federate with note edits - User "choices" (recommended users) like Mastodon and Soapbox - Join Reason system like Mastodon/Pleroma - - Option to publicize instance blocks + - Option to publicize server blocks - Build flag to remove NSFW/AI stuff - Filter notifications by user - Exclude self from antenna @@ -19,8 +19,7 @@ - MFM button - Personal notes for all accounts - Fully revamp non-logged-in screen - - Classic mode make instance icon bring up new context menu - - Lookup/details for post/file/instance + - Lookup/details for post/file/server - [Rat mode?](https://stop.voring.me/notes/933fx97bmd) ## Work in progress @@ -44,7 +43,7 @@ - Upgrade packages with security vunrabilities - Saner defaults - Fediverse account migration -- Recommended instances timeline +- Recommended servers timeline - OCR image captioning - Improve mobile UX - Swipe through pages on mobile @@ -72,7 +71,7 @@ - Better welcome screen (not logged in) - vue-plyr as video/audio player - Ability to turn off "Connection lost" message -- Raw instance info only for moderators +- Raw server info only for moderators - New spinner animation - Spinner instead of "Loading..." - SearchX instead of Google @@ -99,7 +98,7 @@ - Obliteration of Ai-chan - Switch to [Calckey.js](https://codeberg.org/calckey/calckey.js) - Woozy mode 🥴 -- Improve blocking instances +- Improve blocking servers - Release notes - New post style - Admins set default reaction emoji @@ -118,6 +117,13 @@ - Sonic search - Popular color schemes, including Nord, Gruvbox, and Catppuccin - Non-nyaify cat mode +- Post imports from other Calckey/Misskey/Mastodon/Pleroma/Akkoma servers +- Improve Classic mode +- Proper Helm/Kubernetes config +- Multiple boost visibilities +- Improve system emails +- Mod mail +- Focus trapping and button labels ## Implemented (remote) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 44e1e220c..143c63d29 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -62,7 +62,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at @thatonecalculator on Codeberg, -`@thatonecalculator@stop.voring.me` or `@t1c@i.calckey.cloud` on the Fediverse, +`@kainoa@calckey.social` on the Fediverse, or kainoa@t1c.dev via email. All complaints will be reviewed and investigated promptly and fairly. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a1fdee31..b75dc9f35 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contribution guide We're glad you're interested in contributing Calckey! In this document you will find the information you need to contribute to the project. -## Localization (l10n) -Calckey uses [Weblate](hhttps://hosted.weblate.org/engage/calckey/) for localization management. +## Translation (i18n) +Calckey uses [Weblate](hhttps://hosted.weblate.org/engage/calckey/) for translation and internationalization management. If your language is not listed in Weblate, please open an issue. diff --git a/Dockerfile b/Dockerfile index bdf11a9df..d8671911e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ FROM node:19-alpine as build WORKDIR /calckey # Install compilation dependencies +RUN apk update RUN apk add --no-cache --no-progress git alpine-sdk python3 rust cargo vips # Copy only the dependency-related files first, to cache efficiently @@ -35,7 +36,7 @@ FROM node:19-alpine WORKDIR /calckey # Install runtime dependencies -RUN apk add --no-cache --no-progress tini ffmpeg vips-dev +RUN apk add --no-cache --no-progress tini ffmpeg vips-dev zip unzip rust cargo COPY . ./ diff --git a/README.md b/README.md index d05cb55db..f2913b914 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@
- + Calckey logo -**🌎 **[Calckey](https://i.calckey.cloud/)** is an open source, decentralized social media platform that's free forever! 🚀** +**🌎 **[Calckey](https://calckey.org/)** is an open source, decentralized social media platform that's free forever! 🚀** [![no github badge](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page/) [![status badge](https://ci.codeberg.org/api/badges/calckey/calckey/status.svg)](https://ci.codeberg.org/calckey/calckey) +[![opencollective badge](https://opencollective.com/calckey/tiers/badge.svg)](https://opencollective.com/Calckey) [![liberapay badge](https://img.shields.io/liberapay/receives/ThatOneCalculator?logo=liberapay)](https://liberapay.com/ThatOneCalculator) [![translate-badge](https://hosted.weblate.org/widgets/calckey/-/svg-badge.svg)](https://hosted.weblate.org/engage/calckey/) [![docker badge](https://img.shields.io/docker/pulls/thatonecalculator/calckey?logo=docker)](https://hub.docker.com/r/thatonecalculator/calckey) @@ -22,15 +23,15 @@ # ✨ About Calckey - Calckey is based off of Misskey, a powerful microblogging server on ActivityPub with features such as emoji reactions, a customizable web UI, rich chatting, and much more! -- Calckey adds many quality of life changes and bug fixes for users and instance admins alike. +- Calckey adds many quality of life changes and bug fixes for users and server admins alike. - Read **[this document](./CALCKEY.md)** all for current and future differences. - Notable differences: - Improved UI/UX (especially on mobile) - Improved notifications - - Improved instance security + - Improved server security - Improved accessibility - Improved threads - - Recommended Instances timeline + - Recommended Servers timeline - OCR image captioning - New and improved Groups - Better intro tutorial @@ -46,12 +47,13 @@ # 🥂 Links +- 💸 OpenCollective: - 💸 Liberapay: - Donate publicly to get your name on the Patron list! -- 🚢 Flagship instance: +- 🚢 Flagship server: - 📣 Official account: - 💁 Matrix support room: -- 📜 Instance list: +- 📜 Server list: - 📖 JoinFediverse Wiki: - 🐋 Docker Hub: - ✍️ Weblate: @@ -67,31 +69,33 @@ If you have access to a server that supports one of the sources below, I recomme [![Install on Ubuntu](https://pool.jortage.com/voringme/misskey/3b62a443-1b44-45cf-8f9e-f1c588f803ed.png)](https://codeberg.org/calckey/ubuntu-bash-install)  [![Install on the Arch User Repository](https://pool.jortage.com/voringme/misskey/ba2a5c07-f078-43f1-8483-2e01acca9c40.png)](https://aur.archlinux.org/packages/calckey)  [![Install Calckey with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=calckey) -### 🐋 Docker +## 🛳️ Containerization -[How to run Calckey with Docker](./docs/docker.md). +- [🐳 How to run Calckey with Docker](https://codeberg.org/calckey/calckey/src/branch/develop/docs/docker.md) +- [🛞 How to run Calckey with Kubernetes/Helm](https://codeberg.org/calckey/calckey/src/branch/develop/docs/kubernetes.md) ## 🧑‍💻 Dependencies -- 🐢 At least [NodeJS](https://nodejs.org/en/) v18.12.1 (v19 recommended) +- 🐢 At least [NodeJS](https://nodejs.org/en/) v18.16.0 (v20 recommended) - Install with [nvm](https://github.com/nvm-sh/nvm) -- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12 -- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommend) +- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12 (v14 recommended) +- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommended) +- Web Proxy (one of the following) + - 🍀 Nginx (recommended) + - 🦦 Caddy + - 🪶 Apache ### 😗 Optional dependencies - [FFmpeg](https://ffmpeg.org/) for video transcoding -- Full text search (choost one of the following) - - 🦔 [Sonic](https://crates.io/crates/sonic-server) (highly recommended!) +- Full text search (one of the following) + - 🦔 [Sonic](https://crates.io/crates/sonic-server) + - [MeiliSearch](https://www.meilisearch.com/) - [ElasticSearch](https://www.elastic.co/elasticsearch/) -- Management (choose one of the following) - - 🛰️ [pm2](https://pm2.io/) - - 🐳 [Docker](https://docker.com) - - Service manager (systemd, openrc, etc) ### 🏗️ Build dependencies -- 🦀 [Rust toolchain](https://www.rust-lang.org/) +- 🦀 At least [Rust](https://www.rust-lang.org/) v1.65.0 - 🦬 C/C++ compiler & build tools - `build-essential` on Debian/Ubuntu Linux - `base-devel` on Arch Linux @@ -100,11 +104,12 @@ If you have access to a server that supports one of the sources below, I recomme ## 👀 Get folder ready ```sh -git clone --depth 1 https://codeberg.org/calckey/calckey.git +git clone https://codeberg.org/calckey/calckey.git cd calckey/ ``` -By default, you're on the development branch. Run `git checkout beta` or `git checkout main` to switch to the Beta/Main branches. +> **Note** +> By default, you're on the develop branch. Run `git checkout main` or `git checkout beta` to switch to the Main/Beta branches. ## 📩 Install dependencies @@ -116,9 +121,27 @@ corepack prepare pnpm@latest --activate pnpm i # --no-optional ``` +### pm2 + +To install pm2 run: + +``` +npm i -g pm2 +pm2 install pm2-logrotate +``` + +> **Note** +> [`pm2-logrotate`](https://github.com/keymetrics/pm2-logrotate/blob/master/README.md) ensures that log files don't infinitely gather size, as Calckey produces a lot of logs. + ## 🐘 Create database -Assuming you set up PostgreSQL correctly, all you have to run is: +In PostgreSQL (`psql`), run the following command: + +```sql +CREATE DATABASE calckey WITH encoding = 'UTF8'; +``` + +or run the following from the command line: ```sh psql postgres -c "create database calckey with encoding = 'UTF8';" @@ -126,25 +149,41 @@ psql postgres -c "create database calckey with encoding = 'UTF8';" In Calckey's directory, fill out the `db` section of `.config/default.yml` with the correct information, where the `db` key is `calckey`. -## 🦔 Set up search +## 🔎 Set up search + +### 🦔 Sonic + +Sonic is better suited for self hosters with smaller deployments. It's easier to use, uses almost no resources, and takes barely any any disk space. Follow sonic's [installation guide](https://github.com/valeriansaliou/sonic#installation) -If you use IPv4: in Sonic's directory, edit the `config.cfg` file to change `inet` to `"0.0.0.0:1491"`. +> **Note** +> If you use IPv4: in Sonic's directory, edit the `config.cfg` file to change `inet` to `"0.0.0.0:1491"`. In Calckey's directory, fill out the `sonic` section of `.config/default.yml` with the correct information. +### Meilisearch + +Meilisearch is better suited for larger deployments. It's faster but uses far more resources and disk space. + +Follow Meilisearch's [quick start guide](https://www.meilisearch.com/docs/learn/getting_started/quick_start) + +In Calckey's directory, fill out the `meilisearch` section of `.config/default.yml` with the correct information. + +### ElasticSearch + +Please don't use ElasticSearch unless you already have an ElasticSearch setup and want to continue using it for Calckey. ElasticSearch is slow, heavy, and offers very few benefits over Sonic/Meilisearch. ## 💅 Customize - To add custom CSS for all users, edit `./custom/assets/instance.css`. -- To add static assets (such as images for the splash screen), place them in the `./custom/assets/` directory. They'll then be available on `https://yourinstance.tld/static-assets/filename.ext`. +- To add static assets (such as images for the splash screen), place them in the `./custom/assets/` directory. They'll then be available on `https://yourserver.tld/static-assets/filename.ext`. - To add custom locales, place them in the `./custom/locales/` directory. If you name your custom locale the same as an existing locale, it will overwrite it. If you give it a unique name, it will be added to the list. Also make sure that the first part of the filename matches the locale you're basing it on. (Example: `en-FOO.yml`) - To add custom error images, place them in the `./custom/assets/badges` directory, replacing the files already there. - To add custom sounds, place only mp3 files in the `./custom/assets/sounds` directory. - To update custom assets without rebuilding, just run `pnpm run gulp`. -## 🧑‍🔬 Configuring a new instance +## 🧑‍🔬 Configuring a new server - Run `cp .config/example.yml .config/default.yml` - Edit `.config/default.yml`, making sure to fill out required fields. @@ -152,17 +191,36 @@ In Calckey's directory, fill out the `sonic` section of `.config/default.yml` wi ## 🚚 Migrating from Misskey to Calckey -For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](./docs/migrate.md). +For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](https://codeberg.org/calckey/calckey/src/branch/develop/docs/migrate.md). -## 🍀 NGINX +## 🌐 Web proxy + +### 🍀 Nginx (recommended) - Run `sudo cp ./calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/` -- Edit `calckey.nginx.conf` to reflect your instance properly -- Run `sudo cp ./calckey.nginx.conf ../sites-enabled/` +- Edit `calckey.nginx.conf` to reflect your server properly +- Run `sudo ln -s ./calckey.nginx.conf ../sites-enabled/calckey.nginx.conf` - Run `sudo nginx -t` to validate that the config is valid, then restart the NGINX service. - +### 🦦 Caddy +- Add the following block to your `Caddyfile`, replacing `example.tld` with your own domain: +```caddy +example.tld { + reverse_proxy http://127.0.0.1:3000 +} +``` +- Reload your caddy configuration + +### 🪶 Apache + +> **Warning** +> Apache has some known problems with Calckey. Only use it if you have to. + +- Run `sudo cp ./calckey.apache.conf /etc/apache2/sites-available/ && cd /etc/apache2/sites-available/` +- Edit `calckey.apache.conf` to reflect your server properly +- Run `sudo a2ensite calckey.apache` to enable the site +- Run `sudo service apache2 restart` to reload apache2 configuration ## 🚀 Build and launch! ### 🐢 NodeJS + pm2 @@ -180,7 +238,7 @@ pm2 start "NODE_ENV=production pnpm run start" --name Calckey - When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Calckey's control panel. - Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Calckey, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it. -- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker. +- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker. - I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off. - For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker. - For translations, make a [DeepL](https://deepl.com) account and generate an API key, then put it into Control Panel > General > DeepL Translation. diff --git a/calckey.apache.conf b/calckey.apache.conf new file mode 100644 index 000000000..b0c69d51d --- /dev/null +++ b/calckey.apache.conf @@ -0,0 +1,13 @@ +# Replace example.tld with your domain + + + ServerName example.tld + # For WebSocket + ProxyPass "/streaming" "ws://127.0.0.1:3000/streaming/" + # Proxy to Node + ProxyPass "/" "http://127.0.0.1:3000/" + ProxyPassReverse "/" "http://127.0.0.1:3000/" + ProxyPreserveHost On + # For files proxy + AllowEncodedSlashes On + \ No newline at end of file diff --git a/chart/.helmignore b/chart/.helmignore new file mode 100644 index 000000000..0e8a0eb36 --- /dev/null +++ b/chart/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 8f31cf7fb..820c2313a 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -1,3 +1,38 @@ apiVersion: v2 -name: misskey -version: 0.0.0 +name: calckey +description: A fun, new, open way to experience social media https://calckey.org + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.2 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "rc" + +dependencies: + - name: elasticsearch + version: 19.0.1 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + condition: elasticsearch.enabled + - name: postgresql + version: 11.1.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + condition: postgresql.enabled + - name: redis + version: 16.13.2 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + condition: redis.enabled diff --git a/chart/README.md b/chart/README.md new file mode 100644 index 000000000..1bcbd8753 --- /dev/null +++ b/chart/README.md @@ -0,0 +1,89 @@ +# calckey + +![Version: 0.1.2](https://img.shields.io/badge/Version-0.1.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: rc](https://img.shields.io/badge/AppVersion-rc-informational?style=flat-square) + +A fun, new, open way to experience social media https://calckey.org + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami | elasticsearch | 19.0.1 | +| https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami | postgresql | 11.1.3 | +| https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami | redis | 16.13.2 | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | | +| autoscaling.enabled | bool | `false` | | +| autoscaling.maxReplicas | int | `100` | | +| autoscaling.minReplicas | int | `1` | | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| calckey.allowedPrivateNetworks | list | `[]` | If you want to allow calckey to connect to private ips, enter the cidrs here. | +| calckey.deepl.authKey | string | `""` | | +| calckey.deepl.isPro | bool | `false` | | +| calckey.deepl.managed | bool | `false` | | +| calckey.domain | string | `"calckey.local"` | | +| calckey.isManagedHosting | bool | `true` | | +| calckey.libreTranslate.apiKey | string | `""` | | +| calckey.libreTranslate.apiUrl | string | `""` | | +| calckey.libreTranslate.managed | bool | `false` | | +| calckey.objectStorage.access_key | string | `""` | | +| calckey.objectStorage.access_secret | string | `""` | | +| calckey.objectStorage.baseUrl | string | `""` | | +| calckey.objectStorage.bucket | string | `""` | | +| calckey.objectStorage.endpoint | string | `""` | | +| calckey.objectStorage.managed | bool | `true` | | +| calckey.objectStorage.prefix | string | `"files"` | | +| calckey.objectStorage.region | string | `""` | | +| calckey.reservedUsernames[0] | string | `"root"` | | +| calckey.reservedUsernames[1] | string | `"admin"` | | +| calckey.reservedUsernames[2] | string | `"administrator"` | | +| calckey.reservedUsernames[3] | string | `"me"` | | +| calckey.reservedUsernames[4] | string | `"system"` | | +| calckey.smtp.from_address | string | `"notifications@example.com"` | | +| calckey.smtp.login | string | `""` | | +| calckey.smtp.managed | bool | `true` | | +| calckey.smtp.password | string | `""` | | +| calckey.smtp.port | int | `587` | | +| calckey.smtp.server | string | `"smtp.mailgun.org"` | | +| calckey.smtp.useImplicitSslTls | bool | `false` | | +| elasticsearch | object | `{"auth":{},"enabled":false,"hostname":"","port":9200,"ssl":false}` | https://github.com/bitnami/charts/tree/master/bitnami/elasticsearch#parameters | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"docker.io/thatonecalculator/calckey"` | | +| image.tag | string | `""` | | +| imagePullSecrets | list | `[]` | | +| ingress.annotations | object | `{}` | | +| ingress.className | string | `""` | | +| ingress.enabled | bool | `false` | | +| ingress.hosts[0].host | string | `"chart-example.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | | +| ingress.tls | list | `[]` | | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | | +| podAnnotations | object | `{}` | | +| podSecurityContext | object | `{}` | | +| postgresql.auth.database | string | `"calckey_production"` | | +| postgresql.auth.password | string | `""` | | +| postgresql.auth.username | string | `"calckey"` | | +| postgresql.enabled | bool | `true` | disable if you want to use an existing db; in which case the values below must match those of that external postgres instance | +| redis.auth.password | string | `""` | you must set a password; the password generated by the redis chart will be rotated on each upgrade: | +| redis.enabled | bool | `true` | | +| redis.hostname | string | `""` | | +| redis.port | int | `6379` | | +| replicaCount | int | `1` | | +| resources | object | `{}` | | +| securityContext | object | `{}` | | +| service.port | int | `80` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `true` | | +| serviceAccount.name | string | `""` | | +| tolerations | list | `[]` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/chart/files/default.yml b/chart/files/default.yml deleted file mode 100644 index 91a947f26..000000000 --- a/chart/files/default.yml +++ /dev/null @@ -1,162 +0,0 @@ -#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# Misskey configuration -#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -# ┌─────┐ -#───┘ URL └───────────────────────────────────────────────────── - -# Final accessible URL seen by a user. -# url: https://example.tld/ - -# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE -# URL SETTINGS AFTER THAT! - -# ┌───────────────────────┐ -#───┘ Port and TLS settings └─────────────────────────────────── - -# -# Misskey supports two deployment options for public. -# - -# Option 1: With Reverse Proxy -# -# +----- https://example.tld/ ------------+ -# +------+ |+-------------+ +----------------+| -# | User | ---> || Proxy (443) | ---> | Misskey (3000) || -# +------+ |+-------------+ +----------------+| -# +---------------------------------------+ -# -# You need to setup reverse proxy. (eg. nginx) -# You do not define 'https' section. - -# Option 2: Standalone -# -# +- https://example.tld/ -+ -# +------+ | +---------------+ | -# | User | ---> | | Misskey (443) | | -# +------+ | +---------------+ | -# +------------------------+ -# -# You need to run Misskey as root. -# You need to set Certificate in 'https' section. - -# To use option 1, uncomment below line. -port: 3000 # A port that your Misskey server should listen. - -# To use option 2, uncomment below lines. -#port: 443 - -#https: -# # path for certification -# key: /etc/letsencrypt/live/example.tld/privkey.pem -# cert: /etc/letsencrypt/live/example.tld/fullchain.pem - -# ┌──────────────────────────┐ -#───┘ PostgreSQL configuration └──────────────────────────────── - -db: - host: localhost - port: 5432 - - # Database name - db: misskey - - # Auth - user: example-misskey-user - pass: example-misskey-pass - - # Whether disable Caching queries - #disableCache: true - - # Extra Connection options - #extra: - # ssl: true - -# ┌─────────────────────┐ -#───┘ Redis configuration └───────────────────────────────────── - -redis: - host: localhost - port: 6379 - #pass: example-pass - #prefix: example-prefix - #db: 1 - -# ┌─────────────────────────────┐ -#───┘ Elasticsearch configuration └───────────────────────────── - -#elasticsearch: -# host: localhost -# port: 9200 -# ssl: false -# user: -# pass: - -# ┌───────────────┐ -#───┘ ID generation └─────────────────────────────────────────── - -# You can select the ID generation method. -# You don't usually need to change this setting, but you can -# change it according to your preferences. - -# Available methods: -# aid ... Short, Millisecond accuracy -# meid ... Similar to ObjectID, Millisecond accuracy -# ulid ... Millisecond accuracy -# objectid ... This is left for backward compatibility - -# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE -# ID SETTINGS AFTER THAT! - -id: "aid" -# ┌─────────────────────┐ -#───┘ Other configuration └───────────────────────────────────── - -# Whether disable HSTS -#disableHsts: true - -# Number of worker processes -#clusterLimit: 1 - -# Job concurrency per worker -# deliverJobConcurrency: 128 -# inboxJobConcurrency: 16 - -# Job rate limiter -# deliverJobPerSec: 128 -# inboxJobPerSec: 16 - -# Job attempts -# deliverJobMaxAttempts: 12 -# inboxJobMaxAttempts: 8 - -# IP address family used for outgoing request (ipv4, ipv6 or dual) -#outgoingAddressFamily: ipv4 - -# Syslog option -#syslog: -# host: localhost -# port: 514 - -# Proxy for HTTP/HTTPS -#proxy: http://127.0.0.1:3128 - -#proxyBypassHosts: [ -# 'example.com', -# '192.0.2.8' -#] - -# Proxy for SMTP/SMTPS -#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT -#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 -#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 - -# Media Proxy -#mediaProxy: https://example.com/proxy - -#allowedPrivateNetworks: [ -# '127.0.0.1/32' -#] - -# Upload or download file size limits (bytes) -#maxFileSize: 262144000 diff --git a/chart/templates/ConfigMap.yml b/chart/templates/ConfigMap.yml deleted file mode 100644 index 37c25e086..000000000 --- a/chart/templates/ConfigMap.yml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "misskey.fullname" . }}-configuration -data: - default.yml: |- - {{ .Files.Get "files/default.yml"|nindent 4 }} - url: {{ .Values.url }} diff --git a/chart/templates/Deployment.yml b/chart/templates/Deployment.yml deleted file mode 100644 index d16aece91..000000000 --- a/chart/templates/Deployment.yml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "misskey.fullname" . }} - labels: - {{- include "misskey.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "misskey.selectorLabels" . | nindent 6 }} - replicas: 1 - template: - metadata: - labels: - {{- include "misskey.selectorLabels" . | nindent 8 }} - spec: - containers: - - name: misskey - image: {{ .Values.image }} - env: - - name: NODE_ENV - value: {{ .Values.environment }} - volumeMounts: - - name: {{ include "misskey.fullname" . }}-configuration - mountPath: /misskey/.config - readOnly: true - ports: - - containerPort: 3000 - - name: postgres - image: postgres:14-alpine - env: - - name: POSTGRES_USER - value: "example-misskey-user" - - name: POSTGRES_PASSWORD - value: "example-misskey-pass" - - name: POSTGRES_DB - value: "misskey" - ports: - - containerPort: 5432 - - name: redis - image: redis:alpine - ports: - - containerPort: 6379 - volumes: - - name: {{ include "misskey.fullname" . }}-configuration - configMap: - name: {{ include "misskey.fullname" . }}-configuration diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt new file mode 100644 index 000000000..d3e4f2f20 --- /dev/null +++ b/chart/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "calckey.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "calckey.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "calckey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "calckey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/chart/templates/Service.yml b/chart/templates/Service.yml deleted file mode 100644 index 320958129..000000000 --- a/chart/templates/Service.yml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "misskey.fullname" . }} - annotations: - dev.okteto.com/auto-ingress: "true" -spec: - type: ClusterIP - ports: - - port: 3000 - protocol: TCP - name: http - selector: - {{- include "misskey.selectorLabels" . | nindent 4 }} diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index a5a2499f3..b732fa5a4 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -1,7 +1,7 @@ {{/* Expand the name of the chart. */}} -{{- define "misskey.name" -}} +{{- define "calckey.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} @@ -10,7 +10,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "misskey.fullname" -}} +{{- define "calckey.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "misskey.chart" -}} +{{- define "calckey.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "misskey.labels" -}} -helm.sh/chart: {{ include "misskey.chart" . }} -{{ include "misskey.selectorLabels" . }} +{{- define "calckey.labels" -}} +helm.sh/chart: {{ include "calckey.chart" . }} +{{ include "calckey.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -45,18 +45,279 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Selector labels */}} -{{- define "misskey.selectorLabels" -}} -app.kubernetes.io/name: {{ include "misskey.name" . }} +{{- define "calckey.selectorLabels" -}} +app.kubernetes.io/name: {{ include "calckey.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Create the name of the service account to use */}} -{{- define "misskey.serviceAccountName" -}} +{{- define "calckey.serviceAccountName" -}} {{- if .Values.serviceAccount.create }} -{{- default (include "misskey.fullname" .) .Values.serviceAccount.name }} +{{- default (include "calckey.fullname" .) .Values.serviceAccount.name }} {{- else }} {{- default "default" .Values.serviceAccount.name }} {{- end }} {{- end }} + +{{/* +Create a default fully qualified name for dependent services. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "calckey.elasticsearch.fullname" -}} +{{- printf "%s-%s" .Release.Name "elasticsearch" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "calckey.redis.fullname" -}} +{{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "calckey.postgresql.fullname" -}} +{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +config/default.yml content +*/}} +{{- define "calckey.configDir.default.yml" -}} +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# Calckey configuration +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +# ┌─────┐ +#───┘ URL └───────────────────────────────────────────────────── + +# Final accessible URL seen by a user. +url: "https://{{ .Values.calckey.domain }}/" + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# URL SETTINGS AFTER THAT! + +# ┌───────────────────────┐ +#───┘ Port and TLS settings └─────────────────────────────────── + +# +# Misskey requires a reverse proxy to support HTTPS connections. +# +# +----- https://example.tld/ ------------+ +# +------+ |+-------------+ +----------------+| +# | User | ---> || Proxy (443) | ---> | Misskey (3000) || +# +------+ |+-------------+ +----------------+| +# +---------------------------------------+ +# +# You need to set up a reverse proxy. (e.g. nginx) +# An encrypted connection with HTTPS is highly recommended +# because tokens may be transferred in GET requests. + +# The port that your Misskey server should listen on. +port: 3000 + +# ┌──────────────────────────┐ +#───┘ PostgreSQL configuration └──────────────────────────────── + +db: + {{- if .Values.postgresql.enabled }} + host: {{ template "calckey.postgresql.fullname" . }} + port: '5432' + {{- else }} + host: {{ .Values.postgresql.postgresqlHostname }} + port: {{ .Values.postgresql.postgresqlPort | default "5432" | quote }} + {{- end }} + + # Database name + db: {{ .Values.postgresql.auth.database }} + + # Auth + user: {{ .Values.postgresql.auth.username }} + pass: "{{ .Values.postgresql.auth.password }}" + + # Whether disable Caching queries + #disableCache: true + + # Extra Connection options + #extra: + # ssl: true + +# ┌─────────────────────┐ +#───┘ Redis configuration └───────────────────────────────────── + +redis: + {{- if .Values.redis.enabled }} + host: {{ template "calckey.redis.fullname" . }}-master + {{- else }} + host: {{ required "When the redis chart is disabled .Values.redis.hostname is required" .Values.redis.hostname }} + {{- end }} + port: {{ .Values.redis.port | default "6379" | quote }} + #family: 0 # 0=Both, 4=IPv4, 6=IPv6 + pass: {{ .Values.redis.auth.password | quote }} + #prefix: example-prefix + #db: 1 + +# ┌─────────────────────┐ +#───┘ Sonic configuration └───────────────────────────────────── + +#sonic: +# host: localhost +# port: 1491 +# auth: SecretPassword +# collection: notes +# bucket: default + +# ┌─────────────────────────────┐ +#───┘ Elasticsearch configuration └───────────────────────────── + +{{- if .Values.elasticsearch.enabled }} +elasticsearch: + host: {{ template "mastodon.elasticsearch.fullname" . }}-master-hl + port: 9200 + ssl: false +{{- else if .Values.elasticsearch.hostname }} +elasticsearch: + host: {{ .Values.elasticsearch.hostname | quote }} + port: {{ .Values.elasticsearch.port }} + ssl: {{ .Values.elasticsearch.ssl }} + {{- if .Values.elasticsearch.auth }} + user: {{ .Values.elasticsearch.auth.username | quote }} + pass: {{ .Values.elasticsearch.auth.password | quote }} + {{- end }} +{{- end }} + +# ┌───────────────┐ +#───┘ ID generation └─────────────────────────────────────────── + +# You can select the ID generation method. +# You don't usually need to change this setting, but you can +# change it according to your preferences. + +# Available methods: +# aid ... Short, Millisecond accuracy +# meid ... Similar to ObjectID, Millisecond accuracy +# ulid ... Millisecond accuracy +# objectid ... This is left for backward compatibility + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# ID SETTINGS AFTER THAT! + +id: 'aid' + +# ┌─────────────────────┐ +#───┘ Other configuration └───────────────────────────────────── + +# Max note length, should be < 8000. +#maxNoteLength: 3000 + +# Maximum lenght of an image caption or file comment (default 1500, max 8192) +#maxCaptionLength: 1500 + +# Reserved usernames that only the administrator can register with +reservedUsernames: +{{ .Values.calckey.reservedUsernames | toYaml }} + +# Whether disable HSTS +#disableHsts: true + +# Number of worker processes +#clusterLimit: 1 + +# Job concurrency per worker +# deliverJobConcurrency: 128 +# inboxJobConcurrency: 16 + +# Job rate limiter +# deliverJobPerSec: 128 +# inboxJobPerSec: 16 + +# Job attempts +# deliverJobMaxAttempts: 12 +# inboxJobMaxAttempts: 8 + +# IP address family used for outgoing request (ipv4, ipv6 or dual) +#outgoingAddressFamily: ipv4 + +# Syslog option +#syslog: +# host: localhost +# port: 514 + +# Proxy for HTTP/HTTPS +#proxy: http://127.0.0.1:3128 + +#proxyBypassHosts: [ +# 'example.com', +# '192.0.2.8' +#] + +# Proxy for SMTP/SMTPS +#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT +#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 +#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 + +# Media Proxy +#mediaProxy: https://example.com/proxy + +# Proxy remote files (default: false) +#proxyRemoteFiles: true + +allowedPrivateNetworks: +{{ .Values.calckey.allowedPrivateNetworks | toYaml }} + +# TWA +#twa: +# nameSpace: android_app +# packageName: tld.domain.twa +# sha256CertFingerprints: ['AB:CD:EF'] + +# Upload or download file size limits (bytes) +#maxFileSize: 262144000 + +# Managed hosting settings +# !!!!!!!!!! +# >>>>>> NORMAL SELF-HOSTERS, STAY AWAY! <<<<<< +# >>>>>> YOU DON'T NEED THIS! <<<<<< +# !!!!!!!!!! +# Each category is optional, but if each item in each category is mandatory! +# If you mess this up, that's on you, you've been warned... + +#maxUserSignups: 100 +isManagedHosting: {{ .Values.calckey.isManagedHosting }} +deepl: + managed: {{ .Values.calckey.deepl.managed }} + authKey: {{ .Values.calckey.deepl.authKey | quote}} + isPro: {{ .Values.calckey.deepl.isPro }} + +libreTranslate: + managed: {{ .Values.calckey.libreTranslate.managed }} + apiUrl: {{ .Values.calckey.libreTranslate.apiUrl | quote }} + apiKey: {{ .Values.calckey.libreTranslate.apiKey | quote }} + +email: + managed: {{ .Values.calckey.smtp.managed }} + address: {{ .Values.calckey.smtp.from_address | quote }} + host: {{ .Values.calckey.smtp.server | quote }} + port: {{ .Values.calckey.smtp.port }} + user: {{ .Values.calckey.smtp.login | quote }} + pass: {{ .Values.calckey.smtp.password | quote }} + useImplicitSslTls: {{ .Values.calckey.smtp.useImplicitSslTls }} +objectStorage: + managed: {{ .Values.calckey.objectStorage.managed }} + baseUrl: {{ .Values.calckey.objectStorage.baseUrl | quote }} + bucket: {{ .Values.calckey.objectStorage.bucket | quote }} + prefix: {{ .Values.calckey.objectStorage.prefix | quote }} + endpoint: {{ .Values.calckey.objectStorage.endpoint | quote }} + region: {{ .Values.calckey.objectStorage.region | quote }} + accessKey: {{ .Values.calckey.objectStorage.access_key | quote }} + secretKey: {{ .Values.calckey.objectStorage.access_secret | quote }} + useSsl: true + connnectOverProxy: false + setPublicReadOnUpload: true + s3ForcePathStyle: true + +# !!!!!!!!!! +# >>>>>> AGAIN, NORMAL SELF-HOSTERS, STAY AWAY! <<<<<< +# >>>>>> YOU DON'T NEED THIS, ABOVE SETTINGS ARE FOR MANAGED HOSTING ONLY! <<<<<< +# !!!!!!!!!! + +# Seriously. Do NOT fill out the above settings if you're self-hosting. +# They're much better off being set from the control panel. +{{- end }} diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml new file mode 100644 index 000000000..9b0c60694 --- /dev/null +++ b/chart/templates/deployment.yaml @@ -0,0 +1,82 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "calckey.fullname" . }} + labels: + {{- include "calckey.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "calckey.selectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + checksum/secret-config: {{ include ( print $.Template.BasePath "/secret-config.yaml" ) . | sha256sum | quote }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "calckey.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "calckey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + volumes: + - name: config-volume + secret: + secretName: {{ template "calckey.fullname" . }}-config + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - pnpm + - run + - start + env: + - name: "NODE_ENV" + value: "production" + volumeMounts: + - name: config-volume + mountPath: /calckey/.config + ports: + - name: http + containerPort: 3000 + protocol: TCP + startupProbe: + httpGet: + path: / + port: http + failureThreshold: 30 + periodSeconds: 10 + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/chart/templates/hpa.yaml b/chart/templates/hpa.yaml new file mode 100644 index 000000000..4cdd2b625 --- /dev/null +++ b/chart/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "calckey.fullname" . }} + labels: + {{- include "calckey.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "calckey.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml new file mode 100644 index 000000000..212c40e4b --- /dev/null +++ b/chart/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "calckey.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "calckey.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml new file mode 100644 index 000000000..e006aef3b --- /dev/null +++ b/chart/templates/job-db-migrate.yaml @@ -0,0 +1,59 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "calckey.fullname" . }}-db-migrate + labels: + {{- include "calckey.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": post-install,pre-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + "helm.sh/hook-weight": "-2" +spec: + template: + metadata: + name: {{ include "calckey.fullname" . }}-db-migrate + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + restartPolicy: Never + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "calckey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + volumes: + - name: config-volume + secret: + secretName: {{ template "calckey.fullname" . }}-config + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - pnpm + - run + - migrate + env: + - name: "NODE_ENV" + value: "production" + volumeMounts: + - name: config-volume + mountPath: /calckey/.config + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/chart/templates/secret-config.yaml b/chart/templates/secret-config.yaml new file mode 100644 index 000000000..2dad134c5 --- /dev/null +++ b/chart/templates/secret-config.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "calckey.fullname" . }}-config + labels: + {{- include "calckey.labels" . | nindent 4 }} +type: Opaque +data: + default.yml: {{ include "calckey.configDir.default.yml" . | b64enc }} diff --git a/chart/templates/service.yaml b/chart/templates/service.yaml new file mode 100644 index 000000000..d46067a40 --- /dev/null +++ b/chart/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "calckey.fullname" . }} + labels: + {{- include "calckey.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "calckey.selectorLabels" . | nindent 4 }} diff --git a/chart/templates/serviceaccount.yaml b/chart/templates/serviceaccount.yaml new file mode 100644 index 000000000..f269ad028 --- /dev/null +++ b/chart/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "calckey.serviceAccountName" . }} + labels: + {{- include "calckey.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/chart/templates/tests/test-connection.yaml b/chart/templates/tests/test-connection.yaml new file mode 100644 index 000000000..b8db3d9a1 --- /dev/null +++ b/chart/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "calckey.fullname" . }}-test-connection" + labels: + {{- include "calckey.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "calckey.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/chart/values.yaml b/chart/values.yaml new file mode 100644 index 000000000..84c0536e5 --- /dev/null +++ b/chart/values.yaml @@ -0,0 +1,168 @@ +# Default values for calckey. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: docker.io/thatonecalculator/calckey + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +calckey: + isManagedHosting: true + domain: calckey.local + + deepl: + managed: false + authKey: "" + isPro: false + + libreTranslate: + managed: false + apiUrl: "" + apiKey: "" + + smtp: + managed: true + from_address: notifications@example.com + port: 587 + server: smtp.mailgun.org + useImplicitSslTls: false + login: "" + password: "" + + objectStorage: + managed: true + access_key: "" + access_secret: "" + baseUrl: "" # e.g. "https://my-bucket.nyc3.cdn.digitaloceanspaces.com" + bucket: "" # e.g. "my-bucket" + prefix: files + endpoint: "" # e.g. "nyc3.digitaloceanspaces.com:443" + region: "" # e.g. "nyc3" + + # -- If you want to allow calckey to connect to private ips, enter the cidrs here. + allowedPrivateNetworks: [] + # - "10.0.0.0/8" + + reservedUsernames: + - root + - admin + - administrator + - me + - system + +# https://github.com/bitnami/charts/tree/master/bitnami/postgresql#parameters +postgresql: + # -- disable if you want to use an existing db; in which case the values below + # must match those of that external postgres instance + enabled: true + # postgresqlHostname: preexisting-postgresql + # postgresqlPort: 5432 + auth: + database: calckey_production + username: calckey + # you must set a password; the password generated by the postgresql chart will + # be rotated on each upgrade: + # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade + password: "" + +# https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters +redis: + # disable if you want to use an existing redis instance; in which case the + # values below must match those of that external redis instance + enabled: true + hostname: "" + port: 6379 + auth: + # -- you must set a password; the password generated by the redis chart will be + # rotated on each upgrade: + password: "" + +# -- https://github.com/bitnami/charts/tree/master/bitnami/elasticsearch#parameters +elasticsearch: + # disable if you want to use an existing redis instance; in which case the + # values below must match those of that external elasticsearch instance + enabled: false + hostname: "" + port: 9200 + ssl: false + auth: {} + # username: "" + # password: "" + # @ignored + image: + tag: 7 + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/chart/values.yml b/chart/values.yml deleted file mode 100644 index a7031538a..000000000 --- a/chart/values.yml +++ /dev/null @@ -1,3 +0,0 @@ -url: https://example.tld/ -image: okteto.dev/misskey -environment: production diff --git a/cypress.config.ts b/cypress.config.ts index e390c41a5..25ff2aa07 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,12 +1,12 @@ -import { defineConfig } from 'cypress' +import { defineConfig } from "cypress"; export default defineConfig({ - e2e: { - // We've imported your old cypress plugins here. - // You may want to clean this up later by importing these. - setupNodeEvents(on, config) { - return require('./cypress/plugins/index.js')(on, config) - }, - baseUrl: 'http://localhost:61812', - }, -}) + e2e: { + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + setupNodeEvents(on, config) { + return require("./cypress/plugins/index.js")(on, config); + }, + baseUrl: "http://localhost:61812", + }, +}); diff --git a/cypress/e2e/basic.cy.js b/cypress/e2e/basic.cy.js index eb5195c4b..f73a25efb 100644 --- a/cypress/e2e/basic.cy.js +++ b/cypress/e2e/basic.cy.js @@ -1,4 +1,4 @@ -describe('Before setup instance', () => { +describe("Before setup instance", () => { beforeEach(() => { cy.resetState(); }); @@ -9,31 +9,31 @@ describe('Before setup instance', () => { cy.wait(1000); }); - it('successfully loads', () => { - cy.visit('/'); - }); + it("successfully loads", () => { + cy.visit("/"); + }); - it('setup instance', () => { - cy.visit('/'); + it("setup instance", () => { + 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(); + 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(); // なぜか動かない //cy.wait('@signup').should('have.property', 'response.statusCode'); - cy.wait('@signup'); - }); + cy.wait("@signup"); + }); }); -describe('After setup instance', () => { +describe("After setup instance", () => { beforeEach(() => { cy.resetState(); // インスタンス初期セットアップ - cy.registerUser('admin', 'pass', true); + cy.registerUser("admin", "pass", true); }); afterEach(() => { @@ -42,34 +42,34 @@ describe('After setup instance', () => { cy.wait(1000); }); - it('successfully loads', () => { - cy.visit('/'); - }); + it("successfully loads", () => { + cy.visit("/"); + }); - it('signup', () => { - cy.visit('/'); + it("signup", () => { + cy.visit("/"); - cy.intercept('POST', '/api/signup').as('signup'); + cy.intercept("POST", "/api/signup").as("signup"); - cy.get('[data-cy-signup]').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]').click(); + cy.get("[data-cy-signup]").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]").click(); - cy.wait('@signup'); - }); + cy.wait("@signup"); + }); }); -describe('After user signup', () => { +describe("After user signup", () => { beforeEach(() => { cy.resetState(); // インスタンス初期セットアップ - cy.registerUser('admin', 'pass', true); + cy.registerUser("admin", "pass", true); // ユーザー作成 - cy.registerUser('alice', 'alice1234'); + cy.registerUser("alice", "alice1234"); }); afterEach(() => { @@ -78,51 +78,53 @@ describe('After user signup', () => { cy.wait(1000); }); - it('successfully loads', () => { - cy.visit('/'); - }); + it("successfully loads", () => { + cy.visit("/"); + }); - it('signin', () => { - cy.visit('/'); + it("signin", () => { + cy.visit("/"); - cy.intercept('POST', '/api/signin').as('signin'); + cy.intercept("POST", "/api/signin").as("signin"); - cy.get('[data-cy-signin]').click(); - cy.get('[data-cy-signin-username] input').type('alice'); + cy.get("[data-cy-signin]").click(); + cy.get("[data-cy-signin-username] input").type("alice"); // Enterキーでサインインできるかの確認も兼ねる - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + cy.get("[data-cy-signin-password] input").type("alice1234{enter}"); - cy.wait('@signin'); - }); + cy.wait("@signin"); + }); - it('suspend', function() { - cy.request('POST', '/api/admin/suspend-user', { + it("suspend", function () { + cy.request("POST", "/api/admin/suspend-user", { i: this.admin.token, userId: this.alice.id, }); - cy.visit('/'); + cy.visit("/"); - cy.get('[data-cy-signin]').click(); - cy.get('[data-cy-signin-username] input').type('alice'); - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + cy.get("[data-cy-signin]").click(); + cy.get("[data-cy-signin-username] input").type("alice"); + cy.get("[data-cy-signin-password] input").type("alice1234{enter}"); // TODO: cypressにブラウザの言語指定できる機能が実装され次第英語のみテストするようにする - cy.contains(/アカウントが凍結されています|This account has been suspended due to/gi); + cy.contains( + /アカウントが凍結されています|This account has been suspended due to/gi, + ); }); }); -describe('After user singed in', () => { +describe("After user singed in", () => { beforeEach(() => { cy.resetState(); // インスタンス初期セットアップ - cy.registerUser('admin', 'pass', true); + cy.registerUser("admin", "pass", true); // ユーザー作成 - cy.registerUser('alice', 'alice1234'); + cy.registerUser("alice", "alice1234"); - cy.login('alice', 'alice1234'); + cy.login("alice", "alice1234"); }); afterEach(() => { @@ -131,17 +133,17 @@ describe('After user singed in', () => { cy.wait(1000); }); - it('successfully loads', () => { - cy.get('[data-cy-open-post-form]').should('be.visible'); - }); + it("successfully loads", () => { + cy.get("[data-cy-open-post-form]").should("be.visible"); + }); - it('note', () => { - 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(); + it("note", () => { + 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!'); - }); + cy.contains("Hello, Misskey!"); + }); }); // TODO: 投稿フォームの公開範囲指定のテスト diff --git a/cypress/e2e/widgets.cy.js b/cypress/e2e/widgets.cy.js index db35a60b5..e3c9326db 100644 --- a/cypress/e2e/widgets.cy.js +++ b/cypress/e2e/widgets.cy.js @@ -1,15 +1,14 @@ -describe('After user signed in', () => { +describe("After user signed in", () => { beforeEach(() => { cy.resetState(); - cy.viewport('macbook-16'); - + cy.viewport("macbook-16"); // インスタンス初期セットアップ - cy.registerUser('admin', 'pass', true); + cy.registerUser("admin", "pass", true); // ユーザー作成 - cy.registerUser('alice', 'alice1234'); + cy.registerUser("alice", "alice1234"); - cy.login('alice', 'alice1234'); + cy.login("alice", "alice1234"); }); afterEach(() => { @@ -18,47 +17,47 @@ describe('After user signed in', () => { cy.wait(1000); }); - it('widget edit toggle is visible', () => { - cy.get('.mk-widget-edit').should('be.visible'); - }); + it("widget edit toggle is visible", () => { + cy.get(".mk-widget-edit").should("be.visible"); + }); - it('widget select should be visible in edit mode', () => { - cy.get('.mk-widget-edit').click(); - cy.get('.mk-widget-select').should('be.visible'); - }); + it("widget select should be visible in edit mode", () => { + cy.get(".mk-widget-edit").click(); + cy.get(".mk-widget-select").should("be.visible"); + }); - it('first widget should be removed', () => { - cy.get('.mk-widget-edit').click(); - cy.get('.customize-container:first-child .remove._button').click(); - cy.get('.customize-container').should('have.length', 2); + it("first widget should be removed", () => { + cy.get(".mk-widget-edit").click(); + cy.get(".customize-container:first-child .remove._button").click(); + cy.get(".customize-container").should("have.length", 2); }); function buildWidgetTest(widgetName) { it(`${widgetName} widget should get added`, () => { - cy.get('.mk-widget-edit').click(); - cy.get('.mk-widget-select select').select(widgetName, { force: true }); - cy.get('.bg._modalBg.transparent').click({ multiple: true, force: true }); - cy.get('.mk-widget-add').click({ force: true }); - cy.get(`.mkw-${widgetName}`).should('exist'); + cy.get(".mk-widget-edit").click(); + cy.get(".mk-widget-select select").select(widgetName, { force: true }); + cy.get(".bg._modalBg.transparent").click({ multiple: true, force: true }); + cy.get(".mk-widget-add").click({ force: true }); + cy.get(`.mkw-${widgetName}`).should("exist"); }); } - buildWidgetTest('memo'); - buildWidgetTest('notifications'); - buildWidgetTest('timeline'); - buildWidgetTest('calendar'); - buildWidgetTest('rss'); - buildWidgetTest('trends'); - buildWidgetTest('clock'); - buildWidgetTest('activity'); - buildWidgetTest('photos'); - buildWidgetTest('digitalClock'); - buildWidgetTest('federation'); - buildWidgetTest('postForm'); - buildWidgetTest('slideshow'); - buildWidgetTest('serverMetric'); - buildWidgetTest('onlineUsers'); - buildWidgetTest('jobQueue'); - buildWidgetTest('button'); - buildWidgetTest('aiscript'); + buildWidgetTest("memo"); + buildWidgetTest("notifications"); + buildWidgetTest("timeline"); + buildWidgetTest("calendar"); + buildWidgetTest("rss"); + buildWidgetTest("trends"); + buildWidgetTest("clock"); + buildWidgetTest("activity"); + buildWidgetTest("photos"); + buildWidgetTest("digitalClock"); + buildWidgetTest("federation"); + buildWidgetTest("postForm"); + buildWidgetTest("slideshow"); + buildWidgetTest("serverMetric"); + buildWidgetTest("onlineUsers"); + buildWidgetTest("jobQueue"); + buildWidgetTest("button"); + buildWidgetTest("aiscript"); }); diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js index aa9918d21..3a4b6deb1 100644 --- a/cypress/plugins/index.js +++ b/cypress/plugins/index.js @@ -16,6 +16,6 @@ * @type {Cypress.PluginConfig} */ module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -} + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +}; diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 95bfcf685..3fe95b93d 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -24,32 +24,34 @@ // -- This will overwrite an existing command -- // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) -Cypress.Commands.add('resetState', () => { - cy.window(win => { - win.indexedDB.deleteDatabase('keyval-store'); +Cypress.Commands.add("resetState", () => { + cy.window((win) => { + win.indexedDB.deleteDatabase("keyval-store"); }); - cy.request('POST', '/api/reset-db').as('reset'); - cy.get('@reset').its('status').should('equal', 204); + cy.request("POST", "/api/reset-db").as("reset"); + cy.get("@reset").its("status").should("equal", 204); cy.reload(true); }); -Cypress.Commands.add('registerUser', (username, password, isAdmin = false) => { - const route = isAdmin ? '/api/admin/accounts/create' : '/api/signup'; +Cypress.Commands.add("registerUser", (username, password, isAdmin = false) => { + const route = isAdmin ? "/api/admin/accounts/create" : "/api/signup"; - cy.request('POST', route, { + cy.request("POST", route, { username: username, password: password, - }).its('body').as(username); + }) + .its("body") + .as(username); }); -Cypress.Commands.add('login', (username, password) => { - cy.visit('/'); +Cypress.Commands.add("login", (username, password) => { + cy.visit("/"); - cy.intercept('POST', '/api/signin').as('signin'); + cy.intercept("POST", "/api/signin").as("signin"); - cy.get('[data-cy-signin]').click(); - cy.get('[data-cy-signin-username] input').type(username); - cy.get('[data-cy-signin-password] input').type(`${password}{enter}`); + cy.get("[data-cy-signin]").click(); + cy.get("[data-cy-signin-username] input").type(username); + cy.get("[data-cy-signin-password] input").type(`${password}{enter}`); - cy.wait('@signin').as('signedIn'); + cy.wait("@signin").as("signedIn"); }); diff --git a/cypress/support/e2e.js b/cypress/support/e2e.js index 9185be344..961c6ac88 100644 --- a/cypress/support/e2e.js +++ b/cypress/support/e2e.js @@ -14,19 +14,21 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands"; // Alternatively you can use CommonJS syntax: // require('./commands') -Cypress.on('uncaught:exception', (err, runnable) => { - if ([ - // Chrome - 'ResizeObserver loop limit exceeded', +Cypress.on("uncaught:exception", (err, runnable) => { + if ( + [ + // Chrome + "ResizeObserver loop limit exceeded", - // Firefox - 'ResizeObserver loop completed with undelivered notifications', - ].some(msg => err.message.includes(msg))) { + // Firefox + "ResizeObserver loop completed with undelivered notifications", + ].some((msg) => err.message.includes(msg)) + ) { return false; } }); diff --git a/docker-compose.yml b/docker-compose.yml index 5de14d0c8..d6ad26a05 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,9 @@ services: depends_on: - db - redis - - sonic +### Uncomment one of the following to use a search engine +# - meilisearch +# - sonic ports: - "3000:3000" networks: @@ -17,6 +19,8 @@ services: environment: NODE_ENV: production volumes: + - ./.cargo-cache:/root/.cargo + - ./.cargo-target:/calckey/packages/backend/native-utils/target - ./files:/calckey/files - ./.config:/calckey/.config:ro @@ -40,17 +44,33 @@ services: volumes: - ./db:/var/lib/postgresql/data - sonic: - restart: unless-stopped - image: docker.io/valeriansaliou/sonic:v1.4.0 - networks: - - calcnet - volumes: - - ./sonic:/var/lib/sonic/store - - ./sonic/config.cfg:/etc/sonic.cfg +### Only one of the below should be used. +### Meilisearch is better overall, but resource-intensive. Sonic is a very light full text search engine. + +# meilisearch: +# container_name: meilisearch +# image: getmeili/meilisearch:v1.1.1 +# environment: +# - MEILI_ENV=${MEILI_ENV:-development} +# ports: +# - "7700:7700" +# networks: +# - calcnet +# volumes: +# - ./meili_data:/meili_data +# restart: unless-stopped + +# sonic: +# restart: unless-stopped +# image: docker.io/valeriansaliou/sonic:v1.4.0 +# networks: +# - calcnet +# volumes: +# - ./sonic:/var/lib/sonic/store +# - ./sonic/config.cfg:/etc/sonic.cfg networks: calcnet: - # web: - # external: - # name: web + # web: + # external: + # name: web diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 000000000..6d6c0ea8d --- /dev/null +++ b/docs/development.md @@ -0,0 +1,108 @@ +# 🌎 Calckey Developer Docs + +## Nix Dev Environment +The Calckey repo comes with a Nix-based shell environment to help make development as easy as possible! + +Please note, however, that this environment will not work on Windows outside of a WSL2 environment. + +### Prerequisites + +- Installed the [Nix Package Manager](https://nixos.org/download.html) (use the comman on their website) +- Installed [direnv](https://direnv.net/docs/installation.html) and added its hook to your shell. (package manager) + +Once the repo is cloned to your computer, follow these next few steps inside the Calckey folder: + +- Run `direnv allow`. This will build the environment and install all needed tools. +- Run `install-deps`, then `prepare-config`, to install the node dependencies and prepare the needed config files. +- In a second terminal, run `devenv up`. This will spawn a **Redis** server, a **Postgres** server, and the **Calckey** server in dev mode. +- Once you see the Calckey banner printed in your second terminal, run `migrate` in the first. +- Once migrations finish, open http://localhost:3000 in your web browser. +- You should now see the admin user creation screen! + +Note: When you want to restart a dev server, all you need to do is run `devenv up`, no other steps are necessary. + +# Possible Troubles with the dev enviroment +(this doesn't have to be done under normal conditions, this is for future reference) + +### direnv +If you have any trouble with `direnv allow` +Check that the contents of `.envrc` have the same version of nix-direnv that is specified here: +> nix-direnv under -> installation -> using direnv source url +> https://github.com/nix-community/nix-direnv#direnv-source_url + +there should be no errors during `direnv allow` + +### outdated nix packages +if `install-deps` or any subsequent command doesn't run due to versioning problems +`flake.nix` and `flake.lock` may be outdated + +delete `flake.lock`, or better, run `nix flake update --extra-experimental-features flakes --extra-experimental-features nix-command` +after that, run `direnv rebuild` + +if there are any errors, you might have to change `flake.nix` +(because the available options can change between versions - consider getting support in [the matrix channel](https://matrix.to/#/#calckey:matrix.fedibird.com)) + +### after changing a node version +in my case, i had to change the node version from 19, to 18 + +! before proceeding, make sure to delete all build artifacts! +remove `node_modules` and `built` folders, and maybe `.devenv` and `.direnv` as well +manually, or run `npm cache clean --force` and `pnpm cleanall` + +### Windows Subsystem for Linux +if `devenv up` terminates because of wrong folder permissions, + +create the file `/etc/wsl.conf` in your distro and add +```shell +[automount] +options = "metadata" +``` + +this allows `chmod` calls to actually have an effect. +the build scripts DO actually set the permissions, it just needs to work in wsl. + +### devenv up +devenv up may take a looong time. (some say this is fake news, maybe it was bad luck in my case) + +do not get spooked by this error: +``` +> calckey@14.0.0-dev32 start /mnt/.../calckey +> pnpm --filter backend run start + + +> backend@ start /mnt/.../calckey/packages/backend +> pnpm node ./built/index.js + +node:internal/modules/cjs/loader:1078 + throw err; + ^ + +Error: Cannot find module '/mnt/.../calckey/packages/backend/built/index.js' + at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) + at Module._load (node:internal/modules/cjs/loader:920:27) + at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) + at node:internal/main/run_main_module:23:47 { + code: 'MODULE_NOT_FOUND', + requireStack: [] +} + +Node.js v18.16.0 +undefined +/mnt/.../calckey/packages/backend: + ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  backend@ start: `pnpm node ./built/index.js` +Exit status 1 + ELIFECYCLE  Command failed with exit code 1. +``` + +the script is designed to constantly try to start the server, while the build is still running. +this just means that the build isn't finished yet. + +at some point you should see a banner that says "Calckey" in big letters - +then you're good to go and can run `migrate` (in another terminal)! + +if you don't see the banner, +and it's for some reason stuck on `Finished 'build' after 917 ms` for a view minutes, + +just leave devenv running and open another terminal in the folder +run `migrate` and then `pnpm --filter backend run start` by yourself +the server should start diff --git a/docs/docker.md b/docs/docker.md index 8c42ee54d..0c625a4b3 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,4 +1,4 @@ -# 🐳 Running a Calckey instance with Docker +# 🐳 Running a Calckey server with Docker ## Pre-built docker container [thatonecalculator/calckey](https://hub.docker.com/r/thatonecalculator/calckey) @@ -8,7 +8,7 @@ There is a `docker-compose.yml` in the root of the project that you can use to build the container from source - .config/docker.env (**db config settings**) -- .config/default.yml (**calckey instance settings**) +- .config/default.yml (**calckey server settings**) ## Configuring @@ -20,7 +20,7 @@ Rename the files: then edit them according to your environment. You can configure `docker.env` with anything you like, but you will have to pay attention to the `default.yml` file: -- `url` should be set to the URL you will be hosting the web interface for the instance at. +- `url` should be set to the URL you will be hosting the web interface for the server at. - `host`, `db`, `user`, `pass` will have to be configured in the `PostgreSQL configuration` section - `host` is the name of the postgres container (eg: *calckey_db_1*), and the others should match your `docker.env`. - `host`will need to be configured in the *Redis configuration* section - it is the name of the redis container (eg: *calckey_redis_1*) - `auth` will need to be configured in the *Sonic* section - cannot be the default `SecretPassword` @@ -36,7 +36,7 @@ Copy `docker-compose.yml` and the `config/` to a directory, then run the **docke NOTE: This will take some time to come fully online, even after download and extracting the container images, and it may emit some error messages before completing successfully. Specifically, the `db` container needs to initialize and so isn't available to the `web` container right away. Only once the `db` container comes online does the `web` container start building and initializing the calckey tables. -Once the instance is up you can use a web browser to access the web interface at `http://serverip:3000` (where `serverip` is the IP of the server you are running the calckey instance on). +Once the server is up you can use a web browser to access the web interface at `http://serverip:3000` (where `serverip` is the IP of the server you are running the calckey server on). ## Docker for development diff --git a/docs/kubernetes.md b/docs/kubernetes.md new file mode 100644 index 000000000..5cb6e5d83 --- /dev/null +++ b/docs/kubernetes.md @@ -0,0 +1,45 @@ +# Running a Calckey server with Kubernetes and Helm + +This is a [Helm](https://helm.sh/) chart directory in the root of the project +that you can use to deploy calckey to a Kubernetes cluster + +## Deployment + +1. Copy the example helm values and make your changes: +```shell +cp .config/helm_values_example.yml .config/helm_values.yml +``` + +2. Update helm dependencies: +```shell +cd chart +helm dependency list $dir 2> /dev/null | tail +2 | head -n -1 | awk '{ print "helm repo add " $1 " " $3 }' | while read cmd; do $cmd; done; +cd ../ +``` + +3. Create the calckey helm release (also used to update existing deployment): +```shell +helm upgrade \ + --install \ + --namespace calckey \ + --create-namespace \ + calckey chart/ \ + -f .config/helm_values.yml +``` + +4. Watch your calckey server spin up: +```shell +kubectl -n calckey get po -w +``` + +5. Initial the admin user and managed config: +```shell +export CALCKEY_USERNAME="my_desired_admin_handle" && \ +export CALCKEY_PASSWORD="myDesiredInitialPassword" && \ +export CALCKEY_HOST="calckey.example.com" && \ +export CALCKEY_TOKEN=$(curl -X POST https://$CALCKEY_HOST/api/admin/accounts/create -H "Content-Type: application/json" -d "{ \"username\":\"$CALCKEY_USERNAME\", \"password\":\"$CALCKEY_PASSWORD\" }" | jq -r '.token') && \ +echo "Save this token: ${CALCKEY_TOKEN}" && \ +curl -X POST -H "Authorization: Bearer $CALCKEY_TOKEN" https://$CALCKEY_HOST/api/admin/accounts/hosted +``` + +6. Enjoy! diff --git a/docs/migrate.md b/docs/migrate.md index 07a5fea07..7e9653e70 100644 --- a/docs/migrate.md +++ b/docs/migrate.md @@ -1,27 +1,44 @@ # 🚚 Migrating from Misskey to Calckey +The following procedure may not work depending on your environment and version of Misskey. + +**Make sure you** +- **stopped all master and worker processes of Misskey.** +- **have backups of the database before performing any commands.** + ## Misskey v13 and above +Tested with Misskey v13.11.3. + +If your Misskey v13 is older, we recommend updating your Misskey to v13.11.3. + ```sh wget -O mkv13.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/mkv13.patch -git apply mkv13.patch +wget -O mkv13_restore.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/mkv13_restore.patch +git apply mkv13.patch mkv13_restore.patch cd packages/backend -LINE_NUM="$(npx typeorm migration:show -d ormconfig.js | grep -n activeEmailValidation1657346559800 | cut -d ':' -f 1)" -NUM_MIGRATIONS="$(npx typeorm migration:show -d ormconfig.js | tail -n+"$LINE_NUM" | grep '\[X\]' | nl)" +LINE_NUM="$(pnpm typeorm migration:show -d ormconfig.js | grep -n activeEmailValidation1657346559800 | cut -d ':' -f 1)" +NUM_MIGRATIONS="$(pnpm typeorm migration:show -d ormconfig.js | tail -n+"$LINE_NUM" | grep '\[X\]' | wc -l)" -for i in $(seq 1 $NUM_MIGRAIONS); do - npx typeorm migration:revert -d ormconfig.js -done +for i in $(seq 1 $NUM_MIGRATIONS); do pnpm typeorm migration:revert -d ormconfig.js; done + +cd ../../ git remote set-url origin https://codeberg.org/calckey/calckey.git -git fetch -git checkout main # or beta or develop +git fetch origin +git stash push +rm -rf fluent-emojis misskey-assets +git switch main # or beta or develop git pull --ff +wget -O renote_muting.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/renote_muting.patch +git apply renote_muting.patch -NODE_ENV=production pnpm run migrate -# build using prefered method +pnpm install +NODE_ENV=production pnpm run build +pnpm run migrate +git stash push ``` Depending on the version you're migrating from, you may have to open Postgres with `psql -d your_database` and run the following commands: @@ -44,6 +61,10 @@ ALTER TABLE "instance" ADD COLUMN "lastCommunicatedAt" date; then quit with `\q`, and restart Calckey. +Note: Ignore errors of `column "xxx" of relation "xxx" already exists`. + +If no other errors happened, your Calckey is ready to launch! + ## Misskey v12.119 and before ```sh diff --git a/docs/mkv13_restore.patch b/docs/mkv13_restore.patch new file mode 100644 index 000000000..9ef9934ed --- /dev/null +++ b/docs/mkv13_restore.patch @@ -0,0 +1,127 @@ +diff --git a/packages/backend/migration/1680491187535-cleanup.js b/packages/backend/migration/1680491187535-cleanup.js +index 1e609ca06..0e6accf3e 100644 +--- a/packages/backend/migration/1680491187535-cleanup.js ++++ b/packages/backend/migration/1680491187535-cleanup.js +@@ -1,10 +1,40 @@ + export class cleanup1680491187535 { +- name = 'cleanup1680491187535' ++ name = "cleanup1680491187535"; + +- async up(queryRunner) { +- await queryRunner.query(`DROP TABLE "antenna_note" `); +- } ++ async up(queryRunner) { ++ await queryRunner.query(`DROP TABLE "antenna_note" `); ++ } + +- async down(queryRunner) { +- } ++ async down(queryRunner) { ++ await queryRunner.query( ++ `CREATE TABLE antenna_note ( id character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "antennaId" character varying(32) NOT NULL, read boolean DEFAULT false NOT NULL)`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN antenna_note."noteId" IS 'The note ID.'`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN antenna_note."antennaId" IS 'The antenna ID.'`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY antenna_note ADD CONSTRAINT "PK_fb28d94d0989a3872df19fd6ef8" PRIMARY KEY (id)`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_0d775946662d2575dfd2068a5f" ON antenna_note USING btree ("antennaId")`, ++ ); ++ await queryRunner.query( ++ `CREATE UNIQUE INDEX "IDX_335a0bf3f904406f9ef3dd51c2" ON antenna_note USING btree ("noteId", "antennaId")`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_9937ea48d7ae97ffb4f3f063a4" ON antenna_note USING btree (read)`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_bd0397be22147e17210940e125" ON antenna_note USING btree ("noteId")`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY antenna_note ADD CONSTRAINT "FK_0d775946662d2575dfd2068a5f5" FOREIGN KEY ("antennaId") REFERENCES antenna(id) ON DELETE CASCADE`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY antenna_note ADD CONSTRAINT "FK_bd0397be22147e17210940e125b" FOREIGN KEY ("noteId") REFERENCES note(id) ON DELETE CASCADE`, ++ ); ++ } + } +diff --git a/packages/backend/migration/1680582195041-cleanup.js b/packages/backend/migration/1680582195041-cleanup.js +index c587e456a..a91d6ff3c 100644 +--- a/packages/backend/migration/1680582195041-cleanup.js ++++ b/packages/backend/migration/1680582195041-cleanup.js +@@ -1,11 +1,64 @@ + export class cleanup1680582195041 { +- name = 'cleanup1680582195041' ++ name = "cleanup1680582195041"; + +- async up(queryRunner) { +- await queryRunner.query(`DROP TABLE "notification" `); +- } ++ async up(queryRunner) { ++ await queryRunner.query(`DROP TABLE "notification"`); ++ } + +- async down(queryRunner) { +- +- } ++ async down(queryRunner) { ++ await queryRunner.query( ++ `CREATE TABLE notification ( id character varying(32) NOT NULL, "createdAt" timestamp with time zone NOT NULL, "notifieeId" character varying(32) NOT NULL, "notifierId" character varying(32), "isRead" boolean DEFAULT false NOT NULL, "noteId" character varying(32), reaction character varying(128), choice integer, "followRequestId" character varying(32), type notification_type_enum NOT NULL, "customBody" character varying(2048), "customHeader" character varying(256), "customIcon" character varying(1024), "appAccessTokenId" character varying(32), achievement character varying(128))`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN notification."createdAt" IS 'The created date of the Notification.'`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN notification."notifieeId" IS 'The ID of recipient user of the Notification.'`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN notification."notifierId" IS 'The ID of sender user of the Notification.'`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN notification."isRead" IS 'Whether the Notification is read.'`, ++ ); ++ await queryRunner.query( ++ `COMMENT ON COLUMN notification.type IS 'The type of the Notification.'`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "PK_705b6c7cdf9b2c2ff7ac7872cb7" PRIMARY KEY (id)`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_080ab397c379af09b9d2169e5b" ON notification USING btree ("isRead")`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_33f33cc8ef29d805a97ff4628b" ON notification USING btree (type)`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_3b4e96eec8d36a8bbb9d02aa71" ON notification USING btree ("notifierId")`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON notification USING btree ("notifieeId")`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_b11a5e627c41d4dc3170f1d370" ON notification USING btree ("createdAt")`, ++ ); ++ await queryRunner.query( ++ `CREATE INDEX "IDX_e22bf6bda77b6adc1fd9e75c8c" ON notification USING btree ("appAccessTokenId")`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "FK_3b4e96eec8d36a8bbb9d02aa710" FOREIGN KEY ("notifierId") REFERENCES "user"(id) ON DELETE CASCADE`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "FK_3c601b70a1066d2c8b517094cb9" FOREIGN KEY ("notifieeId") REFERENCES "user"(id) ON DELETE CASCADE`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "FK_769cb6b73a1efe22ddf733ac453" FOREIGN KEY ("noteId") REFERENCES note(id) ON DELETE CASCADE`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "FK_bd7fab507621e635b32cd31892c" FOREIGN KEY ("followRequestId") REFERENCES follow_request(id) ON DELETE CASCADE`, ++ ); ++ await queryRunner.query( ++ `ALTER TABLE ONLY notification ADD CONSTRAINT "FK_e22bf6bda77b6adc1fd9e75c8c9" FOREIGN KEY ("appAccessTokenId") REFERENCES access_token(id) ON DELETE CASCADE`, ++ ); ++ } + } diff --git a/docs/renote_muting.patch b/docs/renote_muting.patch new file mode 100644 index 000000000..c5bd2818c --- /dev/null +++ b/docs/renote_muting.patch @@ -0,0 +1,23 @@ +diff --git a/packages/backend/migration/1665091090561-add-renote-muting.js b/packages/backend/migration/1665091090561-add-renote-muting.js +index 2c76aaff5..f8541c818 100644 +--- a/packages/backend/migration/1665091090561-add-renote-muting.js ++++ b/packages/backend/migration/1665091090561-add-renote-muting.js +@@ -4,18 +4,6 @@ export class addRenoteMuting1665091090561 { + } + + async up(queryRunner) { +- await queryRunner.query( +- `CREATE TABLE "renote_muting" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "muteeId" character varying(32) NOT NULL, "muterId" character varying(32) NOT NULL, CONSTRAINT "PK_renoteMuting_id" PRIMARY KEY ("id"))`, +- ); +- await queryRunner.query( +- `CREATE INDEX "IDX_renote_muting_createdAt" ON "muting" ("createdAt") `, +- ); +- await queryRunner.query( +- `CREATE INDEX "IDX_renote_muting_muteeId" ON "muting" ("muteeId") `, +- ); +- await queryRunner.query( +- `CREATE INDEX "IDX_renote_muting_muterId" ON "muting" ("muterId") `, +- ); + } + + async down(queryRunner) {} diff --git a/flake.lock b/flake.lock new file mode 100644 index 000000000..f1ff69041 --- /dev/null +++ b/flake.lock @@ -0,0 +1,294 @@ +{ + "nodes": { + "devenv": { + "inputs": { + "flake-compat": "flake-compat", + "nix": "nix", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1685521914, + "narHash": "sha256-0fdFP5IASLwJ0PSXrErW8PZon9TVYmi8VRF8OtjGkV4=", + "owner": "cachix", + "repo": "devenv", + "rev": "e206d8f2e3e8d6aa943656052f15bdfea8146b8d", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1685514167, + "narHash": "sha256-urRxF0ZGSNeZjM4kALNg3wTh7fBscbqQmS6S/HU7Wms=", + "owner": "nix-community", + "repo": "fenix", + "rev": "3abfea51663583186f687c49a157eab1639349ca", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1685457039, + "narHash": "sha256-bEFtQm+YyLxQjKQAaBHJyPN1z2wbhBnr2g1NJWSYjwM=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80717d11615b6f42d1ad2e18ead51193fc15de69", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "devenv", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1676545802, + "narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=", + "owner": "domenkozar", + "repo": "nix", + "rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "relaxed-flakes", + "repo": "nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1678875422, + "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1678872516, + "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1685399834, + "narHash": "sha256-Lt7//5snriXSdJo5hlVcDkpERL1piiih0UXIz1RUcC4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "58c85835512b0db938600b6fe13cc3e3dc4b364e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "flake-utils": "flake-utils", + "gitignore": "gitignore", + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1682596858, + "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "fb58866e20af98779017134319b5663b8215d912", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "fenix": "fenix", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1685465261, + "narHash": "sha256-aJ2nUinUrNcFi+pb47bS5IIAeSiUEEPLJY8W4Q8Pcjk=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "d2b3caa5b5694125fad04a9699e919444439f6a2", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..8553456ea --- /dev/null +++ b/flake.nix @@ -0,0 +1,86 @@ +{ + description = "Calckey development flake"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + # Flake Parts framework(https://flake.parts) + flake-parts.url = "github:hercules-ci/flake-parts"; + # Devenv for better devShells(https://devenv.sh) + devenv.url = "github:cachix/devenv"; + # Fenix for rust development + fenix.url = "github:nix-community/fenix"; + fenix.inputs.nixpkgs.follows = "nixpkgs"; + }; + outputs = inputs@{ flake-parts, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + inputs.devenv.flakeModule + ]; + + # Define the systems that this works on. Only tested with x66_64-linux, add more if you test and it works. + systems = [ + "x86_64-linux" + ]; + # Expose these attributes for every system defined above. + perSystem = { config, pkgs, ... }: { + # Devenv shells + devenv = { + shells = { + # The default shell, used by nix-direnv + default = { + name = "calckey-dev-shell"; + # Add additional packages to our environment + packages = [ + pkgs.nodePackages.pnpm + + pkgs.python3 + ]; + # No need to warn on a new version, we'll update as needed. + devenv.warnOnNewVersion = false; + # Enable typescript support + languages.typescript.enable = true; + # Enable javascript for NPM and PNPM + languages.javascript.enable = true; + languages.javascript.package = pkgs.nodejs_18; + # Enable stable Rust for the backend + languages.rust.enable = true; + languages.rust.version = "stable"; + processes = { + dev-server.exec = "pnpm run dev"; + }; + scripts = { + build.exec = "pnpm run build"; + clean.exec = "pnpm run clean"; + clear-state.exec = "rm -rf .devenv/state/redis .devenv/state/postgres"; + format.exec = "pnpm run format"; + install-deps.exec = "pnpm install"; + migrate.exec = "pnpm run migrate"; + prepare-config.exec = "cp .config/devenv.yml .config/default.yml"; + }; + services = { + postgres = { + enable = true; + package = pkgs.postgresql_12; + initialDatabases = [{ + name = "calckey"; + }]; + initialScript = '' + CREATE USER calckey WITH PASSWORD 'calckey'; + ALTER USER calckey WITH SUPERUSER; + GRANT ALL ON DATABASE calckey TO calckey; + ''; + listen_addresses = "127.0.0.1"; + port = 5432; + }; + redis = { + enable = true; + bind = "127.0.0.1"; + port = 6379; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 844cfb5d5..3ce83ebcc 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -176,7 +176,6 @@ operations: "الإجراءات" software: "البرمجية" version: "الإصدار" metadata: "البيانات الوصفية" -withNFiles: "{n} ملف (ملفات)" monitor: "شاشة التحكم" jobQueue: "قائمة الانتظار" cpuAndMemory: "وحدة المعالجة المركزية والذاكرة" @@ -197,7 +196,7 @@ noUsers: "ليس هناك مستخدمون" editProfile: "تعديل الملف التعريفي" noteDeleteConfirm: "هل تريد حذف هذه الملاحظة؟" pinLimitExceeded: "لا يمكنك تدبيس الملاحظات بعد الآن." -intro: "لقد انتهت عملية تنصيب Misskey. الرجاء إنشاء حساب إداري." +intro: "لقد انتهت عملية تنصيب Calckey. الرجاء إنشاء حساب إداري." done: "تمّ" processing: "المعالجة جارية" preview: "معاينة" @@ -372,7 +371,7 @@ exploreFediverse: "استكشف الفديفرس" popularTags: "الوسوم الرائجة" userList: "القوائم" about: "عن" -aboutMisskey: "عن Misskey" +aboutMisskey: "عن Calckey" administrator: "المدير" token: "الرمز المميز" twoStepAuthentication: "الإستيثاق بعاملَيْن" @@ -1027,6 +1026,27 @@ _time: minute: "د" hour: "سا" day: "ي" +_tutorial: + title: "How to use Calckey" + step1_1: "Welcome!" + step1_2: "Let's get you set up. You'll be up and running in no time!" + step2_1: "First, please fill out your profile." + step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step3_1: "Now time to follow some people!" + step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step4_1: "Let's get you out there." + step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step5_1: "Timelines, timelines everywhere!" + step5_2: "Your instance has {timelines} different timelines enabled." + step5_3: "The Home {icon} timeline is where you can see posts from your followers." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step6_1: "So, what is this place?" + step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "سجلت سلفًا جهازًا للاستيثاق بعاملين." registerDevice: "سجّل جهازًا جديدًا" diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index 8a9358e2a..f08e4bfc2 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -177,7 +177,6 @@ operations: "ক্রিয়াকলাপ" software: "সফটওয়্যার" version: "সংস্করণ" metadata: "মেটাডাটা" -withNFiles: "{n} টি ফাইল" monitor: "মনিটর" jobQueue: "জব কিউ" cpuAndMemory: "সিপিউ এবং মেমরি" @@ -199,9 +198,9 @@ noUsers: "কোন ব্যাবহারকারী নেই" editProfile: "প্রোফাইল সম্পাদনা করুন" noteDeleteConfirm: "আপনি কি নোট ডিলিট করার ব্যাপারে নিশ্চিত?" pinLimitExceeded: "আপনি আর কোন নোট পিন করতে পারবেন না" -intro: "Misskey এর ইন্সটলেশন সম্পন্ন হয়েছে!দয়া করে অ্যাডমিন ইউজার তৈরি করুন।" +intro: "Calckey এর ইন্সটলেশন সম্পন্ন হয়েছে!দয়া করে অ্যাডমিন ইউজার তৈরি করুন।" done: "সম্পন্ন" -processing: "প্রক্রিয়াধীন..." +processing: "প্রক্রিয়াধীন" preview: "পূর্বরূপ দেখুন" default: "পূর্বনির্ধারিত" noCustomEmojis: "কোন ইমোজি নাই" @@ -377,7 +376,7 @@ exploreFediverse: "Fediverse ঘুরে দেখুন" popularTags: "জনপ্রিয় ট্যাগগুলি" userList: "লিস্ট" about: "আপনার সম্পর্কে" -aboutMisskey: "Misskey সম্পর্কে" +aboutMisskey: "Calckey সম্পর্কে" administrator: "প্রশাসক" token: "টোকেন" twoStepAuthentication: "২-ধাপ প্রমাণীকরণ" @@ -695,7 +694,7 @@ onlineUsersCount: "{n} জন ব্যাবহারকারী অনলা nUsers: "{n} জন ব্যাবহারকারী" nNotes: "{n} টি নোট" sendErrorReports: "ক্রুটি প্রতিবেদন পাঠান" -sendErrorReportsDescription: "চালু থাকলে, বিস্তারিত ত্রুটির তথ্য Misskey-এর সাথে শেয়ার করা হয়। যা সফ্টওয়্যারটির গুণমান উন্নত করতে সাহায্য করে। ত্রুটির তথ্যের মধ্যে রয়েছে OS সংস্করণ, ব্রাউজারের ধরন, কর্মের ইতিহাস ইত্যাদি।" +sendErrorReportsDescription: "চালু থাকলে, বিস্তারিত ত্রুটির তথ্য Calckey-এর সাথে শেয়ার করা হয়। যা সফ্টওয়্যারটির গুণমান উন্নত করতে সাহায্য করে। ত্রুটির তথ্যের মধ্যে রয়েছে OS সংস্করণ, ব্রাউজারের ধরন, কর্মের ইতিহাস ইত্যাদি।" myTheme: "আমার থিম" backgroundColor: "পটভূমির রং" accentColor: "এক্সেন্টের রং" @@ -786,7 +785,7 @@ hashtags: "হ্যাশট্যাগ" troubleshooting: "ট্রাবলশুটিং" useBlurEffect: "UI তে ব্লার ইফেক্ট ব্যাবহার করুন" learnMore: "আরও জানুন" -misskeyUpdated: "Misskey আপডেট করা হয়েছে!" +misskeyUpdated: "Calckey আপডেট করা হয়েছে!" whatIsNew: "পরিবর্তনগুলি দেখান" translate: "অনুবাদ" translatedFrom: "{x} হতে অনুবাদ করা" @@ -902,8 +901,8 @@ _aboutMisskey: contributors: "প্রধান কন্ট্রিবিউটারগণ" allContributors: "সকল কন্ট্রিবিউটারগণ" source: "সোর্স কোড" - translation: "Misskey অনুবাদ করুন" - donate: "Misskey তে দান করুন" + translation: "Calckey অনুবাদ করুন" + donate: "Calckey তে দান করুন" morePatrons: "আরও অনেকে আমাদের সাহায্য করছেন। তাদের সবাইকে ধন্যবাদ 🥰" patrons: "সমর্থনকারী" _nsfw: @@ -912,7 +911,7 @@ _nsfw: force: "সকল মিডিয়া লুকান" _mfm: cheatSheet: "MFM চিটশিট" - intro: "MFM একটি মার্কআপ ভাষা যা Misskey-এর মধ্যে বিভিন্ন জায়গায় ব্যবহার করা যেতে পারে। এখানে আপনি MFM-এর সিনট্যাক্সগুলির একটি তালিকা দেখতে পারবেন।" + intro: "MFM একটি মার্কআপ ভাষা যা Calckey-এর মধ্যে বিভিন্ন জায়গায় ব্যবহার করা যেতে পারে। এখানে আপনি MFM-এর সিনট্যাক্সগুলির একটি তালিকা দেখতে পারবেন।" dummy: "মিসকি ফেডিভার্সের বিশ্বকে প্রসারিত করে" mention: "উল্লেখ" mentionDescription: "@ চিহ্ন + ব্যবহারকারীর নাম একটি নির্দিষ্ট ব্যবহারকারীকে নির্দেশ করতে ব্যবহার করা যায়।" @@ -1108,6 +1107,27 @@ _time: minute: "মিনিট" hour: "ঘণ্টা" day: "দিন" +_tutorial: + title: "How to use Calckey" + step1_1: "Welcome!" + step1_2: "Let's get you set up. You'll be up and running in no time!" + step2_1: "First, please fill out your profile." + step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step3_1: "Now time to follow some people!" + step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step4_1: "Let's get you out there." + step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step5_1: "Timelines, timelines everywhere!" + step5_2: "Your instance has {timelines} different timelines enabled." + step5_3: "The Home {icon} timeline is where you can see posts from your followers." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step6_1: "So, what is this place?" + step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "আপনি ইতিমধ্যে একটি 2-ফ্যাক্টর অথেনটিকেশন ডিভাইস নিবন্ধন করেছেন৷" registerDevice: "নতুন ডিভাইস নিবন্ধন করুন" diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 49069a8f2..857caac1f 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1,140 +1,140 @@ _lang_: "Català" -headlineMisskey: "Una xarxa social de codi obert, descentralitzada i gratuita per\ - \ sempre \U0001F680" -introMisskey: "Benvinguts! Calckey es una plataforma social de codi obert, descentralitzada\ - \ i gratuita per sempre! \U0001F680" +headlineMisskey: "Una xarxa social de codi obert, descentralitzada i gratuïta per + a sempre! 🚀" +introMisskey: "Benvinguts! Calckey és una plataforma social de codi obert, descentralitzada + i gratuïta per a sempre! 🚀" monthAndDay: "{day}/{month}" -search: "Cercar" +search: "Cerca" notifications: "Notificacions" username: "Nom d'usuari" password: "Contrasenya" forgotPassword: "Contrasenya oblidada" fetchingAsApObject: "Cercant en el Fediverse" -ok: "OK" +ok: "D'acord" gotIt: "Ho he entès!" -cancel: "Cancel·lar" +cancel: "Cancel·la" enterUsername: "Introdueix el teu nom d'usuari" -renotedBy: "Resignat per {user}" +renotedBy: "Impulsat per {user}" noNotes: "Cap publicació" noNotifications: "Cap notificació" -instance: "Instància" +instance: "Servidor" settings: "Preferències" basicSettings: "Configuració bàsica" otherSettings: "Altres opcions" -openInWindow: "Obrir en una finestra nova" +openInWindow: "Obre en una finestra nova" profile: "Perfil" timeline: "Línia de temps" noAccountDescription: "Aquest usuari encara no ha escrit la seva biografia." -login: "Iniciar sessió" +login: "Inicia sessió" loggingIn: "Iniciant sessió" -logout: "Tancar sessió" -signup: "Registrar-se" -uploading: "Pujant..." -save: "Desar" +logout: "Tanca la sessió" +signup: "Registra'm" +uploading: "S'està pujant…" +save: "Desa" users: "Usuaris" -addUser: "Afegir un usuari" -favorite: "Afegir a favorits" -favorites: "Favorits" -unfavorite: "Eliminar de favorits" -favorited: "Afegit a favorits." -alreadyFavorited: "Ja s'ha afegit a favorits." -cantFavorite: "No s'ha pogut afegir a favorits." -pin: "Fixar al perfil" -unpin: "Deixar de fixar al perfil" -copyContent: "Còpia el contingut" -copyLink: "Còpia l'enllaç" -delete: "Esborra" -deleteAndEdit: "Esborrar i edita" -deleteAndEditConfirm: "Estàs segur que vols esborrar aquesta nota i editar-la? Perdràs\ - \ totes les reaccions, resignats i respostes." -addToList: "Afegir a la llista" -sendMessage: "Enviar un missatge" -copyUsername: "Còpia nom d'usuari" -searchUser: "Cercar un usuari" +addUser: "Afegeix un usuari" +favorite: "Afegeix als marcadors" +favorites: "Marcadors" +unfavorite: "Elimina dels marcadors" +favorited: "S'ha afegit el marcador." +alreadyFavorited: "Ja està afegida als marcadors." +cantFavorite: "No s'ha pogut afegir als marcadors." +pin: "Fixa al perfil" +unpin: "Deixa de fixar al perfil" +copyContent: "Copia el contingut" +copyLink: "Copia l'enllaç" +delete: "Elimina" +deleteAndEdit: "Elimina i edita" +deleteAndEditConfirm: "Segur que vols eliminar la publicació i editar-la? Perdràs + totes les reaccions, impulsos i respostes." +addToList: "Afegeix a la llista" +sendMessage: "Envia un missatge" +copyUsername: "Copia el nom d'usuari" +searchUser: "Cerca un usuari" reply: "Respon" -loadMore: "Carregar més" -showMore: "Veure més" +loadMore: "Carrega'n més" +showMore: "Mostra'n més" youGotNewFollower: "t'ha seguit" receiveFollowRequest: "Sol·licitud de seguiment rebuda" followRequestAccepted: "Sol·licitud de seguiment acceptada" mention: "Menció" mentions: "Mencions" directNotes: "Missatges directes" -importAndExport: "Importar / Exportar Dades" -import: "Importar" -export: "Exportar" +importAndExport: "Importa/exporta dades" +import: "Importa" +export: "Exporta" files: "Fitxers" -download: "Descarregar" -driveFileDeleteConfirm: "Estàs segur que vols esborrar el fitxer \"{nom}\"? S'eliminarà\ - \ de totes les notes que el continguin com a fitxer adjunt." -unfollowConfirm: "Estàs segur que vols deixar de seguir {name}?" -exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà\ - \ al teu Disc un cop completada." +download: "Baixa" +driveFileDeleteConfirm: "Segur que vols eliminar el fitxer «{name}»? S'eliminarà de + totes les notes que el continguin com a fitxer adjunt." +unfollowConfirm: "Segur que vols deixar de seguir {name}?" +exportRequested: "Has sol·licitat una exportació. Això pot trigar una estona. S'afegirà + al teu Disc un cop completada." importRequested: "Has sol·licitat una importació. Això pot trigar una estona." lists: "Llistes" -noLists: "No tens cap llista" +noLists: "No teniu cap llista" note: "Publicació" notes: "Publicacions" following: "Seguint" followers: "Seguidors" followsYou: "Et segueix" -createList: "Crear llista" -manageLists: "Gestionar les llistes" +createList: "Crea una llista" +manageLists: "Gestiona les llistes" error: "Error" somethingHappened: "S'ha produït un error" retry: "Torna-ho a intentar" -pageLoadError: "Alguna cosa a sortit malament al carregar la pàgina." -pageLoadErrorDescription: "Això normalment es deu a errors de xarxa o a la memòria\ - \ cau del navegador. Prova d'esborrar la memòria cau i torna-ho a provar després\ - \ d'esperar una estona." +pageLoadError: "S'ha produït un error en carregar la pàgina." +pageLoadErrorDescription: "Això normalment es deu a errors de xarxa o a la memòria + cau del navegador. Prova d'esborrar la memòria cau i torna-ho a provar després d'esperar + una estona." serverIsDead: "Aquest servidor no respon. Espera una estona i torna-ho a provar." -youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar\ - \ el vostre client." +youShouldUpgradeClient: "Per veure aquesta pàgina, actualitzeu-la per actualitzar + el vostre client." enterListName: "Introdueix un nom per a la llista" privacy: "Privadesa" makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació" defaultNoteVisibility: "Visibilitat per defecte" -follow: "Seguint" -followRequest: "Enviar la sol·licitud de seguiment" +follow: "Segueix" +followRequest: "Segueix" followRequests: "Sol·licituds de seguiment" -unfollow: "Deixar de seguir" +unfollow: "Deixa de seguir" followRequestPending: "Sol·licituds de seguiment pendents" -enterEmoji: "Introduir un emoji" -renote: "Impulsà" -unrenote: "Anul·lar impuls" -renoted: "Impulsat." -cantRenote: "Aquesta publicació no pot ser impulsada." +enterEmoji: "Introdueix un emoji" +renote: "Impulsa" +unrenote: "Anul·la l'impuls" +renoted: "S'ha impulsat." +cantRenote: "Aquesta publicació no es pot impulsar." cantReRenote: "No es pot impulsar un impuls." -quote: "Citar" +quote: "Cita" pinnedNote: "Publicació fixada" -pinned: "Fixar al perfil" +pinned: "Fixa al perfil" you: "Tu" -clickToShow: "Fes clic per mostrar" +clickToShow: "Fes clic per a mostrar" sensitive: "NSFW" -add: "Afegir" +add: "Afegeix" reaction: "Reaccions" reactionSetting: "Reaccions a mostrar al selector de reaccions" -reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem\ - \ \"+\" per afegir." -rememberNoteVisibility: "Recorda la configuració de visibilitat de les publicacions" -attachCancel: "Eliminar el fitxer adjunt" -markAsSensitive: "Marcar com a NSFW" -unmarkAsSensitive: "Deixar de marcar com a sensible" -enterFileName: "Defineix nom del fitxer" +reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem + \"+\" per afegir." +rememberNoteVisibility: "Recorda la configuració de visibilitat de les notes" +attachCancel: "Elimina el fitxer adjunt" +markAsSensitive: "Marca com a NSFW" +unmarkAsSensitive: "Desmarca com a NSFW" +enterFileName: "Introdueix un nom de fitxer" mute: "Silencia" unmute: "Deixa de silenciar" block: "Bloqueja" unblock: "Desbloqueja" suspend: "Suspèn" -unsuspend: "Deixa de suspendre" -instances: "Instàncies" -remove: "Eliminar" +unsuspend: "Treu la suspensió" +instances: "Servidors" +remove: "Elimina" nsfw: "NSFW" -pinnedNotes: "Publicació fixada" +pinnedNotes: "Publicacions fixades" userList: "Llistes" smtpUser: "Nom d'usuari" smtpPass: "Contrasenya" -user: "Usuaris" +user: "Usuari" searchByGoogle: "Cercar" file: "Fitxers" _email: @@ -151,10 +151,9 @@ _mfm: intro: MFM és un llenguatge de marques utilitzat a Misskey, Calckey, Akkoma i més que es pot utilitzar en molts llocs. Aquí podeu veure una llista de tota la sintaxi MFM disponible. - hashtagDescription: Podeu especificar un hashtag mitjançant un signe de coixinet - i un text. + hashtagDescription: Podeu especificar una etiqueta mitjançant un coixinet i un text. url: URL - urlDescription: Es poden mostrar URL. + urlDescription: Es poden mostrar URLS. link: Enllaç linkDescription: Parts específiques del text es poden mostrar com a URL. bold: Negreta @@ -223,6 +222,12 @@ _mfm: scaleDescription: Escala el contingut en una quantitat especificada. foregroundDescription: Canvia el color de primer pla del text. plain: Pla + stop: Parar MFM + play: Posar en marxa MFM + warn: MFM pot contenir animacions cridaneres o que es mouen ràpidament + alwaysPlay: Reprodueix automàticament tots els MFM animats + fade: Esvair + fadeDescription: Esvaeix el contingut cap a dintre i cap en fora. _theme: keys: mention: "Menció" @@ -299,11 +304,11 @@ _theme: lighten: Clar install: Instal·lar un tema _sfx: - note: "Posts" + note: "Publicació nova" notification: "Notificacions" antenna: Antenes channel: Notificacions del canal - noteMy: Nota propia + noteMy: Publicació propia chat: Xat chatBg: Fons del xat _2fa: @@ -325,13 +330,13 @@ _widgets: timeline: "Línia de temps" unixClock: Rellotge UNIX federation: Federació - instanceCloud: Núvol d'instàncies + instanceCloud: Núvol de servidors trends: Tendència clock: Rellotge calendar: Calendari activity: Activitat photos: Fotos - rssTicker: Ticker RSS + rssTicker: Teletip RSS onlineUsers: Usuaris en línia memo: Notes adhesives digitalClock: Rellotge digital @@ -352,7 +357,7 @@ _cw: chars: '{count} caràcters' _visibility: followers: "Seguidors" - publicDescription: La teva nota serà visible per a tots els usuaris + publicDescription: La teva publicació serà visible per a tots els usuaris localOnly: Només Local specified: Directe home: Sense llistar @@ -614,8 +619,8 @@ _pages: textareaInput: Entrada de text multilínia numberInput: Entrada numèrica _note: - id: ID de la nota - idDescription: També podeu enganxar l'URL de la nota aquí. + id: ID de la publicació + idDescription: També podeu enganxar l'URL de la publicació aquí. detailed: Vista detallada switch: Canviar canvas: Llenç @@ -623,7 +628,7 @@ _pages: id: Identificador de llenç width: Amplada height: Alçada - note: Nota incrustada + note: Publicació incrustada _counter: name: Nom de la variable text: Títol @@ -709,6 +714,9 @@ _notification: pollEnded: Es resultat de la enquesta ja està disponible emptyPushNotificationMessage: Les notificacions push s'han actualitzat youWereInvitedToGroup: "{userName} t'ha convidat a un grup" + reacted: Ha reaccionat a la teva publicació + renoted: Ha impulsat la teva publicació + voted: Ha votat a la teva enquesta _deck: _columns: notifications: "Notificacions" @@ -739,171 +747,169 @@ _deck: swapLeft: Canvia amb la columna de l'esquerra renameProfile: Canvia el nom de l'espai de treball nameAlreadyExists: Aquest nom d'espai de treball ja existeix. -blockConfirm: Estás segur que vols bloquejar aquest compte? -unsuspendConfirm: Estás segur que vols treure la suspensió d'aquesta compte? -unblockConfirm: Estás segur que vols treure el bloqueig d'aquesta compte? -suspendConfirm: Estás segur que vols suspendre aquesta compte? +blockConfirm: Segur que vols bloquejar aquest compte? +unsuspendConfirm: Segur que vols treure la suspensió d'aquest compte? +unblockConfirm: Segur que vols treure el bloqueig d'aquest compte? +suspendConfirm: Segur que vols suspendre aquest compte? selectList: Selecciona una llista selectAntenna: Selecciona una antena selectWidget: Selecciona un giny -editWidgets: Edita ginys +editWidgets: Edita els ginys editWidgetsExit: Fet -customEmojis: Emoji personalitzat -cacheRemoteFilesDescription: Quant aquesta opció es deshabilitada, els fitxers remots - es carregant directament de l'instància remota. Deshabilitar això farà que baixi - l'ús d'emmagatzematge, però incrementa el tràfic, perquè les previsualitzacions - no es generarán. -flagAsBot: Marca aquest compte com un bot +customEmojis: Emojis personalitzats +cacheRemoteFilesDescription: Quan aquesta opció està desactivada, els fitxers remots + es carreguen directament del servidor remot. Desactivar-la farà que baixi l'ús d'emmagatzematge, + però incrementa el tràfic, perquè les miniatures no es generaran. +flagAsBot: Marca aquest compte com a bot flagAsBotDescription: Activa aquesta opció si aquest compte és controlat per un programa. - Si s'activa, això actuarà com una bandera per a altres desenvolupadors i prevenir - cadenes de interaccions infinites amb altres bots a més d'ajustar els sistemes interns - de Calckey per tractar aquest compte com un bot. + Si s'activa, això actuarà com una bandera per a altres desenvolupadors i ajuda a + prevenir cadenes de interaccions infinites amb altres bots a més d'ajustar els sistemes + interns de Calckey per tractar aquest compte com un bot. flagAsCat: Ets un gat? 🐱 -flagShowTimelineReplies: Mostrar respostes a la línea de temps +flagShowTimelineReplies: Mostra respostes a la línia de temps flagAsCatDescription: Guanyaràs unes orelles de gat i parlares com un gat! -flagShowTimelineRepliesDescription: Mostrará respostes d'usuaris a notes d'altres - usuaris si s'activa. +flagShowTimelineRepliesDescription: Si s'activa, es mostraran les respostes d'usuaris + a publicacions d'altres usuaris. general: General autoAcceptFollowed: Aprova automàticament les peticions de seguiment d'usuaris que segueixes accountMoved: "L'usuari s'ha mogut a un compte nou:" -addAccount: Afegir compte +addAccount: Afegeix un compte loginFailed: No s'ha pogut iniciar sessió -showOnRemote: Veure a l'instància remota +showOnRemote: Mostra al servidor remot wallpaper: Fons de pantalla setWallpaper: Estableix fons de pantalla -removeWallpaper: Esborra fons de pantalla +removeWallpaper: Elimina el fons de pantalla followConfirm: Segur que vols seguir a l'usuari {name}? proxyAccount: Compte proxy proxyAccountDescription: Un compte proxy es un compte que actua com un seguidor remot per a usuaris sota determinades condicions. Per exemple, quant un usuari afegeix - un usuari remot a la llista, l'activitat de l'usuari remot no serà entregada a l'instància - si cap usuari local el segueix, així el compte proxy el seguirà. + un usuari remot a la llista, l'activitat de l'usuari remot no serà entregada al + servidor si cap usuari local el segueix, així el compte proxy el seguirà. host: Amfitrió selectUser: Selecciona un usuari latestStatus: Últim estat storageUsage: Ús del emmagatzematge -metadata: Metadata -withNFiles: '{n} fitxer(s)' +metadata: Metadades monitor: Seguiment software: Programari version: Versió -jobQueue: Cua de Feina -cpuAndMemory: CPU i Memòria +jobQueue: Cua de feina +cpuAndMemory: CPU i memòria network: Xarxa disk: Disc -instanceInfo: Informació de l'instància +instanceInfo: Informació del servidor statistics: Estadístiques -clearCachedFiles: Neteja memòria cau -clearQueueConfirmText: Qualsevol nota que continuï a la cua sense entrega no será - federada. Normalment aquesta operació no es necessària. +clearCachedFiles: Esborra la memòria cau +clearQueueConfirmText: Qualsevol publicació que continuï a la cua sense entregar no + será federada. Normalment aquesta operació no es necessària. clearCachedFilesConfirm: Segur que vols esborrar els fitxers remots de la memòria cau? blockedUsers: Usuaris blocats -noUsers: No hi han usuaris -editProfile: Editar perfil -noteDeleteConfirm: Segur que vols esborrar aquesta nota? +noUsers: No hi ha cap usuari +editProfile: Edita el perfil +noteDeleteConfirm: Segur que vols eliminar la publicació? pinLimitExceeded: No pots fixar més notes -muteAndBlock: Silenciats i Bloquejats +muteAndBlock: Silenciats i blocats mutedUsers: Usuaris silenciats done: Fet preview: Vista prèvia default: Per defecte -intro: La instalació de Calckey a acabat! Si us plau crea un compte d'usuari. -processing: Processant... -noCustomEmojis: No hi ha emoji -noJobs: No hi han feines +intro: La instal·lació de Calckey ha acabat! Crea un compte d'usuari d'administració. +processing: S'està processant +noCustomEmojis: No hi ha cap emoji +noJobs: No hi ha cap feina federating: Federant blocked: Bloquejat subscribing: Subscrivint publishing: Publicant notResponding: Sense resposta -instanceUsers: Usuaris d'aquesta instància -instanceFollowing: Seguint a l'instància -instanceFollowers: Seguidors de l'instància +instanceUsers: Usuaris d'aquest servidor +instanceFollowing: Seguint al servidor +instanceFollowers: Seguidors del servidor security: Seguretat newPasswordRetype: Torna a entrar la nova contrasenya more: Més! featured: Destacat -usernameOrUserId: Nom d'usuari o id d'usuari +usernameOrUserId: Nom o ID d'usuari noSuchUser: No s'ha trobat l'usuari -lookup: Cercar -attachFile: Afegeix un arxiu +lookup: Cerca +attachFile: Afegeix un fitxer currentPassword: Contrasenya actual newPassword: Nova contrasenya announcements: Anuncis imageUrl: URL de la imatge -removed: S'ha esborrat correctament -removeAreYouSure: Segur que vols esborrar "{x}"? -deleteAreYouSure: Segur que vols esborrar "{x}"? -resetAreYouSure: Restablir? Segur? -fromUrl: Des de URL -saved: Desat +removed: S'ha eliminat correctament +removeAreYouSure: Segur que vols eliminar «{x}»? +deleteAreYouSure: Segur que vols eliminar «{x}»? +resetAreYouSure: Segur que vols restablir? +fromUrl: Des d'una URL +saved: S'ha desat messaging: Xat -upload: Pujar -keepOriginalUploading: Desa imatge original +upload: Puja +keepOriginalUploading: Desa la imatge original keepOriginalUploadingDescription: Desa la imatge original pujada tal com es. Si es desactiva, es generarà una versió per mostrar en la web al pujar. -fromDrive: Des de Drive -uploadFromUrl: Puja des de una adreça URL +fromDrive: Des del Disc +uploadFromUrl: Puja des d'una adreça URL uploadFromUrlDescription: Adreça URL del fitxer que vols pujar uploadFromUrlRequested: Pujada demanada -noMoreHistory: S'ha acabat la historia -tos: Termes d'us -start: Començar -startMessaging: Comença un nou xat +noMoreHistory: No hi ha més historial +tos: Condicions d'ús +start: Comença +startMessaging: Comença una conversa manageGroups: Gestiona els grups nUsersRead: llegit per {n} agreeTo: Estic d'acord amb {0} activity: Activitat home: Inici -remoteUserCaution: L'informació d'usuaris remots pot estar incompleta. -themeForDarkMode: En Mode Fosc fes servir el tema +remoteUserCaution: La informació dels usuaris remots pot estar incompleta. +themeForDarkMode: Tema a fer servir en mode fosc light: Clar registeredDate: Data de registre dark: Fosc lightThemes: Temes clars -location: Lloc +location: Ubicació theme: Temes -themeForLightMode: En Mode Clar fes servir el tema +themeForLightMode: Tema a fer servir en mode clar drive: Disc selectFile: Tria un fitxer selectFiles: Tria fitxers darkThemes: Temes foscos -syncDeviceDarkMode: Sincronitza el Mode Fosc amb la configuració del teu dispositiu +syncDeviceDarkMode: Sincronitza el mode fosc amb la configuració del teu dispositiu fileName: Nom del fitxer createFolder: Crea una carpeta -renameFolder: Posa un nom nou a aquesta carpeta -deleteFolder: Esborra aquesta carpeta +renameFolder: Canvia-li el nom a la carpeta +deleteFolder: Elimina la carpeta selectFolder: Tria una carpeta selectFolders: Tria carpetes renameFile: Canvia el nom del fitxer folderName: Nom de la carpeta -inputNewFolderName: Escriu un nou nom per la carpeta +inputNewFolderName: Escriu un nom de carpeta nou addFile: Afegeix un fitxer emptyDrive: El teu Disc és buit emptyFolder: Aquesta carpeta és buida -unableToDelete: No es pot esborrar +unableToDelete: No es pot eliminar inputNewFileName: Escriu un nou nom per al fitxer -inputNewDescription: Escriu una nova descripció -circularReferenceFolder: La carpeta de destí es una subcarpeta de la carpeta que vols +inputNewDescription: Escriu una descripció nova +circularReferenceFolder: La carpeta de destí és una subcarpeta de la carpeta que vols moure. -hasChildFilesOrFolders: Degut a que aquesta carpeta no es buida, no es pot esborrar. +hasChildFilesOrFolders: Aquesta carpeta no es pot eliminar perquè no és buida. whenServerDisconnected: Quant es perd la conexió amb el servidor disconnectedFromServer: S'ha perdut la conexió al servidor reload: Torna a carregar avatar: Avatar -banner: Banner +banner: Bàner doNothing: Ignora reloadConfirm: Vols tornar a carregar la línea temporal? watch: Veure maintainerName: Administrador maintainerEmail: Correu electrònic de l'administrador -instanceName: Nom de l'instància -instanceDescription: Descripció de l'instància +instanceName: Nom del servidor +instanceDescription: Descripció del servidor today: Avui dayX: '{day}' -tosUrl: Adreça URL dels terminis d'ús +tosUrl: URL de les Condicions d'ús thisYear: Any thisMonth: Mes integration: Integracions @@ -920,48 +926,46 @@ pinnedPages: Pàgines fixades pinnedUsersDescription: Llista de noms d'usuaris per fixar a la pestanya "Explorar" Un nom per línea. pinnedPagesDescription: Introdueix la ruta a les pàgines que vols fixar a la página - principal d'aquesta instància, una ruta per línea. + principal d'aquest servidor, una ruta per línea. pinnedUsers: Usuaris fixats enableHcaptcha: Activa hCaptcha hcaptchaSiteKey: Clau del lloc hcaptchaSecretKey: Clau secreta recaptcha: reCAPTCHA -enableGlobalTimeline: Activa la línea de temps global +enableGlobalTimeline: Activa la línia de temps global disablingTimelinesInfo: Els Administradors i Moderadors sempre tenen accés a totes les líneas temporals, inclòs si hi són desactivades. showLess: Tanca -clearQueue: Neteja cua +clearQueue: Esborra la cua uploadFromUrlMayTakeTime: Pot trigar un temps fins que la pujada es completi. noThankYou: No, gràcies -addInstance: Afegeix una instància -emoji: Emoji -emojis: Emoji +addInstance: Afegeix un servidor +emoji: Emojis +emojis: Emojis emojiName: Nom del emoji -emojiUrl: URL del emoji -addEmoji: Afegir +emojiUrl: URL de l'emoji +addEmoji: Afegeix settingGuide: Configuració recomenada -searchWith: 'Buscar: {q}' +searchWith: 'Cerca: {q}' youHaveNoLists: No tens cap llista flagSpeakAsCat: Parla com un gat -selectInstance: Selecciona una instància -flagSpeakAsCatDescription: Les teves notes es transformaran en miols quant estiguis +selectInstance: Selecciona un servidor +flagSpeakAsCatDescription: Les teves publicacions es transformaran en miols quan estiguis en mode gat recipient: Destinatari(s) annotation: Comentaris -blockedInstances: Instàncies Bloquejades -blockedInstancesDescription: Llista les adreces de les instàncies que vols bloquejar. - Les instàncies de la llista no podrán comunicarse amb aquesta instància. -hiddenTags: Etiquetes Ocultes -hiddenTagsDescription: 'Enumereu els etiquetes (sense el #) de les etiquetes que voleu - ocultar de tendències i explorar. Les etiquetes ocultes encara es poden descobrir - per altres mitjans. Les instàncies bloquejades no es veuen afectades encara que - s''enumeren aquí.' -noInstances: No hi han instàncies +blockedInstances: Servidors bloquejats +blockedInstancesDescription: Llista les adreces dels servidors que vols bloquejar. + Els servidors de la llista no podrán comunicarse amb aquests servidors. +hiddenTags: Etiquetes amagades +hiddenTagsDescription: 'Enumereu les etiquetes (sense el #) que voleu ocultar de tendències + i explorar. Les etiquetes ocultes encara es poden descobrir per altres mitjans.' +noInstances: No hi ha cap servidor defaultValueIs: 'Per defecte: {value}' suspended: Suspès all: Tot changePassword: Canvia la contrasenya -clearQueueConfirmTitle: Segur que vols netejar la cua? +clearQueueConfirmTitle: Segur que vols esborrar la cua? retypedNotMatch: Els camps no coincideixen. normal: Normal monthX: '{month}' @@ -973,37 +977,37 @@ avoidMultiCaptchaConfirm: Fent servir diferents sistemes de Captcha pot causar i deixar-los activats fes clic a cancelar. antennas: Antenes enableEmojiReactions: Activa reaccions amb emojis -blockThisInstance: Bloqueja aquesta instància +blockThisInstance: Bloqueja aquest servidor registration: Registre showEmojisInReactionNotifications: Mostra els emojis a les notificacions de les reaccions -renoteMute: Silencia les renotas -renoteUnmute: Treu el silenci a les renotas -cacheRemoteFiles: Fitxers remots a la memoria cau +renoteMute: Silencia els impulsos +renoteUnmute: Treu el silenci als impulsos +cacheRemoteFiles: Fitxers remots a la memòria cau federation: Federació registeredAt: Registrat a latestRequestSentAt: Última petició enviada latestRequestReceivedAt: Última petició rebuda charts: Gràfics -perHour: Per Hora -perDay: Per Dia +perHour: Per hora +perDay: Per dia stopActivityDelivery: Para d'enviar activitats operations: Operacions -explore: Explorar -messageRead: Llegir +explore: Explora +messageRead: Llegit images: Imatges birthday: Aniversari yearsOld: '{age} anys' -copyUrl: Copiar l'adreça URL +copyUrl: Copia l'adreça URL rename: Renombrar unwatch: Deixa de veure -accept: Acceptar +accept: Accepta reject: Rebutja yearX: '{year}' pages: Pàgines disconnectService: Desconnectar connectService: Connectar enableLocalTimeline: Activa la línea de temps local -enableRecommendedTimeline: Activa la línea de temps de recomanats +enableRecommendedTimeline: Activa la línea de temps de recomanacions pinnedClipId: ID del clip que vols fixar hcaptcha: hCaptcha manageAntennas: Gestiona les Antenes @@ -1034,7 +1038,7 @@ notFoundDescription: No es pot trobar cap pàgina que correspongui a aquesta adr uploadFolder: Carpeta per defecte per pujar arxius cacheClear: Netejar la memòria cau markAsReadAllNotifications: Marca totes les notificacions com llegides -markAsReadAllUnreadNotes: Marca totes les publicacions com a llegides +markAsReadAllUnreadNotes: Marca totes les notes com a llegides markAsReadAllTalkMessages: Marca tots els missatges com llegits help: Ajuda inputMessageHere: Escriu aquí el missatge @@ -1053,7 +1057,7 @@ text: Text enable: Activar next: Següent retype: Torna a entrar -noteOf: Publicat per {user} +noteOf: Publicació de {user} inviteToGroup: Invitar a un grup quoteAttached: Cita quoteQuestion: Adjuntar com a cita? @@ -1078,7 +1082,7 @@ groupInvited: T'han invitat a un grup aboutX: Sobre {x} youHaveNoGroups: No tens grups disableDrawer: No facis servir els menús amb estil de calaix -noHistory: No ha historial disponible +noHistory: No hi ha historial disponible signinHistory: Historial d'inicis de sessió disableAnimatedMfm: Desactiva les animacions amb MFM doing: Processant... @@ -1103,8 +1107,8 @@ promotion: Promogut promote: Promoure numberOfDays: Nombre de dies objectStorageBaseUrl: Adreça URL base -hideThisNote: Amaga aquest article -showFeaturedNotesInTimeline: Mostra els articles destacats a la línea de temps +hideThisNote: Amaga aquesta publicació +showFeaturedNotesInTimeline: Mostra les notes destacades a les líneas de temps objectStorage: Emmagatzematge d'objectes useObjectStorage: Fes servir l'emmagatzema d'objectes expandTweet: Amplia el tuit @@ -1114,7 +1118,7 @@ leaveConfirm: Hi han canvis que no s'han desat. Els vols descartar? manage: Administració plugins: Afegits preferencesBackups: Preferències de còpies de seguretat -undeck: Treure el Deck +undeck: Treure el Taulell useBlurEffectForModal: Fes servir efectes de difuminació en les finestres modals useFullReactionPicker: Fes servir el selector de reaccions a tamany complert deck: Taulell @@ -1148,7 +1152,7 @@ regexpError: Error a la Expressió Regular regexpErrorDescription: 'Hi ha un error a la expressió regular a la línea {line} de la teva {tab} de paraules silenciades:' userSaysSomething: '{name} va dir alguna cosa' -instanceMute: Silenciar instàncies +instanceMute: Silenciar servidor logs: Registres copy: Copiar delayed: Retardat @@ -1166,22 +1170,22 @@ normalPassword: Contrasenya amb seguretat mitjana passwordNotMatched: No hi han coincidències useOsNativeEmojis: Fes servir els emojis per defecte del Sistema Operatiu joinOrCreateGroup: Fes que et convidin a un grup o crea el teu propi. -objectStorageBaseUrlDesc: "Es l'adreça URL que serveix com a referència. Específica\ - \ la adreça URL del CDN o Proxy si fas servir.\nPer fer servir S3 'https://.s3.amazonaws.com'\ - \ i per GCS o serveis semblants 'https://storage.googleapis.com/', etc." +objectStorageBaseUrlDesc: "Es l'adreça URL que serveix com a referència. Específica + la adreça URL del CDN o Proxy si fas servir.\nPer fer servir S3 'https://.s3.amazonaws.com' + i per GCS o serveis semblants 'https://storage.googleapis.com/', etc." height: Alçada large: Gran notificationSetting: Preferències de notificacions makeActive: Activar notificationSettingDesc: Tria el tipus de notificació que es veure. -notifyAntenna: Notificar noves articles -withFileAntenna: Només articles amb fitxers +notifyAntenna: Notificar noves notes +withFileAntenna: Només notes amb fitxers enableServiceworker: Activa les notificacions push per al teu navegador antennaUsersDescription: Escriu un nom d'usuari per línea -antennaInstancesDescription: Escriu la adreça d'una instància per línea +antennaInstancesDescription: Escriu la adreça d'un servidor per línea tags: Etiquetes antennaSource: Font de la antena -antennaKeywords: Paraules claus a escolta +antennaKeywords: Paraules claus a escoltar antennaExcludeKeywords: Paraules clau a excluir antennaKeywordsDescription: Separades amb espais per fer una condició AND i amb una línea nova per fer una condició OR. @@ -1200,16 +1204,16 @@ tapSecurityKey: Escriu la teva clau de seguretat nUsersMentioned: Esmentat per {n} usuari(s) securityKey: Clau de seguretat resetPassword: Restablir contrasenya -describeFile: Afegeix un subtítol -enterFileDescription: Entra un subtítol +describeFile: Afegeix una descripció +enterFileDescription: Entra una descripció author: Autor disableAll: Desactiva tots userSaysSomethingReason: '{name} va dir {reason}' display: Visualització channel: Canals create: Crear -useGlobalSetting: Fes servir els ajustos globals -useGlobalSettingDesc: Si s'activa, es faran servir els ajustos de notificacions del +useGlobalSetting: Fes servir els ajusts globals +useGlobalSettingDesc: Si s'activa, es faran servir els ajusts de notificacions del teu compte. Si es desactiva , es poden fer configuracions individuals. other: Altres menu: Menú @@ -1221,7 +1225,7 @@ inboxUrl: Adreça de la safata d'entrada addedRelays: Relés afegits serviceworkerInfo: Ha de estar activat per les notificacions push. poll: Enquesta -deletedNote: Article eliminat +deletedNote: Publicació esborrada disablePlayer: Tancar el reproductor de vídeo fileIdOrUrl: ID o adreça URL del fitxer behavior: Comportament @@ -1229,13 +1233,13 @@ regenerateLoginTokenDescription: Regenera el token que es fa servir de manera in durant l'inici de sessió. Normalment això no és necessari. Si es torna a genera el token, es tancarà la sessió a tots els dispositius. setMultipleBySeparatingWithSpace: Separa diferents entrades amb espais. -reportAbuseOf: Informa sobre {name} +reportAbuseOf: Informa d'un abús de {name} sample: Exemple abuseReports: Informes reportAbuse: Informe reporter: Informador reporterOrigin: Origen d'el informador -forwardReport: Envia l'informe a una instancia remota +forwardReport: Envia l'informe a un servidor remot abuseReported: El teu informe ha sigut enviat. Moltes gràcies. reporteeOrigin: Origen de l'informe send: Enviar @@ -1243,22 +1247,22 @@ abuseMarkAsResolved: Marcar l'informe com a resolt visibility: Visibilitat useCw: Amaga el contingut enablePlayer: Obre el reproductor de vídeo -yourAccountSuspendedDescription: Aquest compte ha sigut suspesa per no seguir els - termes de servei del servidor o quelcom similar. Contacte amb l'administrador si - vols conèixer la raó amb més detall. Si us plau no facis un compte nou. -invisibleNote: Article ocult +yourAccountSuspendedDescription: Aquest compte ha sigut suspès per no seguir els termes + de servei d'aquest servidor o quelcom similar. Contacte amb l'administrador si vols + conèixer la raó amb més detall. Si us plau no facis un compte nou. +invisibleNote: Publicació oculta enableInfiniteScroll: Carregar més de forma automàtica fillAbuseReportDescription: Si us plau omple els detalls sobre aquest informe. Si - es sobre un article en concret, si us plau inclou l'adreça URL. -forwardReportIsAnonymous: Com a informador a l'instància remota no es mostrarà el - teu compte, si no un compte anònim. + es sobre una publicació en concret, si us plau, inclou l'adreça URL. +forwardReportIsAnonymous: Com a informador el servidor remot no veure el teu compte, + si no un compte anònim. openInNewTab: Obrir en una pestanya nova openInSideView: Obrir a la vista lateral defaultNavigationBehaviour: Navegació per defecte editTheseSettingsMayBreakAccount: Si edites aquestes configuracions pots fer mal bé el teu compte. userSilenced: Aquest usuari ha sigut silenciat. -instanceTicker: Informació de notes de l'instància +instanceTicker: Informació de notes del servidor waitingFor: Esperant a {x} random: Aleatori system: Sistema @@ -1266,7 +1270,7 @@ switchUi: Interfície d'usuari createNewClip: Crear un clip nou unclip: Treure clip public: Públic -renotesCount: Nombre de re-notes fetes +renotesCount: Nombre d'impulsos fets sentReactionsCount: Nombre de reaccions fetes receivedReactionsCount: Nombre de reaccions rebudes pollVotesCount: Nombre de vots fets en enquestes @@ -1278,19 +1282,19 @@ driveUsage: Espai fet servir al Disk noCrawleDescription: No permetre que els buscadors guardin la informació de les pàgines de perfil, notes, Pàgines, etc. alwaysMarkSensitive: Marcar per defecte com a NSFW -lockedAccountInfo: Només si has configurat la visibilitat del compte per "Només seguidors" - les teves notes no serem visibles per a ningú, inclús si has d'aprovar els teus - seguiments manualment. +lockedAccountInfo: Si has configurat la visibilitat del compte per "Només seguidors" + les teves notes no seren visibles per a ningú més, inclús si has d'aprovar els teus + seguidors manualment. disableShowingAnimatedImages: No reproduir les imatges animades verificationEmailSent: S'ha enviat correu electrònic de verificació. Si us plau segueix les instruccions per completar la verificació. notSet: Sense especificar -emailVerified: Correu electrònic enviat +emailVerified: El correu electrònic s'ha verificat loadRawImages: Carregar les imatges originals en comptes de mostrar les miniatures noteFavoritesCount: Nombre de notes afegides a favorits useSystemFont: Fes servir la font per defecte del sistema contact: Contacte -clips: Clips +clips: Retalls experimentalFeatures: Característiques experimentals developer: Desenvolupador makeExplorableDescription: Si desactives aquesta funció el teu compte no sortirà a @@ -1314,7 +1318,7 @@ switchAccount: Canvia de compte enabled: Activat configure: Configurar noBotProtectionWarning: La protecció contra bots no està configurada. -ads: Anuncis +ads: Publicitat ratio: Ràtio global: Global sent: Enviat @@ -1327,7 +1331,7 @@ breakFollow: Suprimeix el seguidor makeReactionsPublicDescription: Això farà que la llista de totes les vostres reaccions passades sigui visible públicament. hide: Amagar -leaveGroupConfirm: Estàs segur que vols deixar "{nom}"? +leaveGroupConfirm: Estàs segur que vols deixar "{name}"? voteConfirm: Vols confirmar el teu vot per a "{choice}"? leaveGroup: Sortir del grup rateLimitExceeded: S'ha excedit el límit proporcionat @@ -1345,9 +1349,9 @@ adminCustomCssWarn: Aquesta configuració només s'ha d'utilitzar si sabeu què amb normalitat. Assegureu-vos que el vostre CSS funcioni correctament provant-lo a la configuració de l'usuari. showUpdates: Mostra una finestra emergent quan Calckey s'actualitzi -recommendedInstances: Instàncies recomanades -recommendedInstancesDescription: Instàncies recomanades separades per salts de línia - per aparèixer a la línia de temps recomanada. NO afegiu `https://`, NOMÉS el domini. +recommendedInstances: Servidors recomanats +recommendedInstancesDescription: Servidors recomanats separats per salts de línia + que apareixen a la línia de temps recomanada. NO afegiu `https://`, NOMÉS el domini. caption: Descripció Automàtica splash: Pantalla de Benvinguda swipeOnDesktop: Permet lliscar a l'estil del mòbil a l'escriptori @@ -1359,12 +1363,12 @@ replayTutorial: Repetició del tutorial migration: Migració moveAccountDescription: Aquest procés és irreversible. Assegureu-vos que hàgiu configurat un àlies per a aquest compte al vostre compte nou abans de moure's. Introduïu l'etiqueta - del compte amb el format @person@instance.com + del compte amb el format @persona@servidor.com moveToLabel: 'Compte al qual us moveu:' moveAccount: Mou el compte! moveFromDescription: Això establirà un àlies del vostre compte antic perquè pugueu passar d'aquest compte a aquest actual. Feu això ABANS de moure's del vostre compte - anterior. Introduïu l'etiqueta del compte amb el format @person@instance.com + anterior. Introduïu l'etiqueta del compte amb el format @persona@servidor.com _sensitiveMediaDetection: description: Redueix l'esforç de moderació del servidor mitjançant el reconeixement automàtic dels mitjans NSFW mitjançant l'aprenentatge automàtic. Això augmentarà @@ -1413,10 +1417,10 @@ _gallery: unlike: Elimina m'agrada like: M'agrada _forgotPassword: - contactAdmin: Aquesta instància no admet l'ús d'adreces de correu electrònic; poseu-vos - en contacte amb l'administrador de la instància per restablir la contrasenya. + contactAdmin: Aquest servidor no admet l'ús d'adreces de correu electrònic; poseu-vos + en contacte amb l'administrador del servidor per restablir la contrasenya. ifNoEmail: Si no heu utilitzat cap correu electrònic durant el registre, poseu-vos - en contacte amb l'administrador de la instància. + en contacte amb l'administrador del servidor. enterEmail: Introduïu l'adreça de correu electrònic que heu utilitzat per registrar-vos. A continuació, se li enviarà un enllaç amb el qual podeu restablir la vostra contrasenya. _plugin: @@ -1454,7 +1458,7 @@ _registry: silenced: Silenciat objectStorageUseSSL: Fes servir SSL yourAccountSuspendedTitle: Aquest compte està suspès -i18nInfo: Calckey està sent traduïts a diversos idiomes per voluntaris. Pots ajudar +i18nInfo: Calckey està sent traduït a diversos idiomes per voluntaris. Pots ajudar {link}. manageAccessTokens: Administrar tokens d'accés accountInfo: Informació del compte @@ -1477,8 +1481,8 @@ followersCount: Nombre de seguidors goBack: Enrera quitFullView: Sortí de la vista complerta addDescription: Afegeix una descripció -notSpecifiedMentionWarning: Aquesta nota conté mencions a usuaris no inclosos com - a destinataris +notSpecifiedMentionWarning: Aquesta publicació conté mencions a usuaris no inclosos + com a destinataris info: Sobre hideOnlineStatus: Amagar l'estat de conexió onlineStatus: Estat de conexió @@ -1486,7 +1490,7 @@ online: En línea offline: Desconectat notRecommended: No recomanat botProtection: Protecció contra Bots -instanceBlocking: Bloquejar/Silenciar Federació +instanceBlocking: Gestió de la federació selectAccount: Seleccionar un compte disabled: Desactivat quickAction: Accions ràpides @@ -1494,19 +1498,19 @@ administration: Administració switch: Canviar gallery: Galeria popularPosts: Pàgines populars -shareWithNote: Comparteix amb una nota +shareWithNote: Comparteix amb una publicació expiration: Data límit -memo: Memo +memo: Recordatori priority: Prioritat -high: Alt +high: Alta middle: Mitjana low: Baixa emailNotConfiguredWarning: L'adreça de correu electrònic no està definida. -instanceSecurity: Seguretat de la instància +instanceSecurity: Seguretat del servidor privateMode: Mode Privat -allowedInstances: Instàncies a la llista blanca -allowedInstancesDescription: Amfitrions d'instàncies a la llista blanca per a la federació, - cadascuna separat per una línia nova (només s'aplica en mode privat). +allowedInstances: Servidors a la llista blanca +allowedInstancesDescription: Llista blanca de Hosts amb qui federar, cadascún separat + per una línia nova (només s'aplica en mode privat). previewNoteText: Mostra la vista prèvia customCss: CSS personalitzat recommended: Recomanat @@ -1514,7 +1518,7 @@ seperateRenoteQuote: Botons d'impuls i de citació separats searchResult: Resultats de la cerca hashtags: Etiquetes troubleshooting: Resolució de problemes -learnMore: Aprèn més +learnMore: Més informació misskeyUpdated: Calckey s'ha actualitzat! translate: Tradueix translatedFrom: Traduït per {x} @@ -1530,14 +1534,14 @@ unread: Sense llegir controlPanel: Tauler de control manageAccounts: Gestionar comptes makeReactionsPublic: Estableix l'historial de reaccions com a públic -classic: Clàssic +classic: Centrat muteThread: Silenciar el fil ffVisibility: Visibilitat dels Seguiments/Seguidors incorrectPassword: Contrasenya incorrecta. clickToFinishEmailVerification: Feu clic a [{ok}] per completar la verificació del correu electrònic. overridedDeviceKind: Tipus de dispositiu -smartphone: Smartphone +smartphone: Telèfon intel·ligent tablet: Tauleta auto: Automàtic recentNHours: Últimes {n} hores @@ -1550,8 +1554,8 @@ remoteOnly: Només remotes failedToUpload: S'ha produït un error en la càrrega cannotUploadBecauseInappropriate: Aquest fitxer no s'ha pogut carregar perquè s'han detectat parts d'aquest com a potencialment NSFW. -cannotUploadBecauseNoFreeSpace: La pujada ha fallat a causa de la manca de capacitat - del Disc. +cannotUploadBecauseNoFreeSpace: La pujada ha fallat a causa de la manca d'espai al + Disc. enableAutoSensitive: Marcatge automàtic NSFW moveTo: Mou el compte actual al compte nou customKaTeXMacro: Macros KaTeX personalitzats @@ -1573,36 +1577,36 @@ unlikeConfirm: Vols treure el teu m'agrada? fullView: Vista complerta desktop: Escritori notesCount: Nombre de notes -confirmToUnclipAlreadyClippedNote: Aquesta nota ja és al clip "{name}". Vols treure'l - d'aquest clip? -driveFilesCount: Nombre de fitxers el Disk -silencedInstances: Instàncies silenciades -silenceThisInstance: Silencia la instància -silencedInstancesDescription: Llista amb els noms de les instàncies que vols silenciar. - Les comptes en les instàncies silenciades seran tractades com "Silenciades", només - poden fer sol·licitud de seguiments, i no poden mencionar comptes locals si no les - segueixen. Això no afectarà les instàncies silenciades. +confirmToUnclipAlreadyClippedNote: Aquesta publicació ja és al clip "{name}". La vols + treure d'aquest clip? +driveFilesCount: Nombre de fitxers al Disk +silencedInstances: Servidors silenciats +silenceThisInstance: Silencia el servidor +silencedInstancesDescription: Llista amb els noms dels servidors que vols silenciar. + Els comptes als servidors silenciats seran tractades com "Silenciades", només poden + fer sol·licituds de seguiments, i no poden mencionar comptes locals si no les segueixen. + Això no afectarà els servidoes bloquejats. objectStorageEndpointDesc: Deixa això buit si fas servir AWS, S3, d'una altre manera específica un "endpoint" com a '' o ':', depend del proveïdor que facis servir. objectStorageRegionDesc: Especifica una regió com a 'xx-east-1'. Si el teu proveïdor no distingeix entre regions, deixa això en buit o pots escriure 'us-east-1'. -userPagePinTip: Pots mostrar notes aquí escollint "Pin al perfil" dintre del menú - de cada nota. +userPagePinTip: Pots mostrar publicacions aquí escollint "Fixar al perfil" dintre + del menú de cada publicació. userInfo: Informació d'usuari hideOnlineStatusDescription: Amagant el teu estat en línea redueix la comoditat d'ús d'algunes característiques com ara la recerca. active: Actiu accounts: Comptes -postToGallery: Crea una nova nota a la galeria +postToGallery: Crea una publicació nova a la galeria secureMode: Mode segur (Recuperació Autoritzada) customCssWarn: Aquesta configuració només s'ha d'utilitzar si sabeu què fa. La introducció de valors indeguts pot provocar que el client deixi de funcionar amb normalitat. squareAvatars: Mostra avatars quadrats -secureModeInfo: Quan sol·liciteu des d'altres instàncies, no envieu de tornada sense +secureModeInfo: Quan es faci una solicitut d'altres servidors no contestar sense una prova. -privateModeInfo: Quan està activat, només les instàncies de la llista blanca es poden - federar amb les vostres instàncies. Totes les publicacions s'amagaran al públic. +privateModeInfo: Quan està activat, només els servidors a la llista blanca es poden + federar amb el vostre servidor. Totes les publicacions s'amagaran al públic. useBlurEffect: Utilitzeu efectes de desenfocament a la interfície d'usuari accountDeletionInProgress: La supressió del compte està en curs unmuteThread: Desfés el silenci al fil @@ -1610,22 +1614,22 @@ deleteAccountConfirm: Això suprimirà el vostre compte de manera irreversible. requireAdminForView: Heu d'iniciar sessió amb un compte d'administrador per veure-ho. enableAutoSensitiveDescription: Permet la detecció i el marcatge automàtics dels mitjans NSFW mitjançant Machine Learning sempre que sigui possible. Fins i tot si aquesta - opció està desactivada, és possible que estigui habilitada a tota la instància. + opció està desactivada, és possible que estigui habilitada a tot el servidor. localOnly: Només local -customKaTeXMacroDescription: "Configura macros per escriure expressions matemàtiques\ - \ fàcilment! La notació s'ajusta a les definicions de l'ordre LaTeX i s'escriu com\ - \ a \\newcommand{\\name}{content} o \\newcommand{\\name}[nombre d'arguments]{contingut}.\ - \ Per exemple, \\newcommand{\\add}[2]{#1 + #2} ampliarà \\add{3}{foo} a 3 + foo.\ - \ Els claudàtors que envolten el nom de la macro es poden canviar per claudàtors\ - \ rodons o quadrats. Això afecta els claudàtors utilitzats per als arguments. Es\ - \ pot definir una (i només una) macro per línia, i no podeu trencar la línia al\ - \ mig de la definició. Les línies no vàlides simplement s'ignoren. Només s'admeten\ - \ funcions de substitució de cadenes senzilles; La sintaxi avançada, com ara la\ - \ ramificació condicional, no es pot utilitzar aquí." +customKaTeXMacroDescription: "Configura macros per escriure expressions matemàtiques + fàcilment! La notació s'ajusta a les definicions de l'ordre LaTeX i s'escriu com + a \\newcommand{\\name}{content} o \\newcommand{\\name}[nombre d'arguments]{contingut}. + Per exemple, \\newcommand{\\add}[2]{#1 + #2} ampliarà \\add{3}{foo} a 3 + foo. Els + claudàtors que envolten el nom de la macro es poden canviar per claudàtors rodons + o quadrats. Això afecta els claudàtors utilitzats per als arguments. Es pot definir + una (i només una) macro per línia, i no podeu trencar la línia al mig de la definició. + Les línies no vàlides simplement s'ignoren. Només s'admeten funcions de substitució + de cadenes senzilles; La sintaxi avançada, com ara la ramificació condicional, no + es pot utilitzar aquí." objectStorageRegion: Regió objectStoragePrefix: Prefix objectStoragePrefixDesc: Els fitxers es guardaran dins de carpetes amb aquest prefix. -objectStorageEndpoint: Endpoint +objectStorageEndpoint: Extrem newNoteRecived: Hi han notes noves sounds: Sons listen: Escoltar @@ -1633,14 +1637,15 @@ none: Res showInPage: Mostrar a la página popout: Apareixa volume: Volum -objectStorageUseSSLDesc: Desactiva això si no fas servir HTTP per les connexions API +objectStorageUseSSLDesc: Desactiva això si no fas servir HTTPS per les connexions + API objectStorageUseProxy: Conectarse mitjançant un Proxy objectStorageUseProxyDesc: Desactiva això si no faràs servir un servidor Proxy per conexions API objectStorageSetPublicRead: Fixar com a "public-read" al pujar serverLogs: Registres del servidor deleteAll: Esborrar tot -showFixedPostForm: Mostrar el formulari de publicació al principi de la línea de temps +showFixedPostForm: Mostrar el formulari de notes al principi de la línia de temps unableToProcess: Aquesta operació no es pot acabar recentUsed: Fet servir fa poc install: Instal·lar @@ -1652,7 +1657,7 @@ installedDate: Data d'autorització details: Detalls chooseEmoji: Selecciona un emoji removeAllFollowingDescription: Fent això deixes de seguir tots els comptes de {host}. - Si us plau fes servir això sí, per exemple, l'instància deixa d'existir. + Si us plau fes servir això sí, per exemple, el servidor deixa d'existir. userSuspended: Aquest usuari ha sigut suspès. lastUsedDate: Data d'últim ús state: Estat @@ -1668,32 +1673,32 @@ disablePagesScript: Desactivar AiScript a les pàgines updateRemoteUser: Actualitzar la informació de l'usuari remot deleteAllFiles: Esborrar tots els fitxers deleteAllFilesConfirm: Segur que vols esborrar tots els fitxers? -removeAllFollowing: Deixar de seguir a tots els usuaris +removeAllFollowing: Deixar de seguir a tots els que segueixis accentColor: Color principal textColor: Color del text value: Valor -sendErrorReportsDescription: "Quant està activat, es compartirà amb els desenvolupadors\ - \ de Calckey quant aparegui un problema quan ajudarà a millorar la qualitat.\nAixò\ - \ inclourà informació com la versió del teu sistema operatiu, el navegador que estiguis\ - \ fent servir, la teva activitat a Calckey, etc." +sendErrorReportsDescription: "Quant està activat quant aparegui un error, es compartirà + amb els desenvolupadors de Calckey, que ajudarà a millorar la qualitat.\nAixò inclourà + informació com la versió del teu sistema operatiu, el navegador que estiguis fent + servir, la teva activitat a Calckey, etc." myTheme: El meu tema backgroundColor: Color de fons saveAs: Desa com... advanced: Avançat invalidValue: Valor invàlid. -createdAt: Dada de creació +createdAt: Data de creació updatedAt: Data d'actualització saveConfirm: Desa canvis? deleteConfirm: De veritat ho vols esborrar? -receiveAnnouncementFromInstance: Rep notificacions d'aquesta instància +receiveAnnouncementFromInstance: Rep notificacions d'aquest servidor emailNotification: Notificacions per correu electrònic publish: Publicar inChannelSearch: Buscar al canal useReactionPickerForContextMenu: Obrir el selector de reaccions al fer click esquerra typingUsers: L'{users} està escrivint oneDay: Un dia -instanceDefaultLightTheme: Tema de llum predeterminat per a tota la instància -instanceDefaultDarkTheme: Tema fosc predeterminat per a tota la instància +instanceDefaultLightTheme: Tema de llum predeterminat per a tot el servidor +instanceDefaultDarkTheme: Tema fosc predeterminat per tot el servidor instanceDefaultThemeDescription: Introduïu el codi del tema en format d'objecte. mutePeriod: Durada del silenci indefinitely: Permanentment @@ -1703,7 +1708,9 @@ oneWeek: Una setmana reflectMayTakeTime: Pot trigar una mica a reflectir-se. thereIsUnresolvedAbuseReportWarning: Hi ha informes sense resoldre. driveCapOverrideLabel: Canvieu la capacitat del disc per a aquest usuari -isSystemAccount: Un compte creat i operat automàticament pel sistema. +isSystemAccount: Aquest compte és creat i operat automàticament pel sistema. Si us + plau, no modereu, editeu, suprimiu o modifiqueu aquest compte de cap forma, o podria + trencar el vostre servidor. typeToConfirm: Introduïu {x} per confirmar deleteAccount: Suprimeix el compte document: Documentació @@ -1712,27 +1719,27 @@ sendPushNotificationReadMessage: Suprimeix les notificacions push un cop s'hagin sendPushNotificationReadMessageCaption: Es mostrarà una notificació amb el text "{emptyPushNotificationMessage}" durant un breu temps. Això pot augmentar l'ús de la bateria del vostre dispositiu, si escau. -showAds: Mostrar anuncis +showAds: Mostrar publicitat enterSendsMessage: Pren retorn al formulari del missatge per enviar (quant no s'activa es Ctrl + Return) -customMOTD: MOTD personalitzat (missatges de la pantalla d'inici) -customMOTDDescription: Missatges personalitzats per al MOTD (pantalla de presentació) - separats per salts de línia es mostraran aleatòriament cada vegada que un usuari +customMOTD: MOTD personalitzat (missatges de la pantalla de benvinguda) +customMOTDDescription: Missatges personalitzats per al MOTD (pantalla de benvinguda) + separats per salts de línia, es mostraran aleatòriament cada vegada que un usuari carrega/recarrega la pàgina. -customSplashIcons: Icones personalitzades de la pantalla d'inici (urls) -customSplashIconsDescription: La URL de les icones de pantalla de presentació personalitzades - separades per salts de línia es mostraran aleatòriament cada vegada que un usuari - carrega/recarrega la pàgina. Si us plau, assegureu-vos que les imatges estiguin - en una URL estàtica, preferiblement totes a la mida de 192 x 192. +customSplashIcons: Icones personalitzades de la pantalla de benvinguda (urls) +customSplashIconsDescription: Les URLS de les icones personalitzades a la pantalla + de benvinguda separades per salts de línia. Es mostraran aleatòriament cada vegada + que un usuari carrega/recarrega la pàgina. Si us plau, assegureu-vos que les imatges + estiguin en una URL estàtica, preferiblement amb imatges amb la de 192 x 192. moveFrom: Mou a aquest compte des d'un compte anterior moveFromLabel: 'Compte des del qual us moveu:' -migrationConfirm: "Esteu absolutament segur que voleu migrar el vostre compte a {account}?\ - \ Un cop ho feu, no podreu revertir-ho i no podreu tornar a utilitzar el vostre\ - \ compte amb normalitat.\nA més, assegureu-vos d'haver configurat aquest compte\ - \ actual com el compte del qual us moveu." +migrationConfirm: "Esteu absolutament segur que voleu migrar el vostre compte a {account}? + Un cop ho feu, no podreu revertir-ho i no podreu tornar a utilitzar el vostre compte + amb normalitat.\nA més, assegureu-vos d'haver configurat aquest compte actual com + el compte del qual us moveu." defaultReaction: Reacció d'emoji predeterminada per a notes sortints i entrants enableCustomKaTeXMacro: Activa les macros KaTeX personalitzades -noteId: ID de la nota +noteId: ID de la publicació _nsfw: respect: Amaga els mitjans NSFW ignore: No amagueu els mitjans NSFW @@ -1745,7 +1752,7 @@ reverse: Revés objectStorageBucket: Cubell objectStorageBucketDesc: Si us plau específica el nom del cubell que faràs servir al teu proveïdor. -clip: Clip +clip: Retall createNew: Crear una nova optional: Opcional jumpToSpecifiedDate: Vés a una data concreta @@ -1753,7 +1760,7 @@ showingPastTimeline: Ara es mostra un línea de temps antiga clear: Tornar markAllAsRead: Marcar tot com a llegit recentPosts: Pàgines recents -noMaintainerInformationWarning: La informació del responsable no està configurada. +noMaintainerInformationWarning: La informació de l'administrador no està configurada. resolved: Resolt unresolved: Sense resoldre filter: Filtre @@ -1762,14 +1769,14 @@ useDrawerReactionPickerForMobile: Mostra el selector de reaccions com a calaix a mòbil welcomeBackWithName: Benvingut de nou, {name} showLocalPosts: 'Mostra les notes locals a:' -homeTimeline: Línea de temps Local +homeTimeline: Línea de temps Inicial socialTimeline: Línea de temps Social -themeColor: Color del Ticker de la instància +themeColor: Color del Teletip del servidor size: Mida numberOfColumn: Nombre de columnes numberOfPageCache: Nombre de pàgines emmagatzemades a la memòria cau numberOfPageCacheDescription: L'augment d'aquest nombre millorarà la comoditat dels - usuaris, però provocarà més càrrega del servidor i més memòria per utilitzar-la. + usuaris, però provocarà més càrrega del servidor i utilitzarà més memòria. logoutConfirm: Vols tancar la sessió? lastActiveDate: Data d'últim ús statusbar: Barra d'estat @@ -1790,12 +1797,12 @@ pushNotification: Notificacions push subscribePushNotification: Activar les notificacions push unsubscribePushNotification: Desactivar les notificacions push pushNotificationAlreadySubscribed: Les notificacions push ja estan activades -pushNotificationNotSupported: El vostre navegador o instància no admet notificacions - automàtiques +pushNotificationNotSupported: El vostre navegador o servidor no admet notificacions + push license: Llicència indexPosts: Índex de notes -indexFrom: Índex a partir de l'identificador de notes (deixeu en blanc per indexar - cada publicació) +indexFrom: Índex a partir de l'ID de Publicacions +indexFromDescription: Deixeu en blanc per indexar cada publicació indexNotice: Ara indexant. Això probablement trigarà una estona, si us plau, no reinicieu el servidor durant almenys una hora. _instanceTicker: @@ -1817,13 +1824,15 @@ _channel: usersCount: '{n} Participants' following: Seguit notesCount: '{n} Notes' + nameAndDescription: Nom i descripció + nameOnly: Només nom _instanceMute: - instanceMuteDescription: Això silenciarà les notes o els impulsos de les instàncies - indicades, incloses les dels usuaris que responguin a un usuari des d'una instància - silenciada. - title: Amaga les notes de les instàncies de la llista. + instanceMuteDescription: Això silenciara les publicacions o els impulsos dels servidors + indicats, incloses les dels usuaris que responguin a un usuari des d'un servidor + silenciat. + title: Amaga les publicacions dels servidors a la llista. instanceMuteDescription2: Separar amb noves línies - heading: Llista d'instàncies que cal silenciar + heading: Llista de servidors que cal silenciar _ago: future: Futur justNow: Ara mateix @@ -1840,17 +1849,15 @@ _time: hour: Hora(s) day: Dia(s) _tutorial: - step5_4: La línea de temps Local de {icon} és on pots veure notes de tots els altres - usuaris en aquesta instància. - step5_2: La teva instància té activades {timelines} diferents. - step5_3: La línia de temps d'Inici {icon} és on pots veure notes dels comptes que - seguiu i de tots els altres en aquest cas. Si prefereixes que la teva línia de - temps d'inici només mostri notes dels comptes que seguiu, podeu canviar-ho fàcilment - a Configuració! - step5_6: La línia de temps de Recomanats {icon} és on pots veure les notes de les - instàncies que els administradors recomanen. - step5_7: La línia de temps Global {icon} és on pots veure les notes de totes les - altres instàncies connectades. + step5_4: La línea de temps Local {icon} és on pots veure les publicacions de tots + els altres usuaris d'aquest servidor. + step5_2: El teu servidor té activades {timelines} diferents. + step5_3: La línea de temps d'inici {icon} es on pots veure les publicacions dels + comptes que segueixes. + step5_6: La línia de temps de Recomanats {icon} és on pots veure les publicacions + dels servidors recomanen els administradors. + step5_7: La línia de temps Global {icon} és on pots veure les publicacions de tots + els servidors connectats. step6_1: Aleshores, què és aquest lloc? step6_4: Ara ves, explora i diverteix-te! step1_2: Anem a fer la configuració. Estaràs en funcionament en un tres i no res! @@ -1858,22 +1865,22 @@ _tutorial: step1_1: Benvingut! step2_1: En primer lloc, empleneu el vostre perfil. step4_1: Anem a treure't allà fora. - step5_5: La línea de temps Social {icon} és on només pots veure notes dels comptes - que segueixes. + step5_5: La línea de temps Social {icon} és una combinació de les línies de temps + d'Inici i Local. step6_3: Cada servidor funciona de diferents maneres, i no tots els servidors executen Calckey. Aquest sí que sí! És una mica complicat, però ho aconseguiràs en poc temps. step2_2: Proporcionar informació sobre qui sou facilitarà que altres puguin saber si volen veure les vostres notes o seguir-vos. step3_1: Ara toca seguir a algunes persones! - step3_2: "Les teves líneas de temps domèstiques i socials es basen en qui seguiu,\ - \ així que proveu de seguir un parell de comptes per començar.\nFeu clic al cercle\ - \ més situat a la part superior dreta d'un perfil per seguir-los." - step4_2: Per a la vostra primera nota, a algunes persones els agrada fer una nota - de {introduction} o un senzill "Hola món!" + step3_2: "Les teves líneas de temps domèstiques i socials es basen en qui seguiu, + així que proveu de seguir un parell de comptes per començar.\nFeu clic al cercle + més situat a la part superior dreta d'un perfil per seguir-los." + step4_2: A algunes persones els agrada fer una publicació de {introduction} o un + senzill "Hola món!" step5_1: Línies de temps, línies de temps a tot arreu! step6_2: Bé, no només t'has unit a Calckey. T'has unit a un portal al Fediverse, - una xarxa interconnectada de milers de servidors, anomenats "instàncies". + una xarxa interconnectada de milers de servidors. _permissions: "read:account": Consulta la informació del teu compte "read:blocks": Consulta la teva llista d'usuaris bloquejats @@ -1888,7 +1895,7 @@ _permissions: "write:blocks": Editar la llista d'usuaris bloquejats "write:notes": Redactar o suprimir notes "write:channels": Editar els teus canals - "read:gallery-likes": Consulta la llista de notes de la galeria que t'agraden + "read:gallery-likes": Consulta la llista de notes que t'agraden de la galeria "write:drive": Editar o suprimir fitxers i carpetes del Disc "read:favorites": Consulta la teva llista d'adreces d'interès "write:favorites": Editeu la teva llista d'adreces d'interès @@ -1896,13 +1903,13 @@ _permissions: "read:mutes": Consulta la teva llista d'usuaris silenciats "write:reactions": Edita les teves reaccions "write:votes": Vota en una enquesta - "write:pages": Editeu o suprimeix la teva pàgina + "write:pages": Edita o suprimeix la teva pàgina "write:page-likes": Editar les pàgines que t'agraden "read:user-groups": Consulta els teus grups d'usuaris "read:channels": Consulta els teus canals "read:gallery": Consulta la teva galeria "write:gallery": Edita la teva galeria - "write:gallery-likes": Edita la llista de notes de la galeria que t'agraden + "write:gallery-likes": Edita la llista de notes que t'agraden de la galeria "read:following": Consulta la informació sobre a qui segueixes "read:reactions": Consulta les teves reaccions "read:pages": Consulta la teva pàgina @@ -1937,8 +1944,8 @@ _postForm: b: Què passa al teu voltant? c: En què penses? a: Què et portes entre mans? - quotePlaceholder: Cita aquesta nota... - replyPlaceholder: Respon a aquesta nota... + quotePlaceholder: Cita aquesta publicació... + replyPlaceholder: Respon a aquesta publicació... channelPlaceholder: Publica en un canal... _charts: federation: Federació @@ -1985,11 +1992,11 @@ _wordMute: hard: Dur muteWordsDescription2: Envolta les paraules clau amb barres inclinades per utilitzar expressions regulars. - softDescription: Amaga les publicacions que compleixen les condicions establertes - de la línia de temps. - hardDescription: Evita que les publicacions que compleixin les condicions establertes - s'afegeixin a la línia de temps. A més, aquestes publicacions no s'afegiran a - la línia de temps encara que es modifiquin les condicions. + softDescription: Amaga les notes que compleixen les condicions establertes de la + línia de temps. + hardDescription: Evita que les notes que compleixin les condicions establertes s'afegeixin + a la línia de temps. A més, aquestes notes no s'afegiran a la línia de temps encara + que es modifiquin les condicions. mutedNotes: Notes silenciades _auth: shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al @@ -2017,25 +2024,43 @@ _antennaSources: users: Notes d'usuaris concrets userGroup: Notes d'usuaris d'un grup determinat userList: Notes d'una llista determinada d'usuaris - instances: Notes de tots els usuaris d'una instància + instances: Publicacions de tots els usuaris d'un servidor _relayStatus: requesting: Pendent accepted: Acceptat rejected: Rebutjat -_apps: - crossPlatform: Multiplataforma - mobile: Mòbil - firstParty: Primer partit - secondClass: Segona classe - thirdClass: Tercera classe - pwa: Instal·lar PWA - kaiteki: Kaiteki - milktea: Milktea - missLi: MissLi - mona: Mona - lesskey: Lesskey - firstClass: Primera classe - free: Gratuït - paid: Pagament - theDesk: TheDesk - apps: Aplicacions +deleted: Eliminat +editNote: Edita la nota +edited: Editat +findOtherInstance: Cercar un altre servidor +signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades, + però sempre podeu registrar-vos en un altre servidor. Si teniu un codi d'invitació + per a aquest servidor, introduïu-lo a continuació. +userSaysSomethingReasonQuote: '{name} ha citat una publicació que conté {reason}' +userSaysSomethingReasonReply: '{name} ha respost a una publicació que conté {reason}' +userSaysSomethingReasonRenote: '{name} ha impulsat una publicació que conté {reason}' +highlightCw: Ressalta el contingut de les publicacions advertides +apps: Aplicacions +sendModMail: Envia avís de moderació +preventAiLearning: Evita l'indexació dels bots +preventAiLearningDescription: Sol·liciteu que els models de llenguatge d'IA de tercers + no estudiïn el contingut que pengeu, com ara publicacions i imatges. +pwa: Instal·lar PWA +_experiments: + alpha: Alfa + beta: Beta + release: Publicà + enablePostEditing: Activà l'edició de publicacions + title: Experiments + postEditingCaption: Mostra l'opció perquè els usuaris editin les seves publicacions + existents mitjançant el menú d'opcions de publicació +noGraze: Si us plau, desactiva l'extensió del navegador "Graze for Mastodon", ja que + interfereix amb Calckey. +accessibility: Accessibilitat +jumpToReply: Vés a la resposta +newer: Més nou +older: Més antic +silencedWarning: S'està mostrant aquesta pàgina per què aquest usuari és d'un servidor + que l'administrador a silenciat, així que pot ser spam. +jumpToPrevious: Vés a l'anterior +cw: Avís de contingut diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index cb2f0a1df..8b502762f 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -1,7 +1,9 @@ ---- _lang_: "Čeština" headlineMisskey: "Síť propojená poznámkami" -introMisskey: "Vítejte! Misskey je otevřený a decentralizovaný microblogový servis.\n\"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. 📡\nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. 👍\nPojďte objevovat nový svět! 🚀" +introMisskey: "Vítejte! Calckey je otevřený a decentralizovaný microblogový servis.\n\ + \"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. \U0001F4E1\ + \nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. \U0001F44D\ + \nPojďte objevovat nový svět! \U0001F680" monthAndDay: "{day}. {month}." search: "Vyhledávání" notifications: "Oznámení" @@ -44,7 +46,8 @@ copyContent: "Zkopírovat obsah" copyLink: "Kopírovat odkaz" delete: "Smazat" deleteAndEdit: "Smazat a upravit" -deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji? Ztratíte tím všechny reakce, sdílení a odpovědi na ni." +deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji?\ + \ Ztratíte tím všechny reakce, sdílení a odpovědi na ni." addToList: "Přidat do seznamu" sendMessage: "Odeslat zprávu" copyUsername: "Kopírovat uživatelské jméno" @@ -63,9 +66,11 @@ import: "Importovat" export: "Exportovat" files: "Soubor(ů)" download: "Stáhnout" -driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Poznámky, ke kterým je tento soubor připojen, budou také smazány." +driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Soubor bude odstraněn\ + \ ze všech příspěvků, které ji obsahují jako přílohu." unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?" -exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš Disk až bude dokončen." +exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš\ + \ Disk až bude dokončen." importRequested: "Požádali jste o export. To může chvilku trvat." lists: "Seznamy" noLists: "Nemáte žádné seznamy" @@ -81,7 +86,8 @@ somethingHappened: "Jejda. Něco se nepovedlo." retry: "Opakovat" pageLoadError: "Nepodařilo se načíst stránku" serverIsDead: "Server neodpovídá. Počkejte chvíli a zkuste to znovu." -youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci klienta." +youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci\ + \ klienta." enterListName: "Jméno seznamu" privacy: "Soukromí" makeFollowManuallyApprove: "Žádosti o sledování vyžadují potvrzení" @@ -105,7 +111,8 @@ clickToShow: "Klikněte pro zobrazení" sensitive: "NSFW" add: "Přidat" reaction: "Reakce" -reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte \"+\" k přidání" +reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte\ + \ \"+\" k přidání" rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky" attachCancel: "Odstranit přílohu" markAsSensitive: "Označit jako NSFW" @@ -134,13 +141,18 @@ emojiUrl: "URL obrázku" addEmoji: "Přidat emoji" settingGuide: "Doporučené nastavení" cacheRemoteFiles: "Ukládání vzdálených souborů do mezipaměti" -cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště na serveru, ale zvýší se provoz, protože se negenerují miniatury." +cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory\ + \ budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště\ + \ na serveru, ale zvýší se provoz, protože se negenerují miniatury." flagAsBot: "Tento účet je bot" -flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím s ostatními boty a upraví Misskey systém aby se choval k tomuhle účtu jako bot." +flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost.\ + \ To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím\ + \ s ostatními boty a upraví Calckey systém aby se choval k tomuhle účtu jako bot." flagAsCat: "Tenhle účet je kočka" flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka." flagShowTimelineReplies: "Zobrazovat odpovědi na časové ose" -flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na poznámky jiných uživatelů na vaší časové ose." +flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na\ + \ poznámky jiných uživatelů na vaší časové ose." autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete" addAccount: "Přidat účet" loginFailed: "Přihlášení se nezdařilo." @@ -153,7 +165,10 @@ searchWith: "Hledat: {q}" youHaveNoLists: "Nemáte žádné seznamy" followConfirm: "Jste si jisti, že chcete sledovat {name}?" proxyAccount: "Proxy účet" -proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže místo toho bude uživatele sledovat účet proxy." +proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele\ + \ na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do\ + \ seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena\ + \ instanci, takže místo toho bude uživatele sledovat účet proxy." host: "Hostitel" selectUser: "Vyberte uživatele" recipient: "Pro" @@ -174,7 +189,6 @@ operations: "Operace" software: "Software" version: "Verze" metadata: "Metadata" -withNFiles: "{n} soubor(ů)" monitor: "Monitorovat" jobQueue: "Fronta úloh" cpuAndMemory: "CPU a paměť" @@ -189,7 +203,7 @@ blockedInstances: "Blokované instance" noUsers: "Žádní uživatelé" editProfile: "Upravit můj profil" pinLimitExceeded: "Nemůžete připnout další poznámky." -intro: "Instalace Misskey byla dokončena! Prosím vytvořte admina." +intro: "Instalace Calckey byla dokončena! Prosím vytvořte admina." done: "Hotovo" processing: "Zpracovávám" preview: "Náhled" @@ -239,7 +253,8 @@ agreeTo: "Souhlasím s {0}" tos: "Podmínky užívání" start: "Začít" home: "Domů" -remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené instance." +remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené\ + \ instance." activity: "Aktivita" images: "Obrázky" birthday: "Datum narození" @@ -332,7 +347,7 @@ recentlyUpdatedUsers: "Nedávno aktívni uživatelé" popularTags: "Populární tagy" userList: "Seznamy" about: "Informace" -aboutMisskey: "O Misskey" +aboutMisskey: "O Calckey" administrator: "Administrátor" token: "Token" twoStepAuthentication: "Dvoufaktorová autentikace" @@ -548,7 +563,8 @@ info: "Informace" unknown: "Neznámý" onlineStatus: "Online status" hideOnlineStatus: "Skrýt Váš online status" -hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu některých funkcí, například vyhledávání." +hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu\ + \ některých funkcí, například vyhledávání." online: "Online" active: "Aktivní" offline: "Offline" @@ -928,3 +944,66 @@ _deck: antenna: "Antény" list: "Seznamy" mentions: "Zmínění" +noteDeleteConfirm: Chcete opravdu smazat tento příspěvek? +defaultValueIs: 'Výchozí: {value}' +lookup: Hledat +keepOriginalUploading: Ponechat originální obrázek +uploadFromUrlRequested: Vyžádáno nahrání souboru +manageGroups: Spravovat skupiny +reloadConfirm: Znovu načíst časovou osu? +driveCapacityPerRemoteAccount: Místo na disku pro vzdálené uživatele +silenceThisInstance: Ztlumit tuto instance +silencedInstances: Ztlumené instance +blockedInstancesDescription: Zadejte seznam domén instancí, jež chcete blokovat. Uvedené + instance nebudou moci s touto instancí komunikovat. +hiddenTags: Skryté hashtagy +noInstances: Nejsou zde žádné instance +silenced: Ztlumené +disablingTimelinesInfo: Administrátoři a moderátoři budou vždy mít přístup ke všem + časovým osám, i pokud jsou vypnuté. +deleted: Vymazáno +editNote: Upravit poznámku +edited: Upraveno +silencedInstancesDescription: Vypište hostnames instancí, které chcete ztlumit. Účty + v uvedených instancích jsou považovány za "ztlumené", mohou pouze zadávat požadavky + na sledování a nemohou zmiňovat místní účty, pokud nejsou sledovány. Na blokované + instance toto nebude mít vliv. +hiddenTagsDescription: 'Vypište hashtagy (bez #), které chcete skrýt před trendy a + prozkoumat. Skryté hashtagy jsou stále zjistitelné jinými způsoby. Blokované případy + nejsou ovlivněny, i když jsou zde uvedeny.' +circularReferenceFolder: Cílová složka je podsložka přesouvané složky. +whenServerDisconnected: Při ztrátě spojení se serverem +pinnedUsersDescription: Uveďte uživatelská jména uživatelů připnutých na stránce "Procházet", + jedno na řádek. +pinnedPagesDescription: Zadejte cesty ke stránkám, které chcete připnout na horní + stránku této instance, oddělené zlomy řádků. +pageLoadErrorDescription: Toto je obvykle způsobeno chybami sítě nebo mezipaměti prohlížeče. + Zkuste vymazat mezipaměť a po chvíli čekání to zkuste znovu. +emptyDrive: Váš disk je prázdný +inputNewDescription: Zadejte nový popisek +hasChildFilesOrFolders: Složka nemůže být smazána, protože není prázdná. +noThankYou: Ne, děkuji +addInstance: Přidat instance +selectInstance: Vybrat si instance +blockedUsers: Zablokovaní uživatelé +muteAndBlock: Ztlumení a blokace +noJobs: Žádné úlohy +federating: Federace +clearQueueConfirmText: Nedoručené příspěvky, které zůstanou ve frontě, nebudou federovány. + Obvykle tato operace není potřeba. +clearCachedFilesConfirm: Chcete opravdu vymazat mezipaměť všech vzdálených souborů? +accountMoved: 'Uživatel/ka se přesunul/a na nový účet:' +keepOriginalUploadingDescription: Ponechá originálně nahraný obrázek tak, jak je. + Pokud vypnuto, verze pro zobrazení na webu bude vygenerována při nahrání. +mutedUsers: Ztlumení uživatelé +enableRecommendedTimeline: Povolit doporučenou časovou osu +driveCapacityPerLocalAccount: Místo na disku pro místní uživatele +pinnedPages: Připnuté Stránky +directNotes: Přímé zprávy +enableEmojiReactions: Povolit reakce pomocí emoji +showEmojisInReactionNotifications: Zobrazit emotikony v oznámeních o reakcích +reactionSetting: Reakce, které se mají zobrazit v seznamu reakcí +renoteMute: Ztlumit přeposílání +renoteUnmute: Zrušit ztlumení přeposílání +flagSpeakAsCat: Mluvit jako kočka +flagSpeakAsCatDescription: Vaše příspěvky budou v kočičím režimu nyanifikovány. diff --git a/locales/da-DK.yml b/locales/da-DK.yml index 08c15ed09..878273c65 100644 --- a/locales/da-DK.yml +++ b/locales/da-DK.yml @@ -1,2 +1,218 @@ ---- _lang_: "Dansk" +monthAndDay: '{month}/{day}' +search: Søge +notifications: Notifikationer +username: Brugernavn +password: Adgangskode +forgotPassword: Glemt adgangskode +fetchingAsApObject: Henter fra Fediverset +ok: OK +gotIt: Forstået! +cancel: Annullere +enterUsername: Indtast brugernavn +instance: Instans +renotedBy: Forstærket fra {user} +noNotes: Ingen opslag +otherSettings: Andre Indstillinger +profile: Profil +timeline: Tidslinje +signup: Registrere +logout: Log Ud +login: Log ind +uploading: Uploader... +save: Gem +users: Brugere +favorited: Tilsat til bogmærker. +unfavorite: Fjerne fra bogmærker +alreadyFavorited: Allerede inden i bogmærker. +pin: Fastgøre til profil +unpin: Løse fra profil +delete: Slet +addToList: Tilsæt til liste +deleteAndEdit: Slet og ændre +reply: Svar +loadMore: Indlæs mere +receiveFollowRequest: Følgeanmodning er blevet sendt +import: Importere +export: Eksportere +driveFileDeleteConfirm: Er du sikker på at du vil slette filen "{name}"? Denne vil + blive slettet fra alle tilknyttede opslage. +unfollowConfirm: Er du sikker på at du vil ikke følge {name} længere? +privacy: Privatlivs +enterListName: Indtast navnen for denne list +makeFollowManuallyApprove: Følgeanmodninger kræver godkendelse +unrenote: Fratag forstærkelse +renote: Forstærk +add: Tilsæt +reactionSetting: Reaktioner til at vise i reaktion-vælgeren +reactionSettingDescription2: Bevæg til at flytte om på, tryk til at slette og indtast + "+" til at tilsætte. +rememberNoteVisibility: Husk opslagsynlidhedsindstillinger +emojis: Emoji +flagShowTimelineReplies: Vis svare i tidslinjen +flagAsCatDescription: Du kommer til at få katøre og tale som en kat! +showOnRemote: Vis på fjerninstans +general: Generelt +accountMoved: 'Bruger har flyttet til et nyt konto:' +settings: Indstillinger +basicSettings: Primær Indstillinger +openInWindow: Åben i vindue +noAccountDescription: Denne bruger har ikke skrevet deres bio endnu. +loggingIn: Logger ind +cantFavorite: Kunne ikke tilsætte til bogmærker. +copyUsername: Kopi brugernavn +copyContent: Kopi indholdet +copyLink: Kopi link +searchUser: Søg for en bruger +files: Filer +noLists: Du har ingen liste +lists: Lister +reaction: Reaktioner +sensitive: NSFW +emoji: Emoji +cacheRemoteFilesDescription: Når denne indstilling er deaktiveret, fremmed filer bliver + indlæset direkte fra denne fjerneinstans. Hvis du deaktivere dette så vil det formindske + brugte opbevaringsplads men det vil også få netværktraffic til at stige fordi miniaturebilleder + vil ikke blive skabt. +flagAsBot: Markere denne konto som en robot +flagShowTimelineRepliesDescription: Vis svare af brugere til opslage af andre brugere + i tidslinjen hvis den bliver tændt. +loginFailed: Kunne ikke logge ind +silenceThisInstance: Nedtone denne instans +deleteAndEditConfirm: Er du sikker på at du vil slet denne opslag og ændre det? Du + vil tabe alle reaktioner, forstærkninger og svarer indenfor denne opslag. +editNote: Ændre note +deleted: Slettet +edited: Ændret +sendMessage: Send en besked +youShouldUpgradeClient: Til at vise denne side, vær sød at refresh til at opdatere + din brugerenhed. +defaultNoteVisibility: Standard synlighed +follow: Følge +followRequest: Følge +followRequests: Følgeanmodninger +unfollow: Følge ikke længere +followRequestPending: Følgeanmodning ventes på +enterEmoji: Indtast en emoji +renoted: Forstærket. +cantRenote: Denne opslag kunne ikke forstærkes. +cantReRenote: En forstærkelse kan ikke forstærkes. +quote: Citere +pinnedNote: Fastgjort opslag +pinned: Fastgøre til profil +you: Dig +clickToShow: Tryk til at vise +unblock: Blokere ikke længere +suspend: Suspendere +unsuspend: Suspendere ikke længere +blockConfirm: Er du sikker på at du vil blokere denne konto? +unblockConfirm: Er du sikker på at du vil ikke blokere denne konto endnu længere? +suspendConfirm: Er du sikker på at du vil suspendere denne konto? +selectAntenna: Vælg en antenne +selectWidget: Vælg en widget +editWidgets: Ændre widgettere +customEmojis: Brugerdefineret emoji +emojiName: Emoji navn +operations: Operationer +software: Software +metadata: Metadata +version: Version +monitor: Vagt +jobQueue: Jobkø +statistics: Statistik +cpuAndMemory: CPU og hukommelse +network: Netværk +disk: Disk +instanceInfo: Instans information +noThankYou: Nej tak +noNotifications: Intet notifikationer +addUser: Indsæt en bruger +addInstance: Indsæt en instans +favorite: Indsæt til bogmærker +favorites: Bogmærker +showMore: Vis mere +showLess: Luk +youGotNewFollower: følgte dig +followRequestAccepted: Følgeanmodning accepteret +mention: Nævne +mentions: Nævnene +directNotes: Direkt beskeder +importAndExport: Importere/Eksporter data +download: Download +exportRequested: Du har bedt om en eksport. Det vil tage noget tid. Den vil blive + tilsæt til din Drev når den er færdig. +importRequested: Du har bedt om en eksport. Det vil tage noget tid. +note: Opslag +notes: Opslage +following: Følger +followers: Følgere +followsYou: Følger dig +createList: Skab en list +manageLists: Administrere lister +error: Fejl +somethingHappened: En fejl har opstået +retry: Gentage +pageLoadError: En fejl har opstået ved indlæsning af siden. +pageLoadErrorDescription: Dette er normalt på grund af netværksproblemer eller din + browser's cache. Prøv at ryd cachen og så gentage efter et styk tid. +serverIsDead: Serveren svarer ikke. Vær sød at vente et styk tid og prøv igen. +editWidgetsExit: Færdig +headlineMisskey: En åben-kildekode, decentraliseret social-media platform som er frit + forevigt! 🚀 +introMisskey: Velkommen! Calckey er en åbent-kildekode, decentraliseret social-media + platform som er frit forevigt!🚀 +enableEmojiReactions: Aktivere emoji reaktioner +unsuspendConfirm: Er du sikker på at du vil ikke suspendere denne konto endnu længere? +selectList: Vælg en list +showEmojisInReactionNotifications: Vis emoji i reaktion notifikationer +attachCancel: Fjern tilknyttelse +markAsSensitive: Markere som NSFW +unmarkAsSensitive: Markere ikke som NSFW længere +enterFileName: Indtast filnavn +mute: Nedtone +unmute: Nedtone ikke længere +renoteMute: Nedtone forstærkninger +renoteUnmute: Nedtone forstærkninger ikke længere +block: Blokere +cacheRemoteFiles: Cachere fremmed filer +flagAsBotDescription: Aktivere denne valgmulighed hvis denne konto er kontrolleret + af en komputerprogram. Hvis den et tændt så vil det signalere til andre udviklere + som arbejder på komputer-kontrolleret social-media kontoer og det vil også adjustere + Calckey's indresystemer til at behandle denne konto som en robot. +flagAsCat: Er du en kat? 😺 +flagSpeakAsCat: Tale som en kat +emojiUrl: Emoji URL +addEmoji: Tilsæt +settingGuide: Anbefalet indstillinger +flagSpeakAsCatDescription: Din opslage vil blive nyaniferet når du er i kat-mode +autoAcceptFollowed: Automatisk godkende følgeanmodninger fra brugere som du selv følger +addAccount: Tilsæt konto +wallpaper: Baggrund +setWallpaper: Sæt baggrund +removeWallpaper: Fjern baggrund +host: Host +selectUser: Vælg en bruger +searchWith: 'Søge: {q}' +youHaveNoLists: Du har ingen liste +followConfirm: Er du sikker på at du vil gerne følge {name}? +proxyAccount: Proxykonto +proxyAccountDescription: En proxykonto er en konto som virker som en fremmed følger + for bruger under særlige konditioner. For eksempel, når en bruger tilsætter en fjernbruger + til denne list, vil denne fjernbruger's aktivitet ikke blive leveret til den instans + hvis ingen lokalebruger følger fjernbrugeren, så denne proxykonto vil følge den + istedetfor. +instances: Instanser +registeredAt: Registreret på +latestRequestSentAt: Sidste anmodning sendt +latestRequestReceivedAt: Sidste anmodning modtaget +selectInstance: Vælg en instans +recipient: Recipient(er) +annotation: Kommentarer +federation: Føderation +latestStatus: Senest status +storageUsage: Opbevaringspladsbrug +charts: Grafer +perHour: Hver time +perDay: Hver dag +stopActivityDelivery: Stop med at sende aktiviteter +blockThisInstance: Blokere denne instans diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 81098fe3f..45edbe045 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1,309 +1,307 @@ _lang_: "Deutsch" -headlineMisskey: "Ein durch Posts verbundenes Netzwerk" -introMisskey: "Willkommen! Calckey ist eine dezentralisierte Open-Source Microblogging-Platform.\n\ - Verfasse „Posts“ um mitzuteilen, was gerade passiert oder um Ereignisse mit anderen\ - \ zu teilen. \U0001F4E1\nMit „Reaktionen“ kannst du außerdem schnell deine Gefühle\ - \ über Posts anderer Benutzer zum Ausdruck bringen. \U0001F44D\nEine neue Welt wartet\ - \ auf dich! \U0001F680" +headlineMisskey: "Eine dezentralisierte Open-Source Social Media Plattform, die für + immer gratis bleibt! 🚀" +introMisskey: "Willkommen! Calckey ist eine dezentralisierte Open-Source Social Media + Plattform, die für immer gratis bleibt!🚀" monthAndDay: "{day}.{month}." search: "Suchen" notifications: "Benachrichtigungen" -username: "Benutzername" +username: "Nutzername" password: "Passwort" forgotPassword: "Passwort vergessen" fetchingAsApObject: "Wird aus dem Fediverse angefragt" ok: "OK" gotIt: "Verstanden!" cancel: "Abbrechen" -enterUsername: "Benutzername eingeben" -renotedBy: "Renote von {user}" -noNotes: "Keine Notizen gefunden" -noNotifications: "Keine Benachrichtigungen gefunden" -instance: "Instanz" +enterUsername: "Nutzername eingeben" +renotedBy: "Geteilt von {user}" +noNotes: "Keine Beiträge" +noNotifications: "Keine Benachrichtigungen" +instance: "Server" settings: "Einstellungen" -basicSettings: "Allgemeine Einstellungen" +basicSettings: "Grundeinstellungen" otherSettings: "Weitere Einstellungen" openInWindow: "In einem Fenster öffnen" profile: "Profil" -timeline: "Chronik" -noAccountDescription: "Dieser Nutzer hat seine Profilbeschreibung noch nicht ausgefüllt" +timeline: "Timelines" +noAccountDescription: "Dieser Nutzer hat seine Profilbeschreibung noch nicht ausgefüllt." login: "Anmelden" -loggingIn: "Du wirst angemeldet …" +loggingIn: "Du wirst angemeldet" logout: "Abmelden" signup: "Registrieren" uploading: "Wird hochgeladen …" save: "Speichern" -users: "Benutzer" -addUser: "Benutzer hinzufügen" -favorite: "Zu Favoriten hinzufügen" -favorites: "Favoriten" -unfavorite: "Aus Favoriten entfernen" -favorited: "Zu Favoriten hinzugefügt." -alreadyFavorited: "Bereits zu den Favoriten hinzugefügt." -cantFavorite: "Hinzufügen zu Favoriten fehlgeschlagen." +users: "Nutzer" +addUser: "Nutzer hinzufügen" +favorite: "Zu den Lesezeichen hinzufügen" +favorites: "Lesezeichen" +unfavorite: "Aus den Lesezeichen entfernen" +favorited: "Zu den Lesezeichen hinzugefügt." +alreadyFavorited: "Bereits zu den Lesezeichen hinzugefügt." +cantFavorite: "Hinzufügen zu den Lesezeichen fehlgeschlagen." pin: "An dein Profil anheften" unpin: "Von deinem Profil lösen" copyContent: "Inhalt kopieren" copyLink: "Link kopieren" delete: "Löschen" deleteAndEdit: "Löschen und Bearbeiten" -deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle\ - \ Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen." +deleteAndEditConfirm: "Möchtest du diesen Beitrag wirklich löschen und bearbeiten? + Alle Rückmeldungen, Renotes und Antworten dieses Beitrages werden verloren gehen." addToList: "Zu Liste hinzufügen" -sendMessage: "Nachricht senden" -copyUsername: "Benutzernamen kopieren" -searchUser: "Nach einem Benutzer suchen" +sendMessage: "Eine Mitteilung senden" +copyUsername: "Nutzernamen kopieren" +searchUser: "Nach einem Nutzer suchen" reply: "Antworten" loadMore: "Mehr laden" showMore: "Mehr anzeigen" showLess: "Schließen" -youGotNewFollower: "ist dir gefolgt" +youGotNewFollower: "folgt dir" receiveFollowRequest: "Follow-Anfrage erhalten" followRequestAccepted: "Follow-Anfrage akzeptiert" mention: "Erwähnung" mentions: "Erwähnungen" -directNotes: "Direktnachrichten" -importAndExport: "Import und Export" +directNotes: "Direktmitteilungen" +importAndExport: "Daten Im- und Export" import: "Import" export: "Export" files: "Dateien" download: "Herunterladen" -driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Notizen\ - \ mit dieser Datei werden ebenso verschwinden." -unfollowConfirm: "Möchtest du {name} nicht mehr folgen?" -exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch\ - \ nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt." -importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch\ - \ nehmen." +driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Es wird + aus allen Beiträgen entfernt, die die Datei als Anhang enthalten." +unfollowConfirm: "Bist du dir sicher, daß du {name} nicht mehr folgen möchtest?" +exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch + nehmen. Sobald der Export abgeschlossen ist, wird er deinem Laufwerk hinzugefügt." +importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch + nehmen." lists: "Listen" -noLists: "Keine Listen gefunden" -note: "Notiz" -notes: "Notizen" -following: "Folgt" -followers: "Gefolgt von" +noLists: "Du hast keine Listen angelegt" +note: "Beitrag" +notes: "Beiträge" +following: "Folge ich" +followers: "Folgen mir" followsYou: "Folgt dir" createList: "Liste erstellen" manageLists: "Listen verwalten" error: "Fehler" somethingHappened: "Ein Fehler ist aufgetreten" retry: "Wiederholen" -pageLoadError: "Die Seite konnte nicht geladen werden." -pageLoadErrorDescription: "Dieser Fehler wird meist durch Netzwerkfehler oder den\ - \ Browser-Cache verursacht. Bitte leere den Cache oder versuche es nach einiger\ - \ Zeit erneut." -serverIsDead: "Dieser Server antwortet nicht. Bitte warte einen Moment und versuche\ - \ es dann erneut." -youShouldUpgradeClient: "Bitte aktualisiere diese Seite, um eine neuere Version deines\ - \ Clients zu verwenden." -enterListName: "Listennamen eingeben" +pageLoadError: "Beim Laden der Seite ist ein Fehler aufgetreten." +pageLoadErrorDescription: "Dies wird in der Regel durch Netzwerkfehler oder den Cache + des Browsers verursacht. Versuchen Sie, den Cache zu leeren, und versuchen Sie es + dann erneut, nachdem Sie eine Weile gewartet haben." +serverIsDead: "Der Server antwortet nicht. Bitte warte einen Moment und versuche es + dann erneut." +youShouldUpgradeClient: "Bitte aktualisiere diese Seite, um eine neuere Version deines + Clients zu verwenden." +enterListName: "Gib einen Namen für die Liste ein" privacy: "Privatsphäre" -makeFollowManuallyApprove: "Follow-Anfragen benötigen Bestätigung" -defaultNoteVisibility: "Standardsichtbarkeit" -follow: "Folgen" +makeFollowManuallyApprove: "Folgeanfragen bedürfen der Genehmigung" +defaultNoteVisibility: "Standard-Sichtbarkeit" +follow: "Folge ich" followRequest: "Follow anfragen" followRequests: "Follow-Anfragen" unfollow: "Nicht mehr folgen" -followRequestPending: "Follow-Anfrage ausstehend" -enterEmoji: "Gib ein Emoji ein" -renote: "Renote" -unrenote: "Renote zurücknehmen" -renoted: "Renote getätigt." -cantRenote: "Renote dieses Beitrags nicht möglich." -cantReRenote: "Renote einer Renote nicht möglich." +followRequestPending: "Follow-up-Anfrage ausstehend" +enterEmoji: "Ein Emoji eingeben" +renote: "Boost" +unrenote: "Boost zurücknehmen" +renoted: "Geboostet." +cantRenote: "Dieser Beitrag kann nicht geboostet werden." +cantReRenote: "Ein Boost kann nicht geboostet werden." quote: "Zitieren" -pinnedNote: "Angeheftete Notiz" -pinned: "Angeheftet" +pinnedNote: "Angepinnter Beitrag" +pinned: "An das Profil anheften" you: "Du" clickToShow: "Zum Anzeigen anklicken" sensitive: "NSFW" add: "Hinzufügen" reaction: "Reaktionen" -reactionSetting: "In der Reaktionsauswahl anzuzeigende Reaktionen" -reactionSettingDescription2: "Ziehe um Anzuordnen, klicke um zu löschen, drücke „+“\ - \ um hinzuzufügen" -rememberNoteVisibility: "Notizsichtbarkeit merken" +reactionSetting: "Reaktionen, die in der Reaktionsauswahl angezeigt werden sollen" +reactionSettingDescription2: "Ziehen Sie, um neu zu ordnen,\nklicken Sie, um zu löschen,\n + drücken Sie \"+\", um hinzuzufügen." +rememberNoteVisibility: "Einstellungen für die Sichtbarkeit von Beiträgen speichern" attachCancel: "Anhang entfernen" -markAsSensitive: "Als NSFW markieren" -accountMoved: "Benutzer hat zu einem anderen Account gewechselt." -unmarkAsSensitive: "Als nicht NSFW markieren" -enterFileName: "Dateinamen eingeben" +markAsSensitive: "Als NSFW kennzeichnen" +accountMoved: "Der Nutzer ist zu einem neuen Konto umgezogen:" +unmarkAsSensitive: "NSFW Kennzeichnung aufheben" +enterFileName: "Dateiname eingeben" mute: "Stummschalten" unmute: "Stummschaltung aufheben" block: "Blockieren" unblock: "Blockierung aufheben" -suspend: "Sperren" -unsuspend: "Sperrung aufheben" -blockConfirm: "Möchtest du diesen Benutzer wirklich blockieren?" -unblockConfirm: "Möchtest du diese Blockierung wirklich aufheben?" -suspendConfirm: "Möchtest du diesen Benutzer wirklich sperren?" -unsuspendConfirm: "Möchtest du diesen Benutzer wirklich entsperren?" -selectList: "Liste auswählen" -selectAntenna: "Antenne auswählen" -selectWidget: "Widget auswählen" +suspend: "Suspendieren" +unsuspend: "Suspendierung aufheben" +blockConfirm: "Sind Sie sicher, dass Sie dieses Konto sperren wollen?" +unblockConfirm: "Sind Sie sicher, dass Sie die Sperrung dieses Kontos aufheben wollen?" +suspendConfirm: "Sind Sie sicher, dass Sie dieses Konto sperren wollen?" +unsuspendConfirm: "Sind Sie sicher, dass Sie dieses Konto entsperren wollen?" +selectList: "Wählen Sie eine Liste aus" +selectAntenna: "News-Picker auswählen" +selectWidget: "Ein Widget auswählen" editWidgets: "Widgets bearbeiten" -editWidgetsExit: "Fertig" -customEmojis: "Benutzerdefinierte Emojis" +editWidgetsExit: "Erledigt" +customEmojis: "Benutzerdefinierte Emoji" emoji: "Emoji" -emojis: "Emojis" +emojis: "Emoji" emojiName: "Emoji-Name" emojiUrl: "Emoji-URL" addEmoji: "Emoji hinzufügen" -settingGuide: "Empfohlene Einstellung" -cacheRemoteFiles: "Dateien von fremden Instanzen im Cache speichern" -cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Dateien\ - \ fremder Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz auf diesem\ - \ Server gespart, aber durch fehlende Generierung von Vorschaubildern mehr Bandbreite\ - \ verwendet." -flagAsBot: "Als Bot markieren" -flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein\ - \ Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler\ - \ zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Misskeys\ - \ interne Systeme dieses Benutzerkonto als Bot behandeln." -flagAsCat: "Als Katze markieren" -flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu\ - \ markieren." -flagShowTimelineReplies: "Antworten in der Chronik anzeigen" -flagShowTimelineRepliesDescription: "Ist diese Option aktiviert, so werden Antworten\ - \ von Benutzern auf die Notizen anderer Benutzer in der Chronik angezeigt." -autoAcceptFollowed: "Follow-Anfragen von Benutzern, denen du folgst, automatisch akzeptieren" -addAccount: "Benutzerkonto hinzufügen" +settingGuide: "Empfohlene Einstellungen" +cacheRemoteFiles: "Cache für entfernte Dateien" +cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Dateien + von anderen Servern direkt von dort geladen. Hierdurch wird Speicherplatz auf diesem + Server eingespart, aber durch die fehlende Generierung von Vorschaubildern mehr + Bandbreite benötigt." +flagAsBot: "Dieses Nutzerkonto als Bot kennzeichnen" +flagAsBotDescription: "Aktiviere diese Option, falls dieses Nutzerkonto durch ein + Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler + zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Calckeys + interne Systeme dieses Nutzerkonto als Bot behandeln." +flagAsCat: "Bist du eine Katze? 😺" +flagAsCatDescription: "Du bekommst Katzenohren und sprichst wie eine Katze!" +flagShowTimelineReplies: "Antworten in der Timeline anzeigen" +flagShowTimelineRepliesDescription: "Zeigt Antworten von Nutzern auf Beiträge anderer + Nutzer in der Timeline an, wenn diese Funktion aktiviert ist." +autoAcceptFollowed: "Automatisches Genehmigen von Folgeanfragen von Benutzern, denen + Sie folgen" +addAccount: "Nutzerkonto hinzufügen" loginFailed: "Anmeldung fehlgeschlagen" -showOnRemote: "Auf Ursprungsinstanz ansehen" +showOnRemote: "Ansicht auf dem Herkunftsserver" general: "Allgemein" -wallpaper: "Hintergrund" -setWallpaper: "Hintergrund festlegen" -removeWallpaper: "Hintergrund entfernen" +wallpaper: "Hintergrundbild" +setWallpaper: "Hintergrundbild festlegen" +removeWallpaper: "Hintergrundbild entfernen" searchWith: "Suchen: {q}" -youHaveNoLists: "Du hast keine Listen" -followConfirm: "Möchtest du {name} wirklich folgen?" +youHaveNoLists: "Sie haben keine Listen" +followConfirm: "Sind Sie sicher, dass Sie {name} folgen möchten?" proxyAccount: "Proxy-Konto" -proxyAccountDescription: "Ein Proxy-Benutzerkonto ist ein Benutzerkonto, das sich\ - \ für Nutzer unter bestimmten Konditionen wie ein Follower aus einer fremden Instanz\ - \ verhält. Zum Beispiel wird die Aktivität eines Nutzers aus einer fremden Instanz\ - \ nicht an diese Instanz übermittelt, falls es keinen Benutzer dieser Instanz gibt,\ - \ der diesem Nutzer aus fremder Instanz folgt. In diesem Fall folgt stattdessen\ - \ das Proxy-Benutzerkonto." -host: "Hostname" -selectUser: "Benutzer auswählen" +proxyAccountDescription: "Ein Proxy-Konto ist ein Nutzerkonto, das sich für Nutzer + unter bestimmten Konditionen wie ein Follower von einem anderen Server verhält. + Zum Beispiel wird die Aktivität eines Nutzers von einem anderen Server nicht an + diesen Server übermittelt, falls es keinen Nutzer von diesem Server gibt, der diesem + Nutzer von einem anderen Server folgt. In diesem Fall folgt stattdessen das Proxy-Nutzerkonto." +host: "Host" +selectUser: "Wählen Sie einen Nutzer" recipient: "Empfänger" -annotation: "Anmerkung" +annotation: "Anmerkungen" federation: "Föderation" -instances: "Instanzen" -registeredAt: "Registriert am" +instances: "Server" +registeredAt: "Registriert unter" latestRequestSentAt: "Letzte Anfrage gesendet" -latestRequestReceivedAt: "Letzte Anfrage erhalten" -latestStatus: "Neuster Status" -storageUsage: "Verbrauchter Speicherplatz" +latestRequestReceivedAt: "Letzte erhaltene Anfrage" +latestStatus: "Aktueller Stand" +storageUsage: "Nutzung des Speichers" charts: "Diagramme" perHour: "Pro Stunde" perDay: "Pro Tag" -stopActivityDelivery: "Senden von Aktivitäten einstellen" -blockThisInstance: "Diese Instanz blockieren" -operations: "Aktionen" +stopActivityDelivery: "Sendeaktivitäten einstellen" +blockThisInstance: "Diesen Server blockieren" +operations: "Tätigkeiten" software: "Software" version: "Version" metadata: "Metadaten" -withNFiles: "{n} Datei(en)" -monitor: "Beobachten" -jobQueue: "Job-Warteschlange" -cpuAndMemory: "CPU und Arbeitsspeicher" +monitor: "Überwachung" +jobQueue: "Auftragswarteschlange" +cpuAndMemory: "CPU und Speicher" network: "Netzwerk" disk: "Festplatte" -instanceInfo: "Instanzinformationen" +instanceInfo: "Serverinformationen" statistics: "Statistiken" -clearQueue: "Warteschlange leeren" -clearQueueConfirmTitle: "Möchtest du die Warteschlange wirklich leeren?" -clearQueueConfirmText: "Hierdurch werden jegliche noch nicht gesendete Notizen nicht\ - \ förderiert. Normalerweise wird dies nicht benötigt." +clearQueue: "Warteschlange löschen" +clearQueueConfirmTitle: "Sind Sie sicher, dass Sie die Warteschlange löschen wollen?" +clearQueueConfirmText: "Nicht zugestellte Beiträge, die in der Warteschlange verbleiben, + werden nicht föderiert. Normalerweise ist dieser Vorgang nicht erforderlich." clearCachedFiles: "Cache leeren" -clearCachedFilesConfirm: "Sollen alle im Cache gespeicherten Dateien von anderen Instanzen\ - \ wirklich gelöscht werden?" -blockedInstances: "Blockierte Instanzen" -blockedInstancesDescription: "Gib die Hostnamen der Instanzen, welche blockiert werden\ - \ sollen, durch Zeilenumbrüche getrennt an. Blockierte Instanzen können mit dieser\ - \ instanz nicht mehr kommunizieren." +clearCachedFilesConfirm: "Sind Sie sicher, dass Sie alle im Cache zwischengespeicherten + Dateien löschen wollen?" +blockedInstances: "Blockierte Server" +blockedInstancesDescription: "Geben Sie die Hostnamen der Server, getrennt durch einen + Zeilenumbruch, an, die Sie blockieren möchten. Aufgelistete (blockierte) Server + können nicht mehr mit diesem Server kommunizieren." muteAndBlock: "Stummschaltungen und Blockierungen" -mutedUsers: "Stummgeschaltete Benutzer" -blockedUsers: "Blockierte Benutzer" -noUsers: "Keine Benutzer gefunden" +mutedUsers: "Stummgeschaltete Nutzer" +blockedUsers: "Blockierte Nutzer" +noUsers: "Es sind keine Nutzer vorhanden" editProfile: "Profil bearbeiten" -noteDeleteConfirm: "Möchtest du diese Notiz wirklich löschen?" -pinLimitExceeded: "Du kannst nicht noch mehr Notizen anheften." -intro: "Misskey ist installiert! Lass uns nun ein Administratorkonto einrichten." -done: "Fertig" -processing: "In Bearbeitung …" +noteDeleteConfirm: "Sind Sie sicher, dass Sie diesen Beitrag löschen wollen?" +pinLimitExceeded: "Sie können keine weiteren Beiträge anpinnen" +intro: "Die Installation von Calckey ist abgeschlossen! Bitte erstellen Sie einen + Admin-Benutzer." +done: "Erledigt" +processing: "In Bearbeitung" preview: "Vorschau" default: "Standard" -defaultValueIs: "Standardwert: {value}" -noCustomEmojis: "Keine benutzerdefinierten Emojis gefunden" +defaultValueIs: "Der Standardwert ist: {value}" +noCustomEmojis: "Es gibt keine benutzerdefinierten Emoji" noJobs: "Keine Jobs vorhanden" federating: "Wird föderiert" blocked: "Blockiert" -suspended: "Gesperrt" +suspended: "suspendiert" all: "Alles" -subscribing: "Wird abonniert" -publishing: "Wird veröffentlicht" +subscribing: "Registrieren" +publishing: "Veröffentlichen" notResponding: "Antwortet nicht" -instanceFollowing: "Gefolgt auf der Instanz" -instanceFollowers: "Follower der Instanz" -instanceUsers: "Benutzer der Instanz" +instanceFollowing: "Auf dem Server folgen" +instanceFollowers: "Follower des Servers" +instanceUsers: "Nutzer dieses Servers" changePassword: "Passwort ändern" security: "Sicherheit" retypedNotMatch: "Die Eingaben stimmen nicht überein." currentPassword: "Aktuelles Passwort" newPassword: "Neues Passwort" newPasswordRetype: "Neues Passwort bestätigen" -attachFile: "Datei anhängen" +attachFile: "Dateien anhängen" more: "Mehr!" -featured: "Beliebt" -usernameOrUserId: "Benutzername oder Benutzer-ID" -noSuchUser: "Benutzer nicht gefunden" -lookup: "Anfragen" -announcements: "Ankündigungen" +featured: "Ausgewählt" +usernameOrUserId: "Nutzername oder Nutzer-ID" +noSuchUser: "Nutzer nicht gefunden" +lookup: "Suche nach" +announcements: "Bekanntmachungen" imageUrl: "Bild-URL" remove: "Löschen" removed: "Erfolgreich gelöscht" -removeAreYouSure: "Möchtest du „{x}“ wirklich entfernen?" -deleteAreYouSure: "Möchtest du „{x}“ wirklich löschen?" +removeAreYouSure: "Sind Sie sicher, dass Sie \"{x}\" entfernen wollen?" +deleteAreYouSure: "Sind Sie sicher, dass Sie \"{x}\" löschen wollen?" resetAreYouSure: "Wirklich zurücksetzen?" -saved: "Erfolgreich gespeichert" +saved: "Gespeichert" messaging: "Chat" upload: "Hochladen" -keepOriginalUploading: "Originalbild speichern" -keepOriginalUploadingDescription: "Speichert das Originalbild so, wie es ist. Ist\ - \ dies deaktiviert, wird eine Version zum Anzeigen im Internet generiert." -fromDrive: "Aus Drive" +keepOriginalUploading: "Originalbild behalten" +keepOriginalUploadingDescription: "Speichert das ursprünglich hochgeladene Bild so, + wie es ist. Wenn diese Option deaktiviert ist, wird beim Hochladen eine Version + für die Anzeige im Web erstellt." +fromDrive: "Vom Laufwerk" fromUrl: "Von einer URL" uploadFromUrl: "Von einer URL hochladen" -uploadFromUrlDescription: "URL der hochzuladenden Datei" +uploadFromUrlDescription: "URL der Datei, die Sie hochladen wollen" uploadFromUrlRequested: "Upload angefordert" -uploadFromUrlMayTakeTime: "Es kann eine Weile dauern, bis das Hochladen abgeschlossen\ - \ ist." +uploadFromUrlMayTakeTime: "Es kann einige Zeit dauern, bis das Hochladen abgeschlossen + ist." explore: "Erkunden" messageRead: "Gelesen" -noMoreHistory: "Kein weiterer Verlauf vorhanden" -startMessaging: "Neuen Chat erstellen" -nUsersRead: "Von {n} Benutzern gelesen" +noMoreHistory: "Es gibt keine weitere Historie" +startMessaging: "Einen neuen Chat beginnen" +nUsersRead: "Gelesen von {n}" agreeTo: "Ich stimme {0} zu" tos: "Nutzungsbedingungen" -start: "Anfangen" -home: "Startseite" -remoteUserCaution: "Informationen von fremden Instanzen sind möglicherweise unvollständig." +start: "Beginnen Sie" +home: "Home" +remoteUserCaution: "Informationen von Remote-Nutzern können unvollständig sein." activity: "Aktivität" images: "Bilder" birthday: "Geburtstag" yearsOld: "{age} Jahre alt" -registeredDate: "Registrationsdatum" +registeredDate: "Registriert am" location: "Ort" -theme: "Farbschema" -themeForLightMode: "Helles Farbschema" -themeForDarkMode: "Dunkles Farbschema" +theme: "Farbverwaltung" +themeForLightMode: "Farbkombination zur Verwendung im hellen Modus" +themeForDarkMode: "Farbkombination zur Verwendung im dunklen Modus" light: "Hell" dark: "Dunkel" -lightThemes: "Helle Farbschemata" -darkThemes: "Dunkle Farbschemata" +lightThemes: "Helle Farbkombinationen" +darkThemes: "Dunkle Farbkombinationen" syncDeviceDarkMode: "Einstellung deines Geräts übernehmen" -drive: "Drive" +drive: "Cloud-Drive" fileName: "Dateiname" selectFile: "Datei auswählen" selectFiles: "Dateien auswählen" @@ -315,16 +313,16 @@ createFolder: "Ordner erstellen" renameFolder: "Ordner umbenennen" deleteFolder: "Ordner löschen" addFile: "Datei hinzufügen" -emptyDrive: "Deine Drive ist leer" +emptyDrive: "Deine Cloud-Drive ist leer" emptyFolder: "Dieser Ordner ist leer" unableToDelete: "Nicht löschbar" inputNewFileName: "Gib einen neuen Dateinamen ein" inputNewDescription: "Gib eine neue Beschreibung ein" inputNewFolderName: "Gib einen neuen Ordnernamen ein" -circularReferenceFolder: "Der Zielordner ist ein Unterorder des Ordners, den du verschieben\ - \ möchtest." -hasChildFilesOrFolders: "Dieser Ordner kann nicht gelöscht werden, da er nicht leer\ - \ ist." +circularReferenceFolder: "Der Zielordner ist ein Unterorder des Ordners, den du verschieben + möchtest." +hasChildFilesOrFolders: "Dieser Ordner kann nicht gelöscht werden, da er nicht leer + ist." copyUrl: "URL kopieren" rename: "Umbenennen" avatar: "Profilbild" @@ -340,8 +338,8 @@ unwatch: "Nicht mehr beobachten" accept: "Akzeptieren" reject: "Ablehnen" normal: "Normal" -instanceName: "Name der Instanz" -instanceDescription: "Beschreibung der Instanz" +instanceName: "Name des Servers" +instanceDescription: "Beschreibung des Servers" maintainerName: "Betreiber" maintainerEmail: "Betreiber-Email" tosUrl: "URL der Nutzungsbedingungen" @@ -351,32 +349,32 @@ today: "Heute" dayX: "{day}" monthX: "{month}" yearX: "{year}" -pages: "Seiten" +pages: "Nutzer-Seiten" integration: "Integration" connectService: "Verbinden" disconnectService: "Trennen" -enableLocalTimeline: "Lokale Chronik aktivieren" -enableGlobalTimeline: "Globale Chronik aktivieren" -disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle\ - \ Chroniken, auch wenn diese deaktiviert sind." +enableLocalTimeline: "Local-Timeline aktivieren" +enableGlobalTimeline: "Global-Timeline aktivieren" +disablingTimelinesInfo: "Administratoren und Moderatoren haben immer Zugriff auf alle + Timelines, auch wenn diese deaktiviert sind." registration: "Registrieren" -enableRegistration: "Registration neuer Benutzer erlauben" +enableRegistration: "Registration neuer Nutzer erlauben" invite: "Einladen" -driveCapacityPerLocalAccount: "Drive-Kapazität pro lokalem Benutzerkonto" -driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer fremder Instanzen" +driveCapacityPerLocalAccount: "Cloud-Drive-Kapazität pro lokalem Nutzerkonto" +driveCapacityPerRemoteAccount: "Laufwerkskapazität pro Remote-Nutzer" inMb: "In Megabytes" iconUrl: "Icon-URL (favicon etc)" bannerUrl: "Banner-URL" backgroundImageUrl: "Hintergrundbild-URL" basicInfo: "Grundlegende Informationen" -pinnedUsers: "Angeheftete Benutzer" -pinnedUsersDescription: "Gib durch Leerzeichen getrennte Benutzer an, die an die \"\ +pinnedUsers: "Angeheftete Nutzer" +pinnedUsersDescription: "Gib durch Leerzeichen getrennte Nutzer an, die an die \"\ Erkunden\"-Seite angeheftet werden sollen." -pinnedPages: "Angeheftete Seiten" -pinnedPagesDescription: "Gib durch Leerzeilen getrennte Pfäde zu Seiten an, die an\ - \ die Startseite dieser Instanz angeheftet werden sollen.\n" +pinnedPages: "Angeheftete Nutzer-Seiten" +pinnedPagesDescription: "Geben Sie die Pfade der Nutzer-Seiten, getrennt durch Zeilenumbrüche, + ein, die Sie an die oberste Startseite dieses Servers anheften möchten." pinnedClipId: "ID des anzuheftenden Clips" -pinnedNotes: "Angeheftete Notizen" +pinnedNotes: "Angeheftete Beiträge" hcaptcha: "hCaptcha" enableHcaptcha: "hCaptcha aktivieren" hcaptchaSiteKey: "Site key" @@ -385,48 +383,48 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "reCAPTCHA aktivieren" recaptchaSiteKey: "Site key" recaptchaSecretKey: "Secret key" -avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen\ - \ führen. Sollen die anderen Systeme deaktiviert werden? Durch Abbrechen können\ - \ mehrere Systeme aktiviert bleiben." -antennas: "Antennen" -manageAntennas: "Antennen verwalten" +avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen + führen. Sollen die anderen Systeme deaktiviert werden? Durch Abbrechen können mehrere + Systeme aktiviert bleiben." +antennas: "News-Picker" +manageAntennas: "News-Picker verwalten" name: "Name" -antennaSource: "Antennenquelle" +antennaSource: "Quellen der News-Picker" antennaKeywords: "Zu beobachtende Schlüsselwörter" antennaExcludeKeywords: "Zu ignorierende Schlüsselwörter" -antennaKeywordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen\ - \ trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch\ - \ trennen" -notifyAntenna: "Über neue Notizen benachrichtigen" -withFileAntenna: "Nur Notizen mit Dateien" +antennaKeywordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen + trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch + trennen." +notifyAntenna: "Über neue Beiträge benachrichtigen" +withFileAntenna: "Nur Beiträge mit Dateien" enableServiceworker: "Push-Benachrichtigungen im Browser aktivieren" -antennaUsersDescription: "Benutzernamen getrennt durch Zeilenumbrüche angeben" +antennaUsersDescription: "Nutzernamen getrennt durch Zeilenumbrüche angeben" caseSensitive: "Groß-/Kleinschreibung unterscheiden" withReplies: "Antworten beinhalten" -connectedTo: "Mit folgenden Benutzerkonten verknüpft" -notesAndReplies: "Notizen und Antworten" -withFiles: "Notizen mit Dateien" -silence: "Instanzweit stummschalten" -silenceConfirm: "Möchtest du diesen Benutzer wirklich instanzweit stummschalten?" -unsilence: "Instanzweite Stummschaltung aufheben" -unsilenceConfirm: "Möchtest du die instanzweite Stummschaltung dieses Benutzers wirklich\ - \ aufheben?" -popularUsers: "Beliebte Benutzer" -recentlyUpdatedUsers: "Vor kurzem aktive Benutzer" -recentlyRegisteredUsers: "Vor kurzem registrierte Benutzer" -recentlyDiscoveredUsers: "Vor kurzem gefundene Benutzer" -exploreUsersCount: "Es gibt {count} Benutzer" +connectedTo: "Mit folgenden Nutzerkonten verknüpft" +notesAndReplies: "Beiträge und Antworten" +withFiles: "Beiträge mit Dateien" +silence: "stummschalten" +silenceConfirm: "Sind Sie sicher, dass Sie diesen Benutzer Stummschalten möchten?" +unsilence: "Stummschaltung aufheben" +unsilenceConfirm: "Sind Sie sicher, dass Sie die Stummschaltung dieses Benutzers rückgängig + machen wollen?" +popularUsers: "Beliebte Nutzer" +recentlyUpdatedUsers: "Vor kurzem aktive Nutzer" +recentlyRegisteredUsers: "Vor kurzem registrierte Nutzer" +recentlyDiscoveredUsers: "Vor kurzem gefundene Nutzer" +exploreUsersCount: "Es gibt {count} Nutzer" exploreFediverse: "Das Fediverse erkunden" popularTags: "Beliebte Schlagwörter" userList: "Liste" about: "Über" -aboutMisskey: "Über Misskey" +aboutMisskey: "Über Calckey" administrator: "Administrator" token: "Token" twoStepAuthentication: "Zwei-Faktor-Authentifizierung" moderator: "Moderator" moderation: "Moderation" -nUsersMentioned: "Von {n} Benutzern erwähnt" +nUsersMentioned: "Von {n} Nutzern erwähnt" securityKey: "Sicherheitsschlüssel" securityKeyName: "Schlüsselname" registerSecurityKey: "Sicherheitsschlüssel registrieren" @@ -442,10 +440,10 @@ notFoundDescription: "Es konnte keine Seite unter dieser URL gefunden werden." uploadFolder: "Standardordner für Uploads" cacheClear: "Cache leeren" markAsReadAllNotifications: "Alle Benachrichtigungen als gelesen markieren" -markAsReadAllUnreadNotes: "Alle Notizen als gelesen markieren" +markAsReadAllUnreadNotes: "Alle Beiträge als gelesen markieren" markAsReadAllTalkMessages: "Alle Chats als gelesen markieren" help: "Hilfe" -inputMessageHere: "Hier Nachricht eingeben" +inputMessageHere: "Hier Beitrag eingeben" close: "Schließen" group: "Gruppe" groups: "Gruppen" @@ -463,21 +461,21 @@ text: "Text" enable: "Aktivieren" next: "Weiter" retype: "Erneut eingeben" -noteOf: "Notiz von {user}" +noteOf: "Beitrag von {user}" inviteToGroup: "Zu Gruppe einladen" quoteAttached: "Zitat" quoteQuestion: "Als Zitat anhängen?" -noMessagesYet: "Noch keine Nachrichten vorhanden" +noMessagesYet: "Noch keine Beiträge vorhanden" newMessageExists: "Du hast eine neue Nachricht" -onlyOneFileCanBeAttached: "Es kann pro Nachricht nur eine Datei angehängt werden" +onlyOneFileCanBeAttached: "Es kann pro Beitrag nur eine Datei angehängt werden" signinRequired: "Bitte registriere oder melde dich an, um fortzufahren" invitations: "Einladungen" invitationCode: "Einladungscode" checking: "Wird überprüft …" available: "Verfügbar" unavailable: "Unverfügbar" -usernameInvalidFormat: "Du kannst Klein- und Großbuchstaben, Zahlen sowie Unterstriche\ - \ verwenden" +usernameInvalidFormat: "Du kannst Klein- und Großbuchstaben, Zahlen sowie Unterstriche + verwenden." tooShort: "Zu kurz" tooLong: "Zu lang" weakPassword: "Schwaches Passwort" @@ -486,7 +484,7 @@ strongPassword: "Starkes Passwort" passwordMatched: "Stimmt überein" passwordNotMatched: "Stimmt nicht überein" signinWith: "Mit {x} anmelden" -signinFailed: "Anmeldung fehlgeschlagen. Überprüfe Benutzername und Passswort." +signinFailed: "Anmeldung fehlgeschlagen. Überprüfe Nutzername und Passswort." tapSecurityKey: "Tippe deinen Sicherheitsschlüssel an" or: "Oder" language: "Sprache" @@ -504,8 +502,8 @@ doing: "In Bearbeitung …" category: "Kategorie" tags: "Schlagwörter" docSource: "Quellcode dieses Dokuments" -createAccount: "Benutzerkonto erstellen" -existingAccount: "Bestehendes Benutzerkonto" +createAccount: "Nutzerkonto erstellen" +existingAccount: "Bestehendes Nutzerkonto" regenerate: "Regenerieren" fontSize: "Schriftgröße" noFollowRequests: "Keine ausstehenden Follow-Anfragen vorhanden" @@ -518,41 +516,41 @@ weekOverWeekChanges: "Veränderung zu letzter Woche" dayOverDayChanges: "Veränderung zu Gestern" appearance: "Aussehen" clientSettings: "Client-Einstellungen" -accountSettings: "Benutzerkonto-Einstellungen" -promotion: "Werbung" -promote: "Werbung schalten" +accountSettings: "Nutzerkonto-Einstellungen" +promotion: "geworben" +promote: "Werben" numberOfDays: "Anzahl der Tage" -hideThisNote: "Diese Notiz verstecken" -showFeaturedNotesInTimeline: "Beliebte Notizen in der Chronik anzeigen" -objectStorage: "Object Storage" +hideThisNote: "Diesen Beitrag verstecken" +showFeaturedNotesInTimeline: "Beliebte Beiträge in der Timeline anzeigen" +objectStorage: "Objektspeicher" useObjectStorage: "Object Storage verwenden" objectStorageBaseUrl: "Basis-URL" -objectStorageBaseUrlDesc: "Die als Referenz verwendete URL. Verwendest du einen CDN\ - \ oder Proxy, gib dessen URL an. Für S3 verwende 'https://.s3.amazonaws.com'.\ - \ Für GCS o.ä. verwende 'https://storage.googleapis.com/'." -objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Bitte gib den Namen des Buckets an, der bei deinem Anbieter\ - \ verwendet wird." +objectStorageBaseUrlDesc: "Die als Referenz verwendete URL. Verwendest du einen CDN + oder Proxy, gib dessen URL an. \nFür S3 verwende 'https://.s3.amazonaws.com'. + Für GCS o.ä. verwende 'https://storage.googleapis.com/'." +objectStorageBucket: "Eimer" +objectStorageBucketDesc: "Bitte gib den Namen des Buckets an, der bei deinem Anbieter + verwendet wird." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Dateien werden in Ordnern unter diesem Prefix gespeichert." -objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten\ - \ Endpoint im Format „“ oder „:“ angeben." +objectStorageEndpoint: "Limit" +objectStorageEndpointDesc: "Im Falle von S3 leerlassen, für andere Anbieter den relevanten + Endpoint im Format „“ oder „:“ angeben." objectStorageRegion: "Region" -objectStorageRegionDesc: "Gib eine Region wie z.B. „xx-east-1“ an. Falls dein Anbieter\ - \ nicht zwischen Regionen unterscheidet, lass dieses Feld leer oder gib „us-east-1“\ - \ an." +objectStorageRegionDesc: "Gib eine Region wie z.B. „xx-east-1“ an. Falls dein Anbieter + nicht zwischen Regionen unterscheidet, lass dieses Feld leer oder gib „us-east-1“ + an." objectStorageUseSSL: "SSL verwenden" -objectStorageUseSSLDesc: "Deaktiviere dies, falls du für API-Verbindungen kein HTTPS\ - \ verwenden wirst" +objectStorageUseSSLDesc: "Deaktiviere dies, falls du für API-Verbindungen kein HTTPS + verwenden wirst" objectStorageUseProxy: "Über Proxy verbinden" -objectStorageUseProxyDesc: "Deaktiviere dies, falls du keinen Proxy für den Objektspeicher\ - \ verwenden wirst" +objectStorageUseProxyDesc: "Deaktiviere dies, falls du keinen Proxy für den Objektspeicher + verwenden wirst" objectStorageSetPublicRead: "Bei Upload auf \"public-read\" stellen" serverLogs: "Serverprotokolle" deleteAll: "Alle löschen" -showFixedPostForm: "Bereich zum Schreiben neuer Notizen am Anfang der Chronik anzeigen" -newNoteRecived: "Es gibt neue Notizen" +showFixedPostForm: "Bereich zum Schreiben neuer Beiträge am Anfang der Timeline anzeigen" +newNoteRecived: "Es gibt neue Beiträge" sounds: "Töne" listen: "Anhören" none: "Nichts" @@ -575,25 +573,24 @@ sort: "Sortieren" ascendingOrder: "Aufsteigende Reihenfolge" descendingOrder: "Absteigende Reihenfolge" scratchpad: "Testumgebung" -scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente.\ - \ Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Misskey\ - \ überprüfen." +scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. + Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Calckey + überprüfen." output: "Ausgabe" script: "Skript" disablePagesScript: "AiScript auf Seiten deaktivieren" -updateRemoteUser: "Benutzerinformationen aktualisieren" +updateRemoteUser: "Nutzerinformationen aktualisieren" deleteAllFiles: "Alle Dateien löschen" deleteAllFilesConfirm: "Möchtest du wirklich alle Dateien löschen?" -removeAllFollowing: "Allen gefolgten Benutzern entfolgen" -removeAllFollowingDescription: "Dies entfolgt allen Benutzerkonten von {host}. Bitte\ - \ führe dies durch, falls diese Instanz z.B. nicht mehr existiert." -userSuspended: "Dieser Benutzer wurde gesperrt." -userSilenced: "Dieser Benutzer wurde instanzweit stummgeschaltet." -yourAccountSuspendedTitle: "Dieses Benutzerkonto ist gesperrt" -yourAccountSuspendedDescription: "Dieses Benutzerkonto wurde gesperrt, da es gegen\ - \ die Nutzungsbedingungen dieses Servers verstoßen hat. Trete mit dem Betreiber\ - \ in Kontakt, falls du weitere Details erfahren möchtest. Bitte erstelle kein neues\ - \ Benutzerkonto." +removeAllFollowing: "Allen gefolgten Nutzern entfolgen" +removeAllFollowingDescription: "Wenn Sie dies ausführen, werden alle Konten von {host} + entfolgt. Bitte führen Sie dies aus, wenn der Server z.B. nicht mehr existiert." +userSuspended: "Dieser Nutzer wurde gesperrt." +userSilenced: "Dieser Nutzer wurde instanzweit stummgeschaltet." +yourAccountSuspendedTitle: "Dieses Nutzerkonto ist gesperrt" +yourAccountSuspendedDescription: "Dieses Nutzerkonto wurde gesperrt, da es gegen die + Nutzungsbedingungen dieses Servers verstoßen hat. Trete mit dem Betreiber in Kontakt, + falls du weitere Details erfahren möchtest. Bitte erstelle kein neues Nutzerkonto." menu: "Menü" divider: "Trenner" addItem: "Element hinzufügen" @@ -602,8 +599,8 @@ addRelay: "Relay hinzufügen" inboxUrl: "inbox-URL" addedRelays: "Hinzugefügte Relays" serviceworkerInfo: "Muss für Push-Benachrichtigungen aktiviert sein." -deletedNote: "Gelöschte Notiz" -invisibleNote: "Private Notiz" +deletedNote: "Gelöschter Beitrag" +invisibleNote: "Privater Beitrag" enableInfiniteScroll: "Automatisch mehr laden" visibility: "Sichtbarkeit" poll: "Umfrage" @@ -611,7 +608,7 @@ useCw: "Inhaltswarnung verwenden" enablePlayer: "Video-Player öffnen" disablePlayer: "Video-Player schließen" expandTweet: "Tweet ausklappen" -themeEditor: "Farbschema-Editor" +themeEditor: "Farbkombinations-Editor" description: "Beschreibung" describeFile: "Beschreibung hinzufügen" enterFileDescription: "Beschreibung eingeben" @@ -633,32 +630,32 @@ generateAccessToken: "Zugriffstoken generieren" permission: "Berechtigungen" enableAll: "Alle aktivieren" disableAll: "Alle deaktivieren" -tokenRequested: "Zugriff zum Benutzerkonto gewähren" -pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Berechtigungen\ - \ verwenden können." +tokenRequested: "Zugriff zum Nutzerkonto gewähren" +pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Berechtigungen + verwenden können." notificationType: "Art der Benachrichtigung" edit: "Bearbeiten" emailServer: "Email-Server" enableEmail: "Email-Versand aktivieren" -emailConfigInfo: "Zur Email-Bestätigung bei Registrierung oder zum Zurücksetzen des\ - \ Passworts verwendet" +emailConfigInfo: "Zur Email-Bestätigung bei Registrierung oder zum Zurücksetzen des + Passworts verwendet" email: "Email" emailAddress: "Email-Adresse" smtpConfig: "SMTP-Server Konfiguration" smtpHost: "Host" smtpPort: "Port" -smtpUser: "Benutzername" +smtpUser: "Nutzername" smtpPass: "Passwort" -emptyToDisableSmtpAuth: "Benutzername und Passwort leer lassen, um SMTP-Verifizierung\ - \ zu deaktivieren" +emptyToDisableSmtpAuth: "Nutzername und Passwort leer lassen, um SMTP-Verifizierung + zu deaktivieren" smtpSecure: "Für SMTP-Verbindungen implizit SSL/TLS verwenden" -smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest." +smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest" testEmail: "Emailversand testen" -wordMute: "Wortstummschaltung" +wordMute: "Wortfilter" regexpError: "Fehler in einem regulären Ausdruck" -regexpErrorDescription: "Im regulären Ausdruck deiner {tab}en Wortstummschaltungen\ - \ ist ein Fehler aufgetreten:" -instanceMute: "Instanzstummschaltungen" +regexpErrorDescription: "Im regulären Ausdruck deines {tab}en Wortfilters ist ein + Fehler aufgetreten:" +instanceMute: "Server-Stummschaltungen" userSaysSomething: "{name} hat etwas gesagt" makeActive: "Aktivieren" display: "Anzeigeart" @@ -668,66 +665,67 @@ overview: "Übersicht" logs: "Logs" delayed: "Verzögert" database: "Datenbank" -channel: "Kanäle" +channel: "Channels" create: "Erstellen" notificationSetting: "Benachrichtigungseinstellungen" notificationSettingDesc: "Wähle die Art der anzuzeigenden Benachrichtigungen." useGlobalSetting: "Globale Einstellung verwenden" -useGlobalSettingDesc: "Ist diese Option aktiviert, werden die Benachrichtigungseinstellungen\ - \ deines Benutzerkontos verwendet. Durch ausschalten dieser Option können individuelle\ - \ Einstellungen vorgenommen werden." +useGlobalSettingDesc: "Ist diese Option aktiviert, werden die Benachrichtigungseinstellungen + deines Nutzerkontos verwendet. Durch ausschalten dieser Option können individuelle + Einstellungen vorgenommen werden." other: "Anderes" regenerateLoginToken: "Anmeldetoken regenerieren" -regenerateLoginTokenDescription: "Den zur Anmeldung intern verwendeten Token regenerieren.\ - \ Normalerweise wird dies nicht benötigt. Bei Regeneration werden alle Geräte ausgeloggt." -setMultipleBySeparatingWithSpace: "Trenne Elemente durch ein Leerzeichen um mehrere\ - \ Einstellungen zu kofigurieren." +regenerateLoginTokenDescription: "Den zur Anmeldung intern verwendeten Token regenerieren. + Normalerweise wird dies nicht benötigt. Bei Regeneration werden alle Geräte ausgeloggt." +setMultipleBySeparatingWithSpace: "Trenne Elemente durch ein Leerzeichen um mehrere + Einstellungen zu kofigurieren." fileIdOrUrl: "Datei-ID oder URL" behavior: "Verhalten" sample: "Beispiel" abuseReports: "Meldungen" reportAbuse: "Melden" reportAbuseOf: "{name} melden" -fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung\ - \ an. Falls es sich um eine spezielle Notiz handelt, bitte gib dessen URL an." +fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung + an. Falls es sich um einen ungewöhnlichen Beitrag handelt, gib bitte dessen URL + an." abuseReported: "Deine Meldung wurde versendet. Vielen Dank." reporter: "Melder" reporteeOrigin: "Herkunft des Gemeldeten" reporterOrigin: "Herkunft des Meldenden" -forwardReport: "Meldung an fremde Instanz weiterleiten" -forwardReportIsAnonymous: "Anstatt deines Benutzerkontos wird bei der fremden Instanz\ - \ ein anonymes Systemkonto als Melder angezeigt." +forwardReport: "Einen Bericht auch an den beteiligten anderen Server weiterleiten" +forwardReportIsAnonymous: "Anstelle Ihres Nutzerkontos wird ein anonymes Systemkonto + als Berichterstatter auf dem beteiligten anderen Server angezeigt." send: "Senden" abuseMarkAsResolved: "Meldung als gelöst markieren" openInNewTab: "In neuem Tab öffnen" openInSideView: "In Seitenansicht öffnen" defaultNavigationBehaviour: "Standardnavigationsverhalten" -editTheseSettingsMayBreakAccount: "Bei Bearbeitung dieser Einstellungen besteht die\ - \ Gefahr, dein Benutzerkonto zu beschädigen." -instanceTicker: "Instanz-Informationen von Notizen" -waitingFor: "Warte auf {x} …" +editTheseSettingsMayBreakAccount: "Bei Bearbeitung dieser Einstellungen besteht die + Gefahr, dein Nutzerkonto zu beschädigen." +instanceTicker: "Serveranzeige zu Beiträgen" +waitingFor: "Warte auf {x}" random: "Zufällig" system: "System" switchUi: "Layout" desktop: "Desktop" clip: "Clip erstellen" createNew: "Neu erstellen" -optional: "Optional" +optional: "optional" createNewClip: "Neuen Clip erstellen" unclip: "Aus Clip entfernen" -confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten.\ - \ Möchtest du sie aus diesem Clip entfernen?" +confirmToUnclipAlreadyClippedNote: "Dieser Beitrag ist bereits im \"{name}\" Clip + enthalten. Möchtest du ihn aus diesem Clip entfernen?" public: "Öffentlich" -i18nInfo: "Calckey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt.\ - \ Auf {link} kannst du mithelfen." +i18nInfo: "Calckey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. + Auf {link} kannst du mithelfen." manageAccessTokens: "Zugriffstokens verwalten" -accountInfo: "Benutzerkonto-Informationen" -notesCount: "Anzahl der Notizen" +accountInfo: "Nutzerkonto-Informationen" +notesCount: "Anzahl der Beiträge" repliesCount: "Anzahl gesendeter Antworten" renotesCount: "Anzahl getätigter Renotes" repliedCount: "Anzahl erhaltener Antworten" renotedCount: "Anzahl erhaltener Renotes" -followingCount: "Anzahl gefolgter Benutzer" +followingCount: "Anzahl gefolgter Nutzer" followersCount: "Anzahl an Followern" sentReactionsCount: "Anzahl gesendeter Reaktionen" receivedReactionsCount: "Anzahl erhaltener Reaktionen" @@ -735,54 +733,54 @@ pollVotesCount: "Anzahl gesendeter Antworten auf Umfragen" pollVotedCount: "Anzahl erhaltener Antworten auf Umfragen" yes: "Ja" no: "Nein" -driveFilesCount: "Anzahl der Dateien in Drive" -driveUsage: "Drive-Auslastung" +driveFilesCount: "Anzahl der Dateien in Cloud-Drive" +driveUsage: "Cloud-Drive-Auslastung" noCrawle: "Crawler-Indexierung ablehnen" -noCrawleDescription: "Suchmaschinen bitten, die eigene Profilseite, Notizen, Seiten\ - \ usw. nicht zu indexieren." -lockedAccountInfo: "Auch wenn du Follow-Anfragen auf manuelle Bestätigung setzt, wird\ - \ jeder deiner Posts öffentlich sichtbar sein, sofern du ihre Sichtbarkeit nicht\ - \ auf \"Nur Follower\" setzt." +noCrawleDescription: "Suchmaschinen bitten, die eigene Profilseite, Beiträge, Nutzer-Seiten + usw. nicht zu indexieren." +lockedAccountInfo: "Auch wenn du Follow-Anfragen auf manuelle Bestätigung setzt, wird + jeder deiner Posts öffentlich sichtbar sein, sofern du ihre Sichtbarkeit nicht auf + \"Nur Follower\" setzt." alwaysMarkSensitive: "Medien standardmäßig als NSFW markieren" loadRawImages: "Anstatt Vorschaubilder immer Originalbilder anzeigen" disableShowingAnimatedImages: "Animierte Bilder nicht abspielen" -verificationEmailSent: "Eine Bestätigungsmail wurde an deine Email-Adresse versendet.\ - \ Besuche den dort enthaltenen Link, um die Verifizierung abzuschließen." +verificationEmailSent: "Eine Bestätigungsmail wurde an deine Email-Adresse versendet. + Besuche den dort enthaltenen Link, um die Verifizierung abzuschließen." notSet: "Nicht konfiguriert" emailVerified: "Email-Adresse bestätigt" -noteFavoritesCount: "Anzahl an als Favorit markierter Notizen" -pageLikesCount: "Anzahl an als \"Gefällt mir\" markierter Seiten" -pageLikedCount: "Anzahl erhaltener \"Gefällt mir\" auf Seiten" +noteFavoritesCount: "Anzahl der favorisierten Beiträge" +pageLikesCount: "Anzahl an als \"Gefällt mir\" markierter Nutzer-Seiten" +pageLikedCount: "Anzahl erhaltener \"Gefällt mir\" auf Nutzer-Seiten" contact: "Kontakt" useSystemFont: "Standardschriftart des Systems verwenden" clips: "Clips" experimentalFeatures: "Experimentelle Funktionalitäten" developer: "Entwickler" -makeExplorable: "Benutzerkonto in „Erkunden“ sichtbar machen" -makeExplorableDescription: "Wenn diese Option deaktiviert ist, ist dein Benutzerkonto\ - \ nicht im „Erkunden“-Bereich sichtbar." -showGapBetweenNotesInTimeline: "Abstände zwischen Notizen auf der Chronik anzeigen" +makeExplorable: "Nutzerkonto in „Erkunden“ sichtbar machen" +makeExplorableDescription: "Wenn diese Option deaktiviert ist, ist dein Nutzerkonto + nicht im „Erkunden“-Bereich sichtbar." +showGapBetweenNotesInTimeline: "Abstände zwischen Beiträgen in der Timeline anzeigen" duplicate: "Duplizieren" left: "Links" center: "Mittig" wide: "Breit" narrow: "Schmal" -reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite\ - \ in Kraft. Jetzt aktualisieren?" -needReloadToApply: "Diese Einstellung tritt nach einer Aktualisierung der Seite in\ - \ Kraft." +reloadToApplySetting: "Diese Einstellung tritt nach einer Aktualisierung der Seite + in Kraft. Jetzt aktualisieren?" +needReloadToApply: "Diese Einstellung tritt nach einer Aktualisierung der Seite in + Kraft." showTitlebar: "Titelleiste anzeigen" clearCache: "Cache leeren" -onlineUsersCount: "{n} Benutzer sind online" -nUsers: "{n} Benutzer" -nNotes: "{n} Notizen" +onlineUsersCount: "{n} Nutzer sind online" +nUsers: "{n} Nutzer" +nNotes: "{n} Beiträge" sendErrorReports: "Fehlerberichte senden" -sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten\ - \ von Fehlern detaillierte Fehlerinformationen an Calckey weitergegeben, was zur\ - \ Verbesserung der Qualität von Calckey beiträgt.\nEnthalten in diesen Informationen\ - \ sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und\ - \ ein Verlauf deiner Aktivitäten innerhalb Calckey." -myTheme: "Mein Farbschema" +sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten + von Fehlern detaillierte Fehlerinformationen an Calckey weitergegeben, was zur Verbesserung + der Qualität von Calckey beiträgt.\nEnthalten in diesen Informationen sind u.a. + die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf + deiner Aktivitäten innerhalb Calckey." +myTheme: "Meine Farbkombination" backgroundColor: "Hintergrundfarbe" accentColor: "Akzentfarbe" textColor: "Textfarbe" @@ -795,7 +793,7 @@ saveConfirm: "Änderungen speichern?" deleteConfirm: "Wirklich löschen?" invalidValue: "Dieser Wert ist ungültig." registry: "Registry" -closeAccount: "Benutzerkonto schließen" +closeAccount: "Nutzerkonto schließen" currentVersion: "Momentane Version" latestVersion: "Neuste Version" youAreRunningUpToDateClient: "Du verwendest die neuste Version deines Clients." @@ -805,14 +803,14 @@ capacity: "Kapazität" inUse: "Verwendet" editCode: "Code bearbeiten" apply: "Anwenden" -receiveAnnouncementFromInstance: "Benachrichtigungen von dieser Instanz empfangen" +receiveAnnouncementFromInstance: "Benachrichtigungen von diesem Server empfangen" emailNotification: "Email-Benachrichtigungen" publish: "Veröffentlichen" inChannelSearch: "In Kanal suchen" useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen" -typingUsers: "{users} ist/sind am schreiben …" +typingUsers: "{users} ist/sind am schreiben" jumpToSpecifiedDate: "Zu bestimmtem Datum springen" -showingPastTimeline: "Es wird eine alte Chronik angezeigt" +showingPastTimeline: "Es wird eine alte Timeline angezeigt" clear: "Zurückkehren" markAllAsRead: "Alle als gelesen markieren" goBack: "Zurück" @@ -820,41 +818,41 @@ unlikeConfirm: "\"Gefällt mir\" wirklich entfernen?" fullView: "Vollansicht" quitFullView: "Vollansicht verlassen" addDescription: "Beschreibung hinzufügen" -userPagePinTip: "Um Notizen hier erscheinen zu lassen, drücke \"An dein Profil anheften\"\ - \ im Menü individueller Notizen." -notSpecifiedMentionWarning: "Diese Notiz enthält Erwähnungen von Nutzern, die nicht\ - \ als Empfänger ausgewählt sind" +userPagePinTip: "Um Beiträge hier erscheinen zu lassen, drücke \"An dein Profil anheften\"\ + \ im Menü individueller Beiträge." +notSpecifiedMentionWarning: "Dieser Beitrag enthält Erwähnungen von Nutzern, die nicht + als Empfänger ausgewählt sind" info: "Über" -userInfo: "Benutzerinformation" +userInfo: "Nutzerinformation" unknown: "Unbekannt" onlineStatus: "Onlinestatus" hideOnlineStatus: "Onlinestatus verbergen" -hideOnlineStatusDescription: "Das Verbergen deines Onlinestatuses reduziert die Nützlichkeit\ - \ von Funktionen wie der Suche." +hideOnlineStatusDescription: "Das Verbergen deines Onlinestatuses reduziert die Nützlichkeit + von Funktionen wie der Suche." online: "Online" active: "Aktiv" offline: "Offline" notRecommended: "Nicht empfohlen" botProtection: "Schutz vor Bots" -instanceBlocking: "Blockierte Instanzen" -selectAccount: "Benutzerkonto auswählen" +instanceBlocking: "Föderierte Blockieren/Stummschalten" +selectAccount: "Nutzerkonto auswählen" switchAccount: "Konto wechseln" enabled: "Aktiviert" disabled: "Deaktiviert" quickAction: "Schnellaktionen" -user: "Benutzer" +user: "Nutzer" administration: "Verwaltung" -accounts: "Benutzerkonten" +accounts: "Nutzerkonten" switch: "Wechseln" noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert." noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert." configure: "Konfigurieren" -postToGallery: "Neuen Galeriebeitrag erstellen" -gallery: "Galerie" +postToGallery: "Erstelle einen neuen Beitrag zur Bilder-Galerie" +gallery: "Bilder-Galerie" recentPosts: "Neue Beiträge" popularPosts: "Beliebte Beiträge" -shareWithNote: "Mit Notiz teilen" -ads: "Werbung" +shareWithNote: "Mit Beitrag teilen" +ads: "Werbeanzeigen" expiration: "Frist" memo: "Merkzettel" priority: "Priorität" @@ -865,8 +863,8 @@ emailNotConfiguredWarning: "Keine Email-Adresse hinterlegt." ratio: "Verhältnis" previewNoteText: "Vorschau anzeigen" customCss: "Benutzerdefiniertes CSS" -customCssWarn: "Verwende diese Einstellung nur, wenn du weißt, was sie tut. Ungültige\ - \ Eingaben können dazu führen, dass der Client nicht mehr normal funktioniert." +customCssWarn: "Verwende diese Einstellung nur, wenn du weißt, was sie tut. Ungültige + Eingaben können dazu führen, dass der Client nicht mehr normal funktioniert." global: "Global" squareAvatars: "Profilbilder quadratisch anzeigen" sent: "Gesendet" @@ -876,17 +874,17 @@ hashtags: "Hashtags" troubleshooting: "Problembehandlung" useBlurEffect: "Weichzeichnungseffekt in der Benutzeroberfläche verwenden" learnMore: "Mehr erfahren" -misskeyUpdated: "Misskey wurde aktualisiert!" +misskeyUpdated: "Calckey wurde aktualisiert!" whatIsNew: "Änderungen anzeigen" translate: "Übersetzen" translatedFrom: "Aus {x} übersetzt" -accountDeletionInProgress: "Die Löschung deines Benutzerkontos ist momentan in Bearbeitung." -usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert\ - \ werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche\ - \ (_) verwenden. Benutzernamen können später nicht geändert werden." +accountDeletionInProgress: "Die Löschung deines Nutzerkontos ist momentan in Bearbeitung" +usernameInfo: "Ein Name, durch den dein Nutzerkonto auf diesem Server identifiziert + werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche + (_) verwenden. Nutzernamen können später nicht geändert werden." aiChanMode: "Ai-Modus" keepCw: "Inhaltswarnungen beibehalten" -pubSub: "Pub/Sub Benutzerkonten" +pubSub: "Pub/Sub Nutzerkonten" lastCommunication: "Letzte Kommunikation" resolved: "Gelöst" unresolved: "Ungelöst" @@ -897,77 +895,77 @@ emailRequiredForSignup: "Angabe einer Email-Adresse als benötigt markieren" unread: "Ungelesen" filter: "Filter" controlPanel: "Systemsteuerung" -manageAccounts: "Benutzerkonten verwalten" +manageAccounts: "Nutzerkonten verwalten" makeReactionsPublic: "Reaktionsverlauf veröffentlichen" -makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen\ - \ einsehen können." +makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen + einsehen können." classic: "Classic" muteThread: "Thread stummschalten" unmuteThread: "Threadstummschaltung aufheben" ffVisibility: "Sichtbarkeit von Gefolgten/Followern" -ffVisibilityDescription: "Konfiguriere wer sehen kann, wem du folgst sowie wer dir\ - \ folgt." -continueThread: "Weiteren Threadverlauf anzeigen" -deleteAccountConfirm: "Dein Benutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?" +ffVisibilityDescription: "Konfiguriere wer sehen kann, wem du folgst sowie wer dir + folgt." +continueThread: "Beitrag fortsetzen" +deleteAccountConfirm: "Dein Nutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?" incorrectPassword: "Falsches Passwort." voteConfirm: "Wirklich für „{choice}“ abstimmen?" hide: "Inhalt verbergen" leaveGroup: "Gruppe verlassen" leaveGroupConfirm: "Möchtest du „{name}“ wirklich verlassen?" -useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl\ - \ anzeigen" +useDrawerReactionPickerForMobile: "Auf mobilen Geräten ausfahrbare Reaktionsauswahl + anzeigen" welcomeBackWithName: "Willkommen zurück, {name}" -clickToFinishEmailVerification: "Drücke bitte auf [{ok}], um die Email-Bestätigung\ - \ abzuschließen." +clickToFinishEmailVerification: "Drücke bitte auf [{ok}], um die Email-Bestätigung + abzuschließen." overridedDeviceKind: "Gerätetyp" smartphone: "Smartphone" tablet: "Tablet" auto: "Automatisch" -themeColor: "Farbe der Instanz-Information" +themeColor: "Farbe der Laufschrift (Ticker)" size: "Größe" numberOfColumn: "Spaltenanzahl" searchByGoogle: "Suchen" -instanceDefaultLightTheme: "Instanzweites Standardfarbschema (Hell)" -instanceDefaultDarkTheme: "Instanzweites Standardfarbschema (Dunkel)" +instanceDefaultLightTheme: "Standard-Farbkombination auf diesem Server: \"Hell\"" +instanceDefaultDarkTheme: "Standard-Farbkombination auf diesem Server: \"Dunkel\"" instanceDefaultThemeDescription: "Gib den Farbschemencode im Objektformat ein." -mutePeriod: "Stummschaltungsdauer" +mutePeriod: "Dauer der Stummschaltung" indefinitely: "Dauerhaft" tenMinutes: "10 Minuten" oneHour: "Eine Stunde" oneDay: "Einen Tag" oneWeek: "Eine Woche" reflectMayTakeTime: "Es kann etwas dauern, bis sich dies widerspiegelt." -failedToFetchAccountInformation: "Benutzerkontoinformationen konnten nicht abgefragt\ - \ werden" -rateLimitExceeded: "Versuchsanzahl überschritten" +failedToFetchAccountInformation: "Nutzerkontoinformationen konnten nicht abgefragt + werden" +rateLimitExceeded: "Anzahl der Versuche überschritten" cropImage: "Bild zuschneiden" cropImageAsk: "Möchtest du das Bild zuschneiden?" file: "Datei" -recentNHours: "Letzten {n} Stunden" -recentNDays: "Letzten {n} Tage" +recentNHours: "Die letzten {n} Stunden" +recentNDays: "Die letzten {n} Tage" noEmailServerWarning: "Es ist kein Email-Server konfiguriert." thereIsUnresolvedAbuseReportWarning: "Es liegen ungelöste Meldungen vor." recommended: "Empfehlung" -check: "Check" -driveCapOverrideLabel: "Die Drive-Kapazität dieses Nutzers verändern" -driveCapOverrideCaption: "Gib einen Wert von 0 oder weniger ein, um die Kapazität\ - \ auf den Standard zurückzusetzen." +check: "Kontrolle" +driveCapOverrideLabel: "Die Cloud-Drive-Kapazität dieses Nutzers verändern" +driveCapOverrideCaption: "Gib einen Wert von 0 oder weniger ein, um die Kapazität + auf den Standard zurückzusetzen." requireAdminForView: "Melde dich mit einem Administratorkonto an, um dies einzusehen." -isSystemAccount: "Ein Benutzerkonto, dass durch das System erstellt und automatisch\ - \ kontrolliert wird." +isSystemAccount: "Ein Nutzerkonto, dass durch das System erstellt und automatisch + kontrolliert wird." typeToConfirm: "Bitte gib zur Bestätigung {x} ein" -deleteAccount: "Benutzerkonto löschen" +deleteAccount: "Nutzerkonto löschen" document: "Dokumentation" numberOfPageCache: "Seitencachegröße" -numberOfPageCacheDescription: "Das Erhöhen dieses Caches führt zu einer angenehmerern\ - \ Benutzererfahrung, erhöht aber Serverlast und Arbeitsspeicherauslastung." +numberOfPageCacheDescription: "Das Erhöhen dieses Caches führt zu einer angenehmerern + Nutzererfahrung, erhöht aber Serverlast und Arbeitsspeicherauslastung." logoutConfirm: "Wirklich abmelden?" lastActiveDate: "Zuletzt verwendet am" statusbar: "Statusleiste" pleaseSelect: "Wähle eine Option" reverse: "Umkehren" colored: "Farbig" -refreshInterval: "Aktualisierungsrate" +refreshInterval: "Aktualisierungsrate " label: "Beschriftung" type: "Art" speed: "Geschwindigkeit" @@ -975,39 +973,38 @@ slow: "Langsam" fast: "Schnell" sensitiveMediaDetection: "Erkennung von NSFW-Medien" localOnly: "Nur Lokal" -remoteOnly: "Nur für fremde Instanzen" +remoteOnly: "Nur für andere/fremde Server" failedToUpload: "Hochladen fehlgeschlagen" -cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Anteile\ - \ der Datei als möglicherweise NSFW festgestellt wurden." -cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein\ - \ Drive-Speicherplatz aufgebraucht ist." +cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Anteile + der Datei als möglicherweise NSFW festgestellt wurden." +cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein + Cloud-Drive-Speicherplatz aufgebraucht ist." beta: "Beta" enableAutoSensitive: "NSFW-Automarkierung" -enableAutoSensitiveDescription: "Setzt soweit möglich durch Verwendung von Machine\ - \ Learning automatisch NSFW-Markierungen für Medien, die NSFW-Anteile beinhalten.\ - \ Auch wenn du diese Option deaktiviert hast, ist sie möglicherweise auf Instanzebene\ - \ aktiviert." -activeEmailValidationDescription: "Aktivert strengere Überprüfung von E-Mail-Adressen,\ - \ d.h. Testen auf Wegwerfadressen und darauf, ob mit der Adresse tatsächlich kommuniziert\ - \ werden kann. Ist dies deaktiviert, so wird nur das Format der E-Mail überprüft." +enableAutoSensitiveDescription: "Erlaubt, wo möglich, die automatische Erkennung und + Kennzeichnung von NSFW-Medien durch maschinelles Lernen. Auch wenn diese Option + deaktiviert ist, kann sie über den Server aktiviert sein." +activeEmailValidationDescription: "Aktivert strengere Überprüfung von E-Mail-Adressen, + d.h. Testen auf Wegwerfadressen und darauf, ob mit der Adresse tatsächlich kommuniziert + werden kann. Ist dies deaktiviert, so wird nur das Format der E-Mail überprüft." navbar: "Navigationsleiste" shuffle: "Mischen" -account: "Benutzerkonto" +account: "Nutzerkonto" move: "Verschieben" _sensitiveMediaDetection: - description: "Ermöglicht eine Erleichterung der Servermoderation durch die automatische\ - \ Erkennungen von NSFW-Medien unter Verwendung von Machine Learning. Hierdurch\ - \ wird die Serverlast etwas erhöht." + description: "Ermöglicht eine Erleichterung der Servermoderation durch die automatische + Erkennungen von NSFW-Medien unter Verwendung von Machine Learning. Hierdurch wird + die Serverlast etwas erhöht." sensitivity: "Erkennungssensitivität" - sensitivityDescription: "Durch das Senken der Sensitivität kann die Anzahl an Fehlerkennungen\ - \ (sog. false positives) reduziert werden. Durch ein Erhöhen dieser kann die Anzahl\ - \ an verpassten Erkennungen (sog. false negatives) reduziert werden." + sensitivityDescription: "Durch das Senken der Sensitivität kann die Anzahl an Fehlerkennungen + (sog. false positives) reduziert werden. Durch ein Erhöhen dieser kann die Anzahl + an verpassten Erkennungen (sog. false negatives) reduziert werden." setSensitiveFlagAutomatically: "Als NSFW markieren" - setSensitiveFlagAutomaticallyDescription: "Die Resultate der internen Erkennung\ - \ werden beibehalten, auch wenn diese Option deaktiviert ist." + setSensitiveFlagAutomaticallyDescription: "Die Resultate der internen Erkennung + werden beibehalten, auch wenn diese Option deaktiviert ist." analyzeVideos: "Videoanalyse aktivieren" - analyzeVideosDescription: "Analysiert zusätzlich zu Bildern auch Videos. Die Last\ - \ des Servers wird hierdurch etwas erhöht." + analyzeVideosDescription: "Analysiert zusätzlich zu Bildern auch Videos. Die Last + des Servers wird hierdurch etwas erhöht." _emailUnavailable: used: "Diese Email-Adresse wird bereits verwendet" format: "Das Format dieser Email-Adresse ist ungültig" @@ -1020,33 +1017,33 @@ _ffVisibility: private: "Privat" _signup: almostThere: "Fast geschafft" - emailAddressInfo: "Bitte gib deine Email-Adresse ein. Sie wird nicht öffentlich\ - \ einsehbar sein." - emailSent: "An deine Email-Adresse ({email}) wurde soeben eine Bestätigungsmail\ - \ geschickt. Bitte klicke auf den enthaltenen Link, um die Erstellung deines Benutzerkontos\ - \ abzuschließen." + emailAddressInfo: "Bitte gib deine Email-Adresse ein. Sie wird nicht öffentlich + einsehbar sein." + emailSent: "An deine Email-Adresse ({email}) wurde soeben eine Bestätigungsmail + geschickt. Bitte klicke auf den enthaltenen Link, um die Erstellung deines Nutzerkontos + abzuschließen." _accountDelete: - accountDelete: "Benutzerkonto löschen" - mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist,\ - \ kann dessen Dauer davon abhängen, wie viel Inhalt von diesem erstellt wurde\ - \ oder wie viele Dateien von diesem hochgeladen wurden." - sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte\ - \ Email-Adresse eine Benachrichtigung versendet." - requestAccountDelete: "Löschung deines Benutzerkontos anfordern" + accountDelete: "Nutzerkonto löschen" + mayTakeTime: "Da die Löschung eines Nutzerkontos ein aufwendiger Prozess ist, kann + dessen Dauer davon abhängen, wie viel Inhalt von diesem erstellt wurde oder wie + viele Dateien von diesem hochgeladen wurden." + sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte + Email-Adresse eine Benachrichtigung versendet." + requestAccountDelete: "Löschung deines Nutzerkontos anfordern" started: "Die Löschung wurde eingeleitet." inProgress: "Löschung in Bearbeitung" _ad: back: "Zurück" - reduceFrequencyOfThisAd: "Diese Werbung weniger anzeigen" + reduceFrequencyOfThisAd: "Diese Werbeanzeige weniger anzeigen" _forgotPassword: - enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese\ - \ wird ein Link gesendet, mit dem du dein Passwort zurücksetzen kannst." - ifNoEmail: "Solltest du bei der Registrierung keine Email-Adresse angegeben haben,\ - \ wende dich bitte an den Administrator." - contactAdmin: "Diese Instanz unterstützt die Verwendung von Email-Adressen nicht.\ - \ Wende dich an den Administrator, um dein Passwort zurückzusetzen." + enterEmail: "Gib die Email-Adresse ein, mit der du dich registriert hast. An diese + wird ein Link gesendet, mit dem du dein Passwort zurücksetzen kannst." + ifNoEmail: "Solltest du bei der Registrierung keine Email-Adresse angegeben haben, + wende dich bitte an den Administrator." + contactAdmin: "Dieser Server unterstützt die Verwendung von Email-Adressen nicht. + Kontaktiere bitte den Server-Administrator, um dein Passwort zurücksetzen zu lassen." _gallery: - my: "Meine Galerie" + my: "Meine Bilder-Galerie" liked: "Mit \"Gefällt mir\" markierte Beiträge" like: "Gefällt mir" unlike: "\"Gefällt mir\" entfernen" @@ -1067,19 +1064,19 @@ _preferencesBackups: save: "Speichern" inputName: "Gib einen Namen für dieses Backup ein" cannotSave: "Speichern fehlgeschlagen" - nameAlreadyExists: "Es existiert bereits ein Backup unter dem Namen \"{name}\".\ - \ Bitte gib einen anderen Namen ein." - applyConfirm: "Wirklich das Backup \"{name}\" auf dieses Gerät anwenden? Bestehende\ - \ Einstellungen darauf werden überschrieben." + nameAlreadyExists: "Es existiert bereits ein Backup unter dem Namen \"{name}\". + Bitte gib einen anderen Namen ein." + applyConfirm: "Wirklich das Backup \"{name}\" auf dieses Gerät anwenden? Bestehende + Einstellungen darauf werden überschrieben." saveConfirm: "Als {name} speichern?" deleteConfirm: "Das Backup {name} löschen?" renameConfirm: "Soll dieses Backup von \"{old}\" zu \"{new}\" umbenannt werden?" - noBackups: "Keine Backups existieren. Backups können über \"Neu erstellen\" erstelllt\ - \ werden." + noBackups: "Keine Backups existieren. Backups können über \"Neu erstellen\" erstelllt + werden." createdAt: "Erstellt am: {date} {time}" updatedAt: "Aktualisiert am: {date} {time}" cannotLoad: "Laden fehlgeschlagen" - invalidFile: "Ungültiges Dateiformat." + invalidFile: "Ungültiges Dateiformat" _registry: scope: "Scope" key: "Schlüssel" @@ -1087,15 +1084,15 @@ _registry: domain: "Domain" createKey: "Schlüssel erstellen" _aboutMisskey: - about: "Misskey ist Open-Source-Software, welche von syuilo seit 2014 entwickelt\ - \ wird." + about: "Calckey ist ein Fork von Misskey, der seit 2022 von ThatOneCalculator entwickelt + wird." contributors: "Hauptmitwirkende" allContributors: "Alle Mitwirkenden" source: "Quellcode" - translation: "Misskey übersetzen" - donate: "An Misskey spenden" - morePatrons: "Wir schätzen ebenso die Unterstützung vieler anderer hier nicht gelisteter\ - \ Personen sehr. Danke! \U0001F970" + translation: "Calckey übersetzen" + donate: "An Calckey spenden" + morePatrons: "Wir schätzen ebenso die Unterstützung vieler anderer hier nicht gelisteter + Personen sehr. Danke! 🥰" patrons: "UnterstützerInnen" _nsfw: respect: "Als NSFW markierte Bilder verbergen" @@ -1103,13 +1100,13 @@ _nsfw: force: "Alle Medien verbergen" _mfm: cheatSheet: "MFM Spickzettel" - intro: "MFM ist eine Misskey-exklusive Markup-Sprache, die in Misskey an vielen\ - \ Stellen verwendet werden kann. Hier kannst du eine Liste von verfügbarer MFM-Syntax\ - \ einsehen." - dummy: "Misskey erweitert die Welt des Fediverse" + intro: "MFM ist eine Markup-Sprache, die in Misskey, Calckey, Akkoma und anderen + Programmen verwendet wird und an vielen Stellen eingesetzt werden kann. Hier können + Sie eine Liste aller verfügbaren MFM-Syntaxe einsehen." + dummy: "Calckey erweitert die Welt des Fediverse" mention: "Erwähnung" - mentionDescription: "Mit At-Zeichen und Benutzername kann ein individueller Nutzer\ - \ angegeben werden." + mentionDescription: "Mit At-Zeichen und Nutzername kann ein individueller Nutzer + angegeben werden." hashtag: "Hashtag" hashtagDescription: "Mit einer Raute und Text kann ein Hashtag angegeben werden." url: "URL" @@ -1125,17 +1122,17 @@ _mfm: inlineCode: "Code (Eingebettet)" inlineCodeDescription: "Syntax-Hervorhebung für (Programm-)Code eingebettet anzeigen." blockCode: "Code (Block)" - blockCodeDescription: "Syntax-Hervorhebung für mehrzeiligen (Programm-)Code als\ - \ Block anzeigen." + blockCodeDescription: "Syntax-Hervorhebung für mehrzeiligen (Programm-)Code als + Block anzeigen." inlineMath: "Mathe (Eingebettet)" - inlineMathDescription: "Mathematische Formeln (KaTeX) eingebettet anzeigen." + inlineMathDescription: "Mathematische Formeln (KaTeX) eingebettet anzeigen" blockMath: "Mathe (Block)" - blockMathDescription: "Mehrzeilige mathematische Formeln (KaTeX) als Block einbetten." + blockMathDescription: "Mathematische Formeln (KaTeX) als Block einbetten" quote: "Zitationen" quoteDescription: "Inhalt als Zitat anzeigen." emoji: "Benutzerdefinierte Emojis" - emojiDescription: "Durch das Umschließen von Emoji-Namen durch Doppelpunkte können\ - \ benutzerdefinierte Emojis angezeigt werden." + emojiDescription: "Durch das Umschließen von Emoji-Namen durch Doppelpunkte können + benutzerdefinierte Emojis angezeigt werden." search: "Suche" searchDescription: "Eine vorgefertige Suchanfragebox anzeigen." flip: "Spiegelung" @@ -1143,7 +1140,7 @@ _mfm: jelly: "Animation (Dehnen)" jellyDescription: "Verleiht Inhalt eine sich dehnende Animation." tada: "Animation (Tada)" - tadaDescription: "Verleiht Inhalt eine Animation mit \"Tada!\"-Gefühl" + tadaDescription: "Verleiht Inhalt eine Animation mit \"Tada!\"-Gefühl." jump: "Animation (Sprung)" jumpDescription: "Verleiht Inhalt eine springende Animation." bounce: "Animation (Federn)" @@ -1161,8 +1158,8 @@ _mfm: x4: "Unglaublich groß" x4Description: "Lässt Inhalte noch größer als größer als groß angezeigt werden." blur: "Weichzeichnen" - blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen\ - \ des Mauszeigers über den Inhalt wird er klar angezeigt." + blurDescription: "Inhalte durch Weihzeichnung verschwimmen lassen. Durch das Bewegen + des Mauszeigers über den Inhalt wird er klar angezeigt." font: "Schriftart" fontDescription: "Setzt die Schriftart des Inhaltes fest." rainbow: "Regenbogen" @@ -1171,17 +1168,30 @@ _mfm: sparkleDescription: "Verleiht Inhalt einen glitzernden Partikeleffekt." rotate: "Drehen" rotateDescription: "Dreht den Inhalt um einen angegebenen Winkel." + fade: "Ein-/Ausblenden" + fadeDescription: "Blended Inhalt ein and aus." plain: "Schlicht" - plainDescription: "Deaktiviert jegliche MFM-Syntax, die sich innerhalb dieses MFM-Effekts\ - \ befindet." + plainDescription: "Deaktiviert jegliche MFM-Syntax, die sich innerhalb dieses MFM-Effekts + befindet." + foreground: Vordergrundfarbe + background: Hintergrundfarbe + positionDescription: Inhalt um einen bestimmten Betrag verschieben. + position: Position + cropDescription: Inhalt zuschneiden. + crop: Zuschneiden + scale: Maßstab + scaleDescription: Skaliere den Inhalt um einen bestimmten Betrag. + foregroundDescription: Ändern der Vordergrundfarbe von Text. + backgroundDescription: Ändern der Hintergrundfarbe von Text _instanceTicker: none: "Nie anzeigen" - remote: "Für Benutzer fremder Instanzen anzeigen" + remote: "Für Nutzer eines anderen Servers anzeigen" always: "Immer anzeigen" _serverDisconnectedBehavior: reload: "Automatisch aktualisieren" dialog: "Warnungsfenster zeigen" quiet: "Unaufdringlich warnen" + nothing: Nichts ändern _channel: create: "Kanal erstellen" edit: "Kanal bearbeiten" @@ -1191,7 +1201,9 @@ _channel: owned: "In Besitz" following: "Gefolgt" usersCount: "{n} Teilnehmer" - notesCount: "{n} Notizen" + notesCount: "{n} Beiträge" + nameAndDescription: Name und Beschreibung + nameOnly: Nur den Namen _menuDisplay: sideFull: "Seitlich" sideIcon: "Seitlich (Icons)" @@ -1199,38 +1211,38 @@ _menuDisplay: hide: "Ausblenden" _wordMute: muteWords: "Stummgeschaltete Wörter" - muteWordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen\ - \ trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch\ - \ trennen." - muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke\ - \ zu verwenden." - softDescription: "Notizen, die die angegebenen Konditionen erfüllen, in der Chronik\ - \ ausblenden." - hardDescription: "Verhindern, dass Notizen, die die angegebenen Konditionen erfüllen,\ - \ der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik\ - \ hinzugefügt, falls die Konditionen geändert werden." + muteWordsDescription: "Zum Nutzen einer \"UND\"-Verknüpfung Einträge mit Leerzeichen + trennen, zum Nutzen einer \"ODER\"-Verknüpfung Einträge mit einem Zeilenumbruch + trennen." + muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke + zu verwenden." + softDescription: "Beiträge, die die angegebenen Konditionen erfüllen, in der Timeline + ausblenden." + hardDescription: "Verhindern, dass Beiträge, die die angegebenen Konditionen erfüllen, + der Timeline hinzugefügt werden. Zudem werden diese Beiträge auch nicht der Timeline + hinzugefügt, falls die Konditionen geändert werden." soft: "Leicht" hard: "Schwer" - mutedNotes: "Stummgeschaltete Notizen" + mutedNotes: "Stummgeschaltete Beiträge" _instanceMute: - instanceMuteDescription: "Schaltet alle Notizen/Renotes stumm, die von den gelisteten\ - \ Instanzen stammen, inklusive Antworten von Benutzern an einen Benutzer einer\ - \ stummgeschalteten Instanz." - instanceMuteDescription2: "Instanzen getrennt durch Zeilenumbrüchen angeben" - title: "Blendet Notizen von stummgeschalteten Instanzen aus." - heading: "Liste der stummzuschaltenden Instanzen" + instanceMuteDescription: "Schaltet alle Beiträge/boosts stumm, die von den gelisteten + Servern stammen, inklusive Antworten von Nutzern an einen Nutzer eines stummgeschalteten + Servers." + instanceMuteDescription2: "Mit Zeilenumbrüchen trennen" + title: "Blendet Beiträge von aufgelisteten Servern aus." + heading: "Liste der stummzuschaltenden Server" _theme: - explore: "Farbschemata erforschen" - install: "Farbschemata installieren" - manage: "Farbschemaverwaltung" + explore: "Farbkombinationen finden" + install: "Eine Farbkombination installieren" + manage: "Farbkombinationen verwalten" code: "Farbschemencode" description: "Beschreibung" installed: "{name} wurde installiert" - installedThemes: "Installierte Farbschemata" - builtinThemes: "Eingebaute Farbschemata" - alreadyInstalled: "Dieses Farbschema ist bereits installiert" - invalid: "Der Code dieses Farbschemas ist ungültig" - make: "Farbschema erstellen" + installedThemes: "Installierte Farbkombinationen" + builtinThemes: "Vorinstallierte Farbkombinationen" + alreadyInstalled: "Diese Farbkombination ist bereits installiert" + invalid: "Diese Farbkombination ist nicht möglich" + make: "Erstelle eine Farbkombination" base: "Vorlage" addConstant: "Konstante hinzufügen" constant: "Konstante" @@ -1286,7 +1298,7 @@ _theme: buttonHoverBg: "Hintergrund von Schaltflächen (Mouseover)" inputBorder: "Rahmen von Eingabefeldern" listItemHoverBg: "Hintergrund von Listeneinträgen (Mouseover)" - driveFolderBg: "Hintergrund von Drive-Ordnern" + driveFolderBg: "Hintergrund von Cloud-Drive-Ordnern" wallpaperOverlay: "Hintergrundbild-Overlay" badge: "Wappen" messageBg: "Hintergrund von Chats" @@ -1294,23 +1306,23 @@ _theme: accentLighten: "Akzent (Erhellt)" fgHighlighted: "Hervorgehobener Text" _sfx: - note: "Notizen" - noteMy: "Meine Notizen" + note: "Beiträge" + noteMy: "Meine Beiträge" notification: "Benachrichtigungen" chat: "Chat" chatBg: "Chat (Hintergrund)" - antenna: "Antennen" + antenna: "News-Picker" channel: "Kanalbenachrichtigung" _ago: future: "Zukunft" justNow: "Gerade eben" - secondsAgo: "vor {n} Sekunde(n)" - minutesAgo: "vor {n} Minute(n)" - hoursAgo: "vor {n} Stunde(n)" - daysAgo: "vor {n} Tag(en)" - weeksAgo: "vor {n} Woche(n)" - monthsAgo: "vor {n} Monat(en)" - yearsAgo: "vor {n} Jahr(en)" + secondsAgo: "vor {n} s" + minutesAgo: "vor {n} min" + hoursAgo: "vor {n} h" + daysAgo: "vor {n} T" + weeksAgo: "vor {n} W" + monthsAgo: "vor {n} M" + yearsAgo: "vor {n} J" _time: second: "Sekunde(n)" minute: "Minute(n)" @@ -1321,99 +1333,104 @@ _tutorial: step1_1: "Willkommen!" step1_2: "Wir werden Sie einrichten. Sie werden im Handumdrehen einsatzbereit sein!" step2_1: "Bitte füllen Sie zuerst Ihr Profil aus." - step2_2: "Wenn du ein paar Angaben zu deiner Person machst, können andere leichter\ - \ erkennen, ob sie deine Notizen sehen oder dir folgen wollen." - step3_1: "Jetzt ist es Zeit, einigen Leuten zu folgen!" - step3_2: "Deine Home- und Social-Timeline basiert darauf, wem du folgst, also folge\ - \ für den Anfang ein paar Accounts." + step2_2: "Wenn du ein paar Angaben zu deiner Person machst, können andere leichter + erkennen, ob sie deine Beiträge sehen oder dir folgen wollen." + step3_1: "Jetzt ist es an der Zeit, einigen Leuten zu folgen!" + step3_2: "Deine Home- und Social-Timeline basiert darauf, wem du folgst, also folge + für den Anfang ein paar Nutzerkonten.\nKlicke das Plus Symbol oben links in einem + Profil um ihm zu folgen." step4_1: "Wir bringen dich nach draußen." - step4_2: "Für deinen ersten Beitrag machen manche Leute gerne einen {introduction}\ - \ Beitrag oder ein einfaches \"Hallo Welt!\"" + step4_2: "Für Ihren ersten Beitrag machen einige Leute gerne einen {introduction}-Beitrag + oder ein einfaches \"Hallo Welt!\"" step5_1: "Timelines, Timelines überall!" - step5_2: "Deine Instanz hat {Zeitleisten} verschiedene Zeitleisten aktiviert." - step5_3: "Die Zeitleiste Home {icon} ist die Zeitleiste, in der du die Beiträge\ - \ deiner Follower sehen kannst." - step5_4: "In der lokalen {Icon} Zeitleiste kannst du die Beiträge aller anderen\ - \ Mitglieder dieser Instanz sehen." - step5_5: "In der Zeitleiste Empfohlen {icon} kannst du Beiträge von Instanzen sehen,\ - \ die von den Administratoren empfohlen werden." - step5_6: "In der sozialen {icon} Zeitleiste kannst du Beiträge von Freunden deiner\ - \ Follower sehen." - step5_7: "In der globalen {icon} Zeitleiste kannst du Beiträge von allen anderen\ - \ verbundenen Instanzen sehen." + step5_2: "Dein Server hat {timelines} verschiedene Timelines aktiviert." + step5_3: "Die {icon} Home-Timeline ist die Timeline, in der du die Beiträge der + Nutzerkonten sehen kannst, denen du folgst und von jedem anderen auf diesem Server. + Solltest du bevorzugen, dass deine Home-Timeline nur Beiträge von den Nutzerkonten + enthält, denen du folgst, kannst du das ganz einfach in den Einstellungen ändern!" + step5_4: "In der {Icon} Local-Timeline kannst du die Beiträge aller anderen Mitglieder + dieses Servers sehen." + step5_5: "Die {icon} Social-Timeline zeigt dir ausschließlich Beiträge von Nutzerkonten + denen Du folgst." + step5_6: "In der {icon} Empfehlungen-Timeline kannst du Beiträge von Servern sehen, + die dir von den Server-Administratoren empfohlen/vorgeschlagen werden." + step5_7: "In der {icon} Global-Timeline können Sie Beiträge von jedem anderen verbundenen + Server im fediverse sehen." step6_1: "Also, was ist das hier?" - step6_2: "Nun, du bist nicht nur Calckey beigetreten. Du bist einem Portal zum Fediversum\ - \ beigetreten, einem zusammenhängenden Netzwerk von Tausenden von Servern, genannt\ - \ \"Instanzen\"." - step6_3: "Jeder Server funktioniert auf unterschiedliche Weise, und nicht auf allen\ - \ Servern läuft Calckey. Dieser hier aber schon! Es ist ein bisschen kompliziert,\ - \ aber du wirst den Dreh schnell raus haben." - step6_4: "Jetzt geh, erkunde und hab Spaß!" + step6_2: "Schön, mit Deiner Anmeldung zu Calckey bist Du gleichzeitig einem Portal + zum Fediverse beigetreten, einem Netzwerk mit Tausenden von verbundenen Servern + (häufig noch als \"Instanzen\" bezeichnet)." + step6_3: "Jeder der Server funktioniert auf unterschiedliche Weise, und nicht alle + Server führen Calckey aus. Dieser jedoch schon! Es ist zu Beginn vielleicht ein + wenig kompliziert, aber Sie werden in kürzester Zeit den Dreh raus haben." + step6_4: "Jetzt bist Du startbereit, entdecke die Möglichkeiten und hab Spaß dabei!" _2fa: - alreadyRegistered: "Du hast bereits ein Gerät für Zwei-Faktor-Authentifizierung\ - \ registriert." + alreadyRegistered: "Du hast bereits ein Gerät für Zwei-Faktor-Authentifizierung + registriert." registerDevice: "Neues Gerät registrieren" registerKey: "Neuen Sicherheitsschlüssel registrieren" - step1: "Installiere zuerst eine Authentifizierungsapp (z.B. {a} oder {b}) auf deinem\ - \ Gerät." + step1: "Installiere zuerst eine Authentifizierungsapp (z.B. {a} oder {b}) auf deinem + Gerät." step2: "Dann, scanne den angezeigten QR-Code mit deinem Gerät." step2Url: "Nutzt du ein Desktopprogramm kannst du alternativ diese URL eingeben:" step3: "Gib zum Abschluss den Token ein, der von deiner App angezeigt wird." - step4: "Alle folgenden Anmeldungsversuche werden ab sofort die Eingabe eines solchen\ - \ Tokens benötigen." - securityKeyInfo: "Du kannst neben Fingerabdruck- oder PIN-Authentifizierung auf\ - \ deinem Gerät auch Anmeldung mit Hilfe eines FIDO2-kompatiblen Hardware-Sicherheitsschlüssels\ - \ einrichten." + step4: "Alle folgenden Anmeldungsversuche werden ab sofort die Eingabe eines solchen + Tokens benötigen." + securityKeyInfo: "Du kannst neben Fingerabdruck- oder PIN-Authentifizierung auf + deinem Gerät auch Anmeldung mit Hilfe eines FIDO2-kompatiblen Hardware-Sicherheitsschlüssels + einrichten." _permissions: - "read:account": "Deine Benutzerkontoinformationen lesen" - "write:account": "Deine Benutzerkontoinformationen bearbeiten" - "read:blocks": "Die Liste deiner blockierten Benutzer lesen" - "write:blocks": "Die Liste deiner blockierten Benutzer bearbeiten" - "read:drive": "Deine Drive-Dateien und Ordner lesen" - "write:drive": "Deine Drive-Dateien und Ordner bearbeiten oder löschen" - "read:favorites": "Deine Favoriten-Liste lesen" - "write:favorites": "Deine Favoriten-Liste bearbeiten" - "read:following": "Die Liste der Benutzer, denen du folgst, lesen" - "write:following": "Anderen Benutzern folgen oder entfolgen" + "read:account": "Deine Nutzerkontoinformationen lesen" + "write:account": "Deine Nutzerkontoinformationen bearbeiten" + "read:blocks": "Die Liste deiner blockierten Nutzer lesen" + "write:blocks": "Die Liste deiner blockierten Nutzer bearbeiten" + "read:drive": "Deine Cloud-Drive-Dateien und Ordner lesen" + "write:drive": "Deine Cloud-Drive-Dateien und Ordner bearbeiten oder löschen" + "read:favorites": "Deine Lesezeichen-Liste lesen" + "write:favorites": "Deine Lesezeichen-Liste bearbeiten" + "read:following": "Die Liste der Nutzer, denen du folgst, lesen" + "write:following": "Anderen Nutzern folgen oder entfolgen" "read:messaging": "Chats lesen" "write:messaging": "Chats bedienen" "read:mutes": "Stummschaltungen lesen" "write:mutes": "Stummschaltungen bearbeiten" - "write:notes": "Notizen schreiben oder löschen" + "write:notes": "Beiträge schreiben oder löschen" "read:notifications": "Benachrichtigungen lesen" "write:notifications": "Benachrichtigungen bedienen" "read:reactions": "Reaktionen lesen" "write:reactions": "Reaktionen bedienen" "write:votes": "Umfragen bedienen" - "read:pages": "Deine Seiten lesen" - "write:pages": "Deine Seiten bearbeiten oder löschen" - "read:page-likes": "Liste der Seiten, die mir gefallen, lesen" - "write:page-likes": "Liste der Seiten, die mir gefallen, bearbeiten" - "read:user-groups": "Benutzergruppen lesen" - "write:user-groups": "Benutzergruppen bearbeiten oder löschen" - "read:channels": "Kanäle lesen" - "write:channels": "Kanäle bedienen" - "read:gallery": "Beiträge deiner Galerie lesen" - "write:gallery": "Deine Galerie bearbeiten" - "read:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge\ - \ lesen" - "write:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Galerie-Beiträge\ - \ bearbeiten" + "read:pages": "Deine Nutzer-Seiten lesen" + "write:pages": "Deine Nutzer-Seiten bearbeiten oder löschen" + "read:page-likes": "Liste der Nutzer-Seiten, die mir gefallen, lesen" + "write:page-likes": "Liste der Nutzer-Seiten, die mir gefallen, bearbeiten" + "read:user-groups": "Nutzergruppen lesen" + "write:user-groups": "Nutzergruppen bearbeiten oder löschen" + "read:channels": "Channels lesen" + "write:channels": "Channels bedienen" + "read:gallery": "Beiträge deiner Bilder-Galerie lesen" + "write:gallery": "Deine Bilder-Galerie bearbeiten" + "read:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Bilder-Galerie-Beiträge + lesen" + "write:gallery-likes": "Liste deiner mit \"Gefällt mir\" markierten Bilder-Galerie-Beiträge + bearbeiten" _auth: - shareAccess: "Möchtest du „{name}“ authorisieren, auf dieses Benutzerkonto zugreifen\ - \ zu können?" - shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest,\ - \ auf dein Benutzerkonto zugreifen zu können?" + shareAccess: "Möchtest du „{name}“ authorisieren, auf dieses Nutzerkonto zugreifen + zu können?" + shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, + auf dein Nutzerkonto zugreifen zu können?" permissionAsk: "Diese Anwendung fordert folgende Berechtigungen" pleaseGoBack: "Bitte kehre zur Anwendung zurück" callback: "Es wird zur Anwendung zurückgekehrt" denied: "Zugriff verweigert" + copyAsk: Bitte fügen Sie den folgenden Autorisierungscode in die Anwendung ein _antennaSources: - all: "Alle Notizen" - homeTimeline: "Notizen von Benutzern, denen gefolgt wird" - users: "Notizen von einem oder mehreren angegebenen Benutzern" - userList: "Notizen von allen Benutzern einer Liste" - userGroup: "Notizen von allen Benutzern einer Gruppe" + all: "Alle Beiträge" + homeTimeline: "Beiträge von Nutzern, denen gefolgt wird" + users: "Beiträge von einem oder mehreren angegebenen Nutzern" + userList: "Beiträge von allen Nutzern einer Liste" + userGroup: "Beiträge von allen Nutzern einer Gruppe" + instances: Beiträge von allen Nutzern auf einem Server _weekday: sunday: "Sonntag" monday: "Montag" @@ -1425,26 +1442,29 @@ _weekday: _widgets: memo: "Merkzettel" notifications: "Benachrichtigungen" - timeline: "Chronik" + timeline: "Timeline" calendar: "Kalender" trends: "Trends" clock: "Uhr" rss: "RSS-Reader" - rssTicker: "RSS-Ticker" + rssTicker: "RSS-Laufschrift (Ticker)" activity: "Aktivität" photos: "Fotos" digitalClock: "Digitaluhr" unixClock: "UNIX-Uhr" federation: "Föderation" - instanceCloud: "Instanzwolke" - postForm: "Notizfenster" + instanceCloud: "Server-Cloud" + postForm: "Beitragsfeld" slideshow: "Diashow" button: "Knopf" - onlineUsers: "Benutzer Online" + onlineUsers: "Nutzer Online" jobQueue: "Job-Warteschlange" serverMetric: "Servermetriken" aiscript: "AiScript-Konsole" aichan: "Ai" + _userList: + chooseList: Wählen Sie eine Liste aus + userList: Nutzerliste _cw: hide: "Inhalt verbergen" show: "Inhalt anzeigen" @@ -1474,19 +1494,19 @@ _poll: remainingSeconds: "{s} Sekunde(n) verbleibend" _visibility: public: "Öffentlich" - publicDescription: "Deine Notiz wird global für alle Benutzer sichtbar sein" - home: "Startseite" - homeDescription: "Notiz nur in die Startseiten-Chronik schicken" + publicDescription: "Dein Beitrag wird global für alle Nutzer sichtbar sein" + home: "nicht aufgelistet" + homeDescription: "Beitrag nur auf der Home-Timeline anzeigen" followers: "Follower" followersDescription: "Nur für Follower sichtbar" specified: "Direkt" - specifiedDescription: "Nur für bestimmte Benutzer sichtbar" + specifiedDescription: "Nur für bestimmte Nutzer sichtbar" localOnly: "Nur Lokal" - localOnlyDescription: "Unsichtbar für Benutzer anderer Instanzen" + localOnlyDescription: "Unsichtbar für Nutzer anderer Server" _postForm: - replyPlaceholder: "Dieser Notiz antworten …" - quotePlaceholder: "Diese Notiz zitieren …" - channelPlaceholder: "In einen Kanal senden" + replyPlaceholder: "Diesem Beitrag antworten …" + quotePlaceholder: "Diesen Beitrag zitieren …" + channelPlaceholder: "In einen Kanal senden..." _placeholders: a: "Was machst du momentan?" b: "Was ist um dich herum los?" @@ -1501,51 +1521,54 @@ _profile: youCanIncludeHashtags: "Du kannst auch Hashtags in deiner Profilbeschreibung verwenden." metadata: "Zusätzliche Informationen" metadataEdit: "Zusätzliche Informationen bearbeiten" - metadataDescription: "Hierdurch kannst du auf deinem Profil zusätzliche Informationsblöcke\ - \ anzeigen lassen." + metadataDescription: "Hierdurch kannst du auf deinem Profil zusätzliche Informationsblöcke + anzeigen lassen." metadataLabel: "Beschriftung" metadataContent: "Inhalt" changeAvatar: "Profilbild ändern" changeBanner: "Banner ändern" + locationDescription: Wenn Sie Ihren Ort zuerst eingeben, wird für andere Benutzer + die Ortszeit angezeigt. _exportOrImport: - allNotes: "Alle Notizen" - followingList: "Gefolgte Benutzer" + allNotes: "Alle Beiträge" + followingList: "Gefolgte Nutzer" muteList: "Stummschaltungen" blockingList: "Blockierungen" userLists: "Listen" - excludeMutingUsers: "Stummgeschaltete Benutzer aussortieren" - excludeInactiveUsers: "Inaktive Benutzer aussortieren" + excludeMutingUsers: "Stummgeschaltete Nutzer aussortieren" + excludeInactiveUsers: "Inaktive Nutzer aussortieren" _charts: federation: "Föderation" apRequest: "Anfragen" - usersIncDec: "Unterschied in der Anzahl von Benutzern" - usersTotal: "Anzahl aller Benutzer" - activeUsers: "Aktive Benutzer" - notesIncDec: "Unterschied in der Anzahl an Notizen" - localNotesIncDec: "Unterschied in der Anzahl an lokalen Notizen" - remoteNotesIncDec: "Unterschied in der Anzahl an Notizen von fremden Instanzen" - notesTotal: "Anzahl aller Notizen" + usersIncDec: "Unterschied in der Anzahl von Nutzern" + usersTotal: "Anzahl aller Nutzer" + activeUsers: "Aktive Nutzer" + notesIncDec: "Unterschied bei der Anzahl an Beiträgen" + localNotesIncDec: "Unterschied bei der Anzahl an lokalen Beiträgen" + remoteNotesIncDec: "Differenz zur Anzahl von Beiträgen von anderen Servern." + notesTotal: "Anzahl aller Beiträge" filesIncDec: "Unterschied in der Anzahl an Dateien" filesTotal: "Anzahl aller Dateien" storageUsageIncDec: "Unterschied in der Höhe der Speichernutzung" storageUsageTotal: "Gesamte Speichernutzung" _instanceCharts: requests: "Anfragen" - users: "Unterschied in der Anzahl an Benutzern" - usersTotal: "Gesamtanzahl an Benutzern" - notes: "Unterschied in der Anzahl an Notizen" - notesTotal: "Gesamtanzahl an Notizen" - ff: "Unterschied in der Anzahl an gefolgten Benutzern und Followern" - ffTotal: "Gesamtanzahl an gefolgten Benutzern und Followern" + users: "Unterschied in der Anzahl an Nutzern" + usersTotal: "Gesamtanzahl an Nutzern" + notes: "Unterschied in der Anzahl an Beiträgen" + notesTotal: "Gesamtanzahl der Beiträge" + ff: "Unterschied in der Anzahl an gefolgten Nutzern und Followern " + ffTotal: "Gesamtanzahl an gefolgten Nutzern und Followern" cacheSize: "Unterschied in der Größe des Caches" cacheSizeTotal: "Gesamtgröße des Caches" files: "Unterschied in der Anzahl an Dateien" filesTotal: "Gesamtanzahl an Dateien" _timelines: - home: "Startseite" - local: "Lokal" - social: "Sozial" - global: "Global" + home: "Home-TL" + local: "Local-TL" + social: "Social-TL" + global: "Global-TL" + recommended: Empfehlungen _pages: newPage: "Seite erstellen" editPage: "Seite bearbeiten" @@ -1562,28 +1585,28 @@ _pages: viewPage: "Seite anschauen" like: "Gefällt mir" unlike: "\"Gefällt mir\" entfernen" - my: "Meine Seiten" - liked: "Seiten, die mir gefallen" + my: "Meine Nutzer-Seiten" + liked: "Nutzer-Seiten, die mir gefallen" featured: "Beliebt" inspector: "Inspektor" contents: "Inhalte" content: "Seitenblock" variables: "Variablen" title: "Titel" - url: "Seiten-URL" + url: "Nutzer-Seiten-URL" summary: "Zusammenfassung" alignCenter: "Zentrieren" - hideTitleWhenPinned: "Seitentitel wenn angeheftet ausblenden" + hideTitleWhenPinned: "Nutzer-Seitentitel wenn angeheftet ausblenden" font: "Schriftart" fontSerif: "Serif" - fontSansSerif: "Sans Serif" + fontSansSerif: "sans-serif" eyeCatchingImageSet: "Vorschaubild festlegen" eyeCatchingImageRemove: "Vorschaubild entfernen" chooseBlock: "Block hinzufügen" selectType: "Typ auswählen" enterVariableName: "Gib einen Variablennamen ein" - variableNameIsAlreadyUsed: "Dieser Name wird bereits von einer anderen Variable\ - \ verwendet" + variableNameIsAlreadyUsed: "Dieser Name wird bereits von einer anderen Variable + verwendet" contentBlocks: "Inhalt" inputBlocks: "Eingabe" specialBlocks: "Spezial" @@ -1596,7 +1619,7 @@ _pages: if: "Falls" _if: variable: "Variable" - post: "Notizfenster" + post: "Beitragsfeld" _post: text: "Inhalt" attachCanvasImage: "Leinwandbild anfügen" @@ -1621,10 +1644,10 @@ _pages: id: "Leinwand-ID" width: "Breite" height: "Höhe" - note: "Eingebettete Notiz" + note: "Eingebetteter Beitrag" _note: - id: "Notiz-ID" - idDescription: "Du kannst alternativ auch die Notiz-URL angeben." + id: "Beitrags-ID" + idDescription: "Du kannst alternativ auch die Beitrags-URL angeben." detailed: "Detailierte Ansicht" switch: "Fallunterscheidung" _switch: @@ -1648,7 +1671,7 @@ _pages: pushEvent: "Ein Event senden" _pushEvent: event: "Eventname" - message: "Nachricht, die bei Auslösung des Events angezeigt werden soll" + message: "Meldung, die bei Aktivierung angezeigt werden soll" variable: "Variable, die gesendet werden soll" no-variable: "Keine" callAiScript: "AiScript ausführen" @@ -1824,8 +1847,8 @@ _pages: _for: arg1: "Anzahl der Schleifendurchläufe" arg2: "Aktion" - typeError: "Slot {slot} akzeptiert Werte vom Typ „{expect}“, aber es wurde ein\ - \ „{actual}“ Wert angegeben!" + typeError: "Slot {slot} akzeptiert Werte vom Typ „{expect}“, aber es wurde ein + „{actual}“ Wert angegeben!" thereIsEmptySlot: "Slot {slot} ist leer!" types: string: "Text" @@ -1846,12 +1869,12 @@ _notification: youGotMention: "{name} hat dich erwähnt" youGotReply: "{name} hat dir geantwortet" youGotQuote: "{name} hat dich zitiert" - youRenoted: "Renote deiner Notiz von {name}" + youRenoted: "Renote deines Beitrages von {name}" youGotPoll: "{name} hat in deiner Umfrage abgestimmt" youGotMessagingMessageFromUser: "{name} hat dir eine Chatnachricht gesendet" - youGotMessagingMessageFromGroup: "In die Gruppe {name} wurde eine Chatnachricht\ - \ gesendet" - youWereFollowed: "ist dir gefolgt" + youGotMessagingMessageFromGroup: "In die Gruppe {name} wurde eine Chatnachricht + gesendet" + youWereFollowed: "folgt dir nun" youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten" yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert" youWereInvitedToGroup: "{userName} hat dich in eine Gruppe eingeladen" @@ -1886,26 +1909,28 @@ _deck: swapDown: "Mit unterer Spalte tauschen" stackLeft: "Auf linke Spalte stapeln" popRight: "Nach rechts vom Stapel nehmen" - profile: "Profil" - newProfile: "Neues Profil" - deleteProfile: "Profil löschen" - introduction: "Erstelle eine auf dich zugeschneiderte Benutzeroberfläche durch das\ - \ Aneinanderreihen von Spalten!" + profile: "Arbeitsbereich" + newProfile: "Neuer Arbeitsbereich" + deleteProfile: "Arbeitsbereich löschen" + introduction: "Erstelle eine auf dich zugeschneiderte Benutzeroberfläche durch das + Aneinanderreihen von Spalten!" introduction2: "Klicke auf das + rechts um wann immer du möchtest neue Spalten hinzuzufügen." - widgetsIntroduction: "Drücke bitte \"Widgets bearbeiten\" im Spaltenmenü und füge\ - \ ein Widget hinzu." + widgetsIntroduction: "Drücke bitte \"Widgets bearbeiten\" im Spaltenmenü und füge + ein Widget hinzu." _columns: main: "Hauptspalte" widgets: "Widgets" notifications: "Benachrichtigungen" - tl: "Chronik" - antenna: "Antennen" + tl: "Timeline" + antenna: "News-Picker" list: "Listen" mentions: "Erwähnungen" direct: "Direktnachrichten" + renameProfile: Arbeitsbereich umbenennen + nameAlreadyExists: Der Name für den Arbeitsbereich ist bereits vorhanden. enableRecommendedTimeline: Empfohlenen Zeitplan aktivieren secureMode: Sicherer Modus (Autorisierter Abruf) -instanceSecurity: Instanzsicherheit +instanceSecurity: Serversicherheit manageGroups: Gruppen verwalten noThankYou: Nein, danke privateMode: Privater Modus @@ -1914,16 +1939,123 @@ flagSpeakAsCat: Wie eine Katze sprechen showEmojisInReactionNotifications: Emojis in Reaktionsbenachrichtigungen anzeigen userSaysSomethingReason: '{name} sagte {reason}' hiddenTagsDescription: 'Liste die Hashtags (ohne #) welche du von Trending und Explore - verstecken möchtest. Versteckte Hashtags sind durch andere Wege weiterhin auffindbar.' -addInstance: Instanz hinzufügen -flagSpeakAsCatDescription: Deine Posts werden im Katzenmodus "nya-ifiziert" + verstecken möchtest. Versteckte Hashtags sind durch andere Wege weiterhin auffindbar. + Blockierte Server sind nicht betroffen, auch wenn sie hier aufgeführt sind.' +addInstance: Server hinzufügen +flagSpeakAsCatDescription: Deine Beiträge werden im Katzenmodus nyanisiert hiddenTags: Versteckte Hashtags -antennaInstancesDescription: Nenne einen Instanzen-Host pro Zeile -secureModeInfo: Bei Anfragen an andere Instanzen nicht ohne Nachweis zurücksenden. +antennaInstancesDescription: Nenne einen Servernamen pro Zeile +secureModeInfo: Bei Anfragen an andere Server nicht ohne Nachweis zurücksenden. renoteMute: Boosts stummschalten -renoteUnmute: Boosts aktivieren -noInstances: Es gibt keine Instanzen -privateModeInfo: Wenn diese Option aktiviert ist, können nur Instanzen auf der Whitelist - mit Deinen Instanzen föderieren. Alle Beiträge werden für die Öffentlichkeit verborgen. -allowedInstances: Instanzen auf der Whitelist -selectInstance: Wähle eine Instanz +renoteUnmute: Stummschaltung von Boosts aufheben +noInstances: Es gibt keine Server +privateModeInfo: Wenn diese Option aktiviert ist, können nur als vertrauenswürdig + eingestufte Server mit deinem Server föderieren. Alle Beiträge werden für die Öffentlichkeit + verborgen. +allowedInstances: Vertrauenswürdige Server +selectInstance: Wähle einen Server +silencedInstancesDescription: Liste die Hostnamen der Server auf, die du stummschalten + möchtest. Nutzerkonten in den aufgelisteten Servern werden als "Stumm" behandelt, + können nur Follow-Anfragen stellen und können keine lokalen Nutzerkonten erwähnen, + wenn sie nicht gefolgt werden. Dies wirkt sich nicht auf die blockierten Server + aus. +editNote: Beitrag bearbeiten +edited: Bearbeitet +silenceThisInstance: Diesen Server stummschalten +silencedInstances: Stummgeschaltete Server +silenced: Stummgeschaltet +deleted: Gelöscht +breakFollowConfirm: Sind sie sicher, dass sie eine(n) Follower entfernen möchten? +unsubscribePushNotification: Push-Benachrichtigungen deaktivieren +pushNotificationAlreadySubscribed: Push-Benachrichtigungen sind bereits aktiviert +pushNotificationNotSupported: Dein Browser oder der Server unterstützt keine Push-Benachrichtigungen +pushNotification: Push-Benachrichtigungen +subscribePushNotification: Push-Benachrichtigungen aktivieren +showLocalPosts: 'Zeige lokale Beiträge in:' +homeTimeline: Home-Timeline +cannotUploadBecauseExceedsFileSizeLimit: Die Datei konnte nicht hochgeladen werden, + da sie die maximal zulässige Größe überschreitet. +moveFromLabel: 'Nutzerkonto von dem Sie umziehen:' +moveAccount: Nutzerkonto umziehen! +defaultReaction: Standard-Emoji-Reaktion für ausgehende und eingehende Beiträge +moveTo: Umzug des Nutzerkontos zu einem neuen Nutzerkonto +moveToLabel: 'Nutzerkonto zu dem sie umziehen:' +moveAccountDescription: 'Dieser Vorgang kann nicht rückgängig gemacht werden! Stellen + sie vor dem Umzug dieses Nutzerkontos sicher, dass Sie einen Namen für Ihr neues + Nutzerkonto eingerichtet haben. Bitte geben sie die Bezeichnung des neuen Nutzerkontos + wie folgt ein: @name@instance.xyz' +findOtherInstance: Einen anderen Server finden +sendPushNotificationReadMessage: Löschung der Push-Benachrichtigungen sobald die entsprechenden + Benachrichtigungen oder Beiträge gelesen wurden. +signupsDisabled: Derzeit sind keine Anmeldungen auf diesem Server möglich! Anmeldungen + auf anderen Servern sind jedoch möglich! Wenn Sie einen Einladungscode für diesen + Server haben, geben Sie ihn bitte unten ein. +swipeOnDesktop: Am Desktop PC das Wischen wie bei mobilen Geräten zulassen +enterSendsMessage: Drücken sie zum Senden des Beitrages die Eingabetaste (Strg-Taste + ausgeschaltet) +showUpdates: Zeigt ein Popup-Fenster an, wenn Calckey aktualisiert wird. +socialTimeline: Social-Timeline +moveFrom: Bisheriges Nutzerkonto zu diesem Nutzerkonto umziehen +_messaging: + groups: Gruppen + dms: Persönlich +recommendedInstances: Empfohlene Server +logoImageUrl: URL des Logo-Bildes +userSaysSomethingReasonReply: '{name} hat auf einen Beitrag geantwortet der {reason} + beinhaltet' +userSaysSomethingReasonRenote: '{name} hat einen Beitrag geteilt der {reason} beinhaltet' +userSaysSomethingReasonQuote: '{name} hat einen Beitrag zitiert der {reason} beinhaltet' +seperateRenoteQuote: Getrennte Boost- und Zitat-Schaltflächen +showAds: Anzeigen anzeigen +splash: Begrüßungsbildschirm +customSplashIconsDescription: URLs für benutzerdefinierte Splash-Screen-Symbole, die + durch Zeilenumbrüche getrennt sind und nach dem Zufallsprinzip jedes Mal angezeigt + werden, wenn ein Benutzer die Seite lädt/neu lädt. Bitte stelle sicher, dass die + Bilder unter einer statischen URL stehen, vorzugsweise alle in der Größe 192x192. +sendPushNotificationReadMessageCaption: Eine Benachrichtigung mit dem Text "{emptyPushNotificationMessage}" + wird für kurze Zeit angezeigt. Dies kann ggf. den Akkuverbrauch Ihres Geräts erhöhen. +customSplashIcons: Benutzerdefinierte Begrüßungsbildschirmsymbole (URLs) +adminCustomCssWarn: Diese Einstellung sollte nur verwendet werden, wenn Sie wissen, + was sie tut. Die Eingabe falscher Werte kann dazu führen, dass ALLE Clients nicht + mehr normal funktionieren. Bitte stellen Sie sicher, dass Ihr CSS ordnungsgemäß + funktioniert, indem Sie es in Ihren Benutzereinstellungen testen. +customMOTD: Benutzerdefinierte Meldung des Tages (Begrüßungsbildschirmmeldungen) +allowedInstancesDescription: Hosts von Instanzen, die für den Verbund auf die Whitelist + gesetzt werden sollen, jeweils durch eine neue Zeile getrennt (gilt nur im privaten + Modus). +migration: Migration +updateAvailable: Es könnte eine Aktualisierung verfügbar sein! +showAdminUpdates: Anzeigen, dass eine neue Calckey-Version verfügbar ist (nur Administrator) +customMOTDDescription: Benutzerdefinierte Meldungen für die Meldung des Tages (Begrüßungsbildschirm), + die durch Zeilenumbrüche getrennt sind und nach dem Zufallsprinzip jedes Mal angezeigt + werden, wenn ein Benutzer die Seite (neu) lädt. +recommendedInstancesDescription: Empfohlene Instanzen, die durch Zeilenumbrüche getrennt + sind, werden in der empfohlenen Zeitachse angezeigt. Fügen Sie NICHT "https://" + hinzu, sondern NUR die Domain. +sendModMail: Moderationshinweis senden +moveFromDescription: 'Dadurch wird ein Alias Ihres alten Nutzerkontos festgelegt, + sodass Sie von ihrem bisherigen Konto zu diesem Nutzerkonto wechseln können. Tun + Sie dies, BEVOR Sie von Ihrem bisherigen Nutzerkonto hierhin wechseln. Bitte geben + Sie den Namen des Nutzerkontos wie folgt ein: person@server.xyz' +preventAiLearning: KI gestütztes bot-scraping unterdrücken +preventAiLearningDescription: Fordern Sie KI-Sprachmodelle von Drittanbietern auf, + die von Ihnen hochgeladenen Inhalte, wie z. B. Beiträge und Bilder, nicht zu untersuchen. +license: Genehmigung +indexPosts: Gelistete Beiträge +migrationConfirm: "Sind Sie absolut sicher, dass Sie Ihr Nutzerkonto zu diesem {account} + umziehen möchten? Sobald Sie dies bestätigt haben, kann dies nicht mehr rückgängig + gemacht werden und Ihr Nutzerkonto kann nicht mehr von ihnen genutzt werden.\nStellen + Sie außerdem sicher, dass Sie dieses Nutzerkonto als das Konto festgelegt haben, + von dem Sie umziehen." +noteId: Beitrags-ID +customKaTeXMacro: Individuelle KaTeX Makros +enableCustomKaTeXMacro: Individuelle KaTeX-Makros aktivieren +replayTutorial: Wiederhole die Benutzeranleitung +apps: Apps +caption: Automatische Untertitelung +pwa: PWA installieren +cw: Inhaltswarnung +older: älter +newer: neuer +accessibility: Erreichbarkeit +jumpToPrevious: Zum Vorherigen springen diff --git a/locales/el-GR.yml b/locales/el-GR.yml index 9b234f5eb..d444882b4 100644 --- a/locales/el-GR.yml +++ b/locales/el-GR.yml @@ -435,7 +435,6 @@ nothing: Δεν υπάρχει τίποτα να δείτε εδώ newNoteRecived: Υπάρχουν νέες δημοσιεύσεις passwordMatched: Ταιριάζει unmarkAsSensitive: Αναίρεση επισήμανσης ως Ευαίσθητο Περιεχόμενο (NSFW) -withNFiles: '{n} αρχείο(-α)' blockedUsers: Μπλοκαρισμένα μέλη noteDeleteConfirm: Θέλετε σίγουρα να διαγράψετε αυτή τη δημοσίευση; preview: Προεπισκόπηση @@ -489,7 +488,7 @@ perDay: Ανά Ημέρα software: Λογισμικό cpuAndMemory: CPU και Μνήμη noUsers: Δεν υπάρχουν μέλη -processing: Επεξεργασία... +processing: Επεξεργασία changePassword: Αλλαγή κωδικού security: Ασφάλεια featured: Προτεινόμενα diff --git a/locales/en-US.yml b/locales/en-US.yml index 4acb0fc5b..716936754 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -5,6 +5,7 @@ introMisskey: "Welcome! Calckey is an open source, decentralized social media pl \ that's free forever! \U0001F680" monthAndDay: "{month}/{day}" search: "Search" +searchPlaceholder: "Search Calckey" notifications: "Notifications" username: "Username" password: "Password" @@ -18,7 +19,7 @@ enterUsername: "Enter username" renotedBy: "Boosted by {user}" noNotes: "No posts" noNotifications: "No notifications" -instance: "Instance" +instance: "Server" settings: "Settings" basicSettings: "Basic Settings" otherSettings: "Other Settings" @@ -34,7 +35,7 @@ uploading: "Uploading..." save: "Save" users: "Users" addUser: "Add a user" -addInstance: "Add an instance" +addInstance: "Add a server" favorite: "Add to bookmarks" favorites: "Bookmarks" unfavorite: "Remove from bookmarks" @@ -46,16 +47,22 @@ unpin: "Unpin from profile" copyContent: "Copy contents" copyLink: "Copy link" delete: "Delete" +deleted: "Deleted" deleteAndEdit: "Delete and edit" deleteAndEditConfirm: "Are you sure you want to delete this post and edit it? You\ \ will lose all reactions, boosts and replies to it." +editNote: "Edit note" +edited: "Edited" addToList: "Add to list" sendMessage: "Send a message" copyUsername: "Copy username" searchUser: "Search for a user" reply: "Reply" +jumpToPrevious: "Jump to previous" loadMore: "Load more" showMore: "Show more" +newer: "newer" +older: "older" showLess: "Close" youGotNewFollower: "followed you" receiveFollowRequest: "Follow request received" @@ -63,18 +70,20 @@ followRequestAccepted: "Follow request accepted" mention: "Mention" mentions: "Mentions" directNotes: "Direct messages" +cw: "Content warning" importAndExport: "Import/Export Data" import: "Import" export: "Export" files: "Files" download: "Download" -driveFileDeleteConfirm: "Are you sure you want to delete the file \"{name}\"? It\ - \ will be removed from all posts that contain it as an attachment." +driveFileDeleteConfirm: "Are you sure you want to delete the file \"{name}\"? It will\ + \ be removed from all posts that contain it as an attachment." unfollowConfirm: "Are you sure that you want to unfollow {name}?" exportRequested: "You've requested an export. This may take a while. It will be added\ \ to your Drive once completed." importRequested: "You've requested an import. This may take a while." lists: "Lists" +listsDesc: "Lists let you create timelines with specified users. They can be accessed from the timelines page." noLists: "You don't have any lists" note: "Post" notes: "Posts" @@ -149,7 +158,7 @@ addEmoji: "Add" settingGuide: "Recommended settings" cacheRemoteFiles: "Cache remote files" cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded\ - \ directly from the remote instance. Disabling this will decrease storage usage,\ + \ directly from the remote server. Disabling this will decrease storage usage,\ \ but increase traffic, as thumbnails will not be generated." flagAsBot: "Mark this account as a bot" flagAsBotDescription: "Enable this option if this account is controlled by a program.\ @@ -166,7 +175,7 @@ flagShowTimelineRepliesDescription: "Shows replies of users to posts of other us autoAcceptFollowed: "Automatically approve follow requests from users you're following" addAccount: "Add account" loginFailed: "Failed to sign in" -showOnRemote: "View on remote instance" +showOnRemote: "View on remote server" general: "General" accountMoved: "User has moved to a new account:" wallpaper: "Wallpaper" @@ -178,15 +187,15 @@ followConfirm: "Are you sure that you want to follow {name}?" proxyAccount: "Proxy Account" proxyAccountDescription: "A proxy account is an account that acts as a remote follower\ \ for users under certain conditions. For example, when a user adds a remote user\ - \ to the list, the remote user's activity will not be delivered to the instance\ + \ to the list, the remote user's activity will not be delivered to the server\ \ if no local user is following that user, so the proxy account will follow instead." host: "Host" selectUser: "Select a user" -selectInstance: "Select an instance" +selectInstance: "Select an server" recipient: "Recipient(s)" annotation: "Comments" federation: "Federation" -instances: "Instances" +instances: "Servers" registeredAt: "Registered at" latestRequestSentAt: "Last request sent" latestRequestReceivedAt: "Last request received" @@ -196,19 +205,18 @@ charts: "Charts" perHour: "Per Hour" perDay: "Per Day" stopActivityDelivery: "Stop sending activities" -blockThisInstance: "Block this instance" -silenceThisInstance: "Silence this instance" +blockThisInstance: "Block this server" +silenceThisInstance: "Silence this server" operations: "Operations" software: "Software" version: "Version" metadata: "Metadata" -withNFiles: "{n} file(s)" monitor: "Monitor" jobQueue: "Job Queue" cpuAndMemory: "CPU and Memory" network: "Network" disk: "Disk" -instanceInfo: "Instance Information" +instanceInfo: "Server Information" statistics: "Statistics" clearQueue: "Clear queue" clearQueueConfirmTitle: "Are you sure that you want to clear the queue?" @@ -216,27 +224,29 @@ clearQueueConfirmText: "Any undelivered posts remaining in the queue will not be \ Usually this operation is not needed." clearCachedFiles: "Clear cache" clearCachedFilesConfirm: "Are you sure that you want to delete all cached remote files?" -blockedInstances: "Blocked Instances" -blockedInstancesDescription: "List the hostnames of the instances that you want to\ - \ block. Listed instances will no longer be able to communicate with this instance." -silencedInstances: "Silenced Instances" -silencedInstancesDescription: "List the hostnames of the instances that you want to\ - \ silence. Accounts in the listed instances are treated as \"Silenced\", can only make follow requests, and cannot mention local accounts if not followed. This will not affect the blocked instances." +blockedInstances: "Blocked Servers" +blockedInstancesDescription: "List the hostnames of the servers that you want to\ + \ block. Listed servers will no longer be able to communicate with this servers." +silencedInstances: "Silenced Servers" +silencedInstancesDescription: "List the hostnames of the servers that you want to\ + \ silence. Accounts in the listed servers are treated as \"Silenced\", can only\ + \ make follow requests, and cannot mention local accounts if not followed. This\ + \ will not affect the blocked servers." hiddenTags: "Hidden Hashtags" hiddenTagsDescription: "List the hashtags (without the #) of the hashtags you wish\ \ to hide from trending and explore. Hidden hashtags are still discoverable via\ - \ other means. Blocked instances are not affected even if listed here." + \ other means." muteAndBlock: "Mutes and Blocks" mutedUsers: "Muted users" blockedUsers: "Blocked users" noUsers: "There are no users" -noInstances: "There are no instances" +noInstances: "There are no servers" editProfile: "Edit profile" noteDeleteConfirm: "Are you sure you want to delete this post?" pinLimitExceeded: "You cannot pin any more posts" intro: "Installation of Calckey has been finished! Please create an admin user." done: "Done" -processing: "Processing..." +processing: "Processing" preview: "Preview" default: "Default" defaultValueIs: "Default: {value}" @@ -250,9 +260,9 @@ all: "All" subscribing: "Subscribing" publishing: "Publishing" notResponding: "Not responding" -instanceFollowing: "Following on instance" -instanceFollowers: "Followers of instance" -instanceUsers: "Users of this instance" +instanceFollowing: "Following on server" +instanceFollowers: "Followers of server" +instanceUsers: "Users of this server" changePassword: "Change password" security: "Security" retypedNotMatch: "The inputs do not match." @@ -345,8 +355,8 @@ unwatch: "Stop watching" accept: "Accept" reject: "Reject" normal: "Normal" -instanceName: "Instance name" -instanceDescription: "Instance description" +instanceName: "Server name" +instanceDescription: "Server description" maintainerName: "Maintainer" maintainerEmail: "Maintainer email" tosUrl: "Terms of Service URL" @@ -380,7 +390,7 @@ pinnedUsersDescription: "List usernames separated by line breaks to be pinned in \ \"Explore\" tab." pinnedPages: "Pinned Pages" pinnedPagesDescription: "Enter the paths of the Pages you want to pin to the top page\ - \ of this instance, separated by line breaks." + \ of this server, separated by line breaks." pinnedClipId: "ID of the clip to pin" pinnedNotes: "Pinned posts" hcaptcha: "hCaptcha" @@ -395,6 +405,7 @@ avoidMultiCaptchaConfirm: "Using multiple Captcha systems may cause interference \ them. Would you like to disable the other Captcha systems currently active? If\ \ you would like them to stay enabled, press cancel." antennas: "Antennas" +antennasDesc: "Antennas display new posts matching the criteria you set!\n They can be accessed from the timelines page." manageAntennas: "Manage Antennas" name: "Name" antennaSource: "Antenna source" @@ -406,7 +417,7 @@ notifyAntenna: "Notify about new posts" withFileAntenna: "Only posts with files" enableServiceworker: "Enable Push-Notifications for your Browser" antennaUsersDescription: "List one username per line" -antennaInstancesDescription: "List one instance host per line" +antennaInstancesDescription: "List one server host per line" caseSensitive: "Case sensitive" withReplies: "Include replies" connectedTo: "Following account(s) are connected" @@ -521,6 +532,7 @@ total: "Total" weekOverWeekChanges: "Changes to last week" dayOverDayChanges: "Changes to yesterday" appearance: "Appearance" +accessibility: "Accessibility" clientSettings: "Client Settings" accountSettings: "Account Settings" promotion: "Promoted" @@ -585,12 +597,14 @@ scratchpadDescription: "The scratchpad provides an environment for AiScript expe output: "Output" script: "Script" disablePagesScript: "Disable AiScript on Pages" +expandOnNoteClick: "Open post on click" +expandOnNoteClickDesc: "If disabled, you can still open posts in the right-click menu or by clicking the timestamp." updateRemoteUser: "Update remote user information" deleteAllFiles: "Delete all files" deleteAllFilesConfirm: "Are you sure that you want to delete all files?" removeAllFollowing: "Unfollow all followed users" removeAllFollowingDescription: "Executing this unfollows all accounts from {host}.\ - \ Please run this if the instance e.g. no longer exists." + \ Please run this if the server e.g. no longer exists." userSuspended: "This user has been suspended." userSilenced: "This user is being silenced." yourAccountSuspendedTitle: "This account is suspended" @@ -660,9 +674,12 @@ wordMute: "Word mute" regexpError: "Regular Expression error" regexpErrorDescription: "An error occurred in the regular expression on line {line}\ \ of your {tab} word mutes:" -instanceMute: "Instance Mutes" +instanceMute: "Server Mutes" userSaysSomething: "{name} said something" userSaysSomethingReason: "{name} said {reason}" +userSaysSomethingReasonReply: "{name} replied to a post containing {reason}" +userSaysSomethingReasonRenote: "{name} boosted a post containing {reason}" +userSaysSomethingReasonQuote: "{name} quoted a post containing {reason}" makeActive: "Activate" display: "Display" copy: "Copy" @@ -672,6 +689,7 @@ logs: "Logs" delayed: "Delayed" database: "Database" channel: "Channels" +channelFederationWarn: "Channels do not yet federate to other servers" create: "Create" notificationSetting: "Notification settings" notificationSettingDesc: "Select the types of notification to display." @@ -696,16 +714,16 @@ abuseReported: "Your report has been sent. Thank you very much." reporter: "Reporter" reporteeOrigin: "Reportee Origin" reporterOrigin: "Reporter Origin" -forwardReport: "Forward report to remote instance" +forwardReport: "Forward report to remote server" forwardReportIsAnonymous: "Instead of your account, an anonymous system account will\ - \ be displayed as reporter at the remote instance." + \ be displayed as reporter at the remote server." send: "Send" abuseMarkAsResolved: "Mark report as resolved" openInNewTab: "Open in new tab" openInSideView: "Open in side view" defaultNavigationBehaviour: "Default navigation behavior" editTheseSettingsMayBreakAccount: "Editing these settings may damage your account." -instanceTicker: "Instance information of posts" +instanceTicker: "Server information of posts" waitingFor: "Waiting for {x}" random: "Random" system: "System" @@ -757,6 +775,7 @@ pageLikedCount: "Number of received Page likes" contact: "Contact" useSystemFont: "Use the system's default font" clips: "Clips" +clipsDesc: "Clips are like share-able categorized bookmarks. You can create clips from the menu of individual posts." experimentalFeatures: "Experimental features" developer: "Developer" makeExplorable: "Make account visible in \"Explore\"" @@ -803,7 +822,7 @@ capacity: "Capacity" inUse: "Used" editCode: "Edit code" apply: "Apply" -receiveAnnouncementFromInstance: "Receive notifications from this instance" +receiveAnnouncementFromInstance: "Receive notifications from this server" emailNotification: "Email notifications" publish: "Publish" inChannelSearch: "Search in channel" @@ -834,7 +853,7 @@ active: "Active" offline: "Offline" notRecommended: "Not recommended" botProtection: "Bot Protection" -instanceBlocking: "Federation Block/Silence" +instanceBlocking: "Federation Management" selectAccount: "Select account" switchAccount: "Switch account" enabled: "Enabled" @@ -862,13 +881,13 @@ low: "Low" emailNotConfiguredWarning: "Email address not set." ratio: "Ratio" secureMode: "Secure Mode (Authorized Fetch)" -instanceSecurity: "Instance Security" -secureModeInfo: "When requesting from other instances, do not send back without proof." +instanceSecurity: "Server Security" +secureModeInfo: "When requesting from other servers, do not send back without proof." privateMode: "Private Mode" -privateModeInfo: "When enabled, only whitelisted instances can federate with your\ - \ instances. All posts will be hidden from the public." -allowedInstances: "Whitelisted Instances" -allowedInstancesDescription: "Hosts of instances to be whitelisted for federation,\ +privateModeInfo: "When enabled, only whitelisted servers can federate with your\ + \ server. All posts will be hidden from the public." +allowedInstances: "Whitelisted Servers" +allowedInstancesDescription: "Hosts of servers to be whitelisted for federation,\ \ each separated by a new line (only applies in private mode)." previewNoteText: "Show preview" customCss: "Custom CSS" @@ -911,7 +930,7 @@ manageAccounts: "Manage Accounts" makeReactionsPublic: "Set reaction history to public" makeReactionsPublicDescription: "This will make the list of all your past reactions\ \ publicly visible." -classic: "Classic" +classic: "Centered" muteThread: "Mute thread" unmuteThread: "Unmute thread" ffVisibility: "Follows/Followers Visibility" @@ -931,15 +950,12 @@ overridedDeviceKind: "Device type" smartphone: "Smartphone" tablet: "Tablet" auto: "Auto" -showLocalPosts: "Show local posts in:" -homeTimeline: "Home Timeline" -socialTimeline: "Social Timeline" -themeColor: "Instance Ticker Color" +themeColor: "Server Ticker Color" size: "Size" numberOfColumn: "Number of columns" searchByGoogle: "Search" -instanceDefaultLightTheme: "Instance-wide default light theme" -instanceDefaultDarkTheme: "Instance-wide default dark theme" +instanceDefaultLightTheme: "Server-wide default light theme" +instanceDefaultDarkTheme: "Server-wide default dark theme" instanceDefaultThemeDescription: "Enter the theme code in object format." mutePeriod: "Mute duration" indefinitely: "Permanently" @@ -962,7 +978,7 @@ driveCapOverrideLabel: "Change the drive capacity for this user" driveCapOverrideCaption: "Reset the capacity to default by inputting a value of 0\ \ or lower." requireAdminForView: "You must log in with an administrator account to view this." -isSystemAccount: "An account created and automatically operated by the system." +isSystemAccount: "This account is created and automatically operated by the system. Please do not moderate, edit, delete, or otherwise tamper with this account, or it may break your server." typeToConfirm: "Please enter {x} to confirm" deleteAccount: "Delete account" document: "Documentation" @@ -994,7 +1010,7 @@ beta: "Beta" enableAutoSensitive: "Automatic NSFW-Marking" enableAutoSensitiveDescription: "Allows automatic detection and marking of NSFW media\ \ through Machine Learning where possible. Even if this option is disabled, it may\ - \ be enabled instance-wide." + \ be enabled server-wide." activeEmailValidationDescription: "Enables stricter validation of email addresses,\ \ which includes checking for disposable addresses and by whether it can actually\ \ be communicated with. When unchecked, only the format of the email is validated." @@ -1006,7 +1022,7 @@ pushNotification: "Push notifications" subscribePushNotification: "Enable push notifications" unsubscribePushNotification: "Disable push notifications" pushNotificationAlreadySubscribed: "Push notifications are already enabled" -pushNotificationNotSupported: "Your browser or instance does not support push notifications" +pushNotificationNotSupported: "Your browser or server does not support push notifications" sendPushNotificationReadMessage: "Delete push notifications once the relevant notifications\ \ or messages have been read" sendPushNotificationReadMessageCaption: "A notification containing the text \"{emptyPushNotificationMessage}\"\ @@ -1025,8 +1041,8 @@ customSplashIconsDescription: "URLs for custom splash screen icons separated by \ breaks to be shown randomly every time a user loads/reloads the page. Please make\ \ sure the images are on a static URL, preferably all resized to 192x192." showUpdates: "Show a popup when Calckey updates" -recommendedInstances: "Recommended instances" -recommendedInstancesDescription: "Recommended instances separated by line breaks to\ +recommendedInstances: "Recommended servers" +recommendedInstancesDescription: "Recommended servers separated by line breaks to\ \ appear in the recommended timeline. Do NOT add `https://`, ONLY the domain." caption: "Auto Caption" splash: "Splash Screen" @@ -1041,12 +1057,12 @@ moveToLabel: "Account you're moving to:" moveAccount: "Move account!" moveAccountDescription: "This process is irreversible. Make sure you've set up an\ \ alias for this account on your new account before moving. Please enter the tag\ - \ of the account formatted like @person@instance.com" + \ of the account formatted like @person@server.com" moveFrom: "Move to this account from an older account" moveFromLabel: "Account you're moving from:" moveFromDescription: "This will set an alias of your old account so that you can move\ \ from that account to this current one. Do this BEFORE moving from your older account.\ - \ Please enter the tag of the account formatted like @person@instance.com" + \ Please enter the tag of the account formatted like @person@server.com" migrationConfirm: "Are you absolutely sure you want to migrate your account to {account}?\ \ Once you do this, you won't be able to reverse it, and you won't be able to use\ \ your account normally again.\nAlso, please ensure that you've set this current\ @@ -1054,7 +1070,8 @@ migrationConfirm: "Are you absolutely sure you want to migrate your account to { defaultReaction: "Default emoji reaction for outgoing and incoming posts" license: "License" indexPosts: "Index Posts" -indexFrom: "Index from Post ID onwards (leave blank to index every post)" +indexFrom: "Index from Post ID onwards" +indexFromDescription: "Leave blank to index every post" indexNotice: "Now indexing. This will probably take a while, please don't restart\ \ your server for at least an hour." customKaTeXMacro: "Custom KaTeX macros" @@ -1069,7 +1086,17 @@ customKaTeXMacroDescription: "Set up macros to write mathematical expressions ea \ supported; advanced syntax, such as conditional branching, cannot be used here." enableCustomKaTeXMacro: "Enable custom KaTeX macros" noteId: "Post ID" - +signupsDisabled: "Signups on this server are currently disabled, but you can always\ + \ sign up at another server! If you have an invitation code for this server, please\ + \ enter it below." +findOtherInstance: "Find another server" +apps: "Apps" +sendModMail: "Send Moderation Notice" +preventAiLearning: "Prevent AI bot scraping" +preventAiLearningDescription: "Request third-party AI language models not to study\ + \ content you upload, such as posts and images." +noGraze: "Please disable the \"Graze for Mastodon\" browser extension, as it interferes with Calckey." +silencedWarning: "This page is showing because these usera are from servers your admin silenced, so they may potentially be spam." _sensitiveMediaDetection: description: "Reduces the effort of server moderation through automatically recognizing\ \ NSFW media via Machine Learning. This will slightly increase the load on the\ @@ -1116,9 +1143,9 @@ _forgotPassword: enterEmail: "Enter the email address you used to register. A link with which you\ \ can reset your password will then be sent to it." ifNoEmail: "If you did not use an email during registration, please contact the\ - \ instance administrator instead." - contactAdmin: "This instance does not support using email addresses, please contact\ - \ the instance administrator to reset your password instead." + \ server administrator instead." + contactAdmin: "This server does not support using email addresses, please contact\ + \ the server administrator to reset your password instead." _gallery: my: "My Gallery" liked: "Liked Posts" @@ -1176,10 +1203,16 @@ _nsfw: ignore: "Don't hide NSFW media" force: "Hide all media" _mfm: + play: "Play MFM" + stop: "Stop MFM" + warn: "MFM may contain rapidly moving or flashy animations" + alwaysPlay: "Always autoplay all animated MFM" cheatSheet: "MFM Cheatsheet" intro: "MFM is a markup language used on Misskey, Calckey, Akkoma, and more that\ \ can be used in many places. Here you can view a list of all available MFM syntax." dummy: "Calckey expands the world of the Fediverse" + advanced: "Advanced MFM" + advancedDescription: "If disabled, only allows for basic markup unless animated MFM is playing" mention: "Mention" mentionDescription: "You can specify a user by using an At-Symbol and a username." hashtag: "Hashtag" @@ -1242,8 +1275,12 @@ _mfm: sparkleDescription: "Gives content a sparkling particle effect." rotate: "Rotate" rotateDescription: "Turns content by a specified angle." + fade: "Fade" + fadeDescription: "Fades content in and out." position: "Position" positionDescription: "Move content by a specified amount." + crop: "Crop" + cropDescription: "Crop content." scale: "Scale" scaleDescription: "Scale content by a specified amount." foreground: "Foreground color" @@ -1272,6 +1309,8 @@ _channel: following: "Followed" usersCount: "{n} Participants" notesCount: "{n} Posts" + nameAndDescription: "Name and description" + nameOnly: "Name only" _messaging: dms: "Private" groups: "Groups" @@ -1293,11 +1332,11 @@ _wordMute: hard: "Hard" mutedNotes: "Muted posts" _instanceMute: - instanceMuteDescription: "This will mute any posts/boosts from the listed instances,\ - \ including those of users replying to a user from a muted instance." + instanceMuteDescription: "This will mute any posts/boosts from the listed servers,\ + \ including those of users replying to a user from a muted server." instanceMuteDescription2: "Separate with newlines" - title: "Hides posts from listed instances." - heading: "List of instances to be muted" + title: "Hides posts from listed servers." + heading: "List of servers to be muted" _theme: explore: "Explore Themes" install: "Install a theme" @@ -1402,30 +1441,26 @@ _tutorial: step2_1: "First, please fill out your profile." step2_2: "Providing some information about who you are will make it easier for others\ \ to tell if they want to see your posts or follow you." - step3_1: "Now time to follow some people!" + step3_1: "Now it's time to follow some people!" step3_2: "Your home and social timelines are based off of who you follow, so try\ \ following a couple accounts to get started.\nClick the plus circle on the top\ \ right of a profile to follow them." step4_1: "Let's get you out there." - step4_2: "For your first post, some people like to made a {introduction} post or\ + step4_2: "For your first post, some people like to make an {introduction} post or\ \ a simple \"Hello world!\"" step5_1: "Timelines, timelines everywhere!" - step5_2: "Your instance has {timelines} different timelines enabled." + step5_2: "Your server has {timelines} different timelines enabled." step5_3: "The Home {icon} timeline is where you can see posts from the accounts\ - \ you follow and from everyone else on this instance. If you prefer your Home\ - \ timeline to only display posts from accounts you follow, you can easily change\ - \ this in Settings!" - step5_4: "The Local {icon} timeline is where you can see posts from everyone else\ - \ on this instance." - step5_5: "The Social {icon} timeline is where you can see posts only from the accounts\ \ you follow." - step5_6: "The Recommended {icon} timeline is where you can see posts from instances\ + step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this server." + step5_5: "The Social {icon} timeline is a combination of the Home and Local timelines." + step5_6: "The Recommended {icon} timeline is where you can see posts from servers\ \ the admins recommend." step5_7: "The Global {icon} timeline is where you can see posts from every other\ - \ connected instance." + \ connected server." step6_1: "So, what is this place?" step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse,\ - \ an interconnected network of thousands of servers, called \"instances\"." + \ an interconnected network of thousands of servers." step6_3: "Each server works in different ways, and not all servers run Calckey.\ \ This one does though! It's a bit complicated, but you'll get the hang of it\ \ in no time." @@ -1490,7 +1525,7 @@ _antennaSources: users: "Posts from specific users" userList: "Posts from a specified list of users" userGroup: "Posts from users in a specified group" - instances: "Posts from all users on an instance" + instances: "Posts from all users on an server" _weekday: sunday: "Sunday" monday: "Monday" @@ -1500,30 +1535,35 @@ _weekday: friday: "Friday" saturday: "Saturday" _widgets: - memo: "Sticky notes" + memo: "Sticky Notes" notifications: "Notifications" timeline: "Timeline" calendar: "Calendar" trends: "Trending" clock: "Clock" - rss: "RSS reader" - rssTicker: "RSS-Ticker" + rss: "RSS Reader" + rssTicker: "RSS Ticker" activity: "Activity" photos: "Photos" - digitalClock: "Digital clock" - unixClock: "UNIX clock" + digitalClock: "Digital Clock" + unixClock: "UNIX Clock" federation: "Federation" - instanceCloud: "Instance cloud" - postForm: "Posting form" + instanceCloud: "Server Cloud" + postForm: "Posting Form" slideshow: "Slideshow" button: "Button" - onlineUsers: "Online users" + onlineUsers: "Online Users" jobQueue: "Job Queue" - serverMetric: "Server metrics" - aiscript: "AiScript console" - userList: "User list" + serverMetric: "Server Metrics" + aiscript: "AiScript Console" + userList: "User List" + serverInfo: "Server Info" _userList: chooseList: "Select a list" + meiliStatus: "Server Status" + meiliSize: "Index size" + meiliIndexCount: "Indexed posts" + _cw: hide: "Hide" show: "Show content" @@ -1937,6 +1977,9 @@ _notification: youWereInvitedToGroup: "{userName} invited you to a group" pollEnded: "Poll results have become available" emptyPushNotificationMessage: "Push notifications have been updated" + reacted: "reacted to your post" + renoted: "boosted your post" + voted: "voted on your poll" _types: all: "All" follow: "New followers" @@ -1985,20 +2028,12 @@ _deck: list: "List" mentions: "Mentions" direct: "Direct messages" -_apps: - apps: "Apps" - crossPlatform: "Cross platform" - mobile: "Mobile" - firstParty: "First party" - firstClass: "First class" - secondClass: "Second class" - thirdClass: "Third class" - free: "Free" - paid: "Paid" - pwa: "Install PWA" - kaiteki: "Kaiteki" - milktea: "Milktea" - missLi: "MissLi" - mona: "Mona" - theDesk: "TheDesk" - lesskey: "Lesskey" +_experiments: + title: "Experiments" + enablePostEditing: "Enable post editing" + postEditingCaption: "Shows the option for users to edit their existing posts via\ + \ the post options menu." + enablePostImports: "Enable post imports" + postImportsCaption: "Allows users to import their posts from past Calckey,\ + \ Misskey, Mastodon, Akkoma, and Pleroma accounts. It may cause slowdowns during\ + \ load if your queue is bottlenecked." diff --git a/locales/es-ES.yml b/locales/es-ES.yml index c9811e3c0..2dc40f359 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -14,7 +14,7 @@ ok: "OK" gotIt: "¡Lo tengo!" cancel: "Cancelar" enterUsername: "Introduce el nombre de usuario" -renotedBy: "Reposteado por {user}" +renotedBy: "Impulsado por {user}" noNotes: "No hay publicaciones" noNotifications: "No hay notificaciones" instance: "Instancia" @@ -46,7 +46,7 @@ copyLink: "Copiar enlace" delete: "Borrar" deleteAndEdit: "Borrar y editar" deleteAndEditConfirm: "¿Estás seguro de que quieres borrar esta publicación y editarla?\ - \ Perderás todas las reacciones, impulsados y respuestas." + \ Perderás todas las reacciones, impulsos y respuestas." addToList: "Agregar a lista" sendMessage: "Enviar un mensaje" copyUsername: "Copiar nombre de usuario" @@ -195,7 +195,6 @@ operations: "Operaciones" software: "Software" version: "Versión" metadata: "Metadatos" -withNFiles: "{n} archivos" monitor: "Monitor" jobQueue: "Cola de trabajos" cpuAndMemory: "CPU y Memoria" @@ -222,7 +221,7 @@ noteDeleteConfirm: "¿Desea borrar esta publicación?" pinLimitExceeded: "Ya no se pueden fijar más publicaciones" intro: "¡La instalación de Calckey ha terminado! Crea el usuario administrador." done: "Terminado" -processing: "Procesando..." +processing: "Procesando" preview: "Vista previa" default: "Predeterminado" defaultValueIs: "Predeterminado" @@ -342,7 +341,7 @@ dayX: "Día {day}" monthX: "Mes {month}" yearX: "Año {year}" pages: "Páginas" -integration: "Integración" +integration: "Integraciones" connectService: "Conectar" disconnectService: "Desconectar" enableLocalTimeline: "Habilitar linea de tiempo local" @@ -366,7 +365,7 @@ pinnedPages: "Páginas fijadas" pinnedPagesDescription: "Describa las rutas de las páginas que desea fijar a la página\ \ principal de la instancia, separadas por lineas nuevas" pinnedClipId: "Id del clip fijado" -pinnedNotes: "Nota fijada" +pinnedNotes: "Publicación fijada" hcaptcha: "hCaptcha" enableHcaptcha: "Habilitar hCaptcha" hcaptchaSiteKey: "Clave del sitio" @@ -386,14 +385,14 @@ antennaKeywords: "Palabras clave para recibir" antennaExcludeKeywords: "Palabras clave para excluir" antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar\ \ con una linea nueva es una declaración OR" -notifyAntenna: "Notificar nueva nota" -withFileAntenna: "Sólo notas con archivos adjuntados" +notifyAntenna: "Notificar nueva publicación" +withFileAntenna: "Sólo publicaciones con archivos adjuntados" enableServiceworker: "Activar ServiceWorker" antennaUsersDescription: "Elegir nombres de usuarios separados por una linea nueva" caseSensitive: "Distinguir mayúsculas de minúsculas" withReplies: "Incluir respuestas" connectedTo: "Estas cuentas están conectadas" -notesAndReplies: "Notas y respuestas" +notesAndReplies: "Publicaciones y respuestas" withFiles: "Adjuntos" silence: "Silenciar" silenceConfirm: "¿Desea silenciar al usuario?" @@ -430,7 +429,7 @@ notFoundDescription: "No se encontró la página correspondiente a la URL elegid uploadFolder: "Carpeta de subidas por defecto" cacheClear: "Borrar caché" markAsReadAllNotifications: "Marcar todas las notificaciones como leídas" -markAsReadAllUnreadNotes: "Marcar todas las notas como leídas" +markAsReadAllUnreadNotes: "Marcar todas las publicaciones como leídas" markAsReadAllTalkMessages: "Marcar todos los chats como leídos" help: "Ayuda" inputMessageHere: "Escribe el mensaje aquí" @@ -451,7 +450,7 @@ text: "Texto" enable: "Activar" next: "Siguiente" retype: "Intentar de nuevo" -noteOf: "Notas de {user}" +noteOf: "Publicaciones de {user}" inviteToGroup: "Invitar al grupo" quoteAttached: "Cita añadida" quoteQuestion: "¿Quiere añadir una cita?" @@ -511,8 +510,8 @@ accountSettings: "Ajustes de cuenta" promotion: "Promovido" promote: "Promover" numberOfDays: "Cantidad de dias" -hideThisNote: "Ocultar esta nota" -showFeaturedNotesInTimeline: "Mostrar notas destacadas en la línea de tiempo" +hideThisNote: "Ocultar esta publicación" +showFeaturedNotesInTimeline: "Mostrar publicaciones destacadas en la línea de tiempo" objectStorage: "Almacenamiento de objetos" useObjectStorage: "Usar almacenamiento de objetos" objectStorageBaseUrl: "Base URL" @@ -542,7 +541,7 @@ objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " serverLogs: "Registros del servidor" deleteAll: "Eliminar todos" showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo" -newNoteRecived: "Tienes una nota nuevo" +newNoteRecived: "Tienes unas publicaciones nuevas" sounds: "Sonidos" listen: "Escuchar" none: "Ninguna" @@ -575,7 +574,7 @@ deleteAllFiles: "Borrar todos los archivos" deleteAllFilesConfirm: "¿Desea borrar todos los archivos?" removeAllFollowing: "Retener todos los siguientes" removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}.\ - \ Ejecutar en caso de que esta instancia haya dejado de existir" + \ Ejecutar en caso de que esta instancia haya dejado de existir." userSuspended: "Este usuario ha sido suspendido." userSilenced: "Este usuario ha sido silenciado." yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida" @@ -590,8 +589,8 @@ addRelay: "Agregar relé" inboxUrl: "Inbox URL" addedRelays: "Relés añadidos" serviceworkerInfo: "Se necesita activar para usar las notificaciones push" -deletedNote: "Nota eliminada" -invisibleNote: "Nota oculta" +deletedNote: "Publicación eliminada" +invisibleNote: "Publicación oculta" enableInfiniteScroll: "Activar scroll infinito" visibility: "Visibilidad" poll: "Encuesta" @@ -1154,6 +1153,7 @@ _mfm: plain: "Plano" plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto\ \ MFM." + position: Posición _instanceTicker: none: "No mostrar" remote: "Mostrar a usuarios remotos" @@ -1173,6 +1173,8 @@ _channel: following: "Siguiendo" usersCount: "{n} participantes" notesCount: "{n} notas" + nameOnly: Nombre solamente + nameAndDescription: Nombre y descripción _menuDisplay: sideFull: "Horizontal" sideIcon: "Horizontal (ícono)" @@ -1900,18 +1902,6 @@ moveFrom: Mueve a esta cuenta de una cuenta antigua moveFromLabel: 'La cuenta que estás moviendo de:' moveAccountDescription: '' license: Licencia -_apps: - apps: Aplicaciones - crossPlatform: Plataforma Cruzada - mobile: Teléfono móvil - secondClass: Segunda clase - lesskey: '' - firstClass: Primera clase - thirdClass: Tercera clase - theDesk: '' - pwa: Instalar PWA - free: Gratis - paid: Pagado noThankYou: No gracias userSaysSomethingReason: '{name} dijo {reason}' hiddenTags: Etiquetas Ocultas @@ -1928,3 +1918,12 @@ _messaging: groups: Grupos dms: Privado pushNotification: Notificaciones +apps: Aplicaciones +migration: Migración +silenced: Silenciado +deleted: Eliminado +edited: Editado +editNote: Editar nota +silenceThisInstance: Silenciar esta instancia +findOtherInstance: Buscar otro servidor +userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]' diff --git a/locales/fi.yml b/locales/fi.yml index 9b4102ddc..aa9699cca 100644 --- a/locales/fi.yml +++ b/locales/fi.yml @@ -75,8 +75,8 @@ files: Tiedostot download: Lataa unfollowConfirm: Oletko varma, ettet halua seurata enää käyttäjää {name}? noLists: Sinulla ei ole listoja -note: Lähetys -notes: Lähetykset +note: Viesti +notes: Viestit following: Seuraa createList: Luo lista manageLists: Hallitse listoja @@ -171,8 +171,8 @@ searchUser: Etsi käyttäjää showLess: Sulje youGotNewFollower: seurasi sinua directNotes: Yksityisviestit -driveFileDeleteConfirm: Oletko varma, että haluat poistaa tiedoston " {name}"? Lähetykset, - jotka sisältyvät tiedostoon, poistuvat myös. +driveFileDeleteConfirm: Oletko varma, että haluat poistaa tiedoston " {name}"? Se + poistetaan kaikista viesteistä, jotka sisältävät sen liitetiedostona. importRequested: Olet pyytänyt viemistä. Tämä voi viedä hetken. exportRequested: Olet pyytänyt tuomista. Tämä voi viedä hetken. Se lisätään asemaan kun tuonti valmistuu. @@ -182,7 +182,6 @@ followsYou: Seuraa sinua pageLoadErrorDescription: Tämä yleensä johtuu verkkovirheistä tai selaimen välimuistista. Kokeile tyhjentämällä välimuisti ja yritä sitten hetken kuluttua uudelleen. enterListName: Anna listalle nimi -withNFiles: '{n} tiedosto(t)' instanceInfo: Instanssin tiedot clearQueue: Tyhjennä jono suspendConfirm: Oletko varma, että haluat keskeyttää tämän tilin? @@ -221,3 +220,751 @@ clearQueueConfirmText: Mitkään välittämättömät lähetykset, jotka ovat jo federoidu. Yleensä tätä toimintoa ei tarvita. blockedInstancesDescription: Lista instanssien isäntänimistä, jotka haluat estää. Listatut instanssit eivät kykene kommunikoimaan enää tämän instanssin kanssa. +security: Turvallisuus +retypedNotMatch: Syöte ei kelpaa. +fromDrive: Asemasta +keepOriginalUploading: Säilytä alkuperäinen kuva +uploadFromUrlDescription: Tiedoston URL, jonka haluat ylösladata +themeForLightMode: Teema vaaleassa tilassa +theme: Teemat +themeForDarkMode: Teema tummassa tilassa +drive: Asema +darkThemes: Tummat teemat +copyUrl: Kopioi URL-linkki +rename: Uudelleennimeä +maintainerName: Ylläpitäjä +maintainerEmail: Ylläpitäjän sähköposti +tosUrl: Palvelun ehdot URL-linkki +thisYear: Vuosi +backgroundImageUrl: Taustakuvan URL-linkki +basicInfo: Perustiedot +pinnedPagesDescription: Kirjoita niiden sivujen polut, jotka haluat liittää tämän + instanssin yläsivulle rivinvaihdoin erotettuna. +hcaptchaSiteKey: Sivuston avain +hcaptchaSecretKey: Salausavain +silencedInstances: Hiljennetyt instanssit +muteAndBlock: Hiljennykset ja estetyt +mutedUsers: Hiljennetyt käyttäjät +blockedUsers: Estetyt käyttäjät +noUsers: Ei yhtään käyttäjää +noInstances: Ei yhtään instanssia +editProfile: Muokkaa profiilia +noteDeleteConfirm: Oletko varma, että haluat poistaa tämän viestin? +pinLimitExceeded: Et voi kiinnittää enempää viestejä +intro: Calckey -asennus valmis! Ole hyvä ja luo admin-käyttäjä. +done: Valmis +processing: Suorittaa +preview: Esikatselu +default: Oletus +defaultValueIs: 'Oletus: {value}' +noCustomEmojis: Ei emojia +noJobs: Ei töitä +federating: Federoi +blocked: Estetty +silenced: Hiljennetty +suspended: Keskeytetty +all: Kaikki +publishing: Julkaisee +subscribing: Tilaa +notResponding: Ei vastaa +instanceFollowing: Seuraa instanssia +instanceFollowers: Instanssin seuraajat +instanceUsers: Instanssin käyttäjät +changePassword: Muuta salasana +newPasswordRetype: Uudelleensyötä uusi salasana +more: Lisää! +featured: Esillä +usernameOrUserId: Käyttäjänimi tai käyttäjä id +noSuchUser: Käyttäjää ei löydy +lookup: Hae +announcements: Tiedoitteet +imageUrl: Kuva URL-linkki +removed: Onnistuneesti poistettu +removeAreYouSure: Oletko varma, että haluat poistaa " {x}"? +resetAreYouSure: Haluatko nollata? +saved: Tallennettu +messaging: Juttele +upload: Lataa ylös +fromUrl: URL:stä +uploadFromUrl: Ylöslataa URL:stä +uploadFromUrlRequested: Ylöslataus pyydetty +uploadFromUrlMayTakeTime: Voi viedä hetki, kun ylöslataus on valmis. +explore: Tutustu +messageRead: Lue +noMoreHistory: Ei lisää historiaa +startMessaging: Aloita uusi juttelu +manageGroups: Hallitse ryhmiä +nUsersRead: lukenut {n} +agreeTo: Hyväksyn {0} +tos: Palvelun ehdot +start: Aloita +home: Koti +remoteUserCaution: Etäkäyttäjän tiedot saattavat olla puutteellisia. +light: Vaalea +dark: Tumma +lightThemes: Vaaleat teemat +syncDeviceDarkMode: Synkronoi tumma tila laitteen asetuksen mukaan +fileName: Tiedostonimi +selectFile: Valitse tiedosto +selectFiles: Valitse tiedostot +selectFolder: Valitse kansio +selectFolders: Valitse kansiot +renameFile: Uudelleennimeä tiedosto +folderName: Kansionimi +createFolder: Luo kansio +renameFolder: Uudelleennimeä kansio +deleteFolder: Poista kansio +addFile: Lisää tiedosto +emptyDrive: Asemasi on tyhjä +emptyFolder: Tämä kansio on tyhjä +unableToDelete: Ei voitu poistaa +inputNewFileName: Syötä uusi tiedostonimi +inputNewDescription: Syötä uusi kuvateksti +inputNewFolderName: Syötä uusi kansionimi +hasChildFilesOrFolders: Koska kansio ei ole tyhjä, sitä ei voi poistaa. +avatar: Kuvake +banner: Banneri +nsfw: Herkkää sisältöä (NSFW) +whenServerDisconnected: Kun yhteys palvelimeen menetetään +disconnectedFromServer: Yhteys palvelimeen katkennut +reload: Päivitä +doNothing: Hylkää +reloadConfirm: Haluaisitko päivittää aikajanan? +unwatch: Lopeta katselu +watch: Katsele +accept: Hyväksy +reject: Hylkää +normal: Normaali +instanceName: Instanssin nimi +thisMonth: Kuukausi +today: Tänään +monthX: '{month}' +connectService: Yhdistä +disconnectService: Katkaise yhteys +enableLocalTimeline: Ota käyttöön paikallinen aikajana +enableGlobalTimeline: Ota käyttöön globaali aikajana +enableRecommendedTimeline: Ota käyttöön suositellut -aikajana +registration: Rekisteröinti +enableRegistration: Ota käyttöön uuden käyttäjän rekisteröinti +driveCapacityPerLocalAccount: Aseman kapasiteetti paikallista käyttäjää kohti +driveCapacityPerRemoteAccount: Aseman kapasiteetti etäkäyttäjää kohti +inMb: megatavuissa +bannerUrl: Bannerikuvan URL-linkki +pinnedUsers: Kiinnitetyt käyttäjät +pinnedPages: Kiinnitetyt sivut +pinnedClipId: Kiinnitettävän leikkeen ID +enableHcaptcha: Ota käyttöön hCaptcha-tunnistus +recaptcha: CAPTCHA uudelleen +enableRecaptcha: Ota käyttöön CAPTCHA uudelleen +recaptchaSiteKey: Sivuston avain +recaptchaSecretKey: Salausavain +silenceThisInstance: Hiljennä tämä instanssi +silencedInstancesDescription: Lista isäntänimistä, joka haluat hiljentää. Tilejä listassa + kohdellaan "hiljennettynä", ne voivat tehdä seuraajapyyntöjä ja eivät voi tehdä + mainintoja paikallistileistä jossei seurattu. Tämä ei vaikuta estettyihin instansseihin. +hiddenTagsDescription: 'Listaa aihetunnisteet (ilman #-merkkiä) aihetunnisteet, jotka + haluat piilottaa trendaavista ja Tutustu-osiosta. Piilotetut aihetunnisteet ovat + kuitenkin löydettävissä muilla keinoilla. Estetyt instanssit eivät vaikuta, vaikka + listattu tähän.' +currentPassword: Nykyinen salasana +newPassword: Uusi salasana +attachFile: Liitetyt tiedostot +keepOriginalUploadingDescription: Tallentaa alkuperäisen kuvan sellaisenaan. Jos kytketty + päältä, webissä näytettävä versio luodaan ylöslatauksen yhteydessä. +remove: Poista +circularReferenceFolder: Kohdekansio on kansion alikansio, jonka haluat siirtää. +deleteAreYouSure: Oletko varma, että haluat poistaa kokonaan" {x}"? +yearsOld: '{age} vuotias' +activity: Aktiivisuus +images: Kuvat +birthday: Syntymäpäivä +registeredDate: Liittynyt +location: Sijainti +disablingTimelinesInfo: Järjestelmänvalvojilla ja moderaattoreilla on aina pääsy kaikille + aikajanoille, vaikka olisikin poistettu käytöstä. +dayX: '{day}' +yearX: '{year}' +pages: Sivut +integration: Integraatiot +instanceDescription: Instanssin kuvaus +invite: Kutsu +iconUrl: Ikoni URL-linkki +pinnedUsersDescription: Listaa käyttäjänimet eroteltuna rivivaihdoin kiinnittääksesi + ne "Tutustu" välilehteen. +pinnedNotes: Kiinnitetyt viestit +hcaptcha: hCaptcha-tunnistus +antennaSource: Antennin lähde +invitationCode: Kutsukoodi +checking: Tarkistetaan... +passwordNotMatched: Ei vastaa +doing: Käsittelee... +category: Kategoria +tags: Tagit +disableAnimatedMfm: Poista MFM -animaatiot käytöstä +openImageInNewTab: Avaa kuvat uuteen välilehteen +dashboard: Kojelauta +local: Paikallinen +remote: Etä +total: Yhteensä +weekOverWeekChanges: Muutokset viime viikkoon +objectStorageRegion: Alue +popout: Ulosvedettävä +volume: Äänenvoimakkuus +masterVolume: Master äänenvoimakkuus +details: Yksityiskohdat +chooseEmoji: Valitse emoji +descendingOrder: Laskevasti +scratchpad: Raaputusalusta +output: Ulostulo +invisibleNote: Näkymätön viesti +enableInfiniteScroll: Lataa enemmän automaattisesti +visibility: Näkyvyys +useCw: Piilota sisältö +poll: Kysely +enablePlayer: Avaa videotoistimeen +enterFileDescription: Syötä tiedostokuvaus +author: Kirjoittaja +manage: Hallinta +description: Kuvaus +describeFile: Lisää tiedostokuvaus +height: Korkeus +large: Suuri +medium: Keskikokoinen +small: Pieni +other: Muu +create: Luo +regenerateLoginTokenDescription: Luo uudelleen kirjautumisen aikana sisäisesti käytettävän + tunnuksen. Normaalisti tämä toiminto ei ole tarpeen. Jos tunniste luodaan uudelleen, + kaikki laitteet kirjautuvat ulos. +setMultipleBySeparatingWithSpace: Erottele useat merkinnät välilyönneillä. +fileIdOrUrl: Tiedosto ID tai URL-linkki +behavior: Käytös +instanceTicker: Viestejä koskevat instanssitiedot +waitingFor: Odottaa {x} +random: Satunnainen +system: Järjestelmä +switchUi: Ulkoasu +createNew: Luo uusi +followersCount: Seuraajien määrä +renotedCount: Saatujen buustausten määrä +followingCount: Seurattujen tilien määrä +notSet: Ei asetettu +nUsers: '{n} Käyttäjää' +nNotes: '{n} Viestiä' +sendErrorReports: Lähetä virheraportteja +backgroundColor: Taustaväri +accentColor: Korostusväri +textColor: Tekstin väri +advanced: Edistynyt +saveAs: Tallenna nimellä... +invalidValue: Epäkelpo arvo. +registry: Rekisteri +closeAccount: Sulje tili +currentVersion: Nykyinen versio +capacity: Kapasiteetti +clear: Palaa +_theme: + explore: Tutustu teemoihin +silenceConfirm: Oletko varma, että haluat hiljentää tämän käyttäjän? +notesAndReplies: Viestit ja vastaukset +withFiles: Tiedostot sisältyvät +silence: Hiljennä +popularTags: Suositut tagit +userList: Listat +about: Tietoja +aboutMisskey: Tietoja Calckeystä +exploreFediverse: Tutustu fediverseen +recentlyUpdatedUsers: Vastikään lisätyt käyttäjät +recentlyRegisteredUsers: Uudet liittyneet jäyttäjät +recentlyDiscoveredUsers: Vastikään löydetyt käyttäjät +exploreUsersCount: Täällä on {count} käyttäjää +share: Jaa +moderation: Sisällön valvonta +nUsersMentioned: Mainittu {n} käyttäjältä +securityKey: Turva-avain +securityKeyName: Avainnimi +registerSecurityKey: Rekisteröi turva-avain +lastUsed: Viimeksi käytetty +unregister: Poista rekisteröinti +passwordLessLogin: Salasanaton sisäänkirjautuminen +cacheClear: Tyhjennä välimuisti +markAsReadAllNotifications: Merkitse kaikki ilmoitukset luetuksi +markAsReadAllUnreadNotes: Merkitse kaikki viestit luetuiksi +uploadFolder: Oletuskansio ylöslatauksille +createGroup: Luo ryhmä +group: Ryhmä +groups: Ryhmät +ownedGroups: Omistetut ryhmät +help: Apua +inputMessageHere: Syötä viesti tähän +close: Sulje +joinedGroups: Liittyneet ryhmät +invites: Kutsut +groupName: Ryhmänimi +members: Jäsenet +language: Kieli +signinHistory: Kirjautumishistoria +docSource: Tämän dokumentin lähde +createAccount: Luo tili +existingAccount: Olemassa oleva tili +promotion: Edistetty +promote: Edistää +numberOfDays: Päivien määrä +accountSettings: Tilin asetukset +objectStorage: Objektitallennus +useObjectStorage: Käytä objektitallennusta +objectStorageBaseUrl: Perus URL-linkki +objectStorageBaseUrlDesc: "Viitteenä käytetty URL-linkki. Määritä CDN:n tai välityspalvelimen\ + \ URL-linkki, jos käytät kumpaakin.\nKäytä S3:lle 'https://.s3.amazonaws.com'\ + \ ja GCS:lle tai vastaaville palveluille 'https://storage.googleapis.com/'\ + \ jne." +objectStorageBucket: Kauha +newNoteRecived: Uusia viestejä +smtpPort: Portti +instanceMute: Instanssin mykistys +repliesCount: Lähetettyjen vastausten määrä +updatedAt: Päivitetty +notFound: Ei löydy +useOsNativeEmojis: Käytä käyttöjärjestelmän natiivi-Emojia +joinOrCreateGroup: Tule kutsutuksi ryhmään tai luo oma ryhmä. +text: Teksti +usernameInvalidFormat: Käytä isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä. +unsilenceConfirm: Oletko varma, että haluat poistaa käyttäjän hiljennyksen? +popularUsers: Suositut käyttäjät +moderator: Moderaattori +twoStepAuthentication: Kaksivaiheinen tunnistus +notFoundDescription: URL-linkkiin liittyvää sivua ei löytynyt. +antennaKeywords: Kuunneltavat avainsanat +antennaExcludeKeywords: Poislasketut avainsanat +antennaKeywordsDescription: Erottele välilyönneillä AND-ehtoa varten tai rivinvaihdolla + OR-ehtoa varten. +notifyAntenna: Ilmoita uusista viesteistä +withFileAntenna: Vain viestit tiedoston kanssa +enableServiceworker: Ota käyttöön Push-notifikaatiot selaimessasi +antennaUsersDescription: Luettele yksi käyttäjänimi rivi kohti +antennaInstancesDescription: Luettele yksi instanssi riviä kohti +caseSensitive: Isot ja pienet kirjaimet +withReplies: Sisällytä vastaukset +connectedTo: Seuraavat tili(t) on yhdistetty +unsilence: Poista hiljennys +administrator: Järjestelmänvalvoja +token: Merkki +resetPassword: Resetoi salasana +reduceUiAnimation: Vähennä käyttöliittymän animaatioita +transfer: Siirrä +messagingWithUser: Yksityisjuttelu +title: Otsikko +enable: Ota käyttöön +next: Seuraava +retype: Syötä uudelleen +noteOf: Lähettänyt {user} +inviteToGroup: Kutsu ryhmään +quoteAttached: Lainaus +quoteQuestion: Liitä lainauksena? +noMessagesYet: Ei vielä viestejä +newMessageExists: Uusia viestejä +onlyOneFileCanBeAttached: Voit liittää vain yhden tiedoston viestiin +signinRequired: Ole hyvä ja rekisteröidy tai kirjaudu sisään jatkaaksesi +invitations: Kutsut +available: Saatavilla +unavailable: Ei saatavissa +tooShort: Liian lyhyt +tooLong: Liian pitkä +weakPassword: Heikko salasana +normalPassword: Kohtalainen salasana +strongPassword: Vahva salasana +passwordMatched: Vastaa +signinWith: Kirjaudu sisään {x} +signinFailed: Ei voitu kirjautua sisään. Annettu käyttäjänimi tai salasana virheellinen. +tapSecurityKey: Napsauta turva-avaintasi +or: Tai +uiLanguage: Anna käyttöliittymän kieli +groupInvited: Sinut on kutsuttu ryhmään +aboutX: Tietoja {x} +disableDrawer: Älä käytä laatikkotyyppisiä valikoita +youHaveNoGroups: Sinulla ei ole ryhmiä +noHistory: Ei historiaa saatavilla +regenerate: Uudelleenluo +fontSize: Kirjasinkoko +dayOverDayChanges: Muutokset eiliseen +clientSettings: Asiakkaan asetukset +hideThisNote: Piilota tämä viesti +showFeaturedNotesInTimeline: Näytä esillä olevat viestit aikajanalla +objectStorageBucketDesc: Määritä palveluntarjoajasi käyttämä kauhan nimi. +objectStoragePrefix: Etuliite +objectStorageEndpoint: Päätepiste +objectStorageRegionDesc: Määritä alue, kuten "xx-east-1". Jos palvelusi ei tee eroa + alueiden välillä, jätä tämä kohta tyhjäksi tai kirjoita "us-east-1". +objectStorageUseSSL: Käytä SSL-salausta +objectStorageUseSSLDesc: Poista tämä käytöstä, jos et aio käyttää HTTPS:ää API-yhteyksissä +objectStorageUseProxy: Yhdistä välityspalvelimen kautta +objectStorageUseProxyDesc: Poista tämä käytöstä, jos et aio käyttää välityspalvelinta + API-yhteyksiä varten +objectStorageSetPublicRead: Aseta "public-read" ylöslataukseen +serverLogs: Palvelimen lokit +deleteAll: Poista kaikki +showFixedPostForm: Näytä viesti-ikkuna aikajanan yläpuolella +sounds: Äänet +listen: Kuuntele +none: Ei mitään +showInPage: Näytä sivulla +recentUsed: Vastikään käytetty +install: Asenna +uninstall: Poista asennus +installedApps: Hyväksytyt sovellukset +nothing: Ei nähtävää täällä +state: Tila +sort: Järjestä +ascendingOrder: Nousevasti +scratchpadDescription: Raaputusalusta tarjoaa ympäristön AiScript-kokeiluja varten. + Voit kirjoittaa, suorittaa ja tarkistaa sen tulokset vuorovaikutuksessa siinä olevan + Calckeyn kanssa. +script: Skripti +disablePagesScript: Poista AiScript käytöstä sivuilla +updateRemoteUser: Päivitä etäkäyttäjän tiedot +deleteAllFiles: Poista kaikki tiedostot +deleteAllFilesConfirm: Oletko varma, että haluat poistaa kaikki tiedostot? +removeAllFollowing: Poista seuraaminen kaikista seuratuista käyttäjistä +removeAllFollowingDescription: Tämän suorittaminen poistaa kaikki {host}:n tilit. + Suorita tämä, jos instanssia ei esimerkiksi enää ole olemassa. +userSuspended: Tämä käyttäjä on hyllytetty. +userSilenced: Tämä käyttäjä on hiljennetty. +yourAccountSuspendedTitle: Tämä tili on hyllytetty +yourAccountSuspendedDescription: Tämä tili on hyllytetty palvelimen palveluehtojen + tai vastaavien rikkomisen vuoksi. Ota yhteyttä ylläpitäjään, jos haluat tietää tarkemman + syyn. Älä luo uutta tiliä. +menu: Valikko +divider: Jakaja +addItem: Lisää kohde +relays: Releet +addRelay: Lisää rele +inboxUrl: Saavuneen postin URL +addedRelays: Lisätyt releet +serviceworkerInfo: Pitää ottaa käyttöön Push-notifikaatioissa. +deletedNote: Poistetut viestit +disablePlayer: Sulje videotoistin +expandTweet: Laajenna twiittiä +themeEditor: Teemaeditori +leaveConfirm: Tallentamattomia muutoksia olemassa. Hylätäänkö ne? +plugins: Liitännäiset +preferencesBackups: Asetusten varmuuskopiot +deck: Kansi +undeck: Jätä kansi +useBlurEffectForModal: Käytä blur-efektiä modaaleissa +useFullReactionPicker: Käytä täysikokoista reaktiovalitsinta +width: Leveys +generateAccessToken: Luo käyttöoikeustunniste +enableAll: Ota käyttöön kaikki +disableAll: Poista käytöstä kaikki +tokenRequested: Myönnä oikeus tiliin +notificationType: Ilmoituksen tyyppi +edit: Muokkaa +emailServer: Sähköpostipalvelin +enableEmail: Ota sähköpostin jakelu käyttöön +emailConfigInfo: Käytetään vahvistamaan sähköpostiosoitteesi rekisteröitymisen yhteydessä + tai jos unohdat salasanasi +email: Sähköposti +smtpHost: Isäntä +smtpUser: Käyttäjänimi +smtpPass: Salasana +emptyToDisableSmtpAuth: Jätä käyttäjänimi ja salasana tyhjäksi ohittaaksesi SMTP verifioinnin +smtpSecureInfo: Kytke tämä päältä kun käytät STARTTLS +testEmail: Kokeile email-lähetystä +wordMute: Sanan hiljennys +regexpError: Säännöllinen lausekevirhe +userSaysSomething: '{name} sanoi jotakin' +userSaysSomethingReason: '{name} sanoi {reason}' +makeActive: Aktivoi +display: Näyttö +copy: Kopioi +metrics: Mittarit +overview: Yleiskatsaus +logs: Lokit +delayed: Viivästynyt +database: Tietokanta +channel: Kanavat +notificationSetting: Ilmoitusasetukset +notificationSettingDesc: Valitse näytettävät ilmoitustyypit. +useGlobalSetting: Käytä globaaleja asetuksia +regenerateLoginToken: Luo kirjautumistunniste uudelleen +sample: Näyte +abuseReports: Raportit +reportAbuse: Raportti +reportAbuseOf: Raportti {name} +fillAbuseReportDescription: Täytä tätä raporttia koskevat tiedot. Jos se koskee tiettyä + viestiä, ilmoita sen URL-linkki. +abuseReported: Raporttisi on lähetetty. Kiitoksia paljon. +reporter: Raportoija +reporteeOrigin: Ilmoittajan alkuperä +reporterOrigin: Raportoijan alkuperä +forwardReport: Välitä raportti etäinstanssille +forwardReportIsAnonymous: Tilisi sijasta anonyymi järjestelmätili näytetään toimittajana + etäinstanssissa. +send: Lähetä +abuseMarkAsResolved: Merkitse raportti ratkaistuksi +openInNewTab: Avaa uuteen välilehteen +openInSideView: Avaa sivunäkymään +defaultNavigationBehaviour: Navigoinnin oletuskäyttäytyminen +editTheseSettingsMayBreakAccount: Näiden asetusten muuttaminen voi vahingoittaa tiliäsi. +desktop: Työpöytä +clip: Leike +optional: Vaihtoehtoinen +createNewClip: Luo uusi leike +unclip: Poista leike +confirmToUnclipAlreadyClippedNote: Tämä viesti on jo osa "{name}"-leikettä. Haluatko + sen sijaan poistaa sen tästä leikkeestä? +manageAccessTokens: Hallitse käyttöoikeuskoodeja +accountInfo: Tilin tiedot +notesCount: Viestien määrä +renotesCount: Lähetettyjen buustausten määrä +repliedCount: Saatujen vastausten määrä +sentReactionsCount: Lähetettyjen reaktioiden määrä +receivedReactionsCount: Saatujen reaktioiden määrä +pollVotesCount: Lähetettyjen kyselyäänien määrä +pollVotedCount: Saatujen kyselyäänien määrä +yes: Kyllä +no: Ei +driveFilesCount: Tiedostojen määrä asemalla +driveUsage: Aseman tilankäyttö +noCrawle: Hylkää hakukoneindeksointi +noCrawleDescription: Pyydä hakukoneita olemaan indeksoimatta profiilisivuasi, viestejäsi, + sivujasi jne. +alwaysMarkSensitive: Merkitse oletusarvoisesti herkäksi sisällöksi (NSFW) +loadRawImages: Alkuperäisten kuvien lataaminen pikkukuvien näyttämisen sijaan +disableShowingAnimatedImages: Älä näytä animoituja kuvia +verificationEmailSent: Vahvistussähköposti on lähetetty. Seuraa mukana olevaa linkkiä + suorittaaksesi vahvistuksen loppuun. +emailVerified: Sähköposti on vahvistettu +noteFavoritesCount: Kirjanmerkittyjen viestien määrä +pageLikedCount: Saatujen Sivu-tykkäysten määrä +pageLikesCount: Sivut-tykkäysten määrä +contact: Yhteystieto +useSystemFont: Käytä järjestelmän oletuskirjasinta +clips: Leikkeet +experimentalFeatures: Kokeiluluontoiset ominaisuudet +developer: Kehittäjä +makeExplorable: Tee tili näkyväksi osiossa "Tutustu" +makeExplorableDescription: Jos otat tämän pois käytöstä, tilisi ei näy "Tutustu"-osiossa. +showGapBetweenNotesInTimeline: Näytä väli viestien välissä aikajanalla +duplicate: Monista +left: Vasen +center: Keskellä +wide: Leveä +narrow: Kapea +reloadToApplySetting: Asetus otetaan käyttöön vain uudelleenladattaessa. Ladataanko + uudelleen nyt? +showTitlebar: Näytä otsikkorivi +clearCache: Tyhjennä välimuisti +onlineUsersCount: '{n} käyttäjää online-tilassa' +myTheme: Minun teemani +value: Arvo +saveConfirm: Tallenna muutokset? +deleteConfirm: Poistetaanko tosiaan? +latestVersion: Uusin versio +newVersionOfClientAvailable: Asiakasohjelmiston uudempi versio saatavilla. +usageAmount: Käyttö +inUse: Käytetty +editCode: Muokkaa koodia +apply: Käytä +receiveAnnouncementFromInstance: Vastaanota ilmoituksia tästä instanssista +emailNotification: Sähköposti-ilmoitukset +publish: Julkaise +inChannelSearch: Etsi kanavalta +useReactionPickerForContextMenu: Avaa reaktiovalitsin napsauttamalla oikeaa +typingUsers: '{users} kirjoittaa' +jumpToSpecifiedDate: Hyppää tiettyyn päivään +markAllAsRead: Merkitse kaikki luetuksi +goBack: Takaisin +unlikeConfirm: Poistatko todella tykkäyksesi? +fullView: Täysi koko +quitFullView: Poistu täydestä koosta +addDescription: Lisää kuvaus +markAsReadAllTalkMessages: Merkitse kaikki yksityisviestit luetuiksi +appearance: Ulkonäkö +messagingWithGroup: Ryhmäjuttelu +newPasswordIs: Uusi salasana on "{password}" +noFollowRequests: Sinulla ei ole odottavia seuraajapyyntöjä +objectStoragePrefixDesc: Tiedostot tallennetaan hakemistoihin tällä etuliitteellä. +objectStorageEndpointDesc: Jätä tämä tyhjäksi, jos käytät AWS S3:a. Muuten määritä + päätepisteeksi '' tai ':' käyttämästäsi palvelusta riippuen. +unableToProcess: Toimenpidettä ei voida suorittaa loppuun +installedDate: Hyväksynyt +lastUsedDate: Viimeksi käytetty +pluginTokenRequestedDescription: Tämä litännäinen voi käyttää tässä asetettuja käyttöoikeuksia. +permission: Oikeudet +smtpConfig: Lähtevän sähköpostin palvelimen (SMTP) asetukset +regexpErrorDescription: 'Säännöllisessä lausekkeessa tapahtui virhe rivillä {line} + sanan {tab} sanan mykistäminen rivillä {line}:' +emailAddress: Sähköpostiosoite +smtpSecure: Käytä implisiittistä SSL/TLS:ää SMTP-yhteyksissä +useGlobalSettingDesc: Jos se on päällä, käytetään tilisi ilmoitusasetuksia. Jos se + on pois päältä, voit tehdä yksilöllisiä asetuksia. +public: Julkinen +i18nInfo: Vapaaehtoiset kääntävät Calckeyta eri kielille. Voit auttaa osoitteessa + {link}. +lockedAccountInfo: Ellet aseta postauksen näkyvyydeksi "Vain seuraajille", postauksesi + näkyvät kaikille, vaikka vaatisitkin seuraajilta manuaalista hyväksyntää. +sendErrorReportsDescription: "Kun tämä on päällä, yksityiskohtaiset virhetiedot jaetaan\ + \ Calckeyn kanssa ongelman ilmetessä, mikä auttaa parantamaan Calckeyn laatua.\n\ + Näihin tietoihin sisältyy esimerkiksi käyttöjärjestelmäversio, käyttämäsi selain,\ + \ toimintasi Calckeyssä jne." +createdAt: Luotu +youAreRunningUpToDateClient: Käytössäsi on asiakasohjelman uusin versio. +needReloadToApply: Uudelleenlataus vaaditaan, jotta tämä näkyy. +showingPastTimeline: Näytetään parhaillaan vanhaa aikajanaa +userPagePinTip: Voit näyttää viestit täällä valitsemalla yksittäisten viestien valikosta + "Kiinnitä profiiliin". +notSpecifiedMentionWarning: Tämä viesti sisältää mainintoja käyttäjistä, joita ei + ole mainittu vastaanottajina +name: Nimi +allowedInstances: Sallitut (whitelisted) instanssit +hashtags: Aihetunnisteet +troubleshooting: Vianetsintä +received: Vastaanotettu +searchResult: Hakutulokset +filter: Suodatin +antennas: Antennit +noMaintainerInformationWarning: Ylläpitäjän tietoja ei ole konfiguroitu. +controlPanel: Hallintapaneeli +manageAccounts: Hallitse tilejä +makeReactionsPublic: Aseta reaktiohistoria julkiseksi +unread: Lukematon +deleted: Poistettu +editNote: Muokkaa viestiä +edited: Muokattu +avoidMultiCaptchaConfirm: Useiden Captcha-järjestelmien käyttö voi aiheuttaa häiriöitä + niiden välillä. Haluatko poistaa käytöstä muut tällä hetkellä käytössä olevat Captcha-järjestelmät? + Jos haluat, että ne pysyvät käytössä, paina peruutusnäppäintä. +manageAntennas: Hallitse antenneja +info: Tietoja +userInfo: Käyttäjätiedot +unknown: Tuntematon +onlineStatus: Online-tila +hideOnlineStatus: Piilota Online-tila +hideOnlineStatusDescription: Online-tilasi piilottaminen vähentää joidenkin toimintojen, + kuten haun, käyttömukavuutta. +online: Online +active: Aktiivinen +offline: Offline +botProtection: Botti-suojaus +instanceBlocking: Federaatio Esto/Hiljennys +enabled: Otettu käyttöön +quickAction: Pikatoiminnot +user: Käyttäjä +accounts: Tilit +switch: Vaihda +noBotProtectionWarning: Botti-suojausta ei ole konfiguroitu. +configure: Konfiguroi +postToGallery: Luo uusi galleriaviesti +gallery: Galleria +recentPosts: Viimeaikaiset sivut +popularPosts: Suositut sivut +ads: Mainokset +expiration: Aikaraja +memo: Muistio +priority: Prioriteetti +high: Korkea +middle: Keskitaso +low: Alhainen +emailNotConfiguredWarning: Sähköpostiosoitetta ei ole asetettu. +ratio: Suhde +secureMode: Suojattu moodi (Valtuutettu nouto) +instanceSecurity: Instanssiturvallisuus +allowedInstancesDescription: Federaatiota varten sallitulle listalle (whitelisted) + otettavien instanssien isännät, kukin erotettuna uudella rivillä (sovelletaan vain + yksityisessä tilassa). +previewNoteText: Näytä esikatselu +customCss: Kustomoitu CSS +customCssWarn: Tätä asetusta tulisi käyttää vain, jos tiedät, mitä se tekee. Vääränlaisten + arvojen syöttäminen voi aiheuttaa sen, että asiakasohjelma lakkaa toimimasta normaalisti. +recommended: Suositeltu +squareAvatars: Näytä neliön malliset kuvakkeet +seperateRenoteQuote: Erilliset buustaa ja lainaa -napit +sent: Lähetetty +useBlurEffect: Käytä blur-efektejä käyttöliittymässä +misskeyUpdated: Calckey on päivitetty! +whatIsNew: Näytä muutokset +translate: Käännä +translatedFrom: Käännetty kielestä {x} +accountDeletionInProgress: Tilin poistaminen on parhaillaan menossa +usernameInfo: Nimi, joka erottaa tilisi muista tällä palvelimella olevista tileistä. Voit + käyttää aakkosia (a~z, A~Z), numeroita (0~9) tai alaviivoja (_). Käyttäjätunnuksia + ei voi muuttaa myöhemmin. +aiChanMode: Ai-chan klassisessa käyttöliittymässä +keepCw: Pidä sisältövaroitukset +pubSub: Pub/Sub tilit +lastCommunication: Viimeisin kommunikaatio +unresolved: Ratkaisematon +breakFollow: Poista seuraaja +breakFollowConfirm: Oletko varma, että haluat poistaa seuraajan? +itsOn: Otettu käyttöön +itsOff: Poistettu käytöstä +emailRequiredForSignup: Vaadi sähköpostiosoitetta sisäänkirjautumiseen +makeReactionsPublicDescription: Tämä laittaa viimeisimmät reaktiosi julkisesti näkyväksi. +classic: Klassinen +muteThread: Mykistä lanka +unmuteThread: Poista langan mykistys +ffVisibility: Seurataan/Seurattavien näkyvyys +notRecommended: Ei suositeltu +disabled: Poistettu käytöstä +selectAccount: Valitse tili +switchAccount: Vaihda tili +administration: Hallinta +shareWithNote: Jaa viestin kanssa +secureModeInfo: Kun pyydät muista instansseista, älä lähetä takaisin ilman todisteita. +privateMode: Yksityinen moodi +privateModeInfo: Kun tämä on käytössä, vain sallittujen (whitelisted) luetteloon merkityt + instanssit voivat liittyä instansseihisi. Kaikki viestit piilotetaan yleisöltä. +global: Globaali +resolved: Ratkaistu +learnMore: Opi lisää +continueThread: Jatka lankaa +file: Tiedosto +cropImageAsk: Haluatko rajata tätä kuvaa? +recentNHours: Viimeiset {n} tuntia +rateLimitExceeded: Nopeusraja ylittynyt +cropImage: Rajaa kuvaa +socialTimeline: Sosiaalinen aikajana +themeColor: Instanssi Ticker Väri +check: Tarkista +ffVisibilityDescription: Antaa sinun konfiguroida, kuka voi nähdä ketä seuraat ja + kuka seuraa sinua. +homeTimeline: Koti aikajana +size: Koko +showLocalPosts: 'Näytä paikalliset viestit:' +oneDay: Päivä +instanceDefaultDarkTheme: Instanssikattava tumma oletusteema +recentNDays: Viimeiset {n} päivää +reflectMayTakeTime: Voi kestää jonkin aikaa, ennen kuin tämä näkyy. +failedToFetchAccountInformation: Ei voitu hakea tietoja +requireAdminForView: Sinun tulee kirjautua järjestelmänvalvojana nähdäksesi tämän. +driveCapOverrideCaption: Resetoi oletusarvoon syöttämällä arvo 0 tai alempi. +isSystemAccount: Järjestelmän luoma ja automaattisesti käyttämä tili. +userSaysSomethingReasonReply: '{name} vastasi viestiin sisältäen {reason}' +userSaysSomethingReasonRenote: '{name} buustasi viestiin sisältäen {reason}' +voteConfirm: Vahvista äänesi vaihtoehdolle "{choice}"? +hide: Piilota +leaveGroup: Poistu ryhmästä +leaveGroupConfirm: Oletko varma, että haluat poistua ryhmästä "{name}"? +welcomeBackWithName: Tervetuloa takaisin, {name} +clickToFinishEmailVerification: Klikkaa [{ok}] viimeistelläksesi sähköpostivahvistuksen. +overridedDeviceKind: Laitetyyppi +tablet: Tabletti +numberOfColumn: Sarakkeiden määrä +searchByGoogle: Etsi +mutePeriod: Vaiennuksen kesto +indefinitely: Pysyvästi +tenMinutes: 10 minuuttia +oneHour: Tunti +thereIsUnresolvedAbuseReportWarning: On ratkaisemattomia raportteja. +driveCapOverrideLabel: Muuta aseman kapasiteetti tälle käyttäjälle +userSaysSomethingReasonQuote: '{name} lainasi viestiä sisältäen {reason}' +deleteAccountConfirm: Tämä peruuttamattomasti poistaa tilisi. Jatketaanko? +incorrectPassword: Väärä salasana. +useDrawerReactionPickerForMobile: Näytä reaktiovalitsin mobiilissa laatikkomallisena +smartphone: Älypuhelin +auto: Automaattinen +oneWeek: Viikko +instanceDefaultLightTheme: Instanssin kattava vaalea oletusteema +instanceDefaultThemeDescription: Anna teemakoodi objektiformaatille. +noEmailServerWarning: Sähköpostipalvelinta ei konfiguroituna. diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 8c7bf8025..dad095688 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -1,6 +1,6 @@ _lang_: "Français" headlineMisskey: "Réseau relié par des notes" -introMisskey: "Bienvenue ! Misskey est un service de microblogage décentralisé, libre\ +introMisskey: "Bienvenue ! Calckey est un service de microblogage décentralisé, libre\ \ et ouvert.\nÉcrivez des « notes » et partagez ce qui se passe à l’instant présent,\ \ autour de vous avec les autres \U0001F4E1\nLa fonction « réactions », vous permet\ \ également d’ajouter une réaction rapide aux notes des autres utilisateur·rice·s\ @@ -70,7 +70,7 @@ export: "Exporter" files: "Fichiers" download: "Télécharger" driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\"\ - \ ? Les notes liées à ce fichier seront aussi supprimées." + \ ? Il sera retiré de toutes ses notes liées." unfollowConfirm: "Désirez-vous vous désabonner de {name} ?" exportRequested: "Vous avez demandé une exportation. L’opération pourrait prendre\ \ un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive." @@ -87,7 +87,7 @@ manageLists: "Gérer les listes" error: "Erreur" somethingHappened: "Une erreur est survenue" retry: "Réessayer" -pageLoadError: "Le chargement de la page a échoué" +pageLoadError: "Le chargement de la page a échoué." pageLoadErrorDescription: "Cela est généralement causé par le cache du navigateur\ \ ou par un problème réseau. Veuillez vider votre cache ou attendre un peu et réessayer." serverIsDead: "Le serveur ne répond pas. Patientez quelques instants puis essayez\ @@ -106,7 +106,7 @@ followRequestPending: "Demande d'abonnement en attente de confirmation" enterEmoji: "Insérer un émoji" renote: "Renoter" unrenote: "Annuler la Renote" -renoted: "Renoté !" +renoted: "Renoté." cantRenote: "Ce message ne peut pas être renoté." cantReRenote: "Impossible de renoter une Renote." quote: "Citer" @@ -158,7 +158,7 @@ flagAsBot: "Ce compte est un robot" flagAsBotDescription: "Si ce compte est géré de manière automatisée, choisissez cette\ \ option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs\ \ afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster\ - \ les systèmes internes de Misskey pour traiter ce compte comme un robot." + \ les systèmes internes de Calckey pour traiter ce compte comme un robot." flagAsCat: "Ce compte est un chat" flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte." flagShowTimelineReplies: "Afficher les réponses dans le fil" @@ -201,7 +201,6 @@ operations: "Opérations" software: "Logiciel" version: "Version" metadata: "Métadonnées" -withNFiles: "{n} fichier(s)" monitor: "Contrôle" jobQueue: "File d’attente" cpuAndMemory: "Processeur et mémoire" @@ -226,7 +225,7 @@ noUsers: "Il n’y a pas d’utilisateur·rice·s" editProfile: "Modifier votre profil" noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note ?" pinLimitExceeded: "Vous ne pouvez plus épingler d’autres notes." -intro: "L’installation de Misskey est terminée ! Veuillez créer un compte administrateur." +intro: "L’installation de Calckey est terminée ! Veuillez créer un compte administrateur." done: "Terminé" processing: "Traitement en cours" preview: "Aperçu" @@ -414,7 +413,7 @@ exploreFediverse: "Explorer le Fediverse" popularTags: "Mots-clés populaires" userList: "Listes" about: "Informations" -aboutMisskey: "À propos de Misskey" +aboutMisskey: "À propos de Calckey" administrator: "Administrateur" token: "Jeton" twoStepAuthentication: "Authentification à deux facteurs" @@ -573,7 +572,7 @@ descendingOrder: "Descendant" scratchpad: "ScratchPad" scratchpadDescription: "ScratchPad fournit un environnement expérimental pour AiScript.\ \ Vous pouvez vérifier la rédaction de votre code, sa bonne exécution et le résultat\ - \ de son interaction avec Misskey." + \ de son interaction avec Calckey." output: "Sortie" script: "Script" disablePagesScript: "Désactiver AiScript sur les Pages" @@ -767,7 +766,7 @@ nUsers: "{n} utilisateur·rice·s" nNotes: "{n} Notes" sendErrorReports: "Envoyer les rapports d’erreur" sendErrorReportsDescription: "Si vous activez l'envoi des rapports d'erreur, vous\ - \ contribuerez à améliorer la qualité de Misskey grâce au partage d'informations\ + \ contribuerez à améliorer la qualité de Calckey grâce au partage d'informations\ \ détaillées sur les erreurs lorsqu'un problème survient.\nCela inclut des informations\ \ telles que la version de votre système d'exploitation, le type de navigateur que\ \ vous utilisez, votre historique d'activité, etc." @@ -825,7 +824,7 @@ active: "Actif·ve" offline: "Hors ligne" notRecommended: "Déconseillé" botProtection: "Protection contre les bots" -instanceBlocking: "Instances bloquées" +instanceBlocking: "Instances bloquées/mise en sourdine" selectAccount: "Sélectionner un compte" switchAccount: "Changer de compte" enabled: "Activé" @@ -866,7 +865,7 @@ hashtags: "Hashtags" troubleshooting: "Résolution de problèmes" useBlurEffect: "Utiliser des effets de flou dans l'interface" learnMore: "Plus d'informations" -misskeyUpdated: "Misskey a été mis à jour !" +misskeyUpdated: "Calckey a été mis à jour !" whatIsNew: "Voir les derniers changements" translate: "Traduire" translatedFrom: "Traduit depuis {x}" @@ -999,8 +998,8 @@ _aboutMisskey: contributors: "Principaux contributeurs" allContributors: "Tous les contributeurs" source: "Code source" - translation: "Traduire Misskey" - donate: "Soutenir Misskey" + translation: "Traduire Calckey" + donate: "Soutenir Calckey" morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes\ \ non mentionnées ici. Merci à toutes et à tous ! \U0001F970" patrons: "Contributeurs" @@ -1010,9 +1009,9 @@ _nsfw: force: "Cacher tous les médias" _mfm: cheatSheet: "Antisèche MFM" - intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Misskey.\ + intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Calckey.\ \ Vous pouvez vérifier ici les structures utilisables avec MFM." - dummy: "La Fédiverse s'agrandit avec Misskey" + dummy: "La Fédiverse s'agrandit avec Calckey" mention: "Mentionner" mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant\ \ une arobase suivie d'un nom d'utilisateur" @@ -1077,9 +1076,12 @@ _mfm: sparkle: "Paillettes" sparkleDescription: "Ajoute un effet scintillant au contenu." rotate: "Pivoter" + fade: "Apparaître/Disparaître" + fadeDescription: "Fait apparaître et disparaître le contenu." plainDescription: Désactiver les effets de tous les MFM contenus dans cet effet MFM. rotateDescription: Pivoter le contenu d'un angle spécifique. + position: Position _instanceTicker: none: "Cacher " remote: "Montrer pour les utilisateur·ice·s distant·e·s" @@ -1099,6 +1101,7 @@ _channel: following: "Abonné·e" usersCount: "{n} Participant·e·s" notesCount: "{n} Notes" + nameAndDescription: Nom et description _menuDisplay: sideFull: "Latéral" sideIcon: "Latéral (icônes)" @@ -1243,10 +1246,10 @@ _tutorial: \ de vos followers." step5_4: "La timeline locale {icon} est l'endroit où vous pouvez voir les messages\ \ de tout le monde sur cette instance." - step5_5: "La timeline {icon} recommandée est l'endroit où vous pouvez voir les messages\ - \ des instances que les administrateurs recommandent." - step5_6: "La timeline {icon} sociale est l'endroit où vous pouvez voir les publications\ - \ des amis de vos followers." + step5_5: "La chronologie {icon} sociale est l'endroit où vous pouvez voir uniquement\ + \ les publications des comptes que vous suivez." + step5_6: "La chronologie {icon} recommandée est l'endroit où vous pouvez voir les\ + \ publications des instances recommandées par les administrateurs." step5_7: "La timeline globale {icon} est l'endroit où vous pouvez voir les messages\ \ de toutes les autres instances connectées." step6_1: "Alors quel est cet endroit ?" @@ -1349,6 +1352,10 @@ _widgets: serverMetric: "Statistiques du serveur" aiscript: "Console AiScript" aichan: "Ai" + userList: Liste d'utilisateurs + _userList: + chooseList: Sélectionner une liste + unixClock: Horloge UNIX _cw: hide: "Masquer" show: "Afficher plus …" @@ -1411,6 +1418,8 @@ _profile: metadataContent: "Contenu" changeAvatar: "Changer l'image de profil" changeBanner: "Changer de bannière" + locationDescription: Si vous entrez votre ville en premier, votre heure locale sera + affiché aux autres utilisateurs. _exportOrImport: allNotes: "Toutes les notes" followingList: "Abonnements" @@ -1450,6 +1459,7 @@ _timelines: local: "Local" social: "Social" global: "Global" + recommended: Recommandée _pages: newPage: "Créer une page" editPage: "Modifier une page" @@ -1775,6 +1785,7 @@ _notification: followRequestAccepted: "Demande d'abonnement acceptée" groupInvited: "Invitation à un groupe" app: "Notifications provenant des apps" + pollEnded: Fin du sondage _actions: followBack: "Suivre" reply: "Répondre" @@ -1799,6 +1810,10 @@ _deck: list: "Listes" mentions: "Mentions" direct: "Direct" + introduction: Créer l'interface parfaite pour vous en arrangeant les colonnes librement + ! + introduction2: Cliquer sur le + sur la droite de l'écran pour ajouter de nouvelles + colonnes à tout moment. keepOriginalUploadingDescription: Enregistrer l'image originale telle quelle. Si désactivé, une version à afficher sur le web sera générée au chargement. manageGroups: Gérer les groupes @@ -1873,11 +1888,11 @@ adminCustomCssWarn: Ce paramètre ne devrait être utilisé que si vous savez ce de fonctionner. Assurez-vous que votre CSS fonctionne correctement en l'essayant dans vos paramètres utilisateur. swipeOnDesktop: Permettre le style de glissement de fenêtre de mobile sur PC -moveFromLabel: 'Compte depuis lequel vous migrez :' +moveFromLabel: 'Compte depuis lequel vous migrez :' migrationConfirm: "Êtes-vous absolument certain⋅e que vous voulez migrer votre compte\ \ vers {account} ? Une fois fait, vous ne pourrez pas revenir en arrière, et vous\ \ ne pourrez plus utiliser le compte actuel normalement à nouveau.\nAussi, assurez-vous\ - \ d'avoir configuré le compte courant comme le compte depuis lequel vous migrez." + \ d'avoir configuré le compte actuel comme le compte depuis lequel vous migrez." _preferencesBackups: updatedAt: 'Mis à jour le : {date} {time}' cannotLoad: Le chargement a échoué @@ -1891,7 +1906,7 @@ _preferencesBackups: noBackups: Aucune sauvegarde n'existe. Vous pouvez sauvegarder les paramètres de votre client sur ce serveur en utilisant "Créer une nouvelle sauvegarde". createdAt: 'Crée le : {date} {time}' - renameConfirm: Renommer la sauvegarde "{old}" à "{new}" ? + renameConfirm: Renommer la sauvegarde "{old}" en "{new}" ? list: Sauvegardes créées saveNew: Faire une nouvelle sauvegarde loadFile: Charger depuis le fichier @@ -1931,7 +1946,8 @@ flagSpeakAsCatDescription: Vos messages seront nyanifiés en mode chat hiddenTags: Hashtags cachés hiddenTagsDescription: "Lister les hashtags (sans le #) que vous souhaitez cacher\ \ de tendances et explorer. Les hashtags cachés sont toujours découvrables par d'autres\ - \ moyens." + \ moyens. Les instances bloqués ne sont pas ne sont pas affectés, même si ils sont\ + \ présent dans cette liste." antennaInstancesDescription: Lister un hôte d'instance par ligne userSaysSomethingReason: '{name} a dit {reason}' breakFollowConfirm: Êtes vous sur de vouloir retirer l'abonné ? @@ -1955,9 +1971,9 @@ customSplashIconsDescription: URLs pour les icônes personnalisées de l'écran (re)chargement de page. Assurez-vous que les images sont sur des URL statiques, de préférence toutes de taille 192x192. updateAvailable: Une mise à jour est peut-être disponible ! -accountMoved: "L'utilisateur a migré vers un nouveau compte:" +accountMoved: "L'utilisateur a migré vers un nouveau compte :" enableEmojiReactions: Activer les réactions par émojis -showEmojisInReactionNotifications: Montrer les émojis dans les notifications de réaction +showEmojisInReactionNotifications: Montrer les émojis dans les notifications de réactions renoteUnmute: Notifier les renotes selectInstance: Choisir une instance noInstances: Il n'y a aucune instance @@ -2000,3 +2016,25 @@ customKaTeXMacroDescription: "Définissez des macros pour écrire des expression \ Seulement de simples fonctions de substitution de chaines sont supportées; la\ \ syntaxe avancée, telle que la ramification conditionnelle, ne peut pas être utilisée\ \ ici." +enableRecommendedTimeline: Activer la chronologie recommandée +silenceThisInstance: Ne plus montrer cet instance +silencedInstances: Instances silencieuses +silenced: Silencieux +deleted: Effacé +editNote: Modifier note +edited: Modifié +flagShowTimelineRepliesDescription: Si activé, affiche dans le fil les réponses des + personnes aux publications des autres. +_experiments: + alpha: Alpha + beta: Beta + enablePostEditing: Autoriser l'édition de note + title: Expérimentations +findOtherInstance: Trouver un autre serveur +userSaysSomethingReasonQuote: '{name} a cité une note contenant {reason}' +signupsDisabled: Les inscriptions sur ce serveur sont actuellement désactivés, mais + vous pouvez toujours vous inscrire sur un autre serveur ! Si vous avez un code d'invitation + pour ce serveur, entrez-le ci-dessous s'il vous plait. +apps: Applications +userSaysSomethingReasonReply: '{noms} a répondu à une note contenant {raison}' +defaultValueIs: 'défaut : {valeur}' diff --git a/locales/id-ID.yml b/locales/id-ID.yml index bb3904e2e..f9859c2c7 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1,7 +1,9 @@ ---- _lang_: "Bahasa Indonesia" headlineMisskey: "Jaringan terhubung melalui catatan" -introMisskey: "Selamat datang! Misskey adalah perangkat mikroblog tercatu bersifat sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta ceritakan segala tentangmu.📡\nTunjukkan juga reaksimu pada catatan pengguna lain.👍\nMari jelajahi dunia baru🚀" +introMisskey: "Selamat datang! Calckey adalah perangkat mikroblog tercatu bersifat\ + \ sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta\ + \ ceritakan segala tentangmu.\U0001F4E1\nTunjukkan juga reaksimu pada catatan pengguna\ + \ lain.\U0001F44D\nMari jelajahi dunia baru\U0001F680" monthAndDay: "{day} {month}" search: "Penelusuran" notifications: "Pemberitahuan" @@ -44,7 +46,8 @@ copyContent: "Salin konten" copyLink: "Salin tautan" delete: "Hapus" deleteAndEdit: "Hapus dan sunting" -deleteAndEditConfirm: "Apakah kamu yakin ingin menghapus note ini dan menyuntingnya? Kamu akan kehilangan semua reaksi, renote dan balasan di note ini." +deleteAndEditConfirm: "Apakah kamu yakin ingin menghapus note ini dan menyuntingnya?\ + \ Kamu akan kehilangan semua reaksi, renote dan balasan di note ini." addToList: "Tambahkan ke daftar" sendMessage: "Kirim pesan" copyUsername: "Salin nama pengguna" @@ -66,7 +69,8 @@ files: "Berkas" download: "Unduh" driveFileDeleteConfirm: "Hapus {name}? Catatan dengan berkas terkait juga akan terhapus." unfollowConfirm: "Berhenti mengikuti {name}?" -exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive" +exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah\ + \ ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive" importRequested: "Kamu telah meminta impor. Ini akan memakan waktu sesaat." lists: "Daftar" noLists: "Kamu tidak memiliki daftar apapun" @@ -81,9 +85,12 @@ error: "Galat" somethingHappened: "Terjadi kesalahan" retry: "Coba lagi" pageLoadError: "Gagal memuat halaman." -pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." -serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat lagi." -youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan klienmu." +pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah\ + \ bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." +serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat\ + \ lagi." +youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan\ + \ klienmu." enterListName: "Masukkan nama daftar" privacy: "Privasi" makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan" @@ -108,7 +115,8 @@ sensitive: "Konten sensitif" add: "Tambahkan" reaction: "Reaksi" reactionSetting: "Reaksi untuk dimunculkan di bilah reaksi" -reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus, tekan \"+\" untuk menambahkan" +reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus,\ + \ tekan \"+\" untuk menambahkan" rememberNoteVisibility: "Ingat pengaturan visibilitas catatan" attachCancel: "Hapus lampiran" markAsSensitive: "Tandai sebagai konten sensitif" @@ -137,14 +145,22 @@ emojiUrl: "URL Emoji" addEmoji: "Tambahkan emoji" settingGuide: "Pengaturan rekomendasi" cacheRemoteFiles: "Tembolokkan berkas remote" -cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan dimuat langsung dari instansi luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan, namun dapat menyebabkan meningkatkan lalu lintas bandwidth, karena thumbnail tidak dihasilkan." +cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan\ + \ dimuat langsung dari instansi luar. Menonaktifkan ini akan mengurangi penggunaan\ + \ penyimpanan, namun dapat menyebabkan meningkatkan lalu lintas bandwidth, karena\ + \ thumbnail tidak dihasilkan." flagAsBot: "Atur akun ini sebagai Bot" -flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini. Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah interaksi berantai dengan bot lain dan menyesuaikan sistem internal Misskey untuk memperlakukan akun ini sebagai bot." +flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini.\ + \ Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah\ + \ interaksi berantai dengan bot lain dan menyesuaikan sistem internal Calckey untuk\ + \ memperlakukan akun ini sebagai bot." flagAsCat: "Atur akun ini sebagai kucing" flagAsCatDescription: "Nyalakan tanda ini untuk menandai akun ini sebagai kucing." flagShowTimelineReplies: "Tampilkan balasan di linimasa" -flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna dari note pengguna lain di linimasa apabila dinyalakan." -autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu ikuti" +flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna dari note pengguna\ + \ lain di linimasa apabila dinyalakan." +autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu\ + \ ikuti" addAccount: "Tambahkan akun" loginFailed: "Gagal untuk masuk" showOnRemote: "Lihat profil asli" @@ -156,7 +172,11 @@ searchWith: "Cari: {q}" youHaveNoLists: "Kamu tidak memiliki daftar apapun" followConfirm: "Apakah kamu yakin ingin mengikuti {name}?" proxyAccount: "Akun proksi" -proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna menambahkan seorang pengguna luar ke dalam daftar, aktivitas dari pengguna luar tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya." +proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai\ + \ pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna\ + \ menambahkan seorang pengguna luar ke dalam daftar, aktivitas dari pengguna luar\ + \ tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti\ + \ pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya." host: "Host" selectUser: "Pilih pengguna" recipient: "Penerima" @@ -177,7 +197,6 @@ operations: "Tindakan" software: "Perangkat lunak" version: "Versi" metadata: "Metadata" -withNFiles: "{n} berkas" monitor: "Pantau" jobQueue: "Antrian kerja" cpuAndMemory: "CPU dan Memori" @@ -187,11 +206,15 @@ instanceInfo: "Informasi Instansi" statistics: "Statistik" clearQueue: "Bersihkan antrian" clearQueueConfirmTitle: "Apakah kamu yakin ingin membersihkan antrian?" -clearQueueConfirmText: "Seluruh sisa catatan yang tidak tersampaikan di dalam antrian tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." +clearQueueConfirmText: "Seluruh sisa catatan yang tidak tersampaikan di dalam antrian\ + \ tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." clearCachedFiles: "Hapus tembolok" -clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas remote?" +clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas\ + \ remote?" blockedInstances: "Instansi terblokir" -blockedInstancesDescription: "Daftar nama host dari instansi yang diperlukan untuk diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi ini." +blockedInstancesDescription: "Daftar nama host dari instansi yang diperlukan untuk\ + \ diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi\ + \ ini." muteAndBlock: "Bisukan / Blokir" mutedUsers: "Pengguna yang dibisukan" blockedUsers: "Pengguna yang diblokir" @@ -199,7 +222,7 @@ noUsers: "Tidak ada pengguna" editProfile: "Sunting profil" noteDeleteConfirm: "Apakah kamu yakin ingin menghapus catatan ini?" pinLimitExceeded: "Kamu tidak dapat menyematkan catatan lagi" -intro: "Instalasi Misskey telah selesai! Mohon untuk membuat pengguna admin." +intro: "Instalasi Calckey telah selesai! Mohon untuk membuat pengguna admin." done: "Selesai" processing: "Memproses" preview: "Pratinjau" @@ -239,7 +262,8 @@ saved: "Telah disimpan" messaging: "Pesan" upload: "Unggah" keepOriginalUploading: "Simpan gambar asli" -keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." +keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar\ + \ aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." fromDrive: "Dari Drive" fromUrl: "Dari URL" uploadFromUrl: "Unggah dari URL" @@ -255,7 +279,8 @@ agreeTo: "Saya setuju kepada {0}" tos: "Syarat dan ketentuan" start: "Mulai" home: "Beranda" -remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal dari instansi luar." +remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal\ + \ dari instansi luar." activity: "Aktivitas" images: "Gambar" birthday: "Tanggal lahir" @@ -288,7 +313,8 @@ unableToDelete: "Tidak dapat menghapus" inputNewFileName: "Masukkan nama berkas yang baru" inputNewDescription: "Masukkan keterangan disini" inputNewFolderName: "Masukkan nama folder yang baru" -circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu pindahkan." +circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu\ + \ pindahkan." hasChildFilesOrFolders: "Karena folder ini tidak kosong, maka tidak dapat dihapus." copyUrl: "Salin tautan" rename: "Ubah nama" @@ -322,7 +348,8 @@ connectService: "Sambungkan" disconnectService: "Putuskan" enableLocalTimeline: "Nyalakan linimasa lokal" enableGlobalTimeline: "Nyalakan linimasa global" -disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa meskipun linimasa tersebut tidak diaktifkan." +disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa\ + \ meskipun linimasa tersebut tidak diaktifkan." registration: "Pendaftaran" enableRegistration: "Nyalakan pendaftaran pengguna baru" invite: "Undang" @@ -334,9 +361,11 @@ bannerUrl: "URL Banner" backgroundImageUrl: "URL Gambar latar" basicInfo: "Informasi Umum" pinnedUsers: "Pengguna yang disematkan" -pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." +pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang\ + \ dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." pinnedPages: "Halaman yang disematkan" -pinnedPagesDescription: "Masukkan tautan dari halaman yang kamu ingin sematkan ke halaman utama dari instansi ini, dipisah dengan membuat baris baru." +pinnedPagesDescription: "Masukkan tautan dari halaman yang kamu ingin sematkan ke\ + \ halaman utama dari instansi ini, dipisah dengan membuat baris baru." pinnedClipId: "ID dari klip yang disematkan" pinnedNotes: "Catatan yang disematkan" hcaptcha: "hCaptcha" @@ -347,14 +376,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Nyalakan reCAPTCHA" recaptchaSiteKey: "Site key" recaptchaSecretKey: "Secret Key" -avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan. Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan fitur ini tetap aktif dengan menekan tombol batal." +avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan.\ + \ Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan\ + \ fitur ini tetap aktif dengan menekan tombol batal." antennas: "Antena" manageAntennas: "Pengelola Antena" name: "Nama" antennaSource: "Sumber Antenna" antennaKeywords: "Kata kunci yang diterima" antennaExcludeKeywords: "Kata kunci yang dikecualikan" -antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan baris baru untuk kondisi OR." +antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ + \ baris baru untuk kondisi OR." notifyAntenna: "Beritahu untuk catatan baru" withFileAntenna: "Hanya tampilkan catatan dengan berkas yang dilampirkan" enableServiceworker: "Aktifkan ServiceWorker" @@ -377,7 +409,7 @@ exploreFediverse: "Jelajahi Fediverse" popularTags: "Tag populer" userList: "Daftar" about: "Informasi" -aboutMisskey: "Tentang Misskey" +aboutMisskey: "Tentang Calckey" administrator: "Admin" token: "Token" twoStepAuthentication: "Otentikasi dua faktor" @@ -441,7 +473,8 @@ strongPassword: "Kata sandi kuat" passwordMatched: "Kata sandi sama" passwordNotMatched: "Kata sandi tidak sama" signinWith: "Masuk dengan {x}" -signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan salah." +signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan\ + \ salah." tapSecurityKey: "Ketuk kunci keamanan kamu" or: "atau" language: "Bahasa" @@ -482,19 +515,29 @@ showFeaturedNotesInTimeline: "Tampilkan catatan yang diunggulkan di linimasa" objectStorage: "Object Storage" useObjectStorage: "Gunakan object storage" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "Prefix URL digunakan untuk mengkonstruksi URL ke object (media) referencing. Tentukan URL jika kamu menggunakan CDN atau Proxy, jika tidak tentukan alamat yang dapat diakses secara publik sesuai dengan panduan dari layanan yang akan kamu gunakan, contohnya. 'https://.s3.amazonaws.com' untuk AWS S3, dan 'https://storage.googleapis.com/' untuk GCS." +objectStorageBaseUrlDesc: "Prefix URL digunakan untuk mengkonstruksi URL ke object\ + \ (media) referencing. Tentukan URL jika kamu menggunakan CDN atau Proxy, jika tidak\ + \ tentukan alamat yang dapat diakses secara publik sesuai dengan panduan dari layanan\ + \ yang akan kamu gunakan, contohnya. 'https://.s3.amazonaws.com' untuk AWS\ + \ S3, dan 'https://storage.googleapis.com/' untuk GCS." objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang telah dikonfigurasi." +objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang\ + \ telah dikonfigurasi." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Berkas tidak akan disimpan dalam direktori dari prefix ini." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan dari layanan yang akan kamu gunakan." +objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika\ + \ tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan\ + \ dari layanan yang akan kamu gunakan." objectStorageRegion: "Region" -objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." +objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak\ + \ memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." objectStorageUseSSL: "Gunakan SSL" -objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk koneksi API" +objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk\ + \ koneksi API" objectStorageUseProxy: "Hubungkan melalui Proxy" -objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk koneksi ObjectStorage" +objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk\ + \ koneksi ObjectStorage" objectStorageSetPublicRead: "Setel \"public-read\" disaat mengunggah" serverLogs: "Log Peladen" deleteAll: "Hapus semua" @@ -522,7 +565,9 @@ sort: "Urutkan" ascendingOrder: "Urutkan naik" descendingOrder: "Urutkan menurun" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript. Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan Misskey." +scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript.\ + \ Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan\ + \ Calckey." output: "Keluaran" script: "Script" disablePagesScript: "Nonaktifkan script pada halaman" @@ -530,11 +575,14 @@ updateRemoteUser: "Perbaharui informasi pengguna luar" deleteAllFiles: "Hapus semua berkas" deleteAllFilesConfirm: "Apakah kamu yakin ingin menghapus semua berkas?" removeAllFollowing: "Tahan semua mengikuti" -removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan ini ketika instansi sudah tidak ada lagi." +removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan\ + \ ini ketika instansi sudah tidak ada lagi." userSuspended: "Pengguna ini telah dibekukan." userSilenced: "Pengguna ini telah dibungkam." yourAccountSuspendedTitle: "Akun ini dibekukan" -yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. Mohon untuk tidak membuat akun baru." +yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan\ + \ layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih\ + \ lanjut. Mohon untuk tidak membuat akun baru." menu: "Menu" divider: "Pembagi" addItem: "Tambahkan item" @@ -579,7 +627,8 @@ notificationType: "Jenis pemberitahuan" edit: "Sunting" emailServer: "Peladen surel" enableEmail: "Nyalakan distribusi surel" -emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa kata sandi" +emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa\ + \ kata sandi" email: "Surel" emailAddress: "Alamat surel" smtpConfig: "Konfigurasi peladen SMTP" @@ -587,13 +636,15 @@ smtpHost: "Host" smtpPort: "Port" smtpUser: "Nama Pengguna" smtpPass: "Kata sandi" -emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan verifikasi SMTP" +emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan\ + \ verifikasi SMTP" smtpSecure: "Gunakan SSL/TLS implisit untuk koneksi SMTP" smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS" testEmail: "Tes pengiriman surel" wordMute: "Bisukan kata" regexpError: "Kesalahan ekspresi reguler" -regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab} kata yang dibisukan:" +regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab}\ + \ kata yang dibisukan:" instanceMute: "Bisuka instansi" userSaysSomething: "{name} mengatakan sesuatu" makeActive: "Aktifkan" @@ -609,30 +660,37 @@ create: "Buat" notificationSetting: "Pengaturan Pemberitahuan" notificationSettingDesc: "Pilih tipe pemberitahuan untuk ditampilkan" useGlobalSetting: "Gunakan setelan global" -useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan. Jika dimatikan, konfigurasi secara individu dapat dibuat." +useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan.\ + \ Jika dimatikan, konfigurasi secara individu dapat dibuat." other: "Lainnya" regenerateLoginToken: "Perbarui token login" -regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan dilogout." -setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya menggunakan spasi." +regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat\ + \ login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan\ + \ dilogout." +setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya\ + \ menggunakan spasi." fileIdOrUrl: "File-ID atau URL" behavior: "Perilaku" sample: "Contoh" abuseReports: "Laporkan" reportAbuse: "Laporkan" reportAbuseOf: "Laporkan {name}" -fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai catatan yang spesifik, mohon lampirkan serta URL catatan tersebut." +fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai\ + \ catatan yang spesifik, mohon lampirkan serta URL catatan tersebut." abuseReported: "Laporan kamu telah dikirimkan. Terima kasih." reporter: "Pelapor" reporteeOrigin: "Yang dilaporkan" reporterOrigin: "Pelapor" forwardReport: "Teruskan laporan ke instansi luar" -forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem akan digunakan sebagai pelapor pada instansi luar." +forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem\ + \ akan digunakan sebagai pelapor pada instansi luar." send: "Kirim" abuseMarkAsResolved: "Tandai laporan sebagai selesai" openInNewTab: "Buka di tab baru" openInSideView: "Buka di tampilan samping" defaultNavigationBehaviour: "Navigasi bawaan" -editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan untuk merusak akun kamu." +editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan\ + \ untuk merusak akun kamu." instanceTicker: "Informasi pengguna pada instansi" waitingFor: "Menunggu untuk {x}" random: "Acak" @@ -644,9 +702,11 @@ createNew: "Buat baru" optional: "Opsional" createNewClip: "Buat klip baru" unclip: "Batalkan klip" -confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\". Yakin ingin membatalkan catatan dari klip ini?" +confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\"\ + . Yakin ingin membatalkan catatan dari klip ini?" public: "Publik" -i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat ikut membantu di {link}." +i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat\ + \ ikut membantu di {link}." manageAccessTokens: "Kelola access token" accountInfo: "Informasi akun" notesCount: "Jumlah catatan" @@ -665,12 +725,16 @@ no: "Tidak" driveFilesCount: "Jumlah berkas drive" driveUsage: "Penggunaan ruang penyimpanan drive" noCrawle: "Tolak pengindeksan crawler" -noCrawleDescription: "Meminta mesin pencari untuk tidak mengindeks halaman profil kamu, catatan, Halaman, dll." -lockedAccountInfo: "Kecuali kamu menyetel visibilitas catatan milikmu ke \"Hanya pengikut\", catatan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu memerlukan pengikut untuk disetujui secara manual." +noCrawleDescription: "Meminta mesin pencari untuk tidak mengindeks halaman profil\ + \ kamu, catatan, Halaman, dll." +lockedAccountInfo: "Kecuali kamu menyetel visibilitas catatan milikmu ke \"Hanya pengikut\"\ + , catatan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu memerlukan\ + \ pengikut untuk disetujui secara manual." alwaysMarkSensitive: "Tandai media dalam catatan sebagai media sensitif" loadRawImages: "Tampilkan lampiran gambar secara penuh daripada thumbnail" disableShowingAnimatedImages: "Jangan mainkan gambar bergerak" -verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang telah disertakan untuk menyelesaikan verifikasi." +verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang\ + \ telah disertakan untuk menyelesaikan verifikasi." notSet: "Tidak disetel" emailVerified: "Surel telah diverifikasi" noteFavoritesCount: "Jumlah catatan yang difavoritkan" @@ -682,14 +746,16 @@ clips: "Klip" experimentalFeatures: "Fitur eksperimental" developer: "Pengembang" makeExplorable: "Buat akun tampil di \"Jelajahi\"" -makeExplorableDescription: "Jika kamu mematikan ini, akun kamu tidak akan muncul di bagian \"Jelajahi:" +makeExplorableDescription: "Jika kamu mematikan ini, akun kamu tidak akan muncul di\ + \ bagian \"Jelajahi:" showGapBetweenNotesInTimeline: "Tampilkan jarak diantara catatan pada linimasa" duplicate: "Duplikat" left: "Kiri" center: "Tengah" wide: "Lebar" narrow: "Sempit" -reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali. Apakah kamu ingin memuat halaman kembali sekarang?" +reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali.\ + \ Apakah kamu ingin memuat halaman kembali sekarang?" needReloadToApply: "Pengaturan ini hanya akan diterapkan setelah memuat ulang halaman." showTitlebar: "Tampilkan bilah judul" clearCache: "Hapus tembolok" @@ -697,7 +763,10 @@ onlineUsersCount: "{n} orang sedang daring" nUsers: "{n} Pengguna" nNotes: "{n} Catatan" sendErrorReports: "Kirim laporan kesalahan" -sendErrorReportsDescription: "Ketika dinyalakan, informasi kesalahan rinci akan dibagikan dengan Misskey ketika masalah terjadi, hal ini untuk membantu kualitas Misskey. Fitur ini memungkinkan memuat informasi seperti sistem operasi yang kamu gunakan dan versinya, aplikasi peramban yang kamu gunakan, riwayat aktivitas kamu, dll." +sendErrorReportsDescription: "Ketika dinyalakan, informasi kesalahan rinci akan dibagikan\ + \ dengan Calckey ketika masalah terjadi, hal ini untuk membantu kualitas Calckey.\ + \ Fitur ini memungkinkan memuat informasi seperti sistem operasi yang kamu gunakan\ + \ dan versinya, aplikasi peramban yang kamu gunakan, riwayat aktivitas kamu, dll." myTheme: "Tema saya" backgroundColor: "Latar Belakang" accentColor: "Aksen" @@ -736,14 +805,17 @@ unlikeConfirm: "Yakin ingin hapus sukamu?" fullView: "Tampilan penuh" quitFullView: "Keluar tampilan penuh" addDescription: "Tambahkan deskripsi" -userPagePinTip: "Kamu dapat membuat catatan untuk ditampilkan disini dengan memilih \"Sematkan ke profil\" dari menu pada catatan individu." -notSpecifiedMentionWarning: "Catatan ini mengandung sebutan dari pengguna yang tidak dimuat sebagai penerima" +userPagePinTip: "Kamu dapat membuat catatan untuk ditampilkan disini dengan memilih\ + \ \"Sematkan ke profil\" dari menu pada catatan individu." +notSpecifiedMentionWarning: "Catatan ini mengandung sebutan dari pengguna yang tidak\ + \ dimuat sebagai penerima" info: "Informasi" userInfo: "Informasi pengguna" unknown: "Tidak diketahui" onlineStatus: "Status daring" hideOnlineStatus: "Sembunyikan status daring" -hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan untuk beberapa fungsi seperti contohnya pencarian." +hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan\ + \ untuk beberapa fungsi seperti contohnya pencarian." online: "Daring" active: "Aktif" offline: "Luring" @@ -778,7 +850,8 @@ emailNotConfiguredWarning: "Alamat surel tidak disetel." ratio: "Rasio" previewNoteText: "Tampilkan pratinjau" customCss: "Custom CSS" -customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya. Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." +customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya.\ + \ Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." global: "Global" squareAvatars: "Tampilkan avatar sebagai persegi" sent: "Kirim" @@ -788,12 +861,14 @@ hashtags: "Tagar" troubleshooting: "Penyelesaian Masalah" useBlurEffect: "Gunakan efek blur pada antarmuka" learnMore: "Pelajari lebih lanjut" -misskeyUpdated: "Misskey telah dimutakhirkan!" +misskeyUpdated: "Calckey telah dimutakhirkan!" whatIsNew: "Lihat perubahan pemutakhiran" translate: "Terjemahkan" translatedFrom: "Terjemahkan dari {x}" accountDeletionInProgress: "Penghapusan akun sedang dalam proses" -usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya." +usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen\ + \ ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_).\ + \ Username tidak dapat diubah setelahnya." aiChanMode: "Mode Ai" keepCw: "Biarkan Peringatan Konten" pubSub: "Akun Pub/Sub" @@ -809,12 +884,14 @@ filter: "Saring" controlPanel: "Panel kendali" manageAccounts: "Kelola Akun" makeReactionsPublic: "Tampilkan riwayat reaksi ke publik" -makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi masa lalu kamu ditampilkan secara publik." +makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi\ + \ masa lalu kamu ditampilkan secara publik." classic: "Klasik" muteThread: "Bisukan thread" unmuteThread: "Suarakan thread" ffVisibility: "Visibilitas Mengikuti/Pengikut" -ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu ikuti." +ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu\ + \ ikuti." continueThread: "Lihat lanjutan thread" deleteAccountConfirm: "Akun akan dihapus. Apakah kamu yakin?" incorrectPassword: "Kata sandi salah." @@ -824,7 +901,8 @@ leaveGroup: "Keluar grup" leaveGroupConfirm: "Apakah kamu yakin untuk keluar dari \"{name}\"?" useDrawerReactionPickerForMobile: "Tampilkan bilah reaksi sebagai laci di ponsel" welcomeBackWithName: "Selamat datang kembali, {name}." -clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi email." +clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi\ + \ email." overridedDeviceKind: "Tipe perangkat" smartphone: "Ponsel" tablet: "Tablet" @@ -866,11 +944,16 @@ _ffVisibility: _signup: almostThere: "Hampir selesai" emailAddressInfo: "Mohon masukkan alamat surel kamu." - emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." + emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon\ + \ klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." _accountDelete: accountDelete: "Hapus akun" - mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah." - sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat surel yang terdaftarkan pada akun ini." + mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif,\ + \ kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada\ + \ berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu\ + \ unggah." + sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat\ + \ surel yang terdaftarkan pada akun ini." requestAccountDelete: "Minta penghapusan akun" started: "Penghapusan telah dimulai" inProgress: "Penghapusan sedang dalam proses" @@ -878,9 +961,13 @@ _ad: back: "Kembali" reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit" _forgotPassword: - enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut." - ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi admin segera." - contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak admin untuk mengatur ulang password kamu." + enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah\ + \ tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel\ + \ tersebut." + ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi\ + \ admin segera." + contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak\ + \ admin untuk mengatur ulang password kamu." _gallery: my: "Postingan saya" liked: "Postingan yang disukai" @@ -902,13 +989,15 @@ _registry: domain: "Domain" createKey: "Buat kunci" _aboutMisskey: - about: "Misskey adalah perangkat lunak sumber terbuka yang sedang dikembangkan oleh syuilo sejak 2014." + about: "Calckey adalah perangkat lunak sumber terbuka yang sedang dikembangkan oleh\ + \ syuilo sejak 2014." contributors: "Kontributor utama" allContributors: "Seluruh kontributor" source: "Sumber kode" - translation: "Terjemahkan Misskey" - donate: "Donasi ke Misskey" - morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang tidak tercantum disini. Terima kasih! 🥰" + translation: "Terjemahkan Calckey" + donate: "Donasi ke Calckey" + morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang\ + \ tidak tercantum disini. Terima kasih! \U0001F970" patrons: "Pendukung" _nsfw: respect: "Sembunyikan media NSFW" @@ -916,10 +1005,12 @@ _nsfw: force: "Sembunyikan semua media" _mfm: cheatSheet: "Contekan MFM" - intro: "MFM adalah Misskey-exclusive Markup Language yang dapat digunakan di banyak tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." - dummy: "Misskey membentangkan dunia Fediverse" + intro: "MFM adalah Calckey-exclusive Markup Language yang dapat digunakan di banyak\ + \ tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." + dummy: "Calckey membentangkan dunia Fediverse" mention: "Sebut" - mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan simbol-At dan nama engguna mereka." + mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan\ + \ simbol-At dan nama engguna mereka." hashtag: "Tagar" hashtagDescription: "Kamu dapat menentukan tagar dengan menggunakan angka dan teks." url: "URL" @@ -935,15 +1026,18 @@ _mfm: inlineCode: "Kode (Dalam baris)" inlineCodeDescription: "Menampilkan sorotan sintaks dalam baris untuk kode(program-)." blockCode: "Kode (Blok)" - blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris dalam sebuah blok." + blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris\ + \ dalam sebuah blok." inlineMath: "Matematika (Dalam baris)" inlineMathDescription: "Menampilkan formula matematika (KaTeX) dalam baris." blockMath: "Matematika (Blok)" - blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah blok." + blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah\ + \ blok." quote: "Kutip" quoteDescription: "Menampilkan konten sebagai kutipan." emoji: "Emoji kustom" - emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom menggunakan tanda titik dua." + emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom\ + \ menggunakan tanda titik dua." search: "Penelusuran" searchDescription: "Menampilkan kotak pencarian dengan teks yang sudah dimasukkan." flip: "Balik" @@ -969,7 +1063,8 @@ _mfm: x4: "Sangat besar" x4Description: "Tampilka konten menjadi sangat besar." blur: "Buram" - blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan dengan jelas dengan melayangkan kursor tetikus di atasnya." + blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan\ + \ dengan jelas dengan melayangkan kursor tetikus di atasnya." font: "Font" fontDescription: "Setel font yang ditampilkan untuk konten." rainbow: "Pelangi" @@ -1003,15 +1098,21 @@ _menuDisplay: hide: "Sembunyikan" _wordMute: muteWords: "Kata yang dibisukan" - muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan baris baru untuk kondisi OR." - muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan regular expressions." + muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ + \ baris baru untuk kondisi OR." + muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan\ + \ regular expressions." softDescription: "Sembunyikan catatan yang memenuhi aturan kondisi dari linimasa." - hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa. Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun jika kondisi tersebut diubah." + hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa.\ + \ Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun\ + \ jika kondisi tersebut diubah." soft: "Lembut" hard: "Keras" mutedNotes: "Catatan yang dibisukan" _instanceMute: - instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam instansi yang dibisukan." + instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari\ + \ instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam\ + \ instansi yang dibisukan." instanceMuteDescription2: "Pisah dengan baris baru" title: "Sembunyikan note dari instansi terdaftar." heading: "Daftar instansi yang akan dibisukan" @@ -1043,7 +1144,8 @@ _theme: darken: "Mengelamkan" lighten: "Menerangkan" inputConstantName: "Masukkan nama untuk konstanta" - importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting tema" + importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting\ + \ tema" deleteConstantConfirm: "apakah kamu ingin menghapus konstanta {const}?" keys: accent: "Aksen" @@ -1113,38 +1215,58 @@ _time: hour: "jam" day: "hari" _tutorial: - title: "Cara menggunakan Misskey" + title: "Cara menggunakan Calckey" step1_1: "Selamat datang!" - step1_2: "Halaman ini disebut \"linimasa\". Halaman ini menampilkan \"catatan\" yang diurutkan secara kronologis dari orang-orang yang kamu \"ikuti\"." - step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti siapapun." - step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti seseorang." - step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain mudah untuk mengikutimu kembali." - step3_1: "Selesai menyetel profil kamu?" - step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan mengklik ikon pensil pada layar kamu." - step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat catatan kamu." - step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja ikutan bikin akun misskey punyaku\"!" + step1_2: "Halaman ini disebut \"linimasa\". Halaman ini menampilkan \"catatan\"\ + \ yang diurutkan secara kronologis dari orang-orang yang kamu \"ikuti\"." + step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti\ + \ siapapun." + step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti\ + \ seseorang." + step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain\ + \ mudah untuk mengikutimu kembali." + step3_1: "Sekarang saatnya mengikuti beberapa orang!" + step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan\ + \ mengklik ikon pensil pada layar kamu." + step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat\ + \ catatan kamu." + step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja\ + \ ikutan bikin akun misskey punyaku\"!" step4_1: "Selesai mencatat catatan pertamamu?" step4_2: "Horee! Sekarang catatan pertamamu sudah ditampilkan di linimasa milikmu." - step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti orang lain." - step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga saat ini. Coba ikuti seseorang yang kamu suka!" - step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol follow pada profil mereka." - step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." + step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti\ + \ orang lain." + step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk\ + \ kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga\ + \ saat ini. Coba ikuti seseorang yang kamu suka!" + step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol\ + \ follow pada profil mereka." + step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna\ + \ rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." step6_1: "Sekarang kamu dapat melihat catatan pengguna lain pada linimasamu." - step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon dengan cepat." - step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." - step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Misskey." - step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Misskey, cobalah berkunjung ke bagian {help}." - step7_3: "Semoga berhasil dan bersenang-senanglah! 🚀" + step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon\ + \ dengan cepat." + step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain\ + \ dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." + step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Calckey." + step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung\ + \ ke bagian {help}." + step7_3: "Semoga berhasil dan bersenang-senanglah! \U0001F680" _2fa: alreadyRegistered: "Kamu telah mendaftarkan perangkat otentikasi dua faktor." registerDevice: "Daftarkan perangkat baru" registerKey: "Daftarkan kunci keamanan baru" - step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat kamu." + step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat\ + \ kamu." step2: "Lalu, pindai kode QR yang ada di layar." step2Url: "Di aplikasi desktop, masukkan URL berikut:" - step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan pemasangan." - step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi otentikasi kamu." - securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." + step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan\ + \ pemasangan." + step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi\ + \ otentikasi kamu." + securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses\ + \ login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung\ + \ FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." _permissions: "read:account": "Lihat informasi akun" "write:account": "Sunting informasi akun" @@ -1180,7 +1302,8 @@ _permissions: "write:gallery-likes": "Sunting daftar postingan galeri yang disukai" _auth: shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?" - shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun kamu?" + shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun\ + \ kamu?" permissionAsk: "Aplikasi ini membutuhkan beberapa ijin, yaitu:" pleaseGoBack: "Mohon kembali ke aplikasi kamu" callback: "Mengembalikan kamu ke aplikasi" @@ -1275,7 +1398,8 @@ _profile: youCanIncludeHashtags: "Kamu juga dapat menambahkan tagar ke dalam bio." metadata: "Informasi tambahan" metadataEdit: "Sunting informasi tambahan" - metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan ke dalam profilmu." + metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan\ + \ ke dalam profilmu." metadataLabel: "Label" metadataContent: "Isi" changeAvatar: "Ubah avatar" @@ -1596,7 +1720,8 @@ _pages: _for: arg1: "Jumlah angka untuk diulangi" arg2: "Aksi" - typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan adalah \"{actual}\"!" + typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan\ + \ adalah \"{actual}\"!" thereIsEmptySlot: "Slot {slot} kosong!" types: string: "Teks" diff --git a/locales/index.js b/locales/index.js index 7399bb5a1..20e9593da 100644 --- a/locales/index.js +++ b/locales/index.js @@ -2,59 +2,90 @@ * Languages Loader */ -const fs = require('fs'); -const yaml = require('js-yaml'); -let languages = [] -let languages_custom = [] - -const merge = (...args) => args.reduce((a, c) => ({ - ...a, - ...c, - ...Object.entries(a) - .filter(([k]) => c && typeof c[k] === 'object') - .reduce((a, [k, v]) => (a[k] = merge(v, c[k]), a), {}) -}), {}); +const fs = require("fs"); +const yaml = require("js-yaml"); +let languages = []; +let languages_custom = []; +const merge = (...args) => + args.reduce( + (a, c) => ({ + ...a, + ...c, + ...Object.entries(a) + .filter(([k]) => c && typeof c[k] === "object") + .reduce((a, [k, v]) => ((a[k] = merge(v, c[k])), a), {}), + }), + {}, + ); fs.readdirSync(__dirname).forEach((file) => { - if (file.includes('.yml')){ - file = file.slice(0, file.indexOf('.')) + if (file.includes(".yml")) { + file = file.slice(0, file.indexOf(".")); languages.push(file); } -}) +}); -fs.readdirSync(__dirname + '/../custom/locales').forEach((file) => { - if (file.includes('.yml')){ - file = file.slice(0, file.indexOf('.')) +fs.readdirSync(__dirname + "/../custom/locales").forEach((file) => { + if (file.includes(".yml")) { + file = file.slice(0, file.indexOf(".")); languages_custom.push(file); } -}) +}); const primaries = { - 'en': 'US', - 'ja': 'JP', - 'zh': 'CN', + en: "US", + ja: "JP", + zh: "CN", }; // 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く -const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), ''); +const clean = (text) => + text.replace(new RegExp(String.fromCodePoint(0x08), "g"), ""); -const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8'))) || {}, a), {}); -const locales_custom = languages_custom.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(`${__dirname}/../custom/locales/${c}.yml`, 'utf-8'))) || {}, a), {}); -Object.assign(locales, locales_custom) +const locales = languages.reduce( + (a, c) => ( + (a[c] = + yaml.load(clean(fs.readFileSync(`${__dirname}/${c}.yml`, "utf-8"))) || + {}), + a + ), + {}, +); +const locales_custom = languages_custom.reduce( + (a, c) => ( + (a[c] = + yaml.load( + clean( + fs.readFileSync(`${__dirname}/../custom/locales/${c}.yml`, "utf-8"), + ), + ) || {}), + a + ), + {}, +); +Object.assign(locales, locales_custom); -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 - ); - } - })(), a), {}); +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, + ); + } + })()), + a + ), + {}, +); diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 185d12d5a..ed3632ec6 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1,7 +1,7 @@ --- _lang_: "Italiano" headlineMisskey: "Rete collegata tramite note" -introMisskey: "Benvenut@! Misskey è un servizio di microblogging decentralizzato, libero e aperto. \nScrivi \"note\" per condividere ciò che sta succedendo adesso o per dire a tutti qualcosa di te. 📡\nGrazie alla funzione \"reazioni\" puoi anche mandare reazioni rapide alle note delle altre persone del Fediverso. 👍\nEsplora un nuovo mondo! 🚀" +introMisskey: "Benvenut@! Calckey è un servizio di microblogging decentralizzato, libero e aperto. \nScrivi \"note\" per condividere ciò che sta succedendo adesso o per dire a tutti qualcosa di te. 📡\nGrazie alla funzione \"reazioni\" puoi anche mandare reazioni rapide alle note delle altre persone del Fediverso. 👍\nEsplora un nuovo mondo! 🚀" monthAndDay: "{day}/{month}" search: "Cerca" notifications: "Notifiche" @@ -139,7 +139,7 @@ settingGuide: "Configurazione suggerita" cacheRemoteFiles: "Memorizzazione nella cache dei file remoti" cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno linkati direttamente senza essere memorizzati nella cache. Sarà possibile risparmiare spazio di archiviazione sul server, ma il traffico aumenterà in quanto non verranno generate anteprime." flagAsBot: "Io sono un robot" -flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche, attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare i sistemi interni di Misskey perché trattino questo account come un bot." +flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche, attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare i sistemi interni di Calckey perché trattino questo account come un bot." flagAsCat: "Io sono un gatto" flagAsCatDescription: "Abilita l'opzione \"Io sono un gatto\" per l'account." autoAcceptFollowed: "Accetta automaticamente le richieste di follow da utenti che già segui" @@ -175,7 +175,6 @@ operations: "Operazioni" software: "Software" version: "Versione" metadata: "Metadato" -withNFiles: "{n} file in allegato" monitor: "Monitorare" jobQueue: "Coda di lavoro" cpuAndMemory: "CPU e Memoria" @@ -197,7 +196,7 @@ noUsers: "Nessun utente trovato" editProfile: "Modifica profilo" noteDeleteConfirm: "Eliminare questo Nota?" pinLimitExceeded: "Non puoi fissare altre note " -intro: "L'installazione di Misskey è finita! Si prega di creare un account amministratore." +intro: "L'installazione di Calckey è finita! Si prega di creare un account amministratore." done: "Fine" processing: "In elaborazione" preview: "Anteprima" @@ -373,7 +372,7 @@ exploreFediverse: "Esplora il Fediverso" popularTags: "Tag di tendenza" userList: "Liste" about: "Informazioni" -aboutMisskey: "Informazioni di Misskey" +aboutMisskey: "Informazioni di Calckey" administrator: "Amministratore" token: "Token" twoStepAuthentication: "Autenticazione a due fattori" @@ -518,7 +517,7 @@ sort: "Ordina per" ascendingOrder: "Ascendente" descendingOrder: "Discendente" scratchpad: "ScratchPad" -scratchpadDescription: "Lo Scratchpad offre un ambiente per esperimenti di AiScript. È possibile scrivere, eseguire e confermare i risultati dell'interazione del codice con Misskey." +scratchpadDescription: "Lo Scratchpad offre un ambiente per esperimenti di AiScript. È possibile scrivere, eseguire e confermare i risultati dell'interazione del codice con Calckey." output: "Uscita" script: "Script" disablePagesScript: "Disabilita AiScript nelle pagine" @@ -686,7 +685,7 @@ onlineUsersCount: "{n} utenti online" nUsers: "{n} utenti" nNotes: "{n}Note" sendErrorReports: "Invia segnalazioni di errori" -sendErrorReportsDescription: "Quando abilitato, se si verifica un problema, informazioni dettagliate sugli errori verranno condivise con Misskey in modo da aiutare a migliorare la qualità del software.\nCiò include informazioni come la versione del sistema operativo, il tipo di navigatore web che usi, la cronologia delle attività, ecc." +sendErrorReportsDescription: "Quando abilitato, se si verifica un problema, informazioni dettagliate sugli errori verranno condivise con Calckey in modo da aiutare a migliorare la qualità del software.\nCiò include informazioni come la versione del sistema operativo, il tipo di navigatore web che usi, la cronologia delle attività, ecc." myTheme: "I miei temi" backgroundColor: "Sfondo" textColor: "Testo" @@ -773,7 +772,7 @@ hashtags: "Hashtag" troubleshooting: "Risoluzione problemi" useBlurEffect: "Utilizza effetto sfocatura per l'interfaccia utente" learnMore: "Più dettagli" -misskeyUpdated: "Misskey è stato aggiornato!" +misskeyUpdated: "Calckey è stato aggiornato!" whatIsNew: "Visualizza le informazioni sull'aggiornamento" translate: "Traduzione" translatedFrom: "Tradotto da {x}" @@ -865,8 +864,8 @@ _aboutMisskey: contributors: "Principali sostenitori" allContributors: "Tutti i sostenitori" source: "Codice sorgente" - translation: "Tradurre Misskey" - donate: "Sostieni Misskey" + translation: "Tradurre Calckey" + donate: "Sostieni Calckey" morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie mille! 🥰" patrons: "Sostenitori" _nsfw: @@ -875,8 +874,8 @@ _nsfw: force: "Nascondere tutti i media" _mfm: cheatSheet: "Bigliettino MFM" - intro: "MFM è un linguaggio Markdown particolare che si può usare in diverse parti di Misskey. Qui puoi visualizzare a colpo d'occhio tutta la sintassi MFM utile." - dummy: "Il Fediverso si espande con Misskey" + intro: "MFM è un linguaggio Markdown particolare che si può usare in diverse parti di Calckey. Qui puoi visualizzare a colpo d'occhio tutta la sintassi MFM utile." + dummy: "Il Fediverso si espande con Calckey" mention: "Menzioni" mentionDescription: "Si può menzionare un utente specifico digitando il suo nome utente subito dopo il segno @." hashtag: "Hashtag" @@ -910,6 +909,8 @@ _mfm: fontDescription: "Puoi scegliere il tipo di carattere per il contenuto." rainbow: "Arcobaleno" rotate: "Ruota" + fade: "Dissolvenza" + fadeDescription: "Dissolvenza in entrata e in uscita del contenuto." _instanceTicker: none: "Nascondi" remote: "Mostra solo per gli/le utenti remotə" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 8ae43cdb9..1bbc38c49 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -52,7 +52,7 @@ sendMessage: "メッセージを送信" copyUsername: "ユーザー名をコピー" searchUser: "ユーザーを検索" reply: "返信" -loadMore: "もっと見る" +loadMore: "もっと読み込む" showMore: "もっと見る" showLess: "閉じる" youGotNewFollower: "フォローされました" @@ -66,7 +66,7 @@ import: "インポート" export: "エクスポート" files: "ファイル" download: "ダウンロード" -driveFileDeleteConfirm: "ファイル「{name}」を削除しますか?このファイルを添付した投稿も消えます。" +driveFileDeleteConfirm: "ファイル「{name}」を削除しますか?これにより、このファイルが添付されている投稿も削除されます。" unfollowConfirm: "{name}さんのフォローを解除しますか?" exportRequested: "エクスポートをリクエストしました。これには時間がかかる場合があります。エクスポートが終わると、「ドライブ」に追加されます。" importRequested: "インポートをリクエストしました。これには時間がかかる場合があります。" @@ -188,7 +188,6 @@ operations: "操作" software: "ソフトウェア" version: "バージョン" metadata: "メタデータ" -withNFiles: "{n}つのファイル" monitor: "モニター" jobQueue: "ジョブキュー" cpuAndMemory: "CPUとメモリ" @@ -619,6 +618,9 @@ regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表 instanceMute: "インスタンスミュート" userSaysSomething: "{name}が何かを言いました" userSaysSomethingReason: "{name}が{reason}と言いました" +userSaysSomethingReasonReply: "{name}が{reason}を含む投稿に返信しました" +userSaysSomethingReasonRenote: "{name}が{reason}を含む投稿をブーストしました" +userSaysSomethingReasonQuote: "{name}が{reason}を含む投稿を引用しました" makeActive: "アクティブにする" display: "表示" copy: "コピー" @@ -812,7 +814,7 @@ customCssWarn: "この設定は必ず知識のある方が行ってください global: "グローバル" recommended: "推奨" squareAvatars: "アイコンを四角形で表示" -seperateRenoteQuote: "ブーストと引用ボタンを分ける" +seperateRenoteQuote: "ブーストと引用のボタンを分ける" sent: "送信" received: "受信" searchResult: "検索結果" @@ -942,7 +944,7 @@ customSplashIconsDescription: "ユーザがページをロード/リロードす \ URL。画像は静的なURLで、できればすべて192x192にリサイズしてください。" showUpdates: "Calckeyの更新時にポップアップを表示する" recommendedInstances: "おすすめインスタンス" -recommendedInstancesDescription: "おすすめタイムラインに表示される、改行で区切られたインスタンス。`https://`を追加しないでください。ドメインのみを追加してください。" +recommendedInstancesDescription: "おすすめタイムラインに表示するインスタンスを改行区切りで入力してください。`https://`は書かず、ドメインのみを入力してください。" caption: "自動キャプション" splash: "スプラッシュスクリーン" updateAvailable: "アップデートがありますよ!" @@ -959,17 +961,21 @@ moveFrom: "別のアカウントからこのアカウントに引っ越す" moveFromLabel: "引っ越し元のアカウント:" moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@instance.com" migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用できなくなります。\n\ - また、引っ越し先のアカウントでエイリアスを作成したことを確認してください。" + この操作を行う前に引っ越し先のアカウントでエイリアスを作成する必要があります。エイリアスが作成されているか、必ず確認してください。" defaultReaction: "リモートとローカルの投稿に対するデフォルトの絵文字リアクション" license: "ライセンス" indexPosts: "投稿をインデックス" -indexFrom: "この投稿ID以降をインデックスする(空白で全ての投稿を指定します)" +indexFrom: "この投稿ID以降をインデックスする" +indexFromDescription: "空白で全ての投稿を指定します" indexNotice: "インデックスを開始しました。完了まで時間がかかる場合があるため、少なくとも1時間はサーバーを再起動しないでください。" customKaTeXMacro: "カスタムKaTeXマクロ" customKaTeXMacroDescription: "数式入力を楽にするためのマクロを設定しましょう!記法はLaTeXにおけるコマンドの定義と同様に \\newcommand{\\\ name}{content} または \\newcommand{\\add}[2]{#1 + #2} のように記述します。後者の例では \\add{3}{foo}\ \ が 3 + foo に展開されます。また、マクロの名前を囲む波括弧を丸括弧 () および角括弧 [] に変更した場合、マクロの引数に使用する括弧が変更されます。マクロの定義は一行に一つのみで、途中で改行はできません。マクロの定義が無効な行は無視されます。文字列を単純に置換する機能のみに対応していて、条件分岐などの高度な構文は使用できません。" enableCustomKaTeXMacro: "カスタムKaTeXマクロを有効にする" +preventAiLearning: "AIによる学習を防止" +preventAiLearningDescription: "投稿したノート、添付した画像などのコンテンツを学習の対象にしないようAIに要求します。これはnoaiフラグをHTMLレスポンスに含めることによって実現されます。" +noGraze: "ブラウザの拡張機能「Graze for Mastodon」は、Calckeyの動作を妨げるため、無効にしてください。" _sensitiveMediaDetection: description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。" @@ -1125,6 +1131,17 @@ _mfm: plain: "プレーン" plainDescription: "内側の構文を全て無効にします。" position: 位置 + stop: MFMアニメーションを停止 + alwaysPlay: MFMアニメーションを自動再生する + play: MFMアニメーションを再生 + warn: MFMアニメーションは激しい動きを含む可能性があります。 + positionDescription: 位置を指定した値だけずらします。 + foreground: 文字色 + backgroundDescription: 背景の色を変更します。 + background: 背景色 + scale: 拡大・縮小 + scaleDescription: 大きさを指定した値に拡大・縮小します。 + foregroundDescription: 文字の色を変更します。 _instanceTicker: none: "表示しない" remote: "リモートユーザーに表示" @@ -1144,6 +1161,8 @@ _channel: following: "フォロー中" usersCount: "{n}人が参加中" notesCount: "{n}投稿があります" + nameAndDescription: "名前と説明" + nameOnly: "名前のみ" _messaging: dms: "プライベート" groups: "グループ" @@ -1832,23 +1851,18 @@ _deck: list: "リスト" mentions: "あなた宛て" direct: "ダイレクト" -_apps: - apps: "アプリ" - crossPlatform: "クロスプラットフォーム" - mobile: "モバイル" - firstParty: "ファーストパーティ" - firstClass: "対応度◎" - secondClass: "対応度○" - thirdClass: "対応度△" - free: "無料" - paid: "有料" - pwa: "PWAをインストール" - kaiteki: "Kaiteki" - milktea: "Milktea" - missLi: "MissLi" - mona: "Mona" - theDesk: "TheDesk" - lesskey: "Lesskey" noteId: 投稿のID hiddenTagsDescription: 'トレンドと「みつける」から除外したいハッシュタグを(先頭の # を除いて)改行区切りで入力してください。この設定はトレンドと「みつける」以外には影響しません。' hiddenTags: 非表示にするハッシュタグ +apps: "アプリ" +_experiments: + enablePostEditing: 投稿の編集機能を有効にする + title: 試験的な機能 + postEditingCaption: 投稿のメニューに既存の投稿を編集するボタンを表示します。 +sendModMail: モデレーションノートを送る +deleted: 削除済み +editNote: 投稿を編集 +edited: 編集済み +signupsDisabled: + 現在、このサーバーでは新規登録が一般開放されていません。招待コードをお持ちの場合には、以下の欄に入力してください。招待コードをお持ちでない場合にも、新規登録を開放している他のサーバーには入れますよ! +findOtherInstance: 他のサーバーを探す diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index d5c48276f..8a9b91486 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -177,7 +177,6 @@ operations: "操作" software: "ソフトウェア" version: "バージョン" metadata: "メタデータ" -withNFiles: "{n}個のファイル" monitor: "モニター" jobQueue: "ジョブキュー" cpuAndMemory: "CPUとメモリ" diff --git a/locales/kn-IN.yml b/locales/kn-IN.yml index 39b3cbe91..77614812e 100644 --- a/locales/kn-IN.yml +++ b/locales/kn-IN.yml @@ -1,6 +1,6 @@ --- _lang_: "ಕನ್ನಡ" -introMisskey: "ಸ್ವಾಗತ! Misskey ಓಪನ್ ಸೋರ್ಸ್ ಒಕ್ಕೂಟ ಮೈಕ್ರೋಬ್ಲಾಗಿಂಗ್ ಸೇವೆಯಾಗಿದೆ.\n ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅಥವಾ ನಿಮ್ಮ ಬಗ್ಗೆ ಎಲ್ಲರಿಗೂ ಹೇಳಲು \"ಟಿಪ್ಪಣಿ\"ಗಳನ್ನು ರಚಿಸಿ📡\n \"ಸ್ಪಂದನೆ\" ಕ್ರಿಯೆಯೊಂದಿಗೆ, ನೀವು ಎಲ್ಲರ ಟಿಪ್ಪಣಿಗಳಿಗೆ ತ್ವರಿತವಾಗಿ ಸ್ಪಂದನೆಗಳನ್ನು ಕೂಡ ಸೇರಿಸಬಹುದು.👍\n ಹೊಸ ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸಿ🚀" +introMisskey: "ಸ್ವಾಗತ! Calckey ಓಪನ್ ಸೋರ್ಸ್ ಒಕ್ಕೂಟ ಮೈಕ್ರೋಬ್ಲಾಗಿಂಗ್ ಸೇವೆಯಾಗಿದೆ.\n ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅಥವಾ ನಿಮ್ಮ ಬಗ್ಗೆ ಎಲ್ಲರಿಗೂ ಹೇಳಲು \"ಟಿಪ್ಪಣಿ\"ಗಳನ್ನು ರಚಿಸಿ📡\n \"ಸ್ಪಂದನೆ\" ಕ್ರಿಯೆಯೊಂದಿಗೆ, ನೀವು ಎಲ್ಲರ ಟಿಪ್ಪಣಿಗಳಿಗೆ ತ್ವರಿತವಾಗಿ ಸ್ಪಂದನೆಗಳನ್ನು ಕೂಡ ಸೇರಿಸಬಹುದು.👍\n ಹೊಸ ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸಿ🚀" monthAndDay: "{month}ನೇ ತಿಂಗಳ {day}ನೇ ದಿನ" search: "ಹುಡುಕು" notifications: "ಅಧಿಸೂಚನೆಗಳು" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index b87a4b06c..7143cf2f9 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1,7 +1,7 @@ --- _lang_: "한국어" headlineMisskey: "노트로 연결되는 네트워크" -introMisskey: "환영합니다! Misskey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀" +introMisskey: "환영합니다! Calckey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀" monthAndDay: "{month}월 {day}일" search: "검색" notifications: "알림" @@ -177,7 +177,6 @@ operations: "작업" software: "소프트웨어" version: "버전" metadata: "메타데이터" -withNFiles: "{n}개의 파일" monitor: "모니터" jobQueue: "작업 대기열" cpuAndMemory: "CPU와 메모리" @@ -524,7 +523,7 @@ sort: "정렬" ascendingOrder: "오름차순" descendingOrder: "내림차순" scratchpad: "스크래치 패드" -scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Misskey 와 상호 작용하는 코드를 작성, 실행 및 결과를 확인할 수 있습니다." +scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Calckey 와 상호 작용하는 코드를 작성, 실행 및 결과를 확인할 수 있습니다." output: "출력" script: "스크립트" disablePagesScript: "Pages 에서 AiScript 를 사용하지 않음" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 7a0580f2d..115c003e3 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -1,7 +1,10 @@ ---- _lang_: "Nederlands" -headlineMisskey: "Netwerk verbonden door notities" -introMisskey: "Welkom! Misskey is een open source, gedecentraliseerde microblogdienst.\nMaak \"notities\" om je gedachten te delen met iedereen om je heen. 📡\nMet \"reacties\" kun je ook snel je mening geven over berichten van anderen. 👍\nLaten we een nieuwe wereld verkennen! 🚀" +headlineMisskey: "Een open source, gedecentraliseerd, social media platform dat voor + altijd gratis is! 🚀" +introMisskey: "Welkom! Calckey is een open source, gedecentraliseerde microblogdienst.\n + Maak \"notities\" om je gedachten te delen met iedereen om je heen. 📡\nMet \"reacties\"\ + \ kun je ook snel je mening geven over berichten van anderen. 👍\nLaten we een nieuwe + wereld verkennen! 🚀" monthAndDay: "{day} {month}" search: "Zoeken" notifications: "Meldingen" @@ -10,7 +13,7 @@ password: "Wachtwoord" forgotPassword: "Wachtwoord vergeten" fetchingAsApObject: "Ophalen vanuit de Fediverse" ok: "Ok" -gotIt: "Begrepen" +gotIt: "Begrepen!" cancel: "Annuleren" enterUsername: "Voer een gebruikersnaam in" renotedBy: "Hergedeeld door {user}" @@ -44,15 +47,16 @@ copyContent: "Kopiëren inhoud" copyLink: "Kopiëren link" 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." +deleteAndEditConfirm: "Weet je zeker dat je deze post wilt verwijderen en dan bewerken? + Je verliest alle reacties, boosts en antwoorden erop." addToList: "Aan lijst toevoegen" sendMessage: "Verstuur bericht" -copyUsername: "Kopiëren gebruikersnaam " -searchUser: "Zoeken een gebruiker" +copyUsername: "Gebruikersnaam kopiëren" +searchUser: "Zoek een gebruiker" reply: "Antwoord" loadMore: "Laad meer" showMore: "Toon meer" -youGotNewFollower: "volgde jou" +youGotNewFollower: "volgt jou" receiveFollowRequest: "Volgverzoek ontvangen" followRequestAccepted: "Volgverzoek geaccepteerd" mention: "Vermelding" @@ -63,9 +67,11 @@ import: "Import" export: "Export" files: "Bestanden" download: "Downloaden" -driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen? Notities met dit bestand als bijlage worden ook verwijderd." +driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen? + Posts met dit bestand als bijlage worden ook verwijderd." unfollowConfirm: "Weet je zeker dat je {name} wilt ontvolgen?" -exportRequested: "Je hebt een export aangevraagd. Dit kan een tijdje duren. Het wordt toegevoegd aan je Drive zodra het is voltooid." +exportRequested: "Je hebt een export aangevraagd. Dit kan een tijdje duren. Het wordt + toegevoegd aan je Drive zodra het is voltooid." importRequested: "Je hebt een import aangevraagd. Dit kan even duren." lists: "Lijsten" noLists: "Je hebt geen lijsten" @@ -75,12 +81,14 @@ following: "Volgend" followers: "Volgers" followsYou: "Volgt jou" createList: "Creëer lijst" -manageLists: "Beheren lijsten" +manageLists: "Lijsten beheren" error: "Fout" somethingHappened: "Er is iets misgegaan." retry: "Probeer opnieuw" pageLoadError: "Pagina laden mislukt" -pageLoadErrorDescription: "Dit wordt normaal gesproken veroorzaakt door netwerkfouten of door de cache van de browser. Probeer de cache te wissen en probeer het na een tijdje wachten opnieuw." +pageLoadErrorDescription: "Dit wordt normaal gesproken veroorzaakt door netwerkfouten + of door de cache van de browser. Probeer de cache te wissen en probeer het na een + tijdje wachten opnieuw." serverIsDead: "De server reageert niet. Wacht even en probeer het opnieuw." youShouldUpgradeClient: "Werk je client bij om deze pagina te zien." enterListName: "Voer de naam van de lijst in" @@ -93,25 +101,26 @@ followRequests: "Volgverzoeken" unfollow: "Ontvolgen" followRequestPending: "Wachten op goedkeuring volgverzoek" enterEmoji: "Voer een emoji in" -renote: "Herdelen" -unrenote: "Stop herdelen" -renoted: "Herdeeld" -cantRenote: "Dit bericht kan niet worden herdeeld" -cantReRenote: "Een herdeling kan niet worden herdeeld" +renote: "Boost" +unrenote: "Boost intrekken" +renoted: "Boosted." +cantRenote: "Dit bericht kan niet worden geboost." +cantReRenote: "Een boost kan niet worden geboost." quote: "Quote" -pinnedNote: "Vastgemaakte notitie" +pinnedNote: "Vastgemaakte post" pinned: "Vastmaken aan profielpagina" you: "Jij" clickToShow: "Klik om te bekijken" sensitive: "NSFW" add: "Toevoegen" reaction: "Reacties" -reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen" -rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen" +reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, + Druk op \"+\" om toe te voegen" +rememberNoteVisibility: "Onthoud post zichtbaarheidsinstellingen" attachCancel: "Verwijder bijlage" markAsSensitive: "Markeren als NSFW" unmarkAsSensitive: "Geen NSFW" -enterFileName: "Invoeren bestandsnaam" +enterFileName: "Bestandsnaam invoeren" mute: "Dempen" unmute: "Stop dempen" block: "Blokkeren" @@ -122,16 +131,21 @@ blockConfirm: "Weet je zeker dat je dit account wil blokkeren?" unblockConfirm: "Ben je zeker dat je deze account wil blokkeren?" suspendConfirm: "Ben je zeker dat je deze account wil suspenderen?" unsuspendConfirm: "Ben je zeker dat je deze account wil opnieuw aanstellen?" -flagAsBot: "Markeer dit account als een robot." -flagAsBotDescription: "Als dit account van een programma wordt beheerd, zet deze vlag aan. Het aanzetten helpt andere ontwikkelaars om bijvoorbeeld onbedoelde feedback loops te doorbreken of om Misskey meer geschikt te maken." +flagAsBot: "Markeer dit account als een robot" +flagAsBotDescription: "Als dit account van een programma wordt beheerd, zet deze vlag + aan. Het aanzetten helpt andere ontwikkelaars om bijvoorbeeld onbedoelde feedback + loops te doorbreken of om Calckey meer geschikt te maken." flagAsCat: "Markeer dit account als een kat." -flagAsCatDescription: "Zet deze vlag aan als je wilt aangeven dat dit account een kat is." -flagShowTimelineReplies: "Toon antwoorden op de tijdlijn." -flagShowTimelineRepliesDescription: "Als je dit vlag aanzet, toont de tijdlijn ook antwoorden op andere en niet alleen jouw eigen notities." -autoAcceptFollowed: "Accepteer verzoeken om jezelf te volgen vanzelf als je de verzoeker al volgt." +flagAsCatDescription: "Zet deze vlag aan als je wilt aangeven dat dit account een + kat is." +flagShowTimelineReplies: "Toon antwoorden op de tijdlijn" +flagShowTimelineRepliesDescription: "Als je deze vlag aanzet, toont de tijdlijn ook + antwoorden op andere en niet alleen jouw eigen post." +autoAcceptFollowed: "Accepteer verzoeken om jezelf te volgen vanzelf als je de verzoeker + al volgt" addAccount: "Account toevoegen" loginFailed: "Aanmelding mislukt." -showOnRemote: "Toon op de externe instantie." +showOnRemote: "Bekijk op de externe server" general: "Algemeen" wallpaper: "Achtergrond" setWallpaper: "Achtergrond instellen" @@ -140,13 +154,17 @@ searchWith: "Zoeken: {q}" youHaveNoLists: "Je hebt geen lijsten" followConfirm: "Weet je zeker dat je {name} wilt volgen?" proxyAccount: "Proxy account" -proxyAccountDescription: "Een proxy-account is een account dat onder bepaalde voorwaarden fungeert als externe volger voor gebruikers. Als een gebruiker bijvoorbeeld een externe gebruiker aan de lijst toevoegt, wordt de activiteit van de externe gebruiker niet aan de server geleverd als geen lokale gebruiker die gebruiker volgt, dus het proxy-account volgt in plaats daarvan." +proxyAccountDescription: "Een proxy-account is een account dat onder bepaalde voorwaarden + fungeert als externe volger voor gebruikers. Als een gebruiker bijvoorbeeld een + externe gebruiker aan de lijst toevoegt, wordt de activiteit van de externe gebruiker + niet aan de server geleverd als geen lokale gebruiker die gebruiker volgt, dus het + proxy-account volgt in plaats daarvan." host: "Server" selectUser: "Kies een gebruiker" -recipient: "Ontvanger" +recipient: "Ontvanger(s)" annotation: "Reacties" federation: "Federatie" -instances: "Server" +instances: "Servers" registeredAt: "Geregistreerd op" latestRequestSentAt: "Laatste aanvraag verstuurd" latestRequestReceivedAt: "Laatste aanvraag ontvangen" @@ -161,7 +179,6 @@ operations: "Verwerkingen" software: "Software" version: "Versie" metadata: "Metadata" -withNFiles: "{n} bestand(en)" monitor: "Monitor" jobQueue: "Job Queue" cpuAndMemory: "CPU en geheugen" @@ -171,19 +188,23 @@ instanceInfo: "Serverinformatie" statistics: "Statistieken" clearQueue: "Wachtrij wissen" clearQueueConfirmTitle: "Weet je zeker dat je de wachtrji leeg wil maken?" -clearQueueConfirmText: "Niet-bezorgde biljetten die nog in de wachtrij staan, worden niet gefedereerd. Meestal is deze operatie niet nodig." +clearQueueConfirmText: "Niet-bezorgde posts die nog in de wachtrij staan, worden niet + gefedereerd. Meestal is deze operatie niet nodig." clearCachedFiles: "Cache opschonen" -clearCachedFilesConfirm: "Weet je zeker dat je alle externe bestanden in de cache wilt verwijderen?" +clearCachedFilesConfirm: "Weet je zeker dat je alle externe bestanden in de cache + wilt verwijderen?" blockedInstances: "Geblokkeerde servers" -blockedInstancesDescription: "Maak een lijst van de servers die moeten worden geblokkeerd, gescheiden door regeleinden. Geblokkeerde servers kunnen niet meer communiceren met deze server." +blockedInstancesDescription: "Maak een lijst van de servers die moeten worden geblokkeerd, + gescheiden door regeleinden. Geblokkeerde servers kunnen niet meer communiceren + met deze server." muteAndBlock: "Gedempt en geblokkeerd" mutedUsers: "Gedempte gebruikers" blockedUsers: "Geblokkeerde gebruikers" noUsers: "Er zijn geen gebruikers." editProfile: "Bewerk Profiel" -noteDeleteConfirm: "Ben je zeker dat je dit bericht wil verwijderen?" -pinLimitExceeded: "Je kunt geen berichten meer vastprikken" -intro: "Installatie van Misskey geëindigd! Maak nu een beheerder aan." +noteDeleteConfirm: "Ben je zeker dat je deze post wil verwijderen?" +pinLimitExceeded: "Je kunt geen posts meer vastprikken" +intro: "Installatie van Calckey geëindigd! Maak nu een beheerder aan." done: "Klaar" processing: "Bezig met verwerken" preview: "Voorbeeld" @@ -223,9 +244,11 @@ saved: "Opgeslagen" messaging: "Chat" upload: "Uploaden" keepOriginalUploading: "Origineel beeld behouden." -keepOriginalUploadingDescription: "Bewaar de originele versie bij het uploaden van afbeeldingen. Indien uitgeschakeld, wordt bij het uploaden een alternatieve versie voor webpublicatie genereert." +keepOriginalUploadingDescription: "Bewaar de originele versie bij het uploaden van + afbeeldingen. Indien uitgeschakeld, wordt bij het uploaden een alternatieve versie + voor webpublicatie genereert." fromDrive: "Van schijf" -fromUrl: "Van URL" +fromUrl: "Van URL" uploadFromUrl: "Uploaden vanaf een URL" uploadFromUrlDescription: "URL van het bestand dat je wil uploaden" uploadFromUrlRequested: "Uploadverzoek" @@ -239,7 +262,8 @@ 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." +remoteUserCaution: "Aangezien deze gebruiker van een externe server afkomstig is, + kan de weergegeven informatie onvolledig zijn." activity: "Activiteit" images: "Afbeeldingen" birthday: "Geboortedatum" @@ -280,7 +304,7 @@ disconnectedFromServer: "Verbinding met de server onderbroken." inMb: "in megabytes" pinnedNotes: "Vastgemaakte notitie" userList: "Lijsten" -aboutMisskey: "Over Misskey" +aboutMisskey: "Over Calckey" administrator: "Beheerder" token: "Token" securityKeyName: "Sleutelnaam" @@ -308,7 +332,7 @@ cropImageAsk: "Bijsnijdengevraagd" file: "Bestanden" _email: _follow: - title: "volgde jou" + title: "Je hebt een nieuwe volger" _mfm: mention: "Vermelding" quote: "Quote" @@ -367,7 +391,7 @@ _pages: types: array: "Lijsten" _notification: - youWereFollowed: "volgde jou" + youWereFollowed: "volgt jou" _types: follow: "Volgend" mention: "Vermelding" @@ -383,3 +407,238 @@ _deck: tl: "Tijdlijn" list: "Lijsten" mentions: "Vermeldingen" +showLess: Sluiten +emoji: Emoji +selectList: Selecteer een lijst +selectAntenna: Selecteer een antenne +deleted: Verwijderd +editNote: Bewerk notitie +edited: Bewerkt +emojis: Emojis +emojiName: Emoji naam +emojiUrl: Emoji URL +addEmoji: Voeg toe +settingGuide: Aanbevolen instellingen +flagSpeakAsCat: Praat als een kat +accountMoved: 'Gebruiker is naar een nieuw account verhuisd:' +showEmojisInReactionNotifications: Toon emojis in reactie notificaties +selectWidget: Selecteer een widget +editWidgetsExit: Klaar +noThankYou: Nee bedankt +addInstance: Voeg een server toe +enableEmojiReactions: Schakel emoji reacties in +editWidgets: Bewerk widgets +thisYear: Jaar +thisMonth: Maand +registration: Registreren +_ffVisibility: + public: Openbaar + private: Privé + followers: Alleen zichtbaar voor volgers +noInstances: Er zijn geen servers +_signup: + almostThere: Bijna klaar + emailAddressInfo: Voer je emailadres in. Deze zal niet openbaar gemaakt worden. +_ad: + back: Terug + reduceFrequencyOfThisAd: Toon deze advertentie minder +pushNotificationNotSupported: Je browser of server ondersteunt geen pushmeldingen +sendPushNotificationReadMessage: Verwijder pushmeldingen wanneer de relevante meldingen + of berichten zijn gelezen +customEmojis: Custom emoji +cacheRemoteFiles: Cache externe bestanden +hiddenTags: Verborgen hashtags +enableRecommendedTimeline: Schakel aanbevolen tijdlijn in +_forgotPassword: + enterEmail: Voer het emailadres in dat je gebruikte om te registreren. Een link + waarmee je je wachtwoord opnieuw kunt instellen zal daar naartoe gestuurd worden. +jumpToReply: Spring naar Antwoord +newer: nieuwer +older: ouder +selectInstance: Kies een server +defaultValueIs: 'Standaard: {value}' +reload: Hernieuwen +doNothing: Negeren +today: Vandaag +inputNewDescription: Voer een nieuw onderschrift in +inputNewFolderName: Voer een nieuwe mapnaam in +circularReferenceFolder: De bestemmingsmap is een submap van de map die je wil verplaatsen. +hasChildFilesOrFolders: Omdat deze map niet leeg is, kan deze niet verwijderd worden. +enableLocalTimeline: Schakel lokale tijdlijn in +enableGlobalTimeline: Schakel globale tijdlijn in +enableRegistration: Nieuwe gebruikersregistratie inschakelen +invite: Uitnodigen +move: Verplaatsen +showAds: Toon advertenties +pushNotification: Pushmeldingen +_gallery: + my: Mijn Gallerij +reactionSetting: Reacties om te tonen in het reactie selectie menu +dayX: '{day}' +renoteMute: Demp boosts +reloadConfirm: Wil je de tijdlijn hernieuwen? +watch: Volgen +unwatch: Ontvolgen +accept: Accepteren +reject: Afwijzen +normal: Normaal +pages: Pagina's +integration: Integraties +connectService: Koppelen +monthX: '{month}' +yearX: '{year}' +instanceName: Servernaam +instanceDescription: Server omschrijving +maintainerName: Onderhouder +maintainerEmail: Onderhouder email +tosUrl: Algemene Voorwaarden URL +disconnectService: Ontkoppelen +unread: Ongelezen +manageGroups: Beheer groepen +subscribePushNotification: Pushmeldingen inschakelen +unsubscribePushNotification: Pushmeldingen uitschakelen +pushNotificationAlreadySubscribed: Pushmeldingen zijn al ingeschakeld +antennaSource: Antenne bron +antennaKeywords: Trefwoorden om naar te luisteren +antennaExcludeKeywords: Trefwoorden om te negeren +driveCapacityPerRemoteAccount: Schijfruimte per externe gebruiker +backgroundImageUrl: Achtergrondafbeelding URL +basicInfo: Basis informatie +pinnedUsers: Vastgezette gebruikers +pinnedPages: Vastgezette Pagina's +driveCapacityPerLocalAccount: Schijfruimte per lokale gebruiker +iconUrl: Icoon URL +bannerUrl: Banner afbeelding URL +manageAntennas: Beheer Antennes +name: Naam +notifyAntenna: Meld nieuwe posts +withFileAntenna: Alleen posts met bestanden +enableServiceworker: Schakel pushmeldingen voor je browser in +renoteUnmute: Ontdemp boosts +jumpToPrevious: Spring naar vorige +caseSensitive: Hoofdlettergevoelig +cw: Inhoudswaarschuwing +recaptcha: reCAPTCHA +enableRecaptcha: reCAPTCHA inschakelen +recaptchaSiteKey: Site sleutel +notFoundDescription: Een pagina met deze URL kon niet worden gevonden. +uploadFolder: Standaard map voor uploads +markAsReadAllNotifications: Markeer alle notificaties als gelezen +text: Tekst +enable: Inschakelen +or: Of +language: Taal +securityKey: Veiligheidssleutel +groupInvited: Je bent voor een groep uitgenodigd +docSource: Bron van dit document +createAccount: Maak account aan +groupName: Groepsnaam +members: Leden +messagingWithUser: Privé chat +messagingWithGroup: Groepschat +title: Titel +createGroup: Maak een groep +ownedGroups: Beheerde groepen +invites: Uitnodigingen +useOsNativeEmojis: Gebruik je standaard besturingssysteem Emojis +disableDrawer: Gebruik niet de lade-stijl menus +joinOrCreateGroup: Krijg een uitnodiging voor een groep of maak er zelf eentje aan. +noHistory: Geen geschiedenis beschikbaar +signinHistory: Inloggeschiedenis +available: Beschikbaar +unavailable: Niet beschikbaar +tooShort: Te kort +signinFailed: Niet gelukt om in te loggen. Gebruikersnaam of wachtwoord is incorrect. +tapSecurityKey: Tik je veiligheidssleutel aan +recaptchaSecretKey: Geheime sleutel +antennas: Antennes +antennaUsersDescription: Zet één gebruikersnaam per regel neer +notesAndReplies: Posts en antwoorden +withFiles: Met bestanden +popularUsers: Populaire gebruikers +recentlyUpdatedUsers: Recente actieve gebruikers +recentlyRegisteredUsers: Nieuwe gebruikers +recentlyDiscoveredUsers: Nieuwe ontdekte gebruikers +exploreUsersCount: Er zijn {count} gebruikers +about: Over +exploreFediverse: Ontdek de Fediverse +popularTags: Populaire labels +moderation: Moderatie +nUsersMentioned: Genoemd door {n} gebruikers +markAsReadAllUnreadNotes: Markeer alle posts als gelezen +markAsReadAllTalkMessages: Markeer alle berichten als gelezen +help: Help +inputMessageHere: Schrijf hier je bericht +close: Sluiten +group: Groep +groups: Groepen +newMessageExists: Er zijn nieuwe berichten +next: Volgende +noteOf: Post door {user} +inviteToGroup: Nodig uit voor de groep +quoteAttached: Quote +noMessagesYet: Nog geen berichten +weakPassword: Zwak wachtwoord +normalPassword: Middelmatig wachtwoord +strongPassword: Sterk wachtwoord +onlyOneFileCanBeAttached: Je kan maar één bestand toevoegen aan je bericht +invitationCode: Uitnodigingscode +checking: Controleren... +uiLanguage: Gebruikersinterface taal +aboutX: Over {x} +youHaveNoGroups: Je hebt geen groepen +disableAnimatedMfm: Schakel MFM met animaties uit +passwordMatched: Komt overeen +passwordNotMatched: Komt niet overeen +signinWith: Log in met {x} +fontSize: Tekstgrootte +openImageInNewTab: Open afbeeldingen in een nieuwe tab +category: Categorie +tags: Labels +existingAccount: Bestaand account +regenerate: Hernieuwen +dayOverDayChanges: Verschillen met gisteren +appearance: Uiterlijk +local: Lokaal +remote: Extern +total: Totaal +weekOverWeekChanges: Verschillen met vorige week +hcaptcha: hCaptcha +enableHcaptcha: hCaptcha inschakelen +hcaptchaSiteKey: Site sleutel +hcaptchaSecretKey: Geheime sleutel +withReplies: Met antwoorden +twoStepAuthentication: Tweefactorauthenticatie +moderator: Moderator +invitations: Uitnodigingen +tooLong: Te lang +doing: Verwerken... +silencedInstances: Gedempte Servers +cacheRemoteFilesDescription: Als deze instelling is uitgeschakeld, worden externe + bestanden direct van de externe server geladen. Het uitschakelen zal opslagruimte + verminderen, maar verkeer zal toenemen, omdat er geen thumbnails gemaakt zullen + worden. +flagSpeakAsCatDescription: Je posts zullen worden ge-'nyanified' als je in kat-modus + zit +avoidMultiCaptchaConfirm: Het gebruik van meerdere Captcha systemen kan voor storing + zorgen tussen ze. Wil je de andere actieve Captcha systemen uitschakelen? Als je + ze ingeschakeld wilt houden, klik op annuleren. +silence: Dempen +silenceConfirm: Weet je zeker dat je deze gebruiker wilt dempen? +unsilence: Ontdempen +unsilenceConfirm: Weet je zeker dat je het dempen van deze gebruiker ongedaan wilt + maken? +silenceThisInstance: Demp deze server +silenced: Gedempt +disablingTimelinesInfo: Beheerders en moderators zullen altijd toegang hebben tot + alle tijdlijnen, zelfs als deze uitgeschakeld zijn. +accountSettings: Account Instellingen +numberOfDays: Aantal dagen +hideThisNote: Verberg deze post +dashboard: Dashboard +accessibility: Toegankelijkheid +promotion: Gepromoot +promote: Promoten +objectStorage: Objectopslag +useObjectStorage: Gebruik objectopslag +objectStorageBaseUrl: Basis -URL diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 1c7b675c5..a1b0f0c15 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -66,8 +66,8 @@ import: "Importuj" export: "Eksportuj" files: "Pliki" download: "Pobierz" -driveFileDeleteConfirm: "Czy chcesz usunąć plik \"{name}\"? Zniknie również wpis,\ - \ do której dołączony jest ten plik." +driveFileDeleteConfirm: "Czy chcesz usunąć plik \"{name}\"? Wszystkie wpisy zawierające\ + \ ten plik również zostaną usunięte." unfollowConfirm: "Czy na pewno chcesz przestać obserwować {name}?" exportRequested: "Zażądałeś eksportu. Może to zająć chwilę. Po zakończeniu eksportu\ \ zostanie on dodany do Twojego dysku." @@ -187,7 +187,6 @@ operations: "Działania" software: "Oprogramowanie" version: "Wersja" metadata: "Metadane" -withNFiles: "{n} plik(i/ów)" monitor: "Monitor" jobQueue: "Kolejka zadań" cpuAndMemory: "CPU i pamięć" @@ -787,7 +786,7 @@ active: "Aktywny" offline: "Offline" notRecommended: "Nie zalecane" botProtection: "Zabezpieczenie przed botami" -instanceBlocking: "Zablokowane instancje" +instanceBlocking: "Zablokowane/wyciszone instancje" selectAccount: "Wybierz konto" switchAccount: "Przełącz konto" enabled: "Właczono" @@ -1006,7 +1005,7 @@ _nsfw: force: "Ukrywaj wszystkie media" _mfm: cheatSheet: "Ściąga MFM" - intro: "MFM jest językiem składniowym używanym przez m.in. Misskey, forki *key (w\ + intro: "MFM jest językiem składniowym używanym przez m.in. Calckey, forki *key (w\ \ tym Calckey), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz\ \ listę wszystkich możliwych elementów składni MFM." dummy: "Calckey rozszerza świat Fediwersum" @@ -1075,6 +1074,14 @@ _mfm: inlineMath: Matematyka (Inline) inlineMathDescription: Pokaż formuły matematyczne (KaTeX) w linii blockMathDescription: Pokaż wieloliniowe formuły matematyczne (KaTeX) w bloku + background: Kolor tła + backgroundDescription: Zmień kolor tła tekstu. + foregroundDescription: Zmień kolor pierwszoplanowy tekstu. + positionDescription: Przesuń treść o określoną odległość. + position: Pozycjonuj + foreground: Kolor pierwszoplanowy + scaleDescription: Skaluj treść o określoną wielkość. + scale: Skaluj _instanceTicker: none: "Nigdy nie pokazuj" remote: "Pokaż dla zdalnych użytkowników" @@ -1094,6 +1101,8 @@ _channel: following: "Śledzeni" usersCount: "{n} uczestnicy" notesCount: "{n} wpisy" + nameAndDescription: Nazwa i opis + nameOnly: Tylko nazwa _menuDisplay: top: "Góra" hide: "Ukryj" @@ -1222,13 +1231,13 @@ _tutorial: step2_1: "Najpierw, proszę wypełnij swój profil." step2_2: "Podanie kilku informacji o tym, kim jesteś, ułatwi innym stwierdzenie,\ \ czy chcą zobaczyć Twoje wpisy lub śledzić Cię." - step3_1: "Teraz czas na śledzenie niektórych osób!" + step3_1: "Pora znaleźć osoby do śledzenia!" step3_2: "Twoje domowe i społeczne linie czasu opierają się na tym, kogo śledzisz,\ \ więc spróbuj śledzić kilka kont, aby zacząć.\nKliknij kółko z plusem w prawym\ \ górnym rogu profilu, aby go śledzić." step4_1: "Pozwól, że zabierzemy Cię tam." - step4_2: "Dla twojego pierwszego postu, niektórzy ludzie lubią zrobić {introduction}\ - \ post lub prosty \"Hello world!\"" + step4_2: "W pierwszym wpisie możesz się przedstawić lub wysłać powitanie - \"Witaj,\ + \ świecie!\"" step5_1: "Osie czasu, wszędzie widzę osie czasu!" step5_2: "Twoja instancja ma włączone {timelines} różne osie czasu." step5_3: "Główna {icon} oś czasu to miejsce, w którym możesz zobaczyć posty od użytkowników\ @@ -1811,8 +1820,8 @@ privateMode: Tryb prywatny allowedInstances: Dopuszczone instancje recommended: Polecane allowedInstancesDescription: Hosty instancji które mają być dopuszczone do federacji, - każda separowana nową linią (dotyczy tylko trybu prywatnego). -seperateRenoteQuote: Oddziel przyciski podbicia i cytatów + każdy separowany nową linią (dotyczy tylko trybu prywatnego). +seperateRenoteQuote: Oddziel przyciski podbicia i cytowania refreshInterval: 'Częstotliwość aktualizacji ' slow: Wolna _messaging: @@ -1845,10 +1854,10 @@ swipeOnDesktop: Zezwól na przeciąganie w stylu mobilnym na desktopie moveFromDescription: To utworzy alias twojego starego konta, w celu umożliwienia migracji z tamtego konta na to. Zrób to ZANIM rozpoczniesz przenoszenie się z tamtego konta. Proszę wpisz tag konta w formacie @person@instance.com -migrationConfirm: "Czy jesteś na 200% pewn* tego, że chcesz przenieść swoje konto\ - \ na {account}? Gdy to zrobisz, odwrócenie tego będzie nie możliwe, i nie będziesz\ - \ w stanie ponownie używać normalnie z tego konta.\nUpewnij się, że to konto zostało\ - \ ustawione jako konto z którego się przenosisz." +migrationConfirm: "Czy jesteś absolutnie pewn* tego, że chcesz przenieść swoje konto\ + \ na {account}? Tego działania nie można odwrócić. Nieodwracalnie stracisz możliwość\ + \ normalnego korzystania z konta.\nUpewnij się, że to konto zostało ustawione jako\ + \ konto z którego się przenosisz." noThankYou: Nie, dziękuję addInstance: Dodaj instancję renoteMute: Wycisz podbicia @@ -1888,31 +1897,16 @@ sendPushNotificationReadMessageCaption: Powiadomienie zawierające tekst "{empty defaultReaction: Domyślna reakcja emoji dla wychodzących i przychodzących wpisów license: Licencja indexPosts: Indeksuj wpisy -indexFrom: Indeksuj wpisy od ID (zostaw puste dla indeksowania wszystkich wpisów) +indexFrom: Indeksuj wpisy od ID +indexFromDescription: Zostaw puste dla indeksowania wszystkich wpisów indexNotice: Indeksuję. Zapewne zajmie to chwilę, nie restartuj serwera przez co najmniej godzinę. customKaTeXMacro: Niestandardowe makra KaTeX enableCustomKaTeXMacro: Włącz niestandardowe makra KaTeX noteId: ID wpisu -_apps: - apps: Aplikacje - crossPlatform: Wieloplatformowe - mobile: Mobilne - firstParty: Oficjalne - firstClass: Pierwszej klasy - secondClass: Drugiej klasy - thirdClass: Trzeciej klasy - free: Darmowe - paid: Płatne - pwa: Zainstaluj PWA - kaiteki: Kaiteki - milktea: Milktea - missLi: MissLi - mona: Mona - theDesk: TheDesk - lesskey: Lesskey hiddenTagsDescription: 'Wypisz tagi (bez #) hashtagów które masz zamiar ukryć z "Na - czasie" i "Eksploruj". Na ukryte hashtagi można dalej wejść innymi sposobami.' + czasie" i "Eksploruj". Na ukryte hashtagi można dalej wejść innymi sposobami. Ta + lista nie ma wpływu na zablokowane instancje.' proxyAccountDescription: Konto proxy jest kontem które w określonych sytuacjach zachowuje się jak zdalny obserwujący. Na przykład, kiedy użytkownik dodaje zdalnego użytkownika do listy, oraz żaden lokalny użytkownik nie obserwuje tego konta, aktywność owego @@ -1927,7 +1921,7 @@ sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe inform \ Calckey.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego,\ \ przeglądarki, Twoja aktywność na Calckey itd." privateModeInfo: Jeśli włączone, tylko dopuszczone instancje będą mogły federować - z Twoją instancją. Wszystkie posty będą ukryte przed publiką. + z Twoją instancją. Wszystkie posty będą jedynie widoczne na Twojej instancji. oneHour: Godzina oneDay: Dzień oneWeek: Tydzień @@ -1999,3 +1993,23 @@ themeColor: Kolor znacznika instancji instanceDefaultLightTheme: Domyślny jasny motyw instancji enableEmojiReactions: Włącz reakcje emoji showEmojisInReactionNotifications: Pokazuj emoji w powiadomieniach reakcyjnych +apps: Aplikacje +silenceThisInstance: Wycisz tę instancję +silencedInstances: Wyciszone instancje +deleted: Usunięte +editNote: Edytuj wpis +edited: Edytowany +silenced: Wyciszony +findOtherInstance: Znajdź inny serwer +userSaysSomethingReasonReply: '{name} odpowiedział na wpis zawierający {reason}' +userSaysSomethingReasonRenote: '{name} podbił post zawierający {reason}' +signupsDisabled: Rejestracja na tym serwerze jest obecnie zamknięta, ale zawsze możesz + się zapisać na innym! Jeśli masz kod zaproszeniowy na ten serwer, wpisz go poniżej. +userSaysSomethingReasonQuote: '{name} zacytował wpis zawierający {reason}' +silencedInstancesDescription: Wymień nazwy domenowe instancji, które chcesz wyciszyć. + Profile w wyciszonych instancjach są traktowane jako "Wyciszony", mogą jedynie wysyłać + prośby obserwacji, i nie mogą oznaczać w wzmiankach profili lokalnych jeśli nie + są obserwowane. To nie będzie miało wpływu na zablokowane instancje. +cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ + jego wielkość przekracza dozwolony limit. +sendModMail: Wyślij Powiadomienie Moderacyjne diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 054e845b7..3e15beebb 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1,7 +1,7 @@ --- _lang_: "Português" headlineMisskey: "Uma rede ligada por notas" -introMisskey: "Bem-vindo! Misskey é um serviço de microblogue descentralizado de código aberto.\nCria \"notas\" e partilha o que te ocorre com todos à tua volta. 📡\nCom \"reações\" podes também expressar logo o que sentes às notas de todos. 👍\nExploremos um novo mundo! 🚀" +introMisskey: "Bem-vindo! Calckey é um serviço de microblogue descentralizado de código aberto.\nCria \"notas\" e partilha o que te ocorre com todos à tua volta. 📡\nCom \"reações\" podes também expressar logo o que sentes às notas de todos. 👍\nExploremos um novo mundo! 🚀" monthAndDay: "{day}/{month}" search: "Buscar" notifications: "Notificações" @@ -139,7 +139,7 @@ settingGuide: "Guia de configuração" cacheRemoteFiles: "Memória transitória de arquivos remotos" cacheRemoteFilesDescription: "Se você desabilitar essa configuração, os arquivos remotos não serão armazenados em memória transitória e serão vinculados diretamente. Economiza o armazenamento do servidor, mas não gera miniaturas, o que aumenta o tráfego." flagAsBot: "Marcar conta como robô" -flagAsBotDescription: "Se esta conta for operada por um programa, ative este sinalizador. Quando ativado, serve como um sinalizador para evitar o encadeamento de reações para outros programadores, e o manuseio do sistema do Misskey é adequado para ‘bots’." +flagAsBotDescription: "Se esta conta for operada por um programa, ative este sinalizador. Quando ativado, serve como um sinalizador para evitar o encadeamento de reações para outros programadores, e o manuseio do sistema do Calckey é adequado para ‘bots’." flagAsCat: "Marcar conta como gato" flagAsCatDescription: "Ative essa opção para marcar essa conta como gato." flagShowTimelineReplies: "Mostrar respostas na linha de tempo" @@ -177,7 +177,6 @@ operations: "operar" software: "Programas" version: "versão" metadata: "Metadados" -withNFiles: "{n} Um arquivo" monitor: "monitor" jobQueue: "Fila de trabalhos" cpuAndMemory: "CPU e memória" @@ -199,7 +198,7 @@ noUsers: "Sem usuários" editProfile: "Editar Perfil" noteDeleteConfirm: "Deseja excluir esta nota?" pinLimitExceeded: "Não consigo mais fixar" -intro: "A instalação do Misskey está completa! Crie uma conta de administrador." +intro: "A instalação do Calckey está completa! Crie uma conta de administrador." done: "Concluído" processing: "Em Progresso" preview: "Pré-visualizar" @@ -377,7 +376,7 @@ exploreFediverse: "Explorar Fediverse" popularTags: "Tags populares" userList: "Listas" about: "Informações" -aboutMisskey: "Sobre Misskey" +aboutMisskey: "Sobre Calckey" administrator: "Administrador" token: "Símbolo" twoStepAuthentication: "Verificação em duas etapas" diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml index 8408d4c77..ba51950e3 100644 --- a/locales/ro-RO.yml +++ b/locales/ro-RO.yml @@ -1,7 +1,7 @@ --- _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ă! 🚀" +introMisskey: "Bine ai venit! Calckey 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ă! 🚀" monthAndDay: "{day}/{month}" search: "Caută" notifications: "Notificări" @@ -139,7 +139,7 @@ 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." 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." +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 Calckey pentru a trata acest cont drept un bot." flagAsCat: "Marchează acest cont ca pisică" flagAsCatDescription: "Activează această opțiune dacă acest cont este o pisică." flagShowTimelineReplies: "Arată răspunsurile în cronologie" @@ -177,7 +177,6 @@ operations: "Operațiuni" software: "Software" version: "Versiune" metadata: "Metadata" -withNFiles: "{n} fișier(e)" monitor: "Monitor" jobQueue: "coada de job-uri" cpuAndMemory: "CPU și memorie" @@ -199,7 +198,7 @@ noUsers: "Niciun utilizator" editProfile: "Editează profilul" noteDeleteConfirm: "Ești sigur că vrei să ștergi această notă?" pinLimitExceeded: "Nu poți mai fixa mai multe note" -intro: "Misskey s-a instalat! Te rog crează un utilizator admin." +intro: "Calckey s-a instalat! Te rog crează un utilizator admin." done: "Gata" processing: "Se procesează" preview: "Previzualizare" @@ -377,7 +376,7 @@ exploreFediverse: "Explorează Fediverse-ul" popularTags: "Taguri populare" userList: "Liste" about: "Despre" -aboutMisskey: "Despre Misskey" +aboutMisskey: "Despre Calckey" administrator: "Administrator" token: "Token" twoStepAuthentication: "Autentificare în doi pași" @@ -522,7 +521,7 @@ sort: "Sortează" ascendingOrder: "Crescător" descendingOrder: "Descrescător" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad-ul oferă un mediu de experimentare în AiScript. Poți scrie, executa și verifica rezultatele acestuia interacționând cu Misskey în el." +scratchpadDescription: "Scratchpad-ul oferă un mediu de experimentare în AiScript. Poți scrie, executa și verifica rezultatele acestuia interacționând cu Calckey în el." output: "Ieșire" script: "Script" disablePagesScript: "Dezactivează AiScript în Pagini" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 91d96fcc5..01b21b0fc 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -65,7 +65,8 @@ import: "Импорт" export: "Экспорт" files: "Файлы" download: "Скачать" -driveFileDeleteConfirm: "Удалить файл «{name}»? Посты с ним также будут удалены." +driveFileDeleteConfirm: "Удалить файл «{name}»? Он будет удален со всех постов которые\ + \ содержат его как вложение." unfollowConfirm: "Удалить из подписок пользователя {name}?" exportRequested: "Вы запросили экспорт. Это может занять некоторое время. Результат\ \ будет добавлен на «Диск»." @@ -191,7 +192,6 @@ operations: "Операции" software: "Программы" version: "Версия" metadata: "Метаданные" -withNFiles: "Файлы, {n} шт" monitor: "Монитор" jobQueue: "Очередь заданий" cpuAndMemory: "Процессор и память" @@ -985,7 +985,7 @@ _registry: domain: "Домен" createKey: "Новый ключ" _aboutMisskey: - about: "Calckey это форк Misskey, сделанный ThatOneCalculator, разработка которого\ + about: "Calckey это форк Calckey, сделанный ThatOneCalculator, разработка которого\ \ началась с 2022." contributors: "Основные соавторы" allContributors: "Все соавторы" @@ -1001,7 +1001,7 @@ _nsfw: force: "Скрывать вообще все файлы" _mfm: cheatSheet: "Подсказка по разметке MFM" - intro: "MFM — язык оформления текста,используемый в Misskey, Calckey, Akkoma и готов\ + intro: "MFM — язык оформления текста,используемый в Calckey, Calckey, Akkoma и готов\ \ для применения во многих местах. На этой странице собраны и кратко изложены\ \ способы его использовать." dummy: "Calckey расширяет границы Федиверса" @@ -1908,8 +1908,8 @@ recommendedInstances: Рекомендованные инстансы defaultReaction: Эмодзи реакция по умолчанию для выходящих и исходящих постов license: Лицензия indexPosts: Индексировать посты -indexFrom: Индексировать начиная с идентификатора поста и далее (оставьте пустым для - индексации каждого поста) +indexFrom: Индексировать начиная с идентификатора поста и далее +indexFromDescription: оставьте пустым для индексации каждого поста indexNotice: Теперь индексирование. Вероятно, это займет некоторое время, пожалуйста, не перезагружайте свой сервер по крайней мере в течение часа. customKaTeXMacro: Кастомные KaTex макросы @@ -1937,23 +1937,6 @@ _preferencesBackups: cannotLoad: Загрузка не удалась invalidFile: Неправильный формат файла enableEmojiReactions: Включить эмодзи реакции -_apps: - paid: Платные - lesskey: Lesskey - pwa: Установить PWA - free: Бесплатные - apps: Приложения - crossPlatform: Кроссплатформенные - mobile: Мобильные - firstParty: От разработчиков - firstClass: Первый класс - thirdClass: Третий класс - kaiteki: Kaiteki - milktea: Milktea - missLi: MissLi - mona: Mona - theDesk: TheDesk - secondClass: Второй класс migrationConfirm: "Вы абсолютно уверены что хотите мигрировать ваш аккаунт на {account}?\ \ Как только вы сделаете, вы не сможете отменить это и не сможете нормально использовать\ \ аккаунт снова.\nТакже, пожалуйста, убедитесь, что вы установили эту текущую учетную\ @@ -2000,3 +1983,9 @@ customKaTeXMacroDescription: 'Настройте макросы чтобы ле ветвление, здесь использоваться не может.' cannotUploadBecauseExceedsFileSizeLimit: Этот файл не может быть загружен так как он превышает максимально разрешённый размер. +apps: Приложения +silenceThisInstance: Заглушить инстанс +silencedInstances: Заглушенные инстансы +editNote: Редактировать заметку +edited: Редактировано +deleted: Удалённое diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index 3f8a4b7b9..462f34ed2 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -1,7 +1,7 @@ --- _lang_: "Slovenčina" headlineMisskey: "Sieť prepojená poznámkami" -introMisskey: "Vitajte! Misskey je otvorená a decentralizovaná mikroblogovacia služba.\n\"Poznámkami\" môžete zdieľať svoje myšlienky so všetkými okolo. 📡\nPomocou \"reakcií\" môžete rýchlo vyjadri svoje pocity o každého poznámkach. 👍\nPoďte objavovať svet! 🚀" +introMisskey: "Vitajte! Calckey je otvorená a decentralizovaná mikroblogovacia služba.\n\"Poznámkami\" môžete zdieľať svoje myšlienky so všetkými okolo. 📡\nPomocou \"reakcií\" môžete rýchlo vyjadri svoje pocity o každého poznámkach. 👍\nPoďte objavovať svet! 🚀" monthAndDay: "{day}. {month}." search: "Hľadať" notifications: "Oznámenia" @@ -139,7 +139,7 @@ settingGuide: "Odporúčané nastavenia" cacheRemoteFiles: "Cachovanie vzdialených súborov" cacheRemoteFilesDescription: "Zakázanie tohoto nastavenia spôsobí, že vzdialené súbory budú odkazované priamo, namiesto ukladania do cache. Ušetrí sa tak miesto na serveri, ale zvýši sa dátový tok, pretože sa negenerujú miniatúry." flagAsBot: "Tento účet je bot" -flagAsBotDescription: "Ak je tento účet ovládaný programom, zaškrtnite túto voľbu. Ostatní uvidia, že je to bot a zabráni nekonečným interakciám s ďalšími botmi a upraví interné systémy Misskey, aby ho považoval za bota." +flagAsBotDescription: "Ak je tento účet ovládaný programom, zaškrtnite túto voľbu. Ostatní uvidia, že je to bot a zabráni nekonečným interakciám s ďalšími botmi a upraví interné systémy Calckey, aby ho považoval za bota." flagAsCat: "Tento účet je mačka" flagAsCatDescription: "Zvoľte túto voľbu, aby bol tento účet označený ako mačka." flagShowTimelineReplies: "Zobraziť odpovede na poznámky v časovej osi" @@ -177,7 +177,6 @@ operations: "Operácie" software: "Softvér" version: "Verzia" metadata: "Metadáta" -withNFiles: "{n} súbor(ov)" monitor: "Monitor" jobQueue: "Fronta úloh" cpuAndMemory: "CPU a pamäť" @@ -199,7 +198,7 @@ noUsers: "Žiadni používatelia" editProfile: "Upraviť profil" noteDeleteConfirm: "Naozaj chcete odstrániť túto poznámku?" pinLimitExceeded: "Ďalšie poznámky už nemôžete pripnúť." -intro: "Inštalácia Misskey je dokončená! Prosím vytvorte administrátora." +intro: "Inštalácia Calckey je dokončená! Prosím vytvorte administrátora." done: "Hotovo" processing: "Pracujem..." preview: "Náhľad" @@ -378,7 +377,7 @@ exploreFediverse: "Objavovať Fediverzum" popularTags: "Populárne značky" userList: "Zoznamy" about: "Informácie" -aboutMisskey: "O Misskey" +aboutMisskey: "O Calckey" administrator: "Administrátor" token: "Token" twoStepAuthentication: "Dvojfaktorová autentifikácia" @@ -524,7 +523,7 @@ sort: "Zoradiť" ascendingOrder: "Vzostupne" descendingOrder: "Zostupne" scratchpad: "Zápisník" -scratchpadDescription: "Zápisník poskytuje prostredia pre experimenty s AiScriptom. Môžete písať, spúšťať a skúšať vysledky pri interakcii s Misskey." +scratchpadDescription: "Zápisník poskytuje prostredia pre experimenty s AiScriptom. Môžete písať, spúšťať a skúšať vysledky pri interakcii s Calckey." output: "Výstup" script: "Skript" disablePagesScript: "Vypnúť AiScript na stránkach" @@ -699,7 +698,7 @@ onlineUsersCount: "{n} používateľov je online" nUsers: "{n} používateľov" nNotes: "{n} poznámok" sendErrorReports: "Poslať nahlásenie chyby" -sendErrorReportsDescription: "Keď je zapnuté, v prípade problému sa odošlú podrobné informácie o chybe do Misskey. Pomôžete tak zvýšiť kvalitu Misskey.\nTieto informácie zahŕňajú verziu vášho OS, použitý prehliadač, históriu aktivít, atď." +sendErrorReportsDescription: "Keď je zapnuté, v prípade problému sa odošlú podrobné informácie o chybe do Calckey. Pomôžete tak zvýšiť kvalitu Calckey.\nTieto informácie zahŕňajú verziu vášho OS, použitý prehliadač, históriu aktivít, atď." myTheme: "Moja téma" backgroundColor: "Pozadie" accentColor: "Akcent" @@ -790,7 +789,7 @@ hashtags: "Hashtagy" troubleshooting: "Riešenie problémov" useBlurEffect: "Používať efekty rozmazania v UI" learnMore: "Zistiť viac" -misskeyUpdated: "Misskey sa aktualizoval!" +misskeyUpdated: "Calckey sa aktualizoval!" whatIsNew: "Čo je nové?" translate: "Preložiť" translatedFrom: "Preložené z {x}" @@ -966,8 +965,8 @@ _aboutMisskey: contributors: "Hlavní prispievatelia" allContributors: "Všetci prispievatelia" source: "Zdrojový kód" - translation: "Preložiť Misskey" - donate: "Podporiť Misskey" + translation: "Preložiť Calckey" + donate: "Podporiť Calckey" morePatrons: "Takisto oceňujeme podporu mnoých ďalších, ktorí tu nie sú uvedení. Ďakujeme! 🥰" patrons: "Prispievatelia" _nsfw: @@ -976,8 +975,8 @@ _nsfw: force: "Skryť všetky médiá" _mfm: cheatSheet: "MFM Cheatsheet" - intro: "MFM je Misskey exkluzívny značkovací jazyk, ktorý sa dá používať na viacerých miestach. Tu môžete vidieť zoznam všetkej dostupnej MFM syntaxe." - dummy: "Misskey rozširuje svet Fediverza" + intro: "MFM je Calckey exkluzívny značkovací jazyk, ktorý sa dá používať na viacerých miestach. Tu môžete vidieť zoznam všetkej dostupnej MFM syntaxe." + dummy: "Calckey rozširuje svet Fediverza" mention: "Zmienka" mentionDescription: "Používateľa spomeniete použítím zavináča a mena používateľa" hashtag: "Hashtag" @@ -1174,6 +1173,27 @@ _time: minute: "min" hour: "hod" day: "dní" +_tutorial: + title: "How to use Calckey" + step1_1: "Welcome!" + step1_2: "Let's get you set up. You'll be up and running in no time!" + step2_1: "First, please fill out your profile." + step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step3_1: "Now time to follow some people!" + step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step4_1: "Let's get you out there." + step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step5_1: "Timelines, timelines everywhere!" + step5_2: "Your instance has {timelines} different timelines enabled." + step5_3: "The Home {icon} timeline is where you can see posts from your followers." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step6_1: "So, what is this place?" + step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "Už ste zaregistrovali 2-faktorové autentifikačné zariadenie." registerDevice: "Registrovať nové zariadenie" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index bd895135c..6523ce068 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -1,7 +1,7 @@ --- _lang_: "Svenska" headlineMisskey: "Ett nätverk kopplat av noter" -introMisskey: "Välkommen! Misskey är en öppen och decentraliserad mikrobloggningstjänst.\nSkapa en \"not\" och dela dina tankar med alla runtomkring dig. 📡\nMed \"reaktioner\" kan du snabbt uttrycka dina känslor kring andras noter.👍\nLåt oss utforska en nya värld!🚀" +introMisskey: "Välkommen! Calckey är en öppen och decentraliserad mikrobloggningstjänst.\nSkapa en \"not\" och dela dina tankar med alla runtomkring dig. 📡\nMed \"reaktioner\" kan du snabbt uttrycka dina känslor kring andras noter.👍\nLåt oss utforska en nya värld!🚀" monthAndDay: "{day}/{month}" search: "Sök" notifications: "Notifikationer" @@ -176,7 +176,6 @@ operations: "Operationer" software: "Mjukvara" version: "Version" metadata: "Metadata" -withNFiles: "{n} fil(er)" monitor: "Övervakning" jobQueue: "Jobbkö" cpuAndMemory: "CPU och minne" @@ -198,7 +197,7 @@ noUsers: "Det finns inga användare" editProfile: "Redigera profil" noteDeleteConfirm: "Är du säker på att du vill ta bort denna not?" pinLimitExceeded: "Du kan inte fästa fler noter" -intro: "Misskey har installerats! Vänligen skapa en adminanvändare." +intro: "Calckey har installerats! Vänligen skapa en adminanvändare." done: "Klar" processing: "Bearbetar..." preview: "Förhandsvisning" diff --git a/locales/th-TH.yml b/locales/th-TH.yml index 173548e90..9666737ee 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -1,7 +1,7 @@ --- _lang_: "ภาษาไทย" headlineMisskey: "เชื่อมต่อเครือข่ายโดยโน้ต" -introMisskey: "ยินดีต้อนรับจ้าาา! Misskey เป็นบริการไมโครบล็อกโอเพ่นซอร์ส แบบการกระจายอำนาจ\nสร้าง \"โน้ต\" เพื่อแบ่งปันความคิดของคุณกับทุกคนรอบตัวคุณกันเถอะ 📡\nด้วยการ \"รีแอคชั่นผู้คน\" คุณยังสามารถแสดงความรู้สึกของคุณเกี่ยวกับบันทึกของทุกคนได้อย่างรวดเร็ว 👍\n\nแล้วมาท่องสำรวจโลกใบใหม่กันเถอะ! 🚀" +introMisskey: "ยินดีต้อนรับจ้าาา! Calckey เป็นบริการไมโครบล็อกโอเพ่นซอร์ส แบบการกระจายอำนาจ\nสร้าง \"โน้ต\" เพื่อแบ่งปันความคิดของคุณกับทุกคนรอบตัวคุณกันเถอะ 📡\nด้วยการ \"รีแอคชั่นผู้คน\" คุณยังสามารถแสดงความรู้สึกของคุณเกี่ยวกับบันทึกของทุกคนได้อย่างรวดเร็ว 👍\n\nแล้วมาท่องสำรวจโลกใบใหม่กันเถอะ! 🚀" monthAndDay: "{เดือน}/{วัน}" search: "ค้นหา" notifications: "การเเจ้งเตือน" @@ -139,7 +139,7 @@ settingGuide: "การตั้งค่าที่แนะนำ" cacheRemoteFiles: "แคชไฟล์ระยะไกล" cacheRemoteFilesDescription: "เมื่อปิดใช้งานการตั้งค่านี้ ไฟล์ระยะไกลนั้นจะถูกโหลดโดยตรงจากอินสแตนซ์ระยะไกล แต่กรณีการปิดใช้งานนี้จะช่วยลดปริมาณการใช้พื้นที่จัดเก็บข้อมูล แต่เพิ่มปริมาณการใช้งาน เพราะเนื่องจากจะไม่มีการสร้างภาพขนาดย่อ" flagAsBot: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นบอท" -flagAsBotDescription: "การเปิดใช้งานตัวเลือกนี้หากบัญชีนี้ถูกควบคุมโดยนักเขียนโปรแกรม หรือ ถ้าหากเปิดใช้งาน มันจะทำหน้าที่เป็นแฟล็กสำหรับนักพัฒนารายอื่นๆ และเพื่อป้องกันการโต้ตอบแบบไม่มีที่สิ้นสุดกับบอทตัวอื่นๆ และยังสามารถปรับเปลี่ยนระบบภายในของ Misskey เพื่อปฏิบัติต่อบัญชีนี้เป็นบอท" +flagAsBotDescription: "การเปิดใช้งานตัวเลือกนี้หากบัญชีนี้ถูกควบคุมโดยนักเขียนโปรแกรม หรือ ถ้าหากเปิดใช้งาน มันจะทำหน้าที่เป็นแฟล็กสำหรับนักพัฒนารายอื่นๆ และเพื่อป้องกันการโต้ตอบแบบไม่มีที่สิ้นสุดกับบอทตัวอื่นๆ และยังสามารถปรับเปลี่ยนระบบภายในของ Calckey เพื่อปฏิบัติต่อบัญชีนี้เป็นบอท" flagAsCat: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นแมว" flagAsCatDescription: "การเปิดใช้งานตัวเลือกนี้เพื่อทำเครื่องหมายบอกว่าบัญชีนี้เป็นแมว" flagShowTimelineReplies: "แสดงตอบกลับ ในไทม์ไลน์" @@ -177,7 +177,6 @@ operations: "ดำเนินการ" software: "ซอฟต์แวร์" version: "เวอร์ชั่น" metadata: "ข้อมูลเมตา" -withNFiles: "{n} ไฟล์(s)" monitor: "มอนิเตอร์" jobQueue: "คิวงาน" cpuAndMemory: "ซีพียู และ หน่วยความจำ" @@ -199,7 +198,7 @@ noUsers: "ไม่พบผู้ใช้งาน" editProfile: "แก้ไขโปรไฟล์" noteDeleteConfirm: "นายแน่ใจแล้วหรอว่าต้องการลบโน้ตนี้นะ?" pinLimitExceeded: "คุณไม่สามารถปักหมุดโน้ตเพิ่มเติมใดๆได้อีก" -intro: "การติดตั้ง Misskey เสร็จสิ้นแล้วนะ! โปรดสร้างผู้ใช้งานที่เป็นผู้ดูแลระบบ" +intro: "การติดตั้ง Calckey เสร็จสิ้นแล้วนะ! โปรดสร้างผู้ใช้งานที่เป็นผู้ดูแลระบบ" done: "เสร็จสิ้น" processing: "กำลังประมวลผล..." preview: "แสดงตัวอย่าง" @@ -378,7 +377,7 @@ exploreFediverse: "สำรวจเฟดดิเวิร์ส" popularTags: "แท็กยอดนิยม" userList: "รายการ" about: "เกี่ยวกับ" -aboutMisskey: "เกี่ยวกับ Misskey" +aboutMisskey: "เกี่ยวกับ Calckey" administrator: "ผู้ดูแลระบบ" token: "โทเค็น" twoStepAuthentication: "ยืนยันตัวตน 2 ชั้น" @@ -524,7 +523,7 @@ sort: "เรียงลำดับ" ascendingOrder: "เรียงจากน้อยไปมาก" descendingOrder: "เรียงจากมากไปน้อย" scratchpad: "กระดานทดลอง" -scratchpadDescription: "Scratchpad เป็นการจัดเตรียมสภาพแวดล้อมสำหรับการทดลอง AiScript แต่คุณสามารถเขียน ดำเนินการ และตรวจสอบผลลัพธ์ของการโต้ตอบกับ Misskey มันได้ด้วยนะ" +scratchpadDescription: "Scratchpad เป็นการจัดเตรียมสภาพแวดล้อมสำหรับการทดลอง AiScript แต่คุณสามารถเขียน ดำเนินการ และตรวจสอบผลลัพธ์ของการโต้ตอบกับ Calckey มันได้ด้วยนะ" output: "เอาท์พุต" script: "สคริปต์" disablePagesScript: "ปิดการใช้งาน AiScript บนเพจ" @@ -700,7 +699,7 @@ onlineUsersCount: "{n} ผู้ใช้คนนี้กำลังออน nUsers: "{n} ผู้ใช้งาน" nNotes: "{n} โน้ต" sendErrorReports: "ส่งรายงานว่าข้อผิดพลาด" -sendErrorReportsDescription: "เมื่อเปิดใช้งาน ข้อมูลข้อผิดพลาดโดยรายละเอียดนั้นจะถูกแชร์ให้กับ Misskey เมื่อเกิดปัญหา ซึ่งช่วยปรับปรุงคุณภาพของ Misskey\nซึ่งจะรวมถึงข้อมูล เช่น เวอร์ชั่นของระบบปฏิบัติการ เบราว์เซอร์ที่คุณใช้ กิจกรรมของคุณใน Misskey เป็นต้น" +sendErrorReportsDescription: "เมื่อเปิดใช้งาน ข้อมูลข้อผิดพลาดโดยรายละเอียดนั้นจะถูกแชร์ให้กับ Calckey เมื่อเกิดปัญหา ซึ่งช่วยปรับปรุงคุณภาพของ Calckey\nซึ่งจะรวมถึงข้อมูล เช่น เวอร์ชั่นของระบบปฏิบัติการ เบราว์เซอร์ที่คุณใช้ กิจกรรมของคุณใน Calckey เป็นต้น" myTheme: "ธีมของฉัน" backgroundColor: "ภาพพื้นหลัง" accentColor: "รูปแบบสี" @@ -791,7 +790,7 @@ hashtags: "แฮชแท็ก" troubleshooting: "แก้ปัญหา" useBlurEffect: "ใช้เอฟเฟกต์เบลอใน UI" learnMore: "แสดงให้ดูหน่อย" -misskeyUpdated: "Misskey ได้รับการอัปเดตแล้ว!" +misskeyUpdated: "Calckey ได้รับการอัปเดตแล้ว!" whatIsNew: "แสดงการเปลี่ยนแปลง" translate: "แปลภาษา" translatedFrom: "แปลมาจาก {x}" @@ -971,8 +970,8 @@ _aboutMisskey: contributors: "ผู้สนับสนุนหลัก" allContributors: "ผู้มีส่วนร่วมทั้งหมด" source: "ซอร์สโค้ด" - translation: "รับแปลภาษา Misskey" - donate: "บริจาคให้กับ Misskey" + translation: "รับแปลภาษา Calckey" + donate: "บริจาคให้กับ Calckey" morePatrons: "เราขอขอบคุณสำหรับความช่วยเหลือจากผู้ช่วยอื่นๆ ที่ไม่ได้ระบุไว้ที่นี่นะ ขอขอบคุณ! 🥰" patrons: "สมาชิกพันธมิตร" _nsfw: @@ -981,8 +980,8 @@ _nsfw: force: "ซ่อนสื่อทั้งหมด" _mfm: cheatSheet: "โค้ด MFM Cheat Sheet" - intro: "MFM เป็นภาษามาร์กอัปพิเศษเฉพาะของ Misskey ที่สามารถใช้ได้ในหลายที่ คุณยังสามารถดูรายการไวยากรณ์ MFM ที่มีอยู่ทั้งหมดได้ที่นี่นะ" - dummy: "Misskey ขยายโลกของ Fediverse" + intro: "MFM เป็นภาษามาร์กอัปพิเศษเฉพาะของ Calckey ที่สามารถใช้ได้ในหลายที่ คุณยังสามารถดูรายการไวยากรณ์ MFM ที่มีอยู่ทั้งหมดได้ที่นี่นะ" + dummy: "Calckey ขยายโลกของ Fediverse" mention: "กล่าวถึง" mentionDescription: "คุณสามารถระบุผู้ใช้โดยใช้ At-Symbol และชื่อผู้ใช้ได้นะ" hashtag: "แฮชแท็ก" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index aecb413de..7dee4fd30 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -1,6 +1,6 @@ --- _lang_: "Türkçe" -introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Misskey'e hoş geldiniz.\nMisskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\" oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\nHerkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀." +introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Calckey'e hoş geldiniz.\nMisskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\" oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\nHerkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀." monthAndDay: "{month}Ay {day}Gün" search: "Arama" notifications: "Bildirim" diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 63caf22c1..549dce666 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -1,7 +1,7 @@ --- _lang_: "Українська" headlineMisskey: "Мережа об'єднана записами" -introMisskey: "Ласкаво просимо! Misskey - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"нотатки\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо нотаток інших 👍\nДосліджуймо новий світ! 🚀" +introMisskey: "Ласкаво просимо! Calckey - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"нотатки\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо нотаток інших 👍\nДосліджуймо новий світ! 🚀" monthAndDay: "{month}/{day}" search: "Пошук" notifications: "Сповіщення" @@ -139,7 +139,7 @@ settingGuide: "Рекомендована конфігурація" cacheRemoteFiles: "Кешувати дані з інших інстансів" cacheRemoteFilesDescription: "Якщо кешування вимкнено, віддалені файли завантажуються безпосередньо з віддаленого інстансу. Це зменшує використання сховища, але збільшує трафік, оскільки не генеруются ескізи." flagAsBot: "Акаунт бота" -flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну інтеракцію між ботами а також відповідного підлаштування Misskey." +flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну інтеракцію між ботами а також відповідного підлаштування Calckey." flagAsCat: "Акаунт кота" flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком." flagShowTimelineReplies: "Показувати відповіді на нотатки на часовій шкалі" @@ -177,7 +177,6 @@ operations: "Операції" software: "Програмне забезпечення" version: "Версія" metadata: "Метадані" -withNFiles: "файли: {n}" monitor: "Монітор" jobQueue: "Черга завдань" cpuAndMemory: "ЦП та пам'ять" @@ -199,7 +198,7 @@ noUsers: "Немає користувачів" editProfile: "Редагувати обліковий запис" noteDeleteConfirm: "Ви дійсно хочете видалити цей запис?" pinLimitExceeded: "Більше записів не можна закріпити" -intro: "Встановлення Misskey завершено! Будь ласка, створіть обліковий запис адміністратора." +intro: "Встановлення Calckey завершено! Будь ласка, створіть обліковий запис адміністратора." done: "Готово" processing: "Обробка" preview: "Попередній перегляд" @@ -377,7 +376,7 @@ exploreFediverse: "Огляд федіверсу" popularTags: "Популярні теги" userList: "Списки" about: "Інформація" -aboutMisskey: "Про Misskey" +aboutMisskey: "Про Calckey" administrator: "Адмін" token: "Токен" twoStepAuthentication: "Двохфакторна аутентифікація" @@ -522,7 +521,7 @@ sort: "Сортування" ascendingOrder: "За зростанням" descendingOrder: "За спаданням" scratchpad: "Чернетка" -scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. Ви можете писати, виконувати його і тестувати взаємодію з Misskey." +scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. Ви можете писати, виконувати його і тестувати взаємодію з Calckey." output: "Вихід" script: "Скрипт" disablePagesScript: "Вимкнути AiScript на Сторінках" @@ -695,7 +694,7 @@ onlineUsersCount: "{n} користувачів онлайн" nUsers: "{n} Користувачів" nNotes: "{n} Записів" sendErrorReports: "Надіслати звіт про помилки" -sendErrorReportsDescription: "При увімкненні детальна інформація про помилки буде надана Misskey у разі виникнення проблем, що дасть можливість покращити Misskey." +sendErrorReportsDescription: "При увімкненні детальна інформація про помилки буде надана Calckey у разі виникнення проблем, що дасть можливість покращити Calckey." myTheme: "Моя тема" backgroundColor: "Фон" accentColor: "Акцент" @@ -761,8 +760,8 @@ _aboutMisskey: contributors: "Головні помічники" allContributors: "Всі помічники" source: "Вихідний код" - translation: "Перекладати Misskey" - donate: "Пожертвувати Misskey" + translation: "Перекладати Calckey" + donate: "Пожертвувати Calckey" morePatrons: "Ми дуже цінуємо підтримку багатьох інших помічників, не перелічених тут. Дякуємо! 🥰" patrons: "Підтримали" _nsfw: @@ -771,8 +770,8 @@ _nsfw: force: "Приховувати всі медіа файли" _mfm: cheatSheet: " Довідка MFM" - intro: "MFM це ексклюзивна мова розмітки тексту в Misskey, яку можна використовувати в багатьох місцях. Тут ви можете переглянути приклади її синтаксису." - dummy: "Misskey розширює світ Федіверсу" + intro: "MFM це ексклюзивна мова розмітки тексту в Calckey, яку можна використовувати в багатьох місцях. Тут ви можете переглянути приклади її синтаксису." + dummy: "Calckey розширює світ Федіверсу" mention: "Згадка" mentionDescription: "За допомогою знака \"@\" перед ім'ям можна згадати конкретного користувача." hashtag: "Хештеґ" diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index 48ef4e323..4b254fe94 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -1,7 +1,7 @@ --- _lang_: "Tiếng Việt" headlineMisskey: "Mạng xã hội liên hợp" -introMisskey: "Xin chào! Misskey là một nền tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới mới! 🚀" +introMisskey: "Xin chào! Calckey là một nền tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới mới! 🚀" monthAndDay: "{day} tháng {month}" search: "Tìm kiếm" notifications: "Thông báo" @@ -139,7 +139,7 @@ settingGuide: "Cài đặt đề xuất" cacheRemoteFiles: "Tập tin cache từ xa" cacheRemoteFilesDescription: "Khi tùy chọn này bị tắt, các tập tin từ xa sẽ được tải trực tiếp từ máy chủ khác. Điều này sẽ giúp giảm dung lượng lưu trữ nhưng lại tăng lưu lượng truy cập, vì hình thu nhỏ sẽ không được tạo." flagAsBot: "Đánh dấu đây là tài khoản bot" -flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Misskey để coi tài khoản này như một bot." +flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Calckey để coi tài khoản này như một bot." flagAsCat: "Tài khoản này là mèo" flagAsCatDescription: "Bật tùy chọn này để đánh dấu tài khoản là một con mèo." flagShowTimelineReplies: "Hiện lượt trả lời trong bảng tin" @@ -177,7 +177,6 @@ operations: "Vận hành" software: "Phần mềm" version: "Phiên bản" metadata: "Metadata" -withNFiles: "{n} tập tin" monitor: "Giám sát" jobQueue: "Công việc chờ xử lý" cpuAndMemory: "CPU và Dung lượng" @@ -199,7 +198,7 @@ noUsers: "Chưa có ai" editProfile: "Sửa hồ sơ" noteDeleteConfirm: "Bạn có chắc muốn xóa tút này?" pinLimitExceeded: "Bạn đã đạt giới hạn số lượng tút có thể ghim" -intro: "Đã cài đặt Misskey! Xin hãy tạo tài khoản admin." +intro: "Đã cài đặt Calckey! Xin hãy tạo tài khoản admin." done: "Xong" processing: "Đang xử lý" preview: "Xem trước" @@ -524,7 +523,7 @@ sort: "Sắp xếp" ascendingOrder: "Tăng dần" descendingOrder: "Giảm dần" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Misskey trong đó." +scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Calckey trong đó." output: "Nguồn ra" script: "Kịch bản" disablePagesScript: "Tắt AiScript trên Trang" @@ -700,7 +699,7 @@ onlineUsersCount: "{n} người đang online" nUsers: "{n} Người" nNotes: "{n} Tút" sendErrorReports: "Báo lỗi" -sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia sẻ với Misskey khi xảy ra sự cố, giúp nâng cao chất lượng của Misskey.\nBao gồm thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt động của bạn trong Misskey, v.v." +sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia sẻ với Calckey khi xảy ra sự cố, giúp nâng cao chất lượng của Calckey.\nBao gồm thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt động của bạn trong Calckey, v.v." myTheme: "Theme của tôi" backgroundColor: "Màu nền" accentColor: "Màu phụ" @@ -791,7 +790,7 @@ hashtags: "Hashtag" troubleshooting: "Khắc phục sự cố" useBlurEffect: "Dùng hiệu ứng làm mờ trong giao diện" learnMore: "Tìm hiểu thêm" -misskeyUpdated: "Misskey vừa được cập nhật!" +misskeyUpdated: "Calckey vừa được cập nhật!" whatIsNew: "Hiện những thay đổi" translate: "Dịch" translatedFrom: "Dịch từ {x}" @@ -971,8 +970,8 @@ _aboutMisskey: contributors: "Những người đóng góp nổi bật" allContributors: "Toàn bộ người đóng góp" source: "Mã nguồn" - translation: "Dịch Misskey" - donate: "Ủng hộ Misskey" + translation: "Dịch Calckey" + donate: "Ủng hộ Calckey" morePatrons: "Chúng tôi cũng trân trọng sự hỗ trợ của nhiều người đóng góp khác không được liệt kê ở đây. Cảm ơn! 🥰" patrons: "Người ủng hộ" _nsfw: @@ -981,8 +980,8 @@ _nsfw: force: "Ẩn mọi media" _mfm: cheatSheet: "MFM Cheatsheet" - intro: "MFM là ngôn ngữ phát triển độc quyền của Misskey có thể được sử dụng ở nhiều nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." - dummy: "Misskey mở rộng thế giới Fediverse" + intro: "MFM là ngôn ngữ phát triển độc quyền của Calckey có thể được sử dụng ở nhiều nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." + dummy: "Calckey mở rộng thế giới Fediverse" mention: "Nhắc đến" mentionDescription: "Bạn có thể nhắc đến ai đó bằng cách sử dụng @tên người dùng." hashtag: "Hashtag" @@ -1179,6 +1178,27 @@ _time: minute: "phút" hour: "giờ" day: "ngày" +_tutorial: + title: "How to use Calckey" + step1_1: "Welcome!" + step1_2: "Let's get you set up. You'll be up and running in no time!" + step2_1: "First, please fill out your profile." + step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step3_1: "Now time to follow some people!" + step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step4_1: "Let's get you out there." + step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step5_1: "Timelines, timelines everywhere!" + step5_2: "Your instance has {timelines} different timelines enabled." + step5_3: "The Home {icon} timeline is where you can see posts from your followers." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step6_1: "So, what is this place?" + step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "Bạn đã đăng ký thiết bị xác minh 2 bước." registerDevice: "Đăng ký một thiết bị" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 645f11f56..5359cb6ef 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -181,7 +181,6 @@ operations: "操作" software: "软件" version: "版本" metadata: "元数据" -withNFiles: "{n}个文件" monitor: "服务器状态" jobQueue: "作业队列" cpuAndMemory: "CPU和内存" @@ -1070,6 +1069,8 @@ _channel: following: "正在关注" usersCount: "有{n}人参与" notesCount: "有{n}个帖子" + nameAndDescription: "名称与描述" + nameOnly: "仅名称" _menuDisplay: sideFull: "横向" sideIcon: "横向(图标)" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index c2dfd1ce0..61b5afbe6 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1,7 +1,6 @@ _lang_: "繁體中文" headlineMisskey: "貼文連繫網路" -introMisskey: "歡迎! Misskey是一個開放原始碼且去中心化的社群網路。\n透過「貼文」分享周邊新鮮事,並告訴其他人您的想法!\U0001F4E1\ - \n透過「反應」功能,對大家的貼文表達情感!\U0001F44D\n一起來探索這個新的世界吧!\U0001F680" +introMisskey: "歡迎! Calckey是一個免費,開放原碼,去中心化的社群網路🚀" monthAndDay: "{month}月 {day}日" search: "搜尋" notifications: "通知" @@ -10,13 +9,13 @@ password: "密碼" forgotPassword: "忘記密碼" fetchingAsApObject: "從聯邦宇宙取得中" ok: "OK" -gotIt: "知道了" +gotIt: "知道了!" cancel: "取消" enterUsername: "輸入使用者名稱" renotedBy: "{user} 轉傳了" noNotes: "無貼文" noNotifications: "沒有通知" -instance: "實例" +instance: "伺服器" settings: "設定" basicSettings: "基本設定" otherSettings: "其他設定" @@ -67,7 +66,7 @@ download: "下載" driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。" unfollowConfirm: "確定要取消追隨{name}嗎?" exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。" -importRequested: "已請求匯入。這可能會花一點時間" +importRequested: "已請求匯入。這可能會花一點時間。" lists: "清單" noLists: "你沒有任何清單" note: "貼文" @@ -80,10 +79,10 @@ manageLists: "管理清單" error: "錯誤" somethingHappened: "發生錯誤" retry: "重試" -pageLoadError: "載入頁面失敗" -pageLoadErrorDescription: "這通常是因為網路錯誤或是瀏覽器快取殘留的原因。請先清除瀏覽器快取,稍後再重試" +pageLoadError: "載入頁面失敗。" +pageLoadErrorDescription: "這通常是因為網路錯誤或是瀏覽器快取殘留的原因。請先清除瀏覽器快取,稍後再重試。" serverIsDead: "伺服器沒有回應。請稍等片刻,然後重試。" -youShouldUpgradeClient: "請重新載入以使用新版本的客戶端顯示此頁面" +youShouldUpgradeClient: "請重新載入以使用新版本的客戶端顯示此頁面。" enterListName: "輸入清單名稱" privacy: "隱私" makeFollowManuallyApprove: "手動審核追隨請求" @@ -96,7 +95,7 @@ followRequestPending: "追隨許可批准中" enterEmoji: "輸入表情符號" renote: "轉發" unrenote: "取消轉發" -renoted: "轉傳成功" +renoted: "已轉傳。" cantRenote: "無法轉發此貼文。" cantReRenote: "無法轉傳之前已經轉傳過的內容。" quote: "引用" @@ -143,15 +142,15 @@ settingGuide: "推薦設定" cacheRemoteFiles: "快取遠端檔案" cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外連接數據。" flagAsBot: "此使用者是機器人" -flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Calckey內部系統將本帳戶識別為機器人" +flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Calckey內部系統將本帳戶識別為機器人。" flagAsCat: "此使用者是貓" -flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示" +flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示!" flagShowTimelineReplies: "在時間軸上顯示貼文的回覆" flagShowTimelineRepliesDescription: "啟用時,時間線除了顯示用戶的貼文以外,還會顯示用戶對其他貼文的回覆。" autoAcceptFollowed: "自動追隨中使用者的追隨請求" addAccount: "添加帳戶" loginFailed: "登入失敗" -showOnRemote: "轉到所在實例顯示" +showOnRemote: "轉到所在伺服器顯示" general: "一般" wallpaper: "桌布" setWallpaper: "設定桌布" @@ -166,7 +165,7 @@ selectUser: "選取使用者" recipient: "收件人" annotation: "註解" federation: "站台聯邦" -instances: "實例" +instances: "伺服器" registeredAt: "初次觀測" latestRequestSentAt: "上次發送的請求" latestRequestReceivedAt: "上次收到的請求" @@ -176,26 +175,25 @@ charts: "圖表" perHour: "每小時" perDay: "每日" stopActivityDelivery: "停止發送活動" -blockThisInstance: "封鎖此實例" +blockThisInstance: "封鎖此伺服器" operations: "操作" software: "軟體" version: "版本" metadata: "元資料" -withNFiles: "{n}個檔案" monitor: "監視器" jobQueue: "佇列" cpuAndMemory: "CPU及記憶體用量" network: "網路" disk: "硬碟" -instanceInfo: "實例資訊" +instanceInfo: "伺服器資訊" statistics: "統計" clearQueue: "清除佇列" clearQueueConfirmTitle: "確定要清除佇列嗎?" clearQueueConfirmText: "未發佈的貼文將不會發佈。您通常不需要確認。" clearCachedFiles: "清除快取資料" clearCachedFilesConfirm: "確定要清除所有遠端暫存資料嗎?" -blockedInstances: "已封鎖的實例" -blockedInstancesDescription: "請逐行輸入需要封鎖的實例。已封鎖的實例將無法與本實例進行通訊。" +blockedInstances: "已封鎖的伺服器" +blockedInstancesDescription: "請逐行輸入需要封鎖的伺服器。已封鎖的伺服器將無法與本伺服器進行通訊。" muteAndBlock: "靜音和封鎖" mutedUsers: "已靜音用戶" blockedUsers: "已封鎖用戶" @@ -218,9 +216,9 @@ all: "全部" subscribing: "訂閱中" publishing: "直播中" notResponding: "沒有回應" -instanceFollowing: "追蹤實例" -instanceFollowers: "追蹤實例" -instanceUsers: "用戶" +instanceFollowing: "追蹤伺服器" +instanceFollowers: "伺服器的追蹤者" +instanceUsers: "此伺服器的用戶" changePassword: "修改密碼" security: "安全性" retypedNotMatch: "兩次輸入不一致。" @@ -310,8 +308,8 @@ unwatch: "取消追隨" accept: "接受" reject: "拒絕" normal: "正常" -instanceName: "實例名稱" -instanceDescription: "實例說明" +instanceName: "伺服器名稱" +instanceDescription: "伺服器說明" maintainerName: "管理員名稱" maintainerEmail: "管理員郵箱" tosUrl: "服務條款URL" @@ -341,7 +339,7 @@ basicInfo: "基本資訊" pinnedUsers: "置頂用戶" pinnedUsersDescription: "在「發現」頁面中使用換行標記想要置頂的使用者。" pinnedPages: "釘選頁面" -pinnedPagesDescription: "輸入要固定至實例首頁的頁面路徑,以換行符分隔。" +pinnedPagesDescription: "輸入要固定至伺服器首頁的頁面路徑,以換行符分隔。" pinnedClipId: "置頂的摘錄ID" pinnedNotes: "已置頂的貼文" hcaptcha: "hCaptcha" @@ -359,7 +357,7 @@ name: "名稱" antennaSource: "接收來源" antennaKeywords: "包含關鍵字" antennaExcludeKeywords: "排除關鍵字" -antennaKeywordsDescription: "用空格分隔指定AND、用換行符分隔指定OR" +antennaKeywordsDescription: "用空格分隔指定AND、用換行符分隔指定OR。" notifyAntenna: "通知有新貼文" withFileAntenna: "僅帶有附件的貼文" enableServiceworker: "開啟 ServiceWorker" @@ -400,7 +398,7 @@ newPasswordIs: "新密碼為「{password}」" reduceUiAnimation: "減少介面的動態視覺" share: "分享" notFound: "找不到" -notFoundDescription: "找不到與指定URL回應的頁面" +notFoundDescription: "找不到與指定URL回應的頁面。" uploadFolder: "預設上傳資料夾" cacheClear: "清除快取" markAsReadAllNotifications: "標記所有通知為已讀" @@ -435,10 +433,10 @@ onlyOneFileCanBeAttached: "只能加入一個附件" signinRequired: "請先登入" invitations: "邀請" invitationCode: "邀請碼" -checking: "確認中" +checking: "確認中..." available: "可用的" unavailable: "不可用的" -usernameInvalidFormat: "可使用大小寫英文字母、數字和底線" +usernameInvalidFormat: "可使用大小寫英文字母、數字和底線。" tooShort: "過短" tooLong: "過長" weakPassword: "密碼強度過弱" @@ -461,7 +459,7 @@ joinOrCreateGroup: "請加入現有群組,或創建新群組。" noHistory: "沒有歷史紀錄" signinHistory: "登入歷史" disableAnimatedMfm: "禁用MFM動畫" -doing: "正在進行" +doing: "正在處理..." category: "類別" tags: "標籤" docSource: "文件來源" @@ -487,8 +485,8 @@ hideThisNote: "隱藏此貼文" showFeaturedNotesInTimeline: "在時間軸上顯示熱門推薦" objectStorage: "Object Storage (物件儲存)" useObjectStorage: "使用Object Storage" -objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理,请指定其URL,例如S3:“https://.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/”" +objectStorageBaseUrl: "根URL" +objectStorageBaseUrlDesc: "引用時的URL。如果你使用的是CDN或反向代理,請指定其網址URL。\n例如S3:“https://.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/”。" objectStorageBucket: "儲存空間(Bucket)" objectStorageBucketDesc: "請指定您正在使用的服務的存儲桶名稱。" objectStoragePrefix: "前綴" @@ -536,8 +534,8 @@ updateRemoteUser: "更新遠端使用者資訊" deleteAllFiles: "刪除所有檔案" deleteAllFilesConfirm: "要删除所有檔案嗎?" removeAllFollowing: "解除所有追蹤" -removeAllFollowingDescription: "解除{host}所有的追蹤。在實例不再存在時執行。" -userSuspended: "該使用者已被停用" +removeAllFollowingDescription: "解除{host}所有的追蹤。在伺服器不再存在時執行。" +userSuspended: "此使用者已被停用。" userSilenced: "該用戶已被禁言。" yourAccountSuspendedTitle: "帳戶已被凍結" yourAccountSuspendedDescription: "由於違反了伺服器的服務條款或其他原因,該帳戶已被凍結。 您可以與管理員連繫以了解更多訊息。 請不要創建一個新的帳戶。" @@ -548,7 +546,7 @@ relays: "中繼" addRelay: "新增中繼" inboxUrl: "收件夾URL" addedRelays: "已加入的中繼" -serviceworkerInfo: "您需要啟用推送通知" +serviceworkerInfo: "您需要啟用推送通知。" deletedNote: "已删除的貼文" invisibleNote: "隱藏的貼文" enableInfiniteScroll: "啟用自動滾動頁面模式" @@ -594,14 +592,14 @@ smtpHost: "主機" smtpPort: "埠" smtpUser: "使用者名稱" smtpPass: "密碼" -emptyToDisableSmtpAuth: "留空使用者名稱和密碼以關閉SMTP驗證。" +emptyToDisableSmtpAuth: "留空使用者名稱及密碼以關閉SMTP驗證" smtpSecure: "在 SMTP 連接中使用隱式 SSL/TLS" -smtpSecureInfo: "使用STARTTLS時關閉。" +smtpSecureInfo: "如使用STARTTLS,請關閉" testEmail: "測試郵件發送" wordMute: "被靜音的文字" regexpError: "正規表達式錯誤" regexpErrorDescription: "{tab} 靜音文字的第 {line} 行的正規表達式有錯誤:" -instanceMute: "實例的靜音" +instanceMute: "伺服器的靜音" userSaysSomething: "{name}說了什麼" makeActive: "啟用" display: "檢視" @@ -614,7 +612,7 @@ database: "資料庫" channel: "頻道" create: "新增" notificationSetting: "通知設定" -notificationSettingDesc: "選擇顯示通知的類型" +notificationSettingDesc: "選擇顯示通知的類型。" useGlobalSetting: "使用全域設定" useGlobalSettingDesc: "啟用時,將使用帳戶通知設定。停用時,則可以單獨設定。" other: "其他" @@ -632,15 +630,15 @@ abuseReported: "回報已送出。感謝您的報告。" reporter: "檢舉者" reporteeOrigin: "檢舉來源" reporterOrigin: "檢舉者來源" -forwardReport: "將報告轉送給遠端實例" -forwardReportIsAnonymous: "在遠端實例上看不到您的資訊,顯示的報告者是匿名的系统帳戶。" +forwardReport: "將報告轉送給遠端伺服器" +forwardReportIsAnonymous: "在遠端伺服器上看不到您的資訊,顯示的報告者是匿名的系統帳戶。" send: "發送" abuseMarkAsResolved: "處理完畢" openInNewTab: "在新分頁中開啟" openInSideView: "在側欄中開啟" defaultNavigationBehaviour: "默認導航" -editTheseSettingsMayBreakAccount: "修改這些設定可能會毀損您的帳戶" -instanceTicker: "貼文的實例來源" +editTheseSettingsMayBreakAccount: "修改這些設定可能會毀損你的帳戶。" +instanceTicker: "貼文的伺服器資訊" waitingFor: "等待{x}" random: "隨機" system: "系統" @@ -690,7 +688,7 @@ experimentalFeatures: "實驗中的功能" developer: "開發者" makeExplorable: "使自己的帳戶能夠在“探索”頁面中顯示" makeExplorableDescription: "如果關閉,帳戶將不會被顯示在\"探索\"頁面中。" -showGapBetweenNotesInTimeline: "分開顯示時間線上的貼文。" +showGapBetweenNotesInTimeline: "分開顯示時間軸上的貼文" duplicate: "複製" left: "左" center: "置中" @@ -704,7 +702,7 @@ onlineUsersCount: "{n}人正在線上" nUsers: "{n}用戶" nNotes: "{n}貼文" sendErrorReports: "傳送錯誤報告" -sendErrorReportsDescription: "啟用後,問題報告將傳送至開發者以提升軟體品質。問題報告可能包括OS版本,瀏覽器類型,行為歷史記錄等。" +sendErrorReportsDescription: "啟用後,問題報告將傳送至Calckey開發者以提升軟體品質。\n問題報告可能包括OS版本,瀏覽器類型,行為歷史記錄等。" myTheme: "我的佈景主題" backgroundColor: "背景" accentColor: "重點色彩" @@ -728,7 +726,7 @@ capacity: "容量" inUse: "已使用" editCode: "編輯代碼" apply: "套用" -receiveAnnouncementFromInstance: "接收由本實例發出的電郵通知" +receiveAnnouncementFromInstance: "接收由本伺服器發出的電郵通知" emailNotification: "郵件通知" publish: "發佈" inChannelSearch: "頻道内搜尋" @@ -756,7 +754,7 @@ active: "最近活躍" offline: "離線" notRecommended: "不推薦" botProtection: "Bot防護" -instanceBlocking: "已封鎖的實例" +instanceBlocking: "聯邦管理" selectAccount: "選擇帳戶" switchAccount: "切換帳戶" enabled: "已啟用" @@ -781,7 +779,7 @@ priority: "優先級" high: "高" middle: "中" low: "低" -emailNotConfiguredWarning: "沒有設定電子郵件地址" +emailNotConfiguredWarning: "沒有設定電郵地址。" ratio: "%" previewNoteText: "預覽文本" customCss: "自定義 CSS" @@ -817,11 +815,11 @@ controlPanel: "控制台" manageAccounts: "管理帳戶" makeReactionsPublic: "將反應設為公開" makeReactionsPublicDescription: "將您做過的反應設為公開可見。" -classic: "經典" +classic: "置中" muteThread: "將貼文串設為靜音" unmuteThread: "將貼文串的靜音解除" ffVisibility: "連接的公開範圍" -ffVisibilityDescription: "您可以設定您的關注/關注者資訊的公開範圍" +ffVisibilityDescription: "您可以設定您的關注/關注者資訊的公開範圍。" continueThread: "查看更多貼文" deleteAccountConfirm: "將要刪除帳戶。是否確定?" incorrectPassword: "密碼錯誤。" @@ -840,9 +838,9 @@ themeColor: "主題顏色" size: "大小" numberOfColumn: "列數" searchByGoogle: "搜尋" -instanceDefaultLightTheme: "實例預設的淺色主題" -instanceDefaultDarkTheme: "實例預設的深色主題" -instanceDefaultThemeDescription: "輸入物件形式的主题代碼" +instanceDefaultLightTheme: "伺服器預設的淺色主題" +instanceDefaultDarkTheme: "伺服器預設的深色主題" +instanceDefaultThemeDescription: "輸入物件形式的主題代碼。" mutePeriod: "靜音的期限" indefinitely: "無期限" tenMinutes: "10分鐘" @@ -890,17 +888,17 @@ cannotUploadBecauseInappropriate: "由於判定可能包含不適當的內容, cannotUploadBecauseNoFreeSpace: "由於雲端硬碟沒有可用空間,因此無法上傳。" beta: "Beta" enableAutoSensitive: "自動NSFW判定" -enableAutoSensitiveDescription: "如果可用,請利用機器學習在媒體上自動設置 NSFW 旗標。 即使關閉此功能,依實例而定也可能會自動設置。" +enableAutoSensitiveDescription: "如可用,請利用機器學習在媒體上自動設置 NSFW 旗標。 即使關閉此功能,依伺服器而定也可能會自動設置。" activeEmailValidationDescription: "積極地驗證用戶的電子郵件地址,判斷它是否為免洗地址,或者它是否可以通信。 若關閉,則只會檢查字元是否正確。" navbar: "導覽列" shuffle: "隨機" account: "帳戶" move: "移動" customKaTeXMacro: "自定義 KaTeX 宏" -customKaTeXMacroDescription: "使用宏來輕鬆的輸入數學表達式吧!宏的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\\ - name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉個例子,\\\ - newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。此外,宏名稱外的花括號 {} 可以被替換為圓括號\ - \ () 和方括號 [],這會影響用於參數的括號。每行只能夠定義一個宏,無法在中間換行,且無效的行將被忽略。只支持簡單字符串替換功能,不支持高級語法,如條件分支等。" +customKaTeXMacroDescription: "使用宏來輕鬆的輸入數學表達式吧!宏的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\ + name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉個例子,\\ + newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。此外,宏名稱外的花括號 {} 可以被替換為圓括號 + () 和方括號 [],這會影響用於參數的括號。每行只能夠定義一個宏,無法在中間換行,且無效的行將被忽略。只支持簡單字符串替換功能,不支持高級語法,如條件分支等。" enableCustomKaTeXMacro: "啟用自定義 KaTeX 宏" _sensitiveMediaDetection: description: "您可以使用機器學習自動檢測敏感媒體並將其用於審核。 伺服器的負荷會稍微增加。" @@ -937,7 +935,7 @@ _ad: _forgotPassword: enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。" ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。" - contactAdmin: "此實例不支持電子郵件,請聯繫您的管理員重置您的密碼。" + contactAdmin: "此伺服器不支援使用電郵,請聯繫您的管理員重置你的密碼。" _gallery: my: "我的貼文" liked: "喜歡的貼文" @@ -969,7 +967,7 @@ _preferencesBackups: createdAt: "建立日期:{date} {time}" updatedAt: "更新日期:{date} {time}" cannotLoad: "無法讀取" - invalidFile: "檔案形式錯誤。" + invalidFile: "無效的檔案格式" _registry: scope: "範圍" key: "機碼" @@ -983,7 +981,7 @@ _aboutMisskey: source: "原始碼" translation: "翻譯Calckey" donate: "贊助Calckey" - morePatrons: "還有許許多多幫助我們的其他人,非常感謝你們。 \U0001F970" + morePatrons: "還有許許多多幫助我們的其他人,非常感謝你們。 🥰" patrons: "贊助者" _nsfw: respect: "隱藏敏感內容" @@ -1012,13 +1010,13 @@ _mfm: blockCode: "程式碼(區塊)" blockCodeDescription: "在區塊中用高亮度顯示,例如複數行的程式碼語法。" inlineMath: "數學公式(內嵌)" - inlineMathDescription: "顯示內嵌的KaTeX數學公式。" + inlineMathDescription: "顯示內嵌的KaTeX數學公式" blockMath: "數學公式(方塊)" - blockMathDescription: "以區塊顯示KaTeX數學式。" + blockMathDescription: "以區塊顯示KaTeX數學式" quote: "引用" quoteDescription: "可以用來表示引用的内容。" emoji: "自訂表情符號" - emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。 " + emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。" search: "搜尋" searchDescription: "您可以顯示所輸入的搜索框。" flip: "翻轉" @@ -1046,7 +1044,7 @@ _mfm: blur: "模糊" blurDescription: "產生模糊效果。将游標放在上面即可將内容顯示出來。" font: "字型" - fontDescription: "您可以設定顯示內容的字型" + fontDescription: "您可以設定顯示內容的字型。" rainbow: "彩虹" rainbowDescription: "用彩虹色來顯示內容。" sparkle: "閃閃發光" @@ -1055,6 +1053,12 @@ _mfm: rotateDescription: "以指定的角度旋轉。" plain: "簡潔" plainDescription: "停用全部的內部語法。" + play: 播放 MFM + stop: 暫停MFM + warn: MFM 可能包含快速移動或顯眼的動畫 + position: 位置 + alwaysPlay: 自動播放所有MFM動畫 + positionDescription: 按指定數量移動內容。 _instanceTicker: none: "隱藏" remote: "向遠端使用者顯示" @@ -1063,6 +1067,7 @@ _serverDisconnectedBehavior: reload: "自動重載" dialog: "彈出式警告" quiet: "非侵入式警告" + nothing: 無 _channel: create: "建立頻道" edit: "編輯頻道" @@ -1073,6 +1078,8 @@ _channel: following: "關注中" usersCount: "有{n}人參與" notesCount: "有{n}個貼文" + nameAndDescription: "名稱與說明" + nameOnly: "僅名稱" _menuDisplay: sideFull: "側向" sideIcon: "側向(圖示)" @@ -1088,10 +1095,10 @@ _wordMute: hard: "硬性靜音" mutedNotes: "已靜音的貼文" _instanceMute: - instanceMuteDescription: "包括對被靜音實例上的用戶的回覆,被設定的實例上所有貼文及轉發都會被靜音。" + instanceMuteDescription: "包括對被靜音伺服器上的用戶的回覆,被設定的伺服器上所有貼文及轉發都會被靜音。" instanceMuteDescription2: "設定時以換行進行分隔" - title: "被設定的實例,貼文將被隱藏。" - heading: "將實例靜音" + title: "被設定的伺服器,貼文將被隱藏。" + heading: "將會被靜音的伺服器" _theme: explore: "取得佈景主題" install: "安裝佈景主題" @@ -1109,13 +1116,13 @@ _theme: constant: "常數" defaultValue: "預設值" color: "顏色" - refProp: "查看屬性 " + refProp: "查看屬性" refConst: "查看常數" key: "按鍵" func: "函数" funcKind: "功能類型" argument: "參數" - basedProp: "要基於的屬性的名稱 " + basedProp: "要基於的屬性的名稱" alpha: "透明度" darken: "暗度" lighten: "亮度" @@ -1131,9 +1138,9 @@ _theme: panel: "面板" shadow: "陰影" header: "標題" - navBg: "側邊欄的背景 " + navBg: "側邊欄的背景" navFg: "側邊欄的文字" - navHoverFg: "側邊欄文字(懸停) " + navHoverFg: "側邊欄文字(懸停)" navActive: "側邊欄文本 (活動)" navIndicator: "側邊欄指示符" link: "鏈接" @@ -1191,27 +1198,27 @@ _time: day: "日" _tutorial: title: "如何使用Calckey" - step1_1: "欢迎!" - step1_2: "让我们把你安排好。你很快就会启动并运行!" - step2_1: "首先,请完成您的个人资料。" - step2_2: "通过提供一些关于你自己的信息,其他人会更容易了解他们是否想看到你的帖子或关注你。" - step3_1: "现在是时候跟随一些人了!" - step3_2: "你的主页和社交馈送是基于你所关注的人,所以试着先关注几个账户。{n点击个人资料右上角的加号圈就可以关注它。" - step4_1: "让我们出去找你。" - step4_2: "对于他们的第一条信息,有些人喜欢做{introduction}或一个简单的 \"hello world!\"" - step5_1: "时间限制,到处是时间限制!" - step5_2: "您的实例已启用各种时间线的{timelines}。" - step5_3: "主{icon}时间线是你可以看到你的订阅者的帖子的时间线。" - step5_4: "本地{icon}时间线是你可以看到实例中所有其他用户的信息的时间线。" - step5_5: "推荐的{icon}时间线 - 是时间轴,你可以看到管理员推荐的实例的信息" - step5_6: "社交{icon}时间线显示来自你的订阅者朋友的信息。" - step5_7: "全球{icon}时间线是你可以看到来自所有其他连接的实例的消息。" - step6_1: "那么,这里是什么地方?" - step6_2: "好吧,你不只是加入卡尔基。你已经加入了Fediverse的一个门户,这是一个由成千上万台服务器组成的互联网络,被称为 \"实例\"" - step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行Calckey。但这个人确实如此! 这有点复杂,但你很快就会明白的。" - step6_4: "现在去学习并享受乐趣!" + step1_1: "歡迎!" + step1_2: "讓我們把你安排好。你很快就會啟動並運行!" + step2_1: "首先,請完成你的個人資料。" + step2_2: "通過提供一些關於你自己的資料,其他人會更容易了解他們是否想看到你的帖子或關注你。" + step3_1: "現在是時候追隨一些人了!" + step3_2: "你的主頁和社交時間軸是基於你所追蹤的人,所以試著先追蹤幾個賬戶。\n點擊個人資料右上角的加號圈就可以關注它。" + step4_1: "讓我們出去找你。" + step4_2: "對於他們的第一條信息,有些人喜歡做 {introduction} 或一個簡單的 \"hello world!\"" + step5_1: "時間軸,到處都是時間軸!" + step5_2: "您的伺服器已啟用了{timelines}個時間軸。" + step5_3: "主 {icon} 時間軸是顯示你追蹤的帳號的帖子。" + step5_4: "本地 {icon} 時間軸是你可以看到伺服器中所有其他用戶的信息的時間軸。" + step5_5: "社交 {icon} 時間軸是顯示你的主時間軸 + 本地時間軸。" + step5_6: "推薦 {icon} 時間軸是顯示你的伺服器管理員推薦的帖文。" + step5_7: "全球 {icon} 時間軸是顯示來自所有其他連接的伺服器的帖文。" + step6_1: "那麼,這裡是什麼地方?" + step6_2: "你不只是加入Calckey。你已經加入了Fediverse的一個門戶,這是一個由成千上萬台服務器組成的互聯網絡。" + step6_3: "每個服務器也有不同,而並不是所有的服務器都運行Calckey。但這個服務器確實是運行Calckey的! 你可能會覺得有點複雜,但你很快就會明白的。" + step6_4: "現在開始探索吧!" _2fa: - alreadyRegistered: "此設備已經被註冊過了" + alreadyRegistered: "你已註冊過一個雙重認證的裝置。" registerDevice: "註冊裝置" registerKey: "註冊鍵" step1: "首先,在您的設備上安裝二步驗證程式,例如{a}或{b}。" @@ -1288,13 +1295,13 @@ _widgets: digitalClock: "電子時鐘" unixClock: "UNIX時間" federation: "聯邦宇宙" - instanceCloud: "實例雲" + instanceCloud: "伺服器雲端" postForm: "發佈窗口" slideshow: "幻燈片" button: "按鈕" onlineUsers: "線上的用戶" jobQueue: "佇列" - serverMetric: "服務器指標 " + serverMetric: "伺服器指標" aiscript: "AiScript控制台" aichan: "小藍" _cw: @@ -1303,14 +1310,14 @@ _cw: chars: "{count}字元" files: "{count} 個檔案" _poll: - noOnlyOneChoice: "至少需要兩個選項。" + noOnlyOneChoice: "至少需要兩個選項" choiceN: "選擇{n}" noMore: "沒辦法再添加選項了" canMultipleVote: "可以多次投票" expiration: "期限" infinite: "無期限" at: "結束時間" - after: "進度指定 " + after: "在指定時間後結束..." deadlineDate: "截止日期" deadlineTime: "小時" duration: "時長" @@ -1326,8 +1333,8 @@ _poll: remainingSeconds: "{s}秒後截止" _visibility: public: "公開" - publicDescription: "發布給所有用戶 " - home: "首頁" + publicDescription: "發布給所有用戶" + home: "不在主頁顯示" homeDescription: "僅發送至首頁的時間軸" followers: "追隨者" followersDescription: "僅發送至關注者" @@ -1338,7 +1345,7 @@ _visibility: _postForm: replyPlaceholder: "回覆此貼文..." quotePlaceholder: "引用此貼文..." - channelPlaceholder: "發佈到頻道" + channelPlaceholder: "發佈到頻道..." _placeholders: a: "今天過得如何?" b: "有什麼新鮮事嗎?" @@ -1350,7 +1357,7 @@ _profile: name: "名稱" username: "使用者名稱" description: "關於我" - youCanIncludeHashtags: "你也可以在「關於我」中加上 #tag" + youCanIncludeHashtags: "你也可以在「關於我」中加上 #tag。" metadata: "進階資訊" metadataEdit: "編輯進階資訊" metadataDescription: "可以在個人資料中以表格形式顯示其他資訊。" @@ -1358,6 +1365,7 @@ _profile: metadataContent: "内容" changeAvatar: "更換大頭貼" changeBanner: "變更橫幅圖像" + locationDescription: 如果你先輸入你所在的城市,則會向其他用戶顯示你的當地時間。 _exportOrImport: allNotes: "所有貼文" followingList: "追隨中" @@ -1386,7 +1394,7 @@ _instanceCharts: usersTotal: "總計使用者" notes: "貼文増減" notesTotal: "累計貼文" - ff: "追隨/追隨者的増減" + ff: "追隨/追隨者的増減 " ffTotal: "追隨/追隨者累計" cacheSize: "增加或減少快取用量" cacheSizeTotal: "快取大小總計" @@ -1450,7 +1458,7 @@ _pages: post: "發佈窗口" _post: text: "内容" - attachCanvasImage: "附加相簿圖像 " + attachCanvasImage: "附加相簿圖像" canvasId: "畫布ID" textInput: "插入字串" _textInput: @@ -1475,7 +1483,7 @@ _pages: note: "嵌式貼文" _note: id: "貼文ID" - idDescription: "您也可以粘貼筆記 URL 並進行設置。 " + idDescription: "您也可以粘貼筆記 URL 並進行設置。" detailed: "顯示詳細內容" switch: "開關" _switch: @@ -1492,14 +1500,14 @@ _pages: colored: "彩色" action: "按下按鈕後發生的行為" _action: - dialog: "顯示對話框 " + dialog: "顯示對話框" _dialog: content: "内容" resetRandom: "重設亂數" pushEvent: "發送事件" _pushEvent: event: "事件名稱" - message: "按下時顯示的消息 " + message: "按下時顯示的消息" variable: "要發送的變數" no-variable: "沒有" callAiScript: "調用AiScript" @@ -1518,7 +1526,7 @@ _pages: operation: "計算" comparison: "對比" random: "隨機" - value: "數值 " + value: "數值" fn: "函数" text: "文本操作" convert: "轉換" @@ -1528,7 +1536,7 @@ _pages: multiLineText: "字串(多行)" textList: "字串串列" _textList: - info: "請分開每個換行符 " + info: "請分開每個換行符" strLen: "字串長度" _strLen: arg1: "字串" @@ -1607,7 +1615,7 @@ _pages: _if: arg1: "如果" arg2: "如果" - arg3: "除此以外 " + arg3: "除此以外" not: "否" _not: arg1: "否" @@ -1618,7 +1626,7 @@ _pages: _rannum: arg1: "下限" arg2: "上限" - randomPick: "從列表中隨機選擇 " + randomPick: "從列表中隨機選擇" _randomPick: arg1: "清單" dailyRandom: "隨機(使用者每日變化 )" @@ -1628,7 +1636,7 @@ _pages: _dailyRannum: arg1: "下限" arg2: "上限" - dailyRandomPick: "從列表中隨機選擇(使用者每日變化 ) " + dailyRandomPick: "從列表中隨機選擇(使用者每日變化 )" _dailyRandomPick: arg1: "清單" seedRandom: "隨機抽選種子碼" @@ -1671,7 +1679,7 @@ _pages: slots: "欄位" slots-info: "用換行符分隔每個欄位" arg1: "輸出" - for: "重複 " + for: "重複" _for: arg1: "重複次數" arg2: "處理" @@ -1692,7 +1700,7 @@ _relayStatus: accepted: "已通過核准" rejected: "已拒絕" _notification: - fileUploaded: "上傳檔案成功。" + fileUploaded: "上傳檔案成功" youGotMention: "{name}提及到您" youGotReply: "{name}回覆了您" youGotQuote: "{name}引用了您" @@ -1707,7 +1715,7 @@ _notification: pollEnded: "問卷調查已產生結果" emptyPushNotificationMessage: "推送通知已更新" _types: - all: "全部 " + all: "全部" follow: "追隨中" mention: "提及" reply: "回覆" @@ -1735,14 +1743,14 @@ _deck: swapDown: "往下移動" stackLeft: "向左折疊" popRight: "向右彈出" - profile: "個人檔案" - newProfile: "新建個人檔案" - renameProfile: "重新命名個人檔案" - deleteProfile: "刪除個人檔案" - nameAlreadyExists: "該個人檔案名已經存在。" + profile: "工作區" + newProfile: "新增工作區" + renameProfile: "重新命名工作區" + deleteProfile: "刪除工作區" + nameAlreadyExists: "該工作區名稱已經存在。" introduction: "組合欄位來製作屬於自己的介面吧!" introduction2: "您可以隨時透過按畫面右方的 + 來添加欄位。" - widgetsIntroduction: "請從欄位的選單中,選擇「編輯小工具」來添加小工具" + widgetsIntroduction: "請從欄位的選單中,選擇「編輯小工具」來添加小工具。" _columns: main: "主列" widgets: "小工具" @@ -1753,10 +1761,10 @@ _deck: mentions: "提及" direct: "指定使用者" secureMode: 安全模式(授權獲取) -instanceSecurity: 實例安全性 +instanceSecurity: 伺服器安全性 privateMode: 私人模式 -allowedInstances: 列入白名單的實例 -secureModeInfo: 當從其他實例請求時,不要在沒有證據的情況下發回。 +allowedInstances: 列入白名單的伺服器 +secureModeInfo: 當從其他伺服器請求時,不要在沒有證據的情況下發回。 _messaging: dms: 私訊 groups: 群組 @@ -1764,11 +1772,11 @@ manageGroups: 管理群組 replayTutorial: 重新播放教程 moveFromLabel: '您想遷移的舊帳戶:' customMOTDDescription: 每次用戶加載/重新加載頁面時,由換行符號分隔的 MOTD(啟動畫面)的自定信息將隨機顯示。 -privateModeInfo: 啟用後,只有列入白名單的實例才能與您的實例聯合。所有貼文都將對公眾隱藏。 +privateModeInfo: 啟用後,只有列入白名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。 adminCustomCssWarn: 除非你知道它的作用,否則請不要使用此設定。 輸入不正確的值可能會導致每個人的客戶端無法正常運行。你可在你的的用戶設定中測試,確保你的 CSS 正常工作。 showUpdates: Calckey 更新時顯示彈出視窗 -recommendedInstances: 建議的實例 +recommendedInstances: 建議的伺服器 caption: 自動字幕 enterSendsMessage: 在 Messaging 中按 Return 發送消息 (如關閉則是 Ctrl + Return) migrationConfirm: "您確定要將你的帳戶遷移到 {account} 嗎? 一旦這樣做,你將無法復原,而你將無法再次正常使用您的帳戶。\n另外,請確保你已將此當前帳戶設置為您要遷移的帳戶。" @@ -1777,21 +1785,17 @@ customSplashIconsDescription: 每次用戶加載/重新加載頁面時,以換 accountMoved: '該使用者已移至新帳戶:' showAds: 顯示廣告 noThankYou: 不用了,謝謝 -selectInstance: 選擇實例 +selectInstance: 選擇伺服器 enableRecommendedTimeline: 啟用推薦時間軸 -antennaInstancesDescription: 分行列出一個實例 +antennaInstancesDescription: 分行列出一個伺服器 moveTo: 遷移此帳戶到新帳戶 moveToLabel: '請輸入你將會遷移到的帳戶:' moveAccount: 遷移帳戶! moveAccountDescription: '這個過程是不可逆的。 在遷移前,請確保您已在新帳戶上為此帳戶設置了別名(Alias)。 請輸入帳戶標籤 (格式: - @person@instance.com)' + @person@server.com)' moveFrom: 由舊帳戶移至此帳戶 moveFromDescription: '這將為你的舊帳戶設置一個別名(Alias),以便你可以從該帳戶轉移到當前帳戶。 在你的舊帳戶移動之前請執行此操作。 請輸入帳戶標籤 - (格式: @person@instance.com)' -_apps: - crossPlatform: 跨平台 - free: 免費 - paid: 付費 + (格式: @person@server.com)' enableEmojiReactions: 啟用表情符號反應 breakFollowConfirm: 您確定要移除該關注者嗎? socialTimeline: 社交時間軸 @@ -1805,6 +1809,34 @@ migration: 遷移 homeTimeline: 主頁時間軸 swipeOnDesktop: 允許在桌面上進行手機式滑動 logoImageUrl: 圖標網址 -addInstance: 增加一個實例 -noInstances: 沒有實例 +addInstance: 增加一個伺服器 +noInstances: 沒有伺服器 flagSpeakAsCat: 像貓一樣地說話 +silenceThisInstance: 靜音此伺服器 +silencedInstances: 已靜音的伺服器 +silenced: 已靜音 +_experiments: + enablePostEditing: 啟用帖子編輯 + title: 試驗功能 +findOtherInstance: 找找另一個伺服器 +noGraze: 瀏覽器擴展 "Graze for Mastodon" 會與Calckey發生衝突,請停用該擴展。 +userSaysSomethingReasonRenote: '{name} 轉傳了包含 {reason} 的帖子' +pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知 +accessibility: 輔助功能 +userSaysSomethingReasonReply: '{name} 回復了包含 {reason} 的帖子' +hiddenTags: 隱藏主題標籤 +indexPosts: 索引帖子 +indexNotice: 現在開始索引。 這可能需要一段時間,請不要在一個小時內重啟你的伺服器。 +deleted: 已刪除 +editNote: 編輯筆記 +edited: 已修改 +userSaysSomethingReason: '{name} 說了 {reason}' +allowedInstancesDescription: 要加入聯邦白名單的服務器,每台伺服器用新行分隔(僅適用於私有模式)。 +defaultReaction: 默認的表情符號反應 +license: 授權 +apps: 應用 +pushNotification: 推送通知 +subscribePushNotification: 啟用推送通知 +unsubscribePushNotification: 禁用推送通知 +pushNotificationAlreadySubscribed: 推送通知已經啟用 +recommendedInstancesDescription: 以每行分隔的推薦服務器出現在推薦的時間軸中。 不要添加 `https://`,只添加域名。 diff --git a/package.json b/package.json index 497ba9cae..08aa66a19 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "calckey", - "version": "14.0.0-rc-ni", + "version": "14.0.0-rc2", "codename": "aqua", "repository": { "type": "git", "url": "https://codeberg.org/calckey/calckey.git" }, - "packageManager": "pnpm@8.3.1", + "packageManager": "pnpm@8.6.1", "private": true, "scripts": { "rebuild": "pnpm run clean && pnpm -r run build && pnpm run gulp", @@ -27,7 +27,7 @@ "e2e": "start-server-and-test start:test http://localhost:61812 cy:run", "mocha": "pnpm --filter backend run mocha", "test": "pnpm run mocha", - "format": "pnpm rome format packages/**/* --write && pnpm --filter client run format", + "format": "pnpm -r run format", "clean": "pnpm node ./scripts/clean.js", "clean-all": "pnpm node ./scripts/clean-all.js", "cleanall": "pnpm run clean-all" @@ -36,12 +36,10 @@ "chokidar": "^3.3.1" }, "dependencies": { - "@bull-board/api": "^4.10.2", - "@bull-board/ui": "^4.10.2", - "@napi-rs/cli": "^2.15.0", + "@bull-board/api": "5.2.0", + "@bull-board/ui": "5.2.0", + "@napi-rs/cli": "^2.16.1", "@tensorflow/tfjs": "^3.21.0", - "focus-trap": "^7.2.0", - "focus-trap-vue": "^4.0.1", "js-yaml": "4.1.0", "seedrandom": "^3.0.5" }, diff --git a/packages/backend/assets/redoc.html b/packages/backend/assets/redoc.html index 4013abe31..6f48c1766 100644 --- a/packages/backend/assets/redoc.html +++ b/packages/backend/assets/redoc.html @@ -5,7 +5,6 @@ - - {{ i18n.ts.processing }}{{ (state = i18n.ts.processing) }} @@ -55,6 +59,7 @@ import type * as Misskey from "calckey-js"; import * as os from "@/os"; import { stream } from "@/stream"; import { i18n } from "@/i18n"; +import { $i } from "@/account"; const emit = defineEmits(["refresh"]); const props = withDefaults( @@ -71,6 +76,8 @@ const props = withDefaults( const isBlocking = computed(() => props.user.isBlocking); +let state = $ref(i18n.ts.processing); + let isFollowing = $ref(props.user.isFollowing); let hasPendingFollowRequestFromYou = $ref( props.user.hasPendingFollowRequestFromYou @@ -155,7 +162,7 @@ onBeforeUnmount(() => { diff --git a/packages/client/src/components/MkInfo.vue b/packages/client/src/components/MkInfo.vue index 43f2de29e..ba3a606ab 100644 --- a/packages/client/src/components/MkInfo.vue +++ b/packages/client/src/components/MkInfo.vue @@ -1,34 +1,91 @@ diff --git a/packages/client/src/components/MkMediaBanner.vue b/packages/client/src/components/MkMediaBanner.vue index 833100843..576455869 100644 --- a/packages/client/src/components/MkMediaBanner.vue +++ b/packages/client/src/components/MkMediaBanner.vue @@ -1,5 +1,5 @@