Compare commits
4 commits
develop
...
feat/meili
Author | SHA1 | Date | |
---|---|---|---|
|
c489a2d448 | ||
|
3edfdc5e98 | ||
|
1e7cbe9045 | ||
|
2d431ef341 |
501 changed files with 11657 additions and 27807 deletions
|
@ -28,6 +28,12 @@ redis:
|
|||
# user:
|
||||
# pass:
|
||||
|
||||
#meilisearch
|
||||
# host: localhost
|
||||
# port: 7700
|
||||
# ssl: false
|
||||
# apiKey: ''
|
||||
|
||||
id: 'aid'
|
||||
|
||||
reservedUsernames:
|
||||
|
|
|
@ -2,31 +2,32 @@
|
|||
# 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.com/
|
||||
url: https://example.tld/
|
||||
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# URL SETTINGS AFTER THAT!
|
||||
|
||||
# ┌───────────────────────┐
|
||||
#───┘ Port and TLS settings └───────────────────────────────────
|
||||
|
||||
#
|
||||
# Calckey requires a reverse proxy to support HTTPS connections.
|
||||
# Misskey requires a reverse proxy to support HTTPS connections.
|
||||
#
|
||||
# +----- https://example.com/ ------------+
|
||||
# +----- https://example.tld/ ------------+
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# | User | ---> || Proxy (443) | ---> | Calckey (3000) ||
|
||||
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# +---------------------------------------+
|
||||
#
|
||||
# You need to set up a reverse proxy. (e.g. nginx, caddy)
|
||||
# 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 Calckey server should listen on.
|
||||
# The port that your Misskey server should listen on.
|
||||
port: 3000
|
||||
|
||||
# ┌──────────────────────────┐
|
||||
|
@ -61,17 +62,6 @@ 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 └─────────────────────────────────────
|
||||
|
||||
|
@ -82,29 +72,50 @@ redis:
|
|||
# collection: notes
|
||||
# bucket: default
|
||||
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
#meilisearch:
|
||||
# host: meilisearch
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: false
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
|
||||
# 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.
|
||||
# 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.
|
||||
|
||||
# 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
|
||||
# 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 └─────────────────────────────────────
|
||||
|
||||
# Maximum length of a post (default 3000, max 8192)
|
||||
# Max note length, should be < 8000.
|
||||
#maxNoteLength: 3000
|
||||
|
||||
# Maximum length of an image caption (default 1500, max 8192)
|
||||
# Maximum lenght of an image caption or file comment (default 1500, max 8192)
|
||||
#maxCaptionLength: 1500
|
||||
|
||||
# Reserved usernames that only the administrator can register with
|
||||
|
@ -178,21 +189,13 @@ 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
|
||||
|
|
|
@ -10,7 +10,6 @@ packages/backend/.idea/vcs.xml
|
|||
|
||||
# Node.js
|
||||
node_modules
|
||||
**/node_modules
|
||||
report.*.json
|
||||
|
||||
# Cypress
|
||||
|
|
4
.envrc
4
.envrc
|
@ -1,4 +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="
|
||||
if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
|
||||
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
|
||||
fi
|
||||
use flake . --impure
|
||||
|
|
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -33,6 +33,7 @@ coverage
|
|||
built
|
||||
db
|
||||
elasticsearch
|
||||
meili_data
|
||||
redis
|
||||
npm-debug.log
|
||||
*.pem
|
||||
|
@ -62,7 +63,3 @@ yarn*
|
|||
# Nix Development shell items
|
||||
.devenv
|
||||
.direnv
|
||||
|
||||
# Cargo cache for Docker
|
||||
/.cargo-cache
|
||||
/.cargo-target
|
||||
|
|
|
@ -1 +1 @@
|
|||
v18.16.0
|
||||
v16.15.0
|
||||
|
|
16
CALCKEY.md
16
CALCKEY.md
|
@ -8,9 +8,10 @@
|
|||
- Rewrite backend in Rust and [Rocket](https://rocket.rs/)
|
||||
- Use [Magic RegExP](https://regexp.dev/) for RegEx 🦄
|
||||
- Function
|
||||
- Federate with note edits
|
||||
- User "choices" (recommended users) like Mastodon and Soapbox
|
||||
- Join Reason system like Mastodon/Pleroma
|
||||
- Option to publicize server blocks
|
||||
- Option to publicize instance blocks
|
||||
- Build flag to remove NSFW/AI stuff
|
||||
- Filter notifications by user
|
||||
- Exclude self from antenna
|
||||
|
@ -18,7 +19,7 @@
|
|||
- MFM button
|
||||
- Personal notes for all accounts
|
||||
- Fully revamp non-logged-in screen
|
||||
- Lookup/details for post/file/server
|
||||
- Lookup/details for post/file/instance
|
||||
- [Rat mode?](https://stop.voring.me/notes/933fx97bmd)
|
||||
|
||||
## Work in progress
|
||||
|
@ -42,7 +43,7 @@
|
|||
- Upgrade packages with security vunrabilities
|
||||
- Saner defaults
|
||||
- Fediverse account migration
|
||||
- Recommended servers timeline
|
||||
- Recommended instances timeline
|
||||
- OCR image captioning
|
||||
- Improve mobile UX
|
||||
- Swipe through pages on mobile
|
||||
|
@ -70,7 +71,7 @@
|
|||
- Better welcome screen (not logged in)
|
||||
- vue-plyr as video/audio player
|
||||
- Ability to turn off "Connection lost" message
|
||||
- Raw server info only for moderators
|
||||
- Raw instance info only for moderators
|
||||
- New spinner animation
|
||||
- Spinner instead of "Loading..."
|
||||
- SearchX instead of Google
|
||||
|
@ -97,7 +98,7 @@
|
|||
- Obliteration of Ai-chan
|
||||
- Switch to [Calckey.js](https://codeberg.org/calckey/calckey.js)
|
||||
- Woozy mode 🥴
|
||||
- Improve blocking servers
|
||||
- Improve blocking instances
|
||||
- Release notes
|
||||
- New post style
|
||||
- Admins set default reaction emoji
|
||||
|
@ -116,15 +117,14 @@
|
|||
- Sonic search
|
||||
- Popular color schemes, including Nord, Gruvbox, and Catppuccin
|
||||
- Non-nyaify cat mode
|
||||
- Post imports from other Calckey/Misskey/Mastodon/Pleroma/Akkoma servers
|
||||
- Post imports from other Calckey/Misskey/Mastodon/Pleroma/Akkoma instances
|
||||
- Improve Classic mode
|
||||
- Proper Helm/Kubernetes config
|
||||
- Multiple boost visibilities
|
||||
- Improve system emails
|
||||
- Mod mail
|
||||
- Focus trapping and button labels
|
||||
- Meilisearch with filters
|
||||
- Post editing
|
||||
- Meilisearch
|
||||
|
||||
## Implemented (remote)
|
||||
|
||||
|
|
9706
CHANGELOG.md
9706
CHANGELOG.md
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,6 @@ 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
|
||||
|
@ -36,7 +35,7 @@ FROM node:19-alpine
|
|||
WORKDIR /calckey
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN apk add --no-cache --no-progress tini ffmpeg vips-dev zip unzip rust cargo
|
||||
RUN apk add --no-cache --no-progress tini ffmpeg vips-dev zip unzip
|
||||
|
||||
COPY . ./
|
||||
|
||||
|
|
69
README.md
69
README.md
|
@ -23,23 +23,21 @@
|
|||
# ✨ 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 server admins alike.
|
||||
- Calckey adds many quality of life changes and bug fixes for users and instance admins alike.
|
||||
- Read **[this document](./CALCKEY.md)** all for current and future differences.
|
||||
- Notable differences:
|
||||
- Improved UI/UX (especially on mobile)
|
||||
- Post editing
|
||||
- Content importing
|
||||
- Improved notifications
|
||||
- Improved server security
|
||||
- Improved instance security
|
||||
- Improved accessibility
|
||||
- Improved threads
|
||||
- Recommended Servers timeline
|
||||
- Recommended Instances timeline
|
||||
- OCR image captioning
|
||||
- New and improved Groups
|
||||
- Better intro tutorial
|
||||
- Compatibility with Mastodon clients/apps
|
||||
- Backfill user information
|
||||
- Advanced search
|
||||
- Sonic search
|
||||
- Many more user and admin settings
|
||||
- [So much more!](./CALCKEY.md)
|
||||
|
||||
|
@ -52,10 +50,10 @@
|
|||
- 💸 OpenCollective: <https://opencollective.com/Calckey>
|
||||
- 💸 Liberapay: <https://liberapay.com/ThatOneCalculator>
|
||||
- Donate publicly to get your name on the Patron list!
|
||||
- 🚢 Flagship server: <https://calckey.social>
|
||||
- 🚢 Flagship instance: <https://calckey.social>
|
||||
- 📣 Official account: <https://i.calckey.cloud/@calckey>
|
||||
- 💁 Matrix support room: <https://matrix.to/#/#calckey:matrix.fedibird.com>
|
||||
- 📜 Server list: <https://calckey.fediverse.observer/list>
|
||||
- 📜 Instance list: <https://calckey.fediverse.observer/list>
|
||||
- 📖 JoinFediverse Wiki: <https://joinfediverse.wiki/What_is_Calckey%3F>
|
||||
- 🐋 Docker Hub: <https://hub.docker.com/r/thatonecalculator/calckey>
|
||||
- ✍️ Weblate: <https://hosted.weblate.org/engage/calckey/>
|
||||
|
@ -78,14 +76,14 @@ If you have access to a server that supports one of the sources below, I recomme
|
|||
|
||||
## 🧑💻 Dependencies
|
||||
|
||||
- 🐢 At least [NodeJS](https://nodejs.org/en/) v18.16.0 (v20 recommended)
|
||||
- 🐢 At least [NodeJS](https://nodejs.org/en/) v18.12.1 (v19 recommended)
|
||||
- Install with [nvm](https://github.com/nvm-sh/nvm)
|
||||
- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12 (v14 recommended)
|
||||
- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommended)
|
||||
- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12
|
||||
- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommend)
|
||||
- Web Proxy (one of the following)
|
||||
- 🍀 Nginx (recommended)
|
||||
- 🦦 Caddy
|
||||
- 🪶 Apache
|
||||
- 🦦 Caddy
|
||||
|
||||
### 😗 Optional dependencies
|
||||
|
||||
|
@ -97,7 +95,7 @@ If you have access to a server that supports one of the sources below, I recomme
|
|||
|
||||
### 🏗️ Build dependencies
|
||||
|
||||
- 🦀 At least [Rust](https://www.rust-lang.org/) v1.65.0
|
||||
- 🦀 [Rust toolchain](https://www.rust-lang.org/)
|
||||
- 🦬 C/C++ compiler & build tools
|
||||
- `build-essential` on Debian/Ubuntu Linux
|
||||
- `base-devel` on Arch Linux
|
||||
|
@ -106,12 +104,11 @@ If you have access to a server that supports one of the sources below, I recomme
|
|||
## 👀 Get folder ready
|
||||
|
||||
```sh
|
||||
git clone https://codeberg.org/calckey/calckey.git
|
||||
git clone --depth 1 https://codeberg.org/calckey/calckey.git
|
||||
cd calckey/
|
||||
```
|
||||
|
||||
> **Note**
|
||||
> By default, you're on the develop branch. Run `git checkout main` or `git checkout beta` to switch to the Main/Beta branches.
|
||||
By default, you're on the development branch. Run `git checkout beta` or `git checkout main` to switch to the Beta/Main branches.
|
||||
|
||||
## 📩 Install dependencies
|
||||
|
||||
|
@ -132,18 +129,11 @@ 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.
|
||||
[`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
|
||||
|
||||
In PostgreSQL (`psql`), run the following command:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE calckey WITH encoding = 'UTF8';
|
||||
```
|
||||
|
||||
or run the following from the command line:
|
||||
Assuming you set up PostgreSQL correctly, all you have to run is:
|
||||
|
||||
```sh
|
||||
psql postgres -c "create database calckey with encoding = 'UTF8';"
|
||||
|
@ -155,12 +145,11 @@ In Calckey's directory, fill out the `db` section of `.config/default.yml` with
|
|||
|
||||
### 🦔 Sonic
|
||||
|
||||
Sonic is better suited for self hosters with smaller deployments. It uses almost no resources, barely any any disk space, and is relatively fast.
|
||||
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)
|
||||
|
||||
> **Note**
|
||||
> If you use IPv4: in Sonic's directory, edit the `config.cfg` file to change `inet` to `"0.0.0.0:1491"`.
|
||||
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.
|
||||
|
||||
|
@ -179,13 +168,13 @@ Please don't use ElasticSearch unless you already have an ElasticSearch setup an
|
|||
## 💅 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://yourserver.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://yourinstance.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 server
|
||||
## 🧑🔬 Configuring a new instance
|
||||
|
||||
- Run `cp .config/example.yml .config/default.yml`
|
||||
- Edit `.config/default.yml`, making sure to fill out required fields.
|
||||
|
@ -200,10 +189,17 @@ For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](
|
|||
### 🍀 Nginx (recommended)
|
||||
|
||||
- Run `sudo cp ./calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/`
|
||||
- Edit `calckey.nginx.conf` to reflect your server properly
|
||||
- Edit `calckey.nginx.conf` to reflect your instance 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.
|
||||
|
||||
### 🪶 Apache
|
||||
|
||||
- Run `sudo cp ./calckey.apache.conf /etc/apache2/sites-available/ && cd /etc/apache2/sites-available/`
|
||||
- Edit `calckey.apache.conf` to reflect your instance properly
|
||||
- Run `sudo a2ensite calckey.apache` to enable the site
|
||||
- Run `sudo service apache2 restart` to reload apache2 configuration
|
||||
|
||||
### 🦦 Caddy
|
||||
|
||||
- Add the following block to your `Caddyfile`, replacing `example.tld` with your own domain:
|
||||
|
@ -214,15 +210,6 @@ example.tld {
|
|||
```
|
||||
- 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
|
||||
|
@ -249,4 +236,4 @@ pm2 start "NODE_ENV=production pnpm run start" --name Calckey
|
|||
- Go back to Overview > click the clipboard icon next to the ID
|
||||
- Run `psql -d calckey` (or whatever the database name is)
|
||||
- Run `UPDATE "user" SET "isAdmin" = true WHERE id='999999';` (replace `999999` with the copied ID)
|
||||
- Restart your Calckey server
|
||||
- Have the new admin log out and log back in
|
||||
|
|
|
@ -164,6 +164,15 @@ redis:
|
|||
# collection: notes
|
||||
# bucket: default
|
||||
|
||||
# ┌───────────────────────────┐
|
||||
#───┘ MeiliSearch configuration └─────────────────────────────
|
||||
|
||||
#meilisearch:
|
||||
# host: meilisearch
|
||||
# port: 7700
|
||||
# apiKey: ''
|
||||
# ssl: false
|
||||
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
|
|
|
@ -8,9 +8,7 @@ services:
|
|||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
### Uncomment one of the following to use a search engine
|
||||
# - meilisearch
|
||||
# - sonic
|
||||
- sonic
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
|
@ -19,8 +17,6 @@ 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
|
||||
|
||||
|
@ -44,33 +40,17 @@ services:
|
|||
volumes:
|
||||
- ./db:/var/lib/postgresql/data
|
||||
|
||||
### 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
|
||||
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
|
||||
|
|
|
@ -7,8 +7,8 @@ Please note, however, that this environment will not work on Windows outside of
|
|||
|
||||
### 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)
|
||||
- Installed the [Nix Package Manager](https://nixos.org/download.html)
|
||||
- Installed [direnv](https://direnv.net/docs/installation.html) and added its hook to your shell.
|
||||
|
||||
Once the repo is cloned to your computer, follow these next few steps inside the Calckey folder:
|
||||
|
||||
|
@ -20,89 +20,3 @@ Once the repo is cloned to your computer, follow these next few steps inside the
|
|||
- 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 🐳 Running a Calckey server with Docker
|
||||
# 🐳 Running a Calckey instance 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 server settings**)
|
||||
- .config/default.yml (**calckey instance 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 server at.
|
||||
- `url` should be set to the URL you will be hosting the web interface for the instance 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 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).
|
||||
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).
|
||||
|
||||
## Docker for development
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Running a Calckey server with Kubernetes and Helm
|
||||
# Running a Calckey instance 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
|
||||
|
@ -27,7 +27,7 @@ helm upgrade \
|
|||
-f .config/helm_values.yml
|
||||
```
|
||||
|
||||
4. Watch your calckey server spin up:
|
||||
4. Watch your calckey instance spin up:
|
||||
```shell
|
||||
kubectl -n calckey get po -w
|
||||
```
|
||||
|
|
54
flake.lock
generated
54
flake.lock
generated
|
@ -8,11 +8,11 @@
|
|||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685521914,
|
||||
"narHash": "sha256-0fdFP5IASLwJ0PSXrErW8PZon9TVYmi8VRF8OtjGkV4=",
|
||||
"lastModified": 1682953188,
|
||||
"narHash": "sha256-MFH6yK7QnEV6+T96Pt++lH8ozDn4YqzaOXAS6u5h3mM=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "e206d8f2e3e8d6aa943656052f15bdfea8146b8d",
|
||||
"rev": "c388b8c57116a71174d26b09c0c38b4b6b5bac3a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -29,11 +29,11 @@
|
|||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685514167,
|
||||
"narHash": "sha256-urRxF0ZGSNeZjM4kALNg3wTh7fBscbqQmS6S/HU7Wms=",
|
||||
"lastModified": 1682922129,
|
||||
"narHash": "sha256-qnhkfksuuSLbN5UJM+KSCMSRC13bXosr6Ed3NwerRno=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "3abfea51663583186f687c49a157eab1639349ca",
|
||||
"rev": "c1f90f80ba4d60bea60685dd4515fb22d53279cc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -63,11 +63,11 @@
|
|||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685457039,
|
||||
"narHash": "sha256-bEFtQm+YyLxQjKQAaBHJyPN1z2wbhBnr2g1NJWSYjwM=",
|
||||
"lastModified": 1680392223,
|
||||
"narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "80717d11615b6f42d1ad2e18ead51193fc15de69",
|
||||
"rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -155,11 +155,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1678875422,
|
||||
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
|
||||
"lastModified": 1677534593,
|
||||
"narHash": "sha256-PuZSAHeq4/9pP/uYH1FcagQ3nLm/DrDrvKi/xC9glvw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
|
||||
"rev": "3ad64d9e2d5bf80c877286102355b1625891ae9a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -172,11 +172,11 @@
|
|||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"dir": "lib",
|
||||
"lastModified": 1682879489,
|
||||
"narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=",
|
||||
"lastModified": 1680213900,
|
||||
"narHash": "sha256-cIDr5WZIj3EkKyCgj/6j3HBH4Jj1W296z7HTcWj1aMA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0",
|
||||
"rev": "e3652e0735fbec227f342712f180f4f21f0594f2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -205,11 +205,11 @@
|
|||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1678872516,
|
||||
"narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=",
|
||||
"lastModified": 1673800717,
|
||||
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8",
|
||||
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -221,11 +221,11 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1685399834,
|
||||
"narHash": "sha256-Lt7//5snriXSdJo5hlVcDkpERL1piiih0UXIz1RUcC4=",
|
||||
"lastModified": 1682929865,
|
||||
"narHash": "sha256-jxVrgnf5QNjO+XoxDxUWtN2G5xyJSGZ5SWDQFxMuHxc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "58c85835512b0db938600b6fe13cc3e3dc4b364e",
|
||||
"rev": "f2e9a130461950270f87630b11132323706b4d91",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -250,11 +250,11 @@
|
|||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682596858,
|
||||
"narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=",
|
||||
"lastModified": 1677160285,
|
||||
"narHash": "sha256-tBzpCjMP+P3Y3nKLYvdBkXBg3KvTMo3gvi8tLQaqXVY=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "fb58866e20af98779017134319b5663b8215d912",
|
||||
"rev": "2bd861ab81469428d9c823ef72c4bb08372dd2c4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -274,11 +274,11 @@
|
|||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1685465261,
|
||||
"narHash": "sha256-aJ2nUinUrNcFi+pb47bS5IIAeSiUEEPLJY8W4Q8Pcjk=",
|
||||
"lastModified": 1682886915,
|
||||
"narHash": "sha256-FPQKPvlHIU2DsDF6GMoRtrZhil0vHi6MFd8vpKEx/n8=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "d2b3caa5b5694125fad04a9699e919444439f6a2",
|
||||
"rev": "3a27518fee5a723005299cf49e2d58a842a261ca",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
languages.typescript.enable = true;
|
||||
# Enable javascript for NPM and PNPM
|
||||
languages.javascript.enable = true;
|
||||
languages.javascript.package = pkgs.nodejs_18;
|
||||
languages.javascript.package = pkgs.nodejs_19;
|
||||
# Enable stable Rust for the backend
|
||||
languages.rust.enable = true;
|
||||
languages.rust.version = "stable";
|
||||
|
|
112
gulpfile.js
112
gulpfile.js
|
@ -2,98 +2,66 @@
|
|||
* Gulp tasks
|
||||
*/
|
||||
|
||||
const fs = require("fs");
|
||||
const gulp = require("gulp");
|
||||
const replace = require("gulp-replace");
|
||||
const terser = require("gulp-terser");
|
||||
const cssnano = require("gulp-cssnano");
|
||||
const fs = require('fs');
|
||||
const gulp = require('gulp');
|
||||
const replace = require('gulp-replace');
|
||||
const terser = require('gulp-terser');
|
||||
const cssnano = require('gulp-cssnano');
|
||||
|
||||
const locales = require("./locales");
|
||||
const meta = require("./package.json");
|
||||
const locales = require('./locales');
|
||||
const meta = require('./package.json');
|
||||
|
||||
gulp.task("copy:backend:views", () =>
|
||||
gulp
|
||||
.src("./packages/backend/src/server/web/views/**/*")
|
||||
.pipe(gulp.dest("./packages/backend/built/server/web/views")),
|
||||
gulp.task('copy:backend:views', () =>
|
||||
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views'))
|
||||
);
|
||||
|
||||
gulp.task("copy:backend:custom", () =>
|
||||
gulp
|
||||
.src("./custom/assets/**/*")
|
||||
.pipe(gulp.dest("./packages/backend/assets/")),
|
||||
|
||||
gulp.task('copy:backend:custom', () =>
|
||||
gulp.src('./custom/assets/**/*').pipe(gulp.dest('./packages/backend/assets/'))
|
||||
);
|
||||
|
||||
gulp.task("copy:client:fonts", () =>
|
||||
gulp
|
||||
.src("./packages/client/node_modules/three/examples/fonts/**/*")
|
||||
.pipe(gulp.dest("./built/_client_dist_/fonts/")),
|
||||
gulp.task('copy:client:fonts', () =>
|
||||
gulp.src('./packages/client/node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/_client_dist_/fonts/'))
|
||||
);
|
||||
|
||||
gulp.task("copy:client:locales", (cb) => {
|
||||
fs.mkdirSync("./built/_client_dist_/locales", { recursive: true });
|
||||
gulp.task('copy:client:locales', cb => {
|
||||
fs.mkdirSync('./built/_client_dist_/locales', { recursive: true });
|
||||
|
||||
const v = { _version_: meta.version };
|
||||
const v = { '_version_': meta.version };
|
||||
|
||||
for (const [lang, locale] of Object.entries(locales)) {
|
||||
fs.writeFileSync(
|
||||
`./built/_client_dist_/locales/${lang}.${meta.version}.json`,
|
||||
JSON.stringify({ ...locale, ...v }),
|
||||
"utf-8",
|
||||
);
|
||||
fs.writeFileSync(`./built/_client_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
|
||||
}
|
||||
|
||||
cb();
|
||||
});
|
||||
|
||||
gulp.task("build:backend:script", () => {
|
||||
return gulp
|
||||
.src([
|
||||
"./packages/backend/src/server/web/boot.js",
|
||||
"./packages/backend/src/server/web/bios.js",
|
||||
"./packages/backend/src/server/web/cli.js",
|
||||
])
|
||||
.pipe(replace("LANGS", JSON.stringify(Object.keys(locales))))
|
||||
.pipe(
|
||||
terser({
|
||||
toplevel: true,
|
||||
}),
|
||||
)
|
||||
.pipe(gulp.dest("./packages/backend/built/server/web/"));
|
||||
|
||||
gulp.task('build:backend:script', () => {
|
||||
return gulp.src(['./packages/backend/src/server/web/boot.js', './packages/backend/src/server/web/bios.js', './packages/backend/src/server/web/cli.js'])
|
||||
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
|
||||
.pipe(terser({
|
||||
toplevel: true
|
||||
}))
|
||||
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||
});
|
||||
|
||||
gulp.task("build:backend:style", () => {
|
||||
return gulp
|
||||
.src([
|
||||
"./packages/backend/src/server/web/style.css",
|
||||
"./packages/backend/src/server/web/bios.css",
|
||||
"./packages/backend/src/server/web/cli.css",
|
||||
])
|
||||
.pipe(
|
||||
cssnano({
|
||||
zindex: false,
|
||||
}),
|
||||
)
|
||||
.pipe(gulp.dest("./packages/backend/built/server/web/"));
|
||||
gulp.task('build:backend:style', () => {
|
||||
return gulp.src(['./packages/backend/src/server/web/style.css', './packages/backend/src/server/web/bios.css', './packages/backend/src/server/web/cli.css'])
|
||||
.pipe(cssnano({
|
||||
zindex: false
|
||||
}))
|
||||
.pipe(gulp.dest('./packages/backend/built/server/web/'));
|
||||
});
|
||||
|
||||
gulp.task(
|
||||
"build",
|
||||
gulp.parallel(
|
||||
"copy:client:locales",
|
||||
"copy:backend:views",
|
||||
"copy:backend:custom",
|
||||
"build:backend:script",
|
||||
"build:backend:style",
|
||||
"copy:client:fonts",
|
||||
),
|
||||
);
|
||||
gulp.task('build', gulp.parallel(
|
||||
'copy:client:locales', 'copy:backend:views', 'copy:backend:custom', 'build:backend:script', 'build:backend:style', 'copy:client:fonts'
|
||||
));
|
||||
|
||||
gulp.task("default", gulp.task("build"));
|
||||
gulp.task('default', gulp.task('build'));
|
||||
|
||||
gulp.task("watch", () => {
|
||||
gulp.watch(
|
||||
["./packages/*/src/**/*"],
|
||||
{ ignoreInitial: false },
|
||||
gulp.task("build"),
|
||||
);
|
||||
gulp.task('watch', () => {
|
||||
gulp.watch([
|
||||
'./packages/*/src/**/*',
|
||||
], { ignoreInitial: false }, gulp.task('build'));
|
||||
});
|
||||
|
|
|
@ -68,5 +68,3 @@ body:
|
|||
options:
|
||||
- label: I agree to follow this project's Contribution Guidelines
|
||||
required: true
|
||||
- label: I have searched the issue tracker for similar issues, and this is not a duplicate.
|
||||
required: true
|
||||
|
|
|
@ -40,6 +40,26 @@ body:
|
|||
placeholder: stop.voring.me
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: browsers
|
||||
attributes:
|
||||
label: What browser are you using?
|
||||
multiple: false
|
||||
options:
|
||||
- Firefox
|
||||
- Chrome
|
||||
- Brave
|
||||
- Librewolf
|
||||
- Chromium
|
||||
- Safari
|
||||
- Microsoft Edge
|
||||
- Other (Please Specify)
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
|
@ -48,5 +68,3 @@ body:
|
|||
options:
|
||||
- label: I agree to follow this project's Contribution Guidelines
|
||||
required: true
|
||||
- label: I have searched the issue tracker for similar requests, and this is not a duplicate.
|
||||
required: true
|
||||
|
|
|
@ -176,6 +176,7 @@ operations: "الإجراءات"
|
|||
software: "البرمجية"
|
||||
version: "الإصدار"
|
||||
metadata: "البيانات الوصفية"
|
||||
withNFiles: "{n} ملف (ملفات)"
|
||||
monitor: "شاشة التحكم"
|
||||
jobQueue: "قائمة الانتظار"
|
||||
cpuAndMemory: "وحدة المعالجة المركزية والذاكرة"
|
||||
|
@ -1049,8 +1050,8 @@ _tutorial:
|
|||
step6_4: "Now go, explore, and have fun!"
|
||||
_2fa:
|
||||
alreadyRegistered: "سجلت سلفًا جهازًا للاستيثاق بعاملين."
|
||||
registerTOTP: "سجّل جهازًا جديدًا"
|
||||
registerSecurityKey: "تسجيل مفتاح أمان جديد"
|
||||
registerDevice: "سجّل جهازًا جديدًا"
|
||||
registerKey: "تسجيل مفتاح أمان جديد"
|
||||
step1: "أولًا ثبّت تطبيق استيثاق على جهازك (مثل {a} و{b})."
|
||||
step2: "امسح رمز الاستجابة السريعة الموجد على الشاشة."
|
||||
step3: "أدخل الرمز الموجود في تطبيقك لإكمال التثبيت."
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "ক্রিয়াকলাপ"
|
|||
software: "সফটওয়্যার"
|
||||
version: "সংস্করণ"
|
||||
metadata: "মেটাডাটা"
|
||||
withNFiles: "{n} টি ফাইল"
|
||||
monitor: "মনিটর"
|
||||
jobQueue: "জব কিউ"
|
||||
cpuAndMemory: "সিপিউ এবং মেমরি"
|
||||
|
@ -1130,8 +1131,8 @@ _tutorial:
|
|||
step6_4: "Now go, explore, and have fun!"
|
||||
_2fa:
|
||||
alreadyRegistered: "আপনি ইতিমধ্যে একটি 2-ফ্যাক্টর অথেনটিকেশন ডিভাইস নিবন্ধন করেছেন৷"
|
||||
registerTOTP: "নতুন ডিভাইস নিবন্ধন করুন"
|
||||
registerSecurityKey: "সিকিউরিটি কী নিবন্ধন করুন"
|
||||
registerDevice: "নতুন ডিভাইস নিবন্ধন করুন"
|
||||
registerKey: "সিকিউরিটি কী নিবন্ধন করুন"
|
||||
step1: "প্রথমে, আপনার ডিভাইসে {a} বা {b} এর মতো একটি অথেনটিকেশন অ্যাপ ইনস্টল করুন৷"
|
||||
step2: "এরপরে, অ্যাপের সাহায্যে প্রদর্শিত QR কোডটি স্ক্যান করুন।"
|
||||
step2Url: "ডেস্কটপ অ্যাপে, নিম্নলিখিত URL লিখুন:"
|
||||
|
|
|
@ -67,7 +67,7 @@ files: "Fitxers"
|
|||
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 a {name}?"
|
||||
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."
|
||||
|
@ -136,10 +136,10 @@ smtpUser: "Nom d'usuari"
|
|||
smtpPass: "Contrasenya"
|
||||
user: "Usuari"
|
||||
searchByGoogle: "Cercar"
|
||||
file: "Fitxer"
|
||||
file: "Fitxers"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Tens un nou seguidor"
|
||||
title: "t'ha seguit"
|
||||
_receiveFollowRequest:
|
||||
title: Heu rebut una sol·licitud de seguiment
|
||||
_mfm:
|
||||
|
@ -226,13 +226,6 @@ _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.
|
||||
crop: Retallar
|
||||
advanced: MFM avançat
|
||||
advancedDescription: Si està desactivat, només permet l'etiquetatge bàsic tret que
|
||||
es reproduïnt un MFM animat
|
||||
cropDescription: Retalla el contingut.
|
||||
_theme:
|
||||
keys:
|
||||
mention: "Menció"
|
||||
|
@ -319,40 +312,21 @@ _sfx:
|
|||
_2fa:
|
||||
step2Url: "També pots inserir aquest enllaç i utilitzes una aplicació d'escriptori:"
|
||||
alreadyRegistered: Ja heu registrat un dispositiu d'autenticació de dos factors.
|
||||
registerTOTP: Registrar un dispositiu nou
|
||||
registerDevice: Registrar un dispositiu nou
|
||||
securityKeyInfo: A més de l'autenticació d'empremta digital o PIN, també podeu configurar
|
||||
l'autenticació mitjançant claus de seguretat de maquinari compatibles amb FIDO2
|
||||
per protegir encara més el vostre compte.
|
||||
step4: A partir d'ara, qualsevol intent d'inici de sessió futur demanarà aquest
|
||||
token d'inici de sessió.
|
||||
registerSecurityKey: Registrar una clau de seguretat o d'accés
|
||||
registerKey: Registra una clau de seguretat
|
||||
step1: En primer lloc, instal·la una aplicació d'autenticació (com ara {a} o {b})
|
||||
al dispositiu.
|
||||
step2: A continuació, escaneja el codi QR que es mostra en aquesta pantalla.
|
||||
step3: Introdueix el token que t'ha proporcionat l'aplicació per finalitzar la configuració.
|
||||
step3Title: Introduïu un codi d'autenticació
|
||||
chromePasskeyNotSupported: Les claus de pas de Chrome actualment no s'admeten.
|
||||
securityKeyName: Introduïu un nom de clau
|
||||
removeKey: Suprimeix la clau de seguretat
|
||||
removeKeyConfirm: Vols suprimir la clau {name}?
|
||||
renewTOTP: Tornar a configurar l'aplicació d'autenticació
|
||||
renewTOTPOk: Reconfigurar
|
||||
renewTOTPCancel: Cancel·lar
|
||||
step2Click: Fer clic en aquest codi QR us permetrà registrar 2FA a la vostra clau
|
||||
de seguretat o aplicació d'autenticació del telèfon.
|
||||
securityKeyNotSupported: El vostre navegador no admet claus de seguretat.
|
||||
registerTOTPBeforeKey: Configureu una aplicació d'autenticació per registrar una
|
||||
clau de seguretat o de passi.
|
||||
tapSecurityKey: Si us plau, seguiu el vostre navegador per registrar la clau de
|
||||
seguretat o d'accés
|
||||
renewTOTPConfirm: Això farà que els codis de verificació de l'aplicació anterior
|
||||
deixin de funcionar
|
||||
whyTOTPOnlyRenew: L’aplicació d’autenticació no es pot eliminar sempre que es hi
|
||||
hagi una clau de seguretat registrada.
|
||||
_widgets:
|
||||
notifications: "Notificacions"
|
||||
timeline: "Línia de temps"
|
||||
unixClock: Rellotge d'UNIX
|
||||
unixClock: Rellotge UNIX
|
||||
federation: Federació
|
||||
instanceCloud: Núvol de servidors
|
||||
trends: Tendència
|
||||
|
@ -360,13 +334,13 @@ _widgets:
|
|||
calendar: Calendari
|
||||
activity: Activitat
|
||||
photos: Fotos
|
||||
rssTicker: Teletip RSS
|
||||
rssTicker: Ticker RSS
|
||||
onlineUsers: Usuaris en línia
|
||||
memo: Notes adhesives
|
||||
digitalClock: Rellotge digital
|
||||
postForm: Formulari per publicar
|
||||
postForm: Formulari de notes
|
||||
slideshow: Presentació de diapositives
|
||||
serverMetric: Estadístiques del servidor
|
||||
serverMetric: Mètriques del servidor
|
||||
userList: Llista d'usuaris
|
||||
rss: Lector d'RSS
|
||||
jobQueue: Cua de treball
|
||||
|
@ -374,10 +348,6 @@ _widgets:
|
|||
chooseList: Selecciona una llista
|
||||
aiscript: Consola AiScript
|
||||
button: Botó
|
||||
serverInfo: Informació del servidor
|
||||
meiliStatus: Estat del servidor
|
||||
meiliSize: Mida de l'índex
|
||||
meiliIndexCount: Publicacions indexades
|
||||
_cw:
|
||||
show: "Carregar més"
|
||||
files: '{count} fitxers'
|
||||
|
@ -410,7 +380,7 @@ _profile:
|
|||
metadataDescription: Fent servir això, podràs mostrar camps d'informació addicionals
|
||||
al vostre perfil.
|
||||
_exportOrImport:
|
||||
followingList: "Usuaris que segueixes"
|
||||
followingList: "Seguint"
|
||||
muteList: "Silencia"
|
||||
blockingList: "Bloqueja"
|
||||
userLists: "Llistes"
|
||||
|
@ -712,7 +682,7 @@ _pages:
|
|||
_notification:
|
||||
youWereFollowed: "t'ha seguit"
|
||||
_types:
|
||||
follow: "Nous seguidors"
|
||||
follow: "Seguint"
|
||||
mention: "Menció"
|
||||
renote: "Impulsos"
|
||||
quote: "Citar"
|
||||
|
@ -728,7 +698,7 @@ _notification:
|
|||
_actions:
|
||||
reply: "Respondre"
|
||||
renote: "Impulsos"
|
||||
followBack: t'ha tornat el seguiment
|
||||
followBack: et va seguir de tornada
|
||||
youGotQuote: "{name} t'ha citat"
|
||||
fileUploaded: El fitxer s'ha penjat correctament
|
||||
youGotMention: "{nom} t'ha esmentat"
|
||||
|
@ -742,9 +712,6 @@ _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"
|
||||
|
@ -753,9 +720,8 @@ _deck:
|
|||
mentions: "Mencions"
|
||||
widgets: Ginys
|
||||
main: Principal
|
||||
antenna: Antena
|
||||
antenna: Antenes
|
||||
direct: Missatges directes
|
||||
channel: Canal
|
||||
alwaysShowMainColumn: Mostra sempre la columna principal
|
||||
columnAlign: Alinear columnes
|
||||
introduction: Crea la interfície perfecta per a tu organitzant columnes lliurement!
|
||||
|
@ -809,7 +775,7 @@ showOnRemote: Mostra al servidor remot
|
|||
wallpaper: Fons de pantalla
|
||||
setWallpaper: Estableix fons de pantalla
|
||||
removeWallpaper: Elimina el fons de pantalla
|
||||
followConfirm: Segur que vols seguir a {name}?
|
||||
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
|
||||
|
@ -820,6 +786,7 @@ selectUser: Selecciona un usuari
|
|||
latestStatus: Últim estat
|
||||
storageUsage: Ús del emmagatzematge
|
||||
metadata: Metadades
|
||||
withNFiles: '{n} fitxer(s)'
|
||||
monitor: Seguiment
|
||||
software: Programari
|
||||
version: Versió
|
||||
|
@ -1007,7 +974,7 @@ avoidMultiCaptchaConfirm: Fent servir diferents sistemes de Captcha pot causar i
|
|||
antennas: Antenes
|
||||
enableEmojiReactions: Activa reaccions amb emojis
|
||||
blockThisInstance: Bloqueja aquest servidor
|
||||
registration: Registra't
|
||||
registration: Registre
|
||||
showEmojisInReactionNotifications: Mostra els emojis a les notificacions de les reaccions
|
||||
renoteMute: Silencia els impulsos
|
||||
renoteUnmute: Treu el silenci als impulsos
|
||||
|
@ -1054,7 +1021,7 @@ recentlyRegisteredUsers: Usuaris registrats fa poc
|
|||
recentlyDiscoveredUsers: Nous suaris descoberts
|
||||
administrator: Administrador
|
||||
token: Token
|
||||
registerSecurityKey: Registreu una clau de seguretat
|
||||
registerSecurityKey: Registra una clau de seguretat
|
||||
securityKeyName: Nom clau
|
||||
lastUsed: Feta servir per última vegada
|
||||
unregister: Anul·lar el registre
|
||||
|
@ -1207,7 +1174,7 @@ large: Gran
|
|||
notificationSetting: Preferències de notificacions
|
||||
makeActive: Activar
|
||||
notificationSettingDesc: Tria el tipus de notificació que es veure.
|
||||
notifyAntenna: Notificar publicacions noves
|
||||
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
|
||||
|
@ -1267,7 +1234,7 @@ sample: Exemple
|
|||
abuseReports: Informes
|
||||
reportAbuse: Informe
|
||||
reporter: Informador
|
||||
reporterOrigin: Origen informador
|
||||
reporterOrigin: Origen d'el informador
|
||||
forwardReport: Envia l'informe a un servidor remot
|
||||
abuseReported: El teu informe ha sigut enviat. Moltes gràcies.
|
||||
reporteeOrigin: Origen de l'informe
|
||||
|
@ -1323,7 +1290,7 @@ loadRawImages: Carregar les imatges originals en comptes de mostrar les miniatur
|
|||
noteFavoritesCount: Nombre de notes afegides a favorits
|
||||
useSystemFont: Fes servir la font per defecte del sistema
|
||||
contact: Contacte
|
||||
clips: Retalls
|
||||
clips: Clips
|
||||
experimentalFeatures: Característiques experimentals
|
||||
developer: Desenvolupador
|
||||
makeExplorableDescription: Si desactives aquesta funció el teu compte no sortirà a
|
||||
|
@ -1529,7 +1496,7 @@ gallery: Galeria
|
|||
popularPosts: Pàgines populars
|
||||
shareWithNote: Comparteix amb una publicació
|
||||
expiration: Data límit
|
||||
memo: Recordatori
|
||||
memo: Memo
|
||||
priority: Prioritat
|
||||
high: Alta
|
||||
middle: Mitjana
|
||||
|
@ -1555,7 +1522,7 @@ aiChanMode: Ai-chan a la interfície d'usuari clàssica
|
|||
keepCw: Mantenir els avisos de contingut
|
||||
pubSub: Comptes Pub/Sub
|
||||
lastCommunication: Última comunicació
|
||||
breakFollowConfirm: Confirmes que vols eliminar el seguidor?
|
||||
breakFollowConfirm: Confirmes que vols eliminar un seguidor?
|
||||
itsOn: Activat
|
||||
itsOff: Desactivat
|
||||
emailRequiredForSignup: Requereix una adreça de correu electrònic per registrar-te
|
||||
|
@ -1570,7 +1537,7 @@ incorrectPassword: Contrasenya incorrecta.
|
|||
clickToFinishEmailVerification: Feu clic a [{ok}] per completar la verificació del
|
||||
correu electrònic.
|
||||
overridedDeviceKind: Tipus de dispositiu
|
||||
smartphone: Telèfon intel·ligent
|
||||
smartphone: Smartphone
|
||||
tablet: Tauleta
|
||||
auto: Automàtic
|
||||
recentNHours: Últimes {n} hores
|
||||
|
@ -1614,7 +1581,7 @@ 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 servidors bloquejats.
|
||||
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 '<host>' o '<host>:<port>', depend del proveïdor
|
||||
que facis servir.
|
||||
|
@ -1647,7 +1614,7 @@ enableAutoSensitiveDescription: Permet la detecció i el marcatge automàtics de
|
|||
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]{content}.
|
||||
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
|
||||
|
@ -1658,7 +1625,7 @@ customKaTeXMacroDescription: "Configura macros per escriure expressions matemàt
|
|||
objectStorageRegion: Regió
|
||||
objectStoragePrefix: Prefix
|
||||
objectStoragePrefixDesc: Els fitxers es guardaran dins de carpetes amb aquest prefix.
|
||||
objectStorageEndpoint: Extrem
|
||||
objectStorageEndpoint: Endpoint
|
||||
newNoteRecived: Hi han notes noves
|
||||
sounds: Sons
|
||||
listen: Escoltar
|
||||
|
@ -1702,14 +1669,14 @@ 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 que segueixes
|
||||
removeAllFollowing: Deixar de seguir a tots els que segueixis
|
||||
accentColor: Color principal
|
||||
textColor: Color del text
|
||||
value: Valor
|
||||
sendErrorReportsDescription: "Quan està activat, quan es produeixi un problema la
|
||||
informació detallada d'errors es compartirà amb Calckey, ajudant a millorar la qualitat
|
||||
de Calckey.\nAixò inclourà informació com la versió del vostre sistema operatiu,
|
||||
quin navegador utilitzeu, la vostra 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...
|
||||
|
@ -1737,9 +1704,7 @@ 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: 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.
|
||||
isSystemAccount: Un compte creat i operat automàticament pel sistema.
|
||||
typeToConfirm: Introduïu {x} per confirmar
|
||||
deleteAccount: Suprimeix el compte
|
||||
document: Documentació
|
||||
|
@ -1781,12 +1746,12 @@ reverse: Revés
|
|||
objectStorageBucket: Cubell
|
||||
objectStorageBucketDesc: Si us plau específica el nom del cubell que faràs servir
|
||||
al teu proveïdor.
|
||||
clip: Retall
|
||||
clip: Clip
|
||||
createNew: Crear una nova
|
||||
optional: Opcional
|
||||
jumpToSpecifiedDate: Vés a una data concreta
|
||||
showingPastTimeline: Ara es mostra un línea de temps antiga
|
||||
clear: Netejar
|
||||
clear: Tornar
|
||||
markAllAsRead: Marcar tot com a llegit
|
||||
recentPosts: Pàgines recents
|
||||
noMaintainerInformationWarning: La informació de l'administrador no està configurada.
|
||||
|
@ -1800,7 +1765,7 @@ welcomeBackWithName: Benvingut de nou, {name}
|
|||
showLocalPosts: 'Mostra les notes locals a:'
|
||||
homeTimeline: Línea de temps Inicial
|
||||
socialTimeline: Línea de temps Social
|
||||
themeColor: Color del Teletip del servidor
|
||||
themeColor: Color del Ticker del servidor
|
||||
size: Mida
|
||||
numberOfColumn: Nombre de columnes
|
||||
numberOfPageCache: Nombre de pàgines emmagatzemades a la memòria cau
|
||||
|
@ -1830,8 +1795,8 @@ pushNotificationNotSupported: El vostre navegador o servidor no admet notificaci
|
|||
push
|
||||
license: Llicència
|
||||
indexPosts: Índex de notes
|
||||
indexFrom: Índex a partir de l'ID de Publicacions
|
||||
indexFromDescription: Deixeu en blanc per indexar cada publicació
|
||||
indexFrom: Índex a partir de l'ID de Publicacions (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:
|
||||
|
@ -1851,7 +1816,7 @@ _channel:
|
|||
featured: Tendència
|
||||
owned: Propietari
|
||||
usersCount: '{n} Participants'
|
||||
following: Seguit per
|
||||
following: Seguit
|
||||
notesCount: '{n} Notes'
|
||||
nameAndDescription: Nom i descripció
|
||||
nameOnly: Només nom
|
||||
|
@ -1869,7 +1834,7 @@ _ago:
|
|||
hoursAgo: Fa {n}h
|
||||
daysAgo: Fa {n}d
|
||||
secondsAgo: Fa {n}s
|
||||
weeksAgo: Fa {n}set
|
||||
weeksAgo: Fa {n}s
|
||||
monthsAgo: Fa {n}me
|
||||
yearsAgo: Fa {n}a
|
||||
_time:
|
||||
|
@ -1884,7 +1849,7 @@ _tutorial:
|
|||
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 que recomanen els administradors.
|
||||
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?
|
||||
|
@ -1902,9 +1867,9 @@ _tutorial:
|
|||
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 d'inici i social 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."
|
||||
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!
|
||||
|
@ -1995,13 +1960,13 @@ _instanceCharts:
|
|||
users: Diferència en el nombre d'usuaris
|
||||
usersTotal: Nombre acumulat d'usuaris
|
||||
notes: Diferència en el nombre de notes
|
||||
ffTotal: Nombre acumulat d'usuaris que segueixes/et segueixen
|
||||
ffTotal: Nombre acumulat d'usuaris seguits/seguidors seguits
|
||||
cacheSize: Diferència en la mida de la memòria cau
|
||||
cacheSizeTotal: Mida total acumulada de la memòria cau
|
||||
files: Diferència en el nombre de fitxers
|
||||
filesTotal: Nombre acumulat de fitxers
|
||||
notesTotal: Nombre acumulat de notes
|
||||
ff: "Diferència en el nombre d'usuaris que segueixes/que et segueixen "
|
||||
ff: "Diferència en el nombre d'usuaris seguits/seguidors seguits "
|
||||
_timelines:
|
||||
home: Inici
|
||||
local: Local
|
||||
|
@ -2035,7 +2000,7 @@ _auth:
|
|||
callback: Tornant a l'aplicació
|
||||
denied: Accés denegat
|
||||
pleaseGoBack: Si us plau, torneu a l'aplicació
|
||||
copyAsk: Posa el següent codi d'autorització a l'aplicació
|
||||
copyAsk: Enganxeu el següent codi d'autorització a l'aplicació
|
||||
_weekday:
|
||||
wednesday: Dimecres
|
||||
saturday: Dissabte
|
||||
|
@ -2049,7 +2014,7 @@ _messaging:
|
|||
dms: Privat
|
||||
_antennaSources:
|
||||
all: Totes les notes
|
||||
homeTimeline: Publicacions dels usuaris que segueixes
|
||||
homeTimeline: Notes dels usuaris que segueixes
|
||||
users: Notes d'usuaris concrets
|
||||
userGroup: Notes d'usuaris d'un grup determinat
|
||||
userList: Notes d'una llista determinada d'usuaris
|
||||
|
@ -2060,7 +2025,7 @@ _relayStatus:
|
|||
rejected: Rebutjat
|
||||
deleted: Eliminat
|
||||
editNote: Edita la nota
|
||||
edited: 'Editat a {date} {time}'
|
||||
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ó
|
||||
|
@ -2082,52 +2047,7 @@ _experiments:
|
|||
enablePostEditing: Activà l'edició de publicacions
|
||||
title: Experiments
|
||||
postEditingCaption: Mostra l'opció perquè els usuaris editin les seves publicacions
|
||||
mitjançant el menú d'opcions de publicació, i permet rebre publicacions editades
|
||||
d'altres servidors.
|
||||
enablePostImports: Activar l'importació de publicacions
|
||||
postImportsCaption: Permet els usuaris importar publicacions desde comptes a Calckey,
|
||||
Misskey, Mastodon, Akkoma i Pleroma. Pot fer que el servidor vagi més lent durant
|
||||
la càrrega si tens un coll d'ampolla a la cua.
|
||||
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
|
||||
antennasDesc: "Les antenes mostren publicacions noves que coincideixen amb els criteris
|
||||
establerts!\nS'hi pot accedir des de la pàgina de línies de temps."
|
||||
expandOnNoteClick: Obre la publicació amb un clic
|
||||
expandOnNoteClickDesc: Si està desactivat, encara pots obrir les publicacions al menú
|
||||
del botó dret o fent clic a la marca de temps.
|
||||
channelFederationWarn: Els canals encara no es federen amb altres servidors
|
||||
searchPlaceholder: Cerca a Calckey
|
||||
listsDesc: Les llistes et permeten crear línies de temps amb usuaris específics. Es
|
||||
pot accedir des de la pàgina de línies de temps.
|
||||
clipsDesc: Els clips són com marcadors categoritzats que es poden compartir. Podeu
|
||||
crear clips des del menú de publicacions individuals.
|
||||
selectChannel: Selecciona un canal
|
||||
isLocked: Aquest compte té les següents aprovacions
|
||||
isPatron: Mecenes de Calkey
|
||||
isBot: Aquest compte és un bot
|
||||
isModerator: Moderador
|
||||
isAdmin: Administrador
|
||||
_filters:
|
||||
fromDomain: Des del domini
|
||||
notesBefore: Publicacions anteriors
|
||||
notesAfter: Publicacions posteriors
|
||||
followingOnly: Només seguint
|
||||
followersOnly: Només seguidors
|
||||
withFile: Amb arxiu
|
||||
fromUser: De l'usuari
|
||||
image: Imatge
|
||||
video: Vídeo
|
||||
audio: Àudio
|
||||
_dialog:
|
||||
charactersExceeded: "S'han superat el màxim de caràcters! Actual: {current}/Límit:
|
||||
{max}"
|
||||
charactersBelow: 'No hi ha caràcters suficients! Corrent: {current}/Limit: {min}'
|
||||
removeReaction: Elimina la teva reacció
|
||||
|
|
|
@ -189,6 +189,7 @@ operations: "Operace"
|
|||
software: "Software"
|
||||
version: "Verze"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} soubor(ů)"
|
||||
monitor: "Monitorovat"
|
||||
jobQueue: "Fronta úloh"
|
||||
cpuAndMemory: "CPU a paměť"
|
||||
|
@ -698,8 +699,8 @@ _time:
|
|||
minute: "Minut"
|
||||
hour: "Hodin"
|
||||
_2fa:
|
||||
registerTOTP: "Přidat zařízení"
|
||||
registerSecurityKey: "Přidat bezpečnostní klíč"
|
||||
registerDevice: "Přidat zařízení"
|
||||
registerKey: "Přidat bezpečnostní klíč"
|
||||
_weekday:
|
||||
sunday: "Neděle"
|
||||
monday: "Pondělí"
|
||||
|
@ -963,7 +964,7 @@ disablingTimelinesInfo: Administrátoři a moderátoři budou vždy mít příst
|
|||
časovým osám, i pokud jsou vypnuté.
|
||||
deleted: Vymazáno
|
||||
editNote: Upravit poznámku
|
||||
edited: 'Upraveno dne {date} {time}'
|
||||
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é
|
||||
|
|
|
@ -83,7 +83,7 @@ deleteAndEditConfirm: Er du sikker på at du vil slet denne opslag og ændre det
|
|||
vil tabe alle reaktioner, forstærkninger og svarer indenfor denne opslag.
|
||||
editNote: Ændre note
|
||||
deleted: Slettet
|
||||
edited: 'Ændret den {date} {time}'
|
||||
edited: Ændret
|
||||
sendMessage: Send en besked
|
||||
youShouldUpgradeClient: Til at vise denne side, vær sød at refresh til at opdatere
|
||||
din brugerenhed.
|
||||
|
@ -117,6 +117,7 @@ operations: Operationer
|
|||
software: Software
|
||||
metadata: Metadata
|
||||
version: Version
|
||||
withNFiles: '{n} fil(er)'
|
||||
monitor: Vagt
|
||||
jobQueue: Jobkø
|
||||
statistics: Statistik
|
||||
|
@ -216,21 +217,3 @@ perHour: Hver time
|
|||
perDay: Hver dag
|
||||
stopActivityDelivery: Stop med at sende aktiviteter
|
||||
blockThisInstance: Blokere denne instans
|
||||
muteAndBlock: Mutes og blokeringer
|
||||
mutedUsers: Mutede brugere
|
||||
newer: nyere
|
||||
older: ældre
|
||||
silencedInstances: Nedtonede servere
|
||||
clearQueue: Ryd kø
|
||||
clearQueueConfirmTitle: Er du sikker på, at du ønsker at rydde køen?
|
||||
clearCachedFiles: Ryd cache
|
||||
clearCachedFilesConfirm: Er du sikker på, at du ønsker at slette alle cachede eksterne
|
||||
filer?
|
||||
blockedInstances: Blokerede servere
|
||||
blockedInstancesDescription: Listen af navne på servere, du ønsker at blokere. Servere
|
||||
på listen vil ikke længere kunne kommunikere med denne server.
|
||||
hiddenTags: Skjulte hashtags
|
||||
clearQueueConfirmText: De indlæg i denne kø, der ikke allerede er leveret, vil ikke
|
||||
blive federeret. Denne operation er almindeligvis ikke påkrævet.
|
||||
jumpToPrevious: Spring til tidligere
|
||||
cw: Advarsel om indhold
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -435,6 +435,7 @@ nothing: Δεν υπάρχει τίποτα να δείτε εδώ
|
|||
newNoteRecived: Υπάρχουν νέες δημοσιεύσεις
|
||||
passwordMatched: Ταιριάζει
|
||||
unmarkAsSensitive: Αναίρεση επισήμανσης ως Ευαίσθητο Περιεχόμενο (NSFW)
|
||||
withNFiles: '{n} αρχείο(-α)'
|
||||
blockedUsers: Μπλοκαρισμένα μέλη
|
||||
noteDeleteConfirm: Θέλετε σίγουρα να διαγράψετε αυτή τη δημοσίευση;
|
||||
preview: Προεπισκόπηση
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -195,6 +195,7 @@ operations: "Operaciones"
|
|||
software: "Software"
|
||||
version: "Versión"
|
||||
metadata: "Metadatos"
|
||||
withNFiles: "{n} archivos"
|
||||
monitor: "Monitor"
|
||||
jobQueue: "Cola de trabajos"
|
||||
cpuAndMemory: "CPU y Memoria"
|
||||
|
@ -1331,8 +1332,8 @@ _tutorial:
|
|||
step6_4: "¡Ahora ve, explora y diviértete!"
|
||||
_2fa:
|
||||
alreadyRegistered: "Ya has completado la configuración."
|
||||
registerTOTP: "Registrar dispositivo"
|
||||
registerSecurityKey: "Registrar clave"
|
||||
registerDevice: "Registrar dispositivo"
|
||||
registerKey: "Registrar clave"
|
||||
step1: "Primero, instale en su dispositivo la aplicación de autenticación {a} o\
|
||||
\ {b} u otra."
|
||||
step2: "Luego, escanee con la aplicación el código QR mostrado en pantalla."
|
||||
|
@ -1922,7 +1923,7 @@ apps: Aplicaciones
|
|||
migration: Migración
|
||||
silenced: Silenciado
|
||||
deleted: Eliminado
|
||||
edited: 'Editado a las {date} {time}'
|
||||
edited: Editado
|
||||
editNote: Editar nota
|
||||
silenceThisInstance: Silenciar esta instancia
|
||||
findOtherInstance: Buscar otro servidor
|
||||
|
|
|
@ -182,6 +182,7 @@ 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?
|
||||
|
@ -831,7 +832,7 @@ makeReactionsPublic: Aseta reaktiohistoria julkiseksi
|
|||
unread: Lukematon
|
||||
deleted: Poistettu
|
||||
editNote: Muokkaa viestiä
|
||||
edited: 'Muokattu klo {date} {time}'
|
||||
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ä.
|
||||
|
|
|
@ -201,6 +201,7 @@ 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"
|
||||
|
@ -1076,8 +1077,6 @@ _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.
|
||||
|
@ -1262,8 +1261,8 @@ _tutorial:
|
|||
step6_4: "Maintenant, allez-y, explorez et amusez-vous !"
|
||||
_2fa:
|
||||
alreadyRegistered: "Configuration déjà achevée."
|
||||
registerTOTP: "Ajouter un nouvel appareil"
|
||||
registerSecurityKey: "Enregistrer une clef"
|
||||
registerDevice: "Ajouter un nouvel appareil"
|
||||
registerKey: "Enregistrer une clef"
|
||||
step1: "Tout d'abord, installez une application d'authentification, telle que {a}\
|
||||
\ ou {b}, sur votre appareil."
|
||||
step2: "Ensuite, scannez le code QR affiché sur l’écran."
|
||||
|
@ -2022,7 +2021,7 @@ silencedInstances: Instances silencieuses
|
|||
silenced: Silencieux
|
||||
deleted: Effacé
|
||||
editNote: Modifier note
|
||||
edited: 'Modifié à {date} {time}'
|
||||
edited: Modifié
|
||||
flagShowTimelineRepliesDescription: Si activé, affiche dans le fil les réponses des
|
||||
personnes aux publications des autres.
|
||||
_experiments:
|
||||
|
|
|
@ -197,6 +197,7 @@ operations: "Tindakan"
|
|||
software: "Perangkat lunak"
|
||||
version: "Versi"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} berkas"
|
||||
monitor: "Pantau"
|
||||
jobQueue: "Antrian kerja"
|
||||
cpuAndMemory: "CPU dan Memori"
|
||||
|
@ -1254,8 +1255,8 @@ _tutorial:
|
|||
step7_3: "Semoga berhasil dan bersenang-senanglah! \U0001F680"
|
||||
_2fa:
|
||||
alreadyRegistered: "Kamu telah mendaftarkan perangkat otentikasi dua faktor."
|
||||
registerTOTP: "Daftarkan perangkat baru"
|
||||
registerSecurityKey: "Daftarkan kunci keamanan baru"
|
||||
registerDevice: "Daftarkan perangkat baru"
|
||||
registerKey: "Daftarkan kunci keamanan baru"
|
||||
step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat\
|
||||
\ kamu."
|
||||
step2: "Lalu, pindai kode QR yang ada di layar."
|
||||
|
|
113
locales/index.js
113
locales/index.js
|
@ -2,90 +2,59 @@
|
|||
* Languages Loader
|
||||
*/
|
||||
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
const languages = [];
|
||||
const languages_custom = [];
|
||||
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 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), {});
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
_lang_: "Italiano"
|
||||
headlineMisskey: "Rete collegata tramite note"
|
||||
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! 🚀"
|
||||
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"
|
||||
|
@ -13,7 +10,7 @@ password: "Password"
|
|||
forgotPassword: "Hai dimenticato la tua password?"
|
||||
fetchingAsApObject: "Recuperando dal Fediverso"
|
||||
ok: "OK"
|
||||
gotIt: "Ho capito!"
|
||||
gotIt: "Ho capito"
|
||||
cancel: "Annulla"
|
||||
enterUsername: "Inserisci un nome utente"
|
||||
renotedBy: "Rinotato da {user}"
|
||||
|
@ -47,8 +44,7 @@ copyContent: "Copia il contenuto"
|
|||
copyLink: "Copia il link"
|
||||
delete: "Elimina"
|
||||
deleteAndEdit: "Elimina e modifica"
|
||||
deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo? Verrano
|
||||
eliminate anche tutte le reazioni, Rinote e risposte collegate."
|
||||
deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo? Verrano eliminate anche tutte le reazioni, Rinote e risposte collegate."
|
||||
addToList: "Aggiungi alla lista"
|
||||
sendMessage: "Invia messaggio"
|
||||
copyUsername: "Copia nome utente"
|
||||
|
@ -68,11 +64,9 @@ import: "Importa"
|
|||
export: "Esporta"
|
||||
files: "Allegati"
|
||||
download: "Scarica"
|
||||
driveFileDeleteConfirm: "Vuoi davvero eliminare il file「{name}? Anche gli allegati
|
||||
verranno eliminati."
|
||||
driveFileDeleteConfirm: "Vuoi davvero eliminare il file「{name}? Anche gli allegati verranno eliminati."
|
||||
unfollowConfirm: "Vuoi davvero smettere di seguire {name}?"
|
||||
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando
|
||||
sarà compiuta, il file verrà aggiunto direttamente al Drive."
|
||||
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive."
|
||||
importRequested: "Hai richiesto un'importazione. Può volerci tempo. "
|
||||
lists: "Liste"
|
||||
noLists: "Nessuna lista"
|
||||
|
@ -87,11 +81,9 @@ error: "Errore"
|
|||
somethingHappened: "Si è verificato un problema"
|
||||
retry: "Riprova"
|
||||
pageLoadError: "Caricamento pagina non riuscito. "
|
||||
pageLoadErrorDescription: "Questo viene normalmente causato dalla rete o dalla cache
|
||||
del browser. Si prega di pulire la cache, o di attendere e riprovare più tardi."
|
||||
pageLoadErrorDescription: "Questo viene normalmente causato dalla rete o dalla cache del browser. Si prega di pulire la cache, o di attendere e riprovare più tardi."
|
||||
serverIsDead: "Il server non risponde. Si prega di attendere e riprovare più tardi."
|
||||
youShouldUpgradeClient: "Per visualizzare la pagina è necessario aggiornare il client
|
||||
alla nuova versione e ricaricare."
|
||||
youShouldUpgradeClient: "Per visualizzare la pagina è necessario aggiornare il client alla nuova versione e ricaricare."
|
||||
enterListName: "Nome della lista"
|
||||
privacy: "Privacy"
|
||||
makeFollowManuallyApprove: "Richiedi di approvare i follower manualmente"
|
||||
|
@ -116,8 +108,7 @@ sensitive: "Contenuto sensibile"
|
|||
add: "Aggiungi"
|
||||
reaction: "Reazione"
|
||||
reactionSetting: "Reazioni visualizzate sul pannello"
|
||||
reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa
|
||||
il pulsante \"+\" per aggiungere."
|
||||
reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere."
|
||||
rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note"
|
||||
attachCancel: "Rimuovi allegato"
|
||||
markAsSensitive: "Segna come sensibile"
|
||||
|
@ -146,19 +137,12 @@ emojiUrl: "URL dell'emoji"
|
|||
addEmoji: "Aggiungi un emoji"
|
||||
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."
|
||||
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 Calckey 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"
|
||||
autoAcceptFollowed: "Accetta automaticamente le richieste di follow da utenti che già segui"
|
||||
addAccount: "Aggiungi account"
|
||||
loginFailed: "Accesso non riuscito"
|
||||
showOnRemote: "Sfoglia sull'istanza remota"
|
||||
|
@ -170,10 +154,7 @@ searchWith: "Cerca: {q}"
|
|||
youHaveNoLists: "Non hai ancora creato nessuna lista"
|
||||
followConfirm: "Sei sicur@ di voler seguire {name}?"
|
||||
proxyAccount: "Account proxy"
|
||||
proxyAccountDescription: "Un account proxy è un account che funziona da follower remoto
|
||||
per gli utenti sotto certe condizioni. Ad esempio, quando un utente aggiunge un
|
||||
utente remoto alla lista, dato che se nessun utente locale segue quell'utente le
|
||||
sue attività non verranno distribuite, al suo posto lo seguirà un account proxy."
|
||||
proxyAccountDescription: "Un account proxy è un account che funziona da follower remoto per gli utenti sotto certe condizioni. Ad esempio, quando un utente aggiunge un utente remoto alla lista, dato che se nessun utente locale segue quell'utente le sue attività non verranno distribuite, al suo posto lo seguirà un account proxy."
|
||||
host: "Server remoto"
|
||||
selectUser: "Seleziona utente"
|
||||
recipient: "Destinatario"
|
||||
|
@ -194,6 +175,7 @@ operations: "Operazioni"
|
|||
software: "Software"
|
||||
version: "Versione"
|
||||
metadata: "Metadato"
|
||||
withNFiles: "{n} file in allegato"
|
||||
monitor: "Monitorare"
|
||||
jobQueue: "Coda di lavoro"
|
||||
cpuAndMemory: "CPU e Memoria"
|
||||
|
@ -203,13 +185,11 @@ instanceInfo: "Informazioni sull'istanza"
|
|||
statistics: "Statistiche"
|
||||
clearQueue: "Svuota coda"
|
||||
clearQueueConfirmTitle: "Vuoi davvero svuotare la coda?"
|
||||
clearQueueConfirmText: "Le note ancora non distribuite non verranno rilasciate. Solitamente,
|
||||
non è necessario eseguire questa operazione."
|
||||
clearQueueConfirmText: "Le note ancora non distribuite non verranno rilasciate. Solitamente, non è necessario eseguire questa operazione."
|
||||
clearCachedFiles: "Svuota cache"
|
||||
clearCachedFilesConfirm: "Vuoi davvero svuotare la cache da tutti i file remoti?"
|
||||
blockedInstances: "Istanze bloccate"
|
||||
blockedInstancesDescription: "Elenca le istanze che vuoi bloccare, una per riga. Esse
|
||||
non potranno più interagire con la tua istanza."
|
||||
blockedInstancesDescription: "Elenca le istanze che vuoi bloccare, una per riga. Esse non potranno più interagire con la tua istanza."
|
||||
muteAndBlock: "Silenziati / Bloccati"
|
||||
mutedUsers: "Account silenziati"
|
||||
blockedUsers: "Account bloccati"
|
||||
|
@ -271,8 +251,7 @@ agreeTo: "Sono d'accordo con {0}"
|
|||
tos: "Termini di servizio"
|
||||
start: "Inizia!"
|
||||
home: "Home"
|
||||
remoteUserCaution: "Può darsi che le informazioni siano incomplete perché questo è
|
||||
un utente remoto."
|
||||
remoteUserCaution: "Può darsi che le informazioni siano incomplete perché questo è un utente remoto."
|
||||
activity: "Attività"
|
||||
images: "Immagini"
|
||||
birthday: "Compleanno"
|
||||
|
@ -305,8 +284,7 @@ unableToDelete: "Eliminazione impossibile"
|
|||
inputNewFileName: "Inserisci nome del nuovo file"
|
||||
inputNewDescription: "Inserisci una nuova descrizione"
|
||||
inputNewFolderName: "Inserisci nome della nuova cartella"
|
||||
circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella
|
||||
che vuoi spostare."
|
||||
circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella che vuoi spostare."
|
||||
hasChildFilesOrFolders: "Impossibile eliminare la cartella perché non è vuota"
|
||||
copyUrl: "Copia URL"
|
||||
rename: "Modifica nome"
|
||||
|
@ -340,8 +318,7 @@ connectService: "Connessione"
|
|||
disconnectService: "Disconnessione "
|
||||
enableLocalTimeline: "Abilita Timeline locale"
|
||||
enableGlobalTimeline: "Abilita Timeline federata"
|
||||
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e
|
||||
i moderatori potranno sempre accederci."
|
||||
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e i moderatori potranno sempre accederci."
|
||||
registration: "Iscriviti"
|
||||
enableRegistration: "Permettere nuove registrazioni"
|
||||
invite: "Invita"
|
||||
|
@ -353,11 +330,9 @@ bannerUrl: "URL dell'immagine d'intestazione"
|
|||
backgroundImageUrl: "URL dello sfondo"
|
||||
basicInfo: "Informazioni fondamentali"
|
||||
pinnedUsers: "Utenti in evidenza"
|
||||
pinnedUsersDescription: "Elenca gli/le utenti che vuoi fissare in cima alla pagina
|
||||
\"Esplora\", un@ per riga."
|
||||
pinnedUsersDescription: "Elenca gli/le utenti che vuoi fissare in cima alla pagina \"Esplora\", un@ per riga."
|
||||
pinnedPages: "Pagine in evidenza"
|
||||
pinnedPagesDescription: "Specifica il percorso delle pagine che vuoi fissare in cima
|
||||
alla pagina dell'istanza. Una pagina per riga."
|
||||
pinnedPagesDescription: "Specifica il percorso delle pagine che vuoi fissare in cima alla pagina dell'istanza. Una pagina per riga."
|
||||
pinnedClipId: "ID della clip in evidenza"
|
||||
pinnedNotes: "Nota fissata"
|
||||
hcaptcha: "hCaptcha"
|
||||
|
@ -368,17 +343,14 @@ recaptcha: "reCAPTCHA"
|
|||
enableRecaptcha: "Abilita reCAPTCHA"
|
||||
recaptchaSiteKey: "Chiave del sito"
|
||||
recaptchaSecretKey: "Chiave segreta"
|
||||
avoidMultiCaptchaConfirm: "Utilizzare diversi Captcha può causare interferenze. Vuoi
|
||||
disattivare l'altro Captcha? Puoi lasciare diversi Captcha attivi premendo \"Cancella\"\
|
||||
."
|
||||
avoidMultiCaptchaConfirm: "Utilizzare diversi Captcha può causare interferenze. Vuoi disattivare l'altro Captcha? Puoi lasciare diversi Captcha attivi premendo \"Cancella\"."
|
||||
antennas: "Antenne"
|
||||
manageAntennas: "Gestore delle antenne"
|
||||
name: "Nome"
|
||||
antennaSource: "Fonte dell'antenna"
|
||||
antennaKeywords: "Parole chiavi da ricevere"
|
||||
antennaExcludeKeywords: "Parole chiavi da escludere"
|
||||
antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare
|
||||
con un'interruzzione riga indica la condizione \"O\"."
|
||||
antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
|
||||
notifyAntenna: "Invia notifiche delle nuove note"
|
||||
withFileAntenna: "Solo note con file in allegato"
|
||||
enableServiceworker: "Abilita ServiceWorker"
|
||||
|
@ -506,26 +478,19 @@ showFeaturedNotesInTimeline: "Mostrare le note di tendenza nella tua timeline"
|
|||
objectStorage: "Stoccaggio oggetti"
|
||||
useObjectStorage: "Utilizza stoccaggio oggetti"
|
||||
objectStorageBaseUrl: "Base URL"
|
||||
objectStorageBaseUrlDesc: "URL di riferimento. In caso di utilizzo di proxy o CDN
|
||||
l'URL è 'https://<bucket>.s3.amazonaws.com' per S3, 'https://storage.googleapis.com/<bucket>'
|
||||
per GCS eccetera. "
|
||||
objectStorageBaseUrlDesc: "URL di riferimento. In caso di utilizzo di proxy o CDN l'URL è 'https://<bucket>.s3.amazonaws.com' per S3, 'https://storage.googleapis.com/<bucket>' per GCS eccetera. "
|
||||
objectStorageBucket: "Bucket"
|
||||
objectStorageBucketDesc: "Specificare il nome del bucket utilizzato dal provider."
|
||||
objectStoragePrefix: "Prefix"
|
||||
objectStoragePrefixDesc: "I file saranno conservati sotto la directory di questo prefisso."
|
||||
objectStorageEndpoint: "Endpoint"
|
||||
objectStorageEndpointDesc: "Lasciare vuoto se si sta utilizzando S3. In caso contrario
|
||||
si prega di specificare l'endpoint come '<host>' oppure '<host>:<port>' a seconda
|
||||
del servizio utilizzato."
|
||||
objectStorageEndpointDesc: "Lasciare vuoto se si sta utilizzando S3. In caso contrario si prega di specificare l'endpoint come '<host>' oppure '<host>:<port>' a seconda del servizio utilizzato."
|
||||
objectStorageRegion: "Region"
|
||||
objectStorageRegionDesc: "Specificate una regione, quale 'xx-east-1'. Se il servizio
|
||||
in utilizzo non distingue tra regioni, lasciate vuoto o inserite 'us-east-1'."
|
||||
objectStorageRegionDesc: "Specificate una regione, quale 'xx-east-1'. Se il servizio in utilizzo non distingue tra regioni, lasciate vuoto o inserite 'us-east-1'."
|
||||
objectStorageUseSSL: "Usare SSL"
|
||||
objectStorageUseSSLDesc: "Disabilita quest'opzione se non utilizzi HTTPS per le connessioni
|
||||
API."
|
||||
objectStorageUseSSLDesc: "Disabilita quest'opzione se non utilizzi HTTPS per le connessioni API."
|
||||
objectStorageUseProxy: "Usa proxy"
|
||||
objectStorageUseProxyDesc: "Disabilita quest'opzione se non usi proxy per la connessione
|
||||
API."
|
||||
objectStorageUseProxyDesc: "Disabilita quest'opzione se non usi proxy per la connessione API."
|
||||
objectStorageSetPublicRead: "Imposta \"visibilità pubblica\" al momento di caricare"
|
||||
serverLogs: "Log del server"
|
||||
deleteAll: "Cancella cronologia"
|
||||
|
@ -553,9 +518,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 Calckey."
|
||||
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"
|
||||
|
@ -563,14 +526,11 @@ updateRemoteUser: "Aggiornare le informazioni di utente remot@"
|
|||
deleteAllFiles: "Elimina tutti i file"
|
||||
deleteAllFilesConfirm: "Vuoi davvero eliminare tutti i file?"
|
||||
removeAllFollowing: "Cancella tutti i follows"
|
||||
removeAllFollowingDescription: "Cancella tutti i follows del server {host}. Per favore,
|
||||
esegui se, ad esempio, l'istanza non esiste più."
|
||||
removeAllFollowingDescription: "Cancella tutti i follows del server {host}. Per favore, esegui se, ad esempio, l'istanza non esiste più."
|
||||
userSuspended: "L'utente è sospes@."
|
||||
userSilenced: "L'utente è silenziat@."
|
||||
yourAccountSuspendedTitle: "Questo account è sospeso."
|
||||
yourAccountSuspendedDescription: "Questo account è stato sospeso a causa di una violazione
|
||||
dei termini di servizio del server. Contattare l'amministrazione per i dettagli.
|
||||
Si prega di non creare un nuovo account."
|
||||
yourAccountSuspendedDescription: "Questo account è stato sospeso a causa di una violazione dei termini di servizio del server. Contattare l'amministrazione per i dettagli. Si prega di non creare un nuovo account."
|
||||
menu: "Menù"
|
||||
divider: "Linea di separazione"
|
||||
addItem: "Aggiungi elemento"
|
||||
|
@ -610,14 +570,12 @@ permission: "Autorizzazioni "
|
|||
enableAll: "Abilita tutto"
|
||||
disableAll: "Disabilita tutto"
|
||||
tokenRequested: "Autorizza accesso all'account"
|
||||
pluginTokenRequestedDescription: "Il plugin potrà utilizzare le autorizzazioni impostate
|
||||
qui."
|
||||
pluginTokenRequestedDescription: "Il plugin potrà utilizzare le autorizzazioni impostate qui."
|
||||
notificationType: "Tipo di notifiche"
|
||||
edit: "Modifica"
|
||||
emailServer: "Server email"
|
||||
enableEmail: "Abilita consegna email"
|
||||
emailConfigInfo: "Utilizzato per verificare il tuo indirizzo di posta elettronica
|
||||
e per reimpostare la tua password"
|
||||
emailConfigInfo: "Utilizzato per verificare il tuo indirizzo di posta elettronica e per reimpostare la tua password"
|
||||
email: "Email"
|
||||
emailAddress: "Indirizzo di posta elettronica"
|
||||
smtpConfig: "Impostazioni del server SMTP"
|
||||
|
@ -625,8 +583,7 @@ smtpHost: "Server remoto"
|
|||
smtpPort: "Porta"
|
||||
smtpUser: "Nome utente"
|
||||
smtpPass: "Password"
|
||||
emptyToDisableSmtpAuth: "Lasciare il nome utente e la password vuoti per disabilitare
|
||||
la verifica SMTP"
|
||||
emptyToDisableSmtpAuth: "Lasciare il nome utente e la password vuoti per disabilitare la verifica SMTP"
|
||||
smtpSecure: "Usare la porta SSL/TLS implicito per le connessioni SMTP"
|
||||
smtpSecureInfo: "Disabilitare quando è attivo STARTTLS."
|
||||
testEmail: "Testare la consegna di posta elettronica"
|
||||
|
@ -646,13 +603,10 @@ create: "Crea"
|
|||
notificationSetting: "Impostazioni notifiche"
|
||||
notificationSettingDesc: "Seleziona il tipo di notifiche da visualizzare."
|
||||
useGlobalSetting: "Usa impostazioni generali"
|
||||
useGlobalSettingDesc: "Se abilitato, le impostazioni notifiche dell'account verranno
|
||||
utilizzate. Se disabilitato, si possono definire diverse singole impostazioni."
|
||||
useGlobalSettingDesc: "Se abilitato, le impostazioni notifiche dell'account verranno utilizzate. Se disabilitato, si possono definire diverse singole impostazioni."
|
||||
other: "Avanzate"
|
||||
regenerateLoginToken: "Genera di nuovo un token di connessione"
|
||||
regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente
|
||||
questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi
|
||||
vanno disconnessi."
|
||||
regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi vanno disconnessi."
|
||||
setMultipleBySeparatingWithSpace: "È possibile creare multiple voci separate da spazi."
|
||||
fileIdOrUrl: "ID o URL del file"
|
||||
behavior: "Comportamento"
|
||||
|
@ -660,8 +614,7 @@ sample: "Esempio"
|
|||
abuseReports: "Segnalazioni"
|
||||
reportAbuse: "Segnalazioni"
|
||||
reportAbuseOf: "Segnala {name}"
|
||||
fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione. Se
|
||||
riguarda una nota precisa, si prega di collegare anche l'URL della nota."
|
||||
fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione. Se riguarda una nota precisa, si prega di collegare anche l'URL della nota."
|
||||
abuseReported: "La segnalazione è stata inviata. Grazie."
|
||||
reporter: "il corrispondente"
|
||||
reporteeOrigin: "Origine del segnalato"
|
||||
|
@ -671,8 +624,7 @@ abuseMarkAsResolved: "Contrassegna la segnalazione come risolta"
|
|||
openInNewTab: "Apri in una nuova scheda"
|
||||
openInSideView: "Apri in vista laterale"
|
||||
defaultNavigationBehaviour: "Navigazione preimpostata"
|
||||
editTheseSettingsMayBreakAccount: "Modificare queste impostazioni può danneggiare
|
||||
l'account."
|
||||
editTheseSettingsMayBreakAccount: "Modificare queste impostazioni può danneggiare l'account."
|
||||
instanceTicker: "Informazioni sull'istanza da cui vengono le note"
|
||||
waitingFor: "Aspettando {x}"
|
||||
random: "Casuale"
|
||||
|
@ -684,8 +636,7 @@ createNew: "Crea nuov@"
|
|||
optional: "Opzionale"
|
||||
createNewClip: "Nuova clip"
|
||||
public: "Pubblica"
|
||||
i18nInfo: "Calckey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire
|
||||
su {link}."
|
||||
i18nInfo: "Calckey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}."
|
||||
manageAccessTokens: "Gestisci token di accesso"
|
||||
accountInfo: "Informazioni account"
|
||||
notesCount: "Conteggio note"
|
||||
|
@ -704,16 +655,12 @@ no: "No"
|
|||
driveFilesCount: "Numero di file nel Drive"
|
||||
driveUsage: "Utilizzazione del Drive"
|
||||
noCrawle: "Rifiuta l'indicizzazione dai robot."
|
||||
noCrawleDescription: "Richiedi che i motori di ricerca non indicizzino la tua pagina
|
||||
di profilo, le tue note, pagine, ecc."
|
||||
lockedAccountInfo: "A meno che non imposti la visibilità delle tue note su \"Solo
|
||||
ai follower\", le tue note sono visibili da tutti, anche se hai configurato l'account
|
||||
per confermare manualmente le richieste di follow."
|
||||
noCrawleDescription: "Richiedi che i motori di ricerca non indicizzino la tua pagina di profilo, le tue note, pagine, ecc."
|
||||
lockedAccountInfo: "A meno che non imposti la visibilità delle tue note su \"Solo ai follower\", le tue note sono visibili da tutti, anche se hai configurato l'account per confermare manualmente le richieste di follow."
|
||||
alwaysMarkSensitive: "Segnare i media come sensibili per impostazione predefinita"
|
||||
loadRawImages: "Visualizza le intere immagini allegate invece delle miniature."
|
||||
disableShowingAnimatedImages: "Disabilita le immagini animate"
|
||||
verificationEmailSent: "Una mail di verifica è stata inviata. Si prega di accedere
|
||||
al collegamento per compiere la verifica."
|
||||
verificationEmailSent: "Una mail di verifica è stata inviata. Si prega di accedere al collegamento per compiere la verifica."
|
||||
notSet: "Non impostato"
|
||||
emailVerified: "Il tuo indirizzo email è stato verificato"
|
||||
noteFavoritesCount: "Conteggio note tra i preferiti"
|
||||
|
@ -725,15 +672,13 @@ clips: "Clip"
|
|||
experimentalFeatures: "Funzioni sperimentali"
|
||||
developer: "Sviluppatore"
|
||||
makeExplorable: "Account visibile sulla pagina \"Esplora\""
|
||||
makeExplorableDescription: "Se disabiliti l'opzione, il tuo account non verrà visualizzato
|
||||
sulla pagina \"Esplora\"."
|
||||
makeExplorableDescription: "Se disabiliti l'opzione, il tuo account non verrà visualizzato sulla pagina \"Esplora\"."
|
||||
showGapBetweenNotesInTimeline: "Mostrare un intervallo tra le note sulla timeline"
|
||||
duplicate: "Duplica"
|
||||
left: "Sinistra"
|
||||
center: "Centro"
|
||||
wide: "Largo"
|
||||
reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricamento
|
||||
della pagina. Vuoi ricaricare adesso?"
|
||||
reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricamento della pagina. Vuoi ricaricare adesso?"
|
||||
needReloadToApply: "È necessario riavviare per rendere effettive le modifiche."
|
||||
showTitlebar: "Visualizza la barra del titolo"
|
||||
clearCache: "Svuota cache"
|
||||
|
@ -741,10 +686,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 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."
|
||||
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"
|
||||
|
@ -770,8 +712,7 @@ receiveAnnouncementFromInstance: "Ricevi i messaggi informativi dall'istanza"
|
|||
emailNotification: "Eventi per notifiche via mail"
|
||||
publish: "Pubblico"
|
||||
inChannelSearch: "Cerca in canale"
|
||||
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello
|
||||
di reazioni"
|
||||
useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello di reazioni"
|
||||
typingUsers: "{users} sta(nno) scrivendo"
|
||||
jumpToSpecifiedDate: "Vai alla data "
|
||||
showingPastTimeline: "Stai visualizzando una vecchia timeline"
|
||||
|
@ -782,17 +723,14 @@ unlikeConfirm: "Non ti piace più?"
|
|||
fullView: "Schermo intero"
|
||||
quitFullView: "Esci dalla modalità a schermo intero"
|
||||
addDescription: "Aggiungi descrizione"
|
||||
userPagePinTip: "Qui puoi appuntare note, premendo \"Fissa sul profilo\" nel menù
|
||||
delle singole note."
|
||||
notSpecifiedMentionWarning: "Sono menzionati account che non vengono inclusi fra i
|
||||
destinatari"
|
||||
userPagePinTip: "Qui puoi appuntare note, premendo \"Fissa sul profilo\" nel menù delle singole note."
|
||||
notSpecifiedMentionWarning: "Sono menzionati account che non vengono inclusi fra i destinatari"
|
||||
info: "Informazioni"
|
||||
userInfo: "Informazioni utente"
|
||||
unknown: "Sconosciuto"
|
||||
onlineStatus: "Stato di connessione"
|
||||
hideOnlineStatus: "Stato invisibile"
|
||||
hideOnlineStatusDescription: "Abilitare l'opzione di stato invisibile può guastare
|
||||
la praticità di singole funzioni, come la ricerca."
|
||||
hideOnlineStatusDescription: "Abilitare l'opzione di stato invisibile può guastare la praticità di singole funzioni, come la ricerca."
|
||||
online: "Online"
|
||||
active: "Attiv@"
|
||||
offline: "Offline"
|
||||
|
@ -840,9 +778,7 @@ whatIsNew: "Visualizza le informazioni sull'aggiornamento"
|
|||
translate: "Traduzione"
|
||||
translatedFrom: "Tradotto da {x}"
|
||||
accountDeletionInProgress: "La cancellazione dell'account è in corso"
|
||||
usernameInfo: "Un nome per identificare univocamente il tuo account sul server. È
|
||||
possibile utilizzare caratteri alfanumerici (a~z, A~Z, 0~9) e il trattino basso
|
||||
(_). Non sarà possibile cambiare il nome utente in seguito."
|
||||
usernameInfo: "Un nome per identificare univocamente il tuo account sul server. È possibile utilizzare caratteri alfanumerici (a~z, A~Z, 0~9) e il trattino basso (_). Non sarà possibile cambiare il nome utente in seguito."
|
||||
aiChanMode: "Modalità Ai"
|
||||
keepCw: "Mantieni il CW"
|
||||
resolved: "Risolto"
|
||||
|
@ -866,8 +802,7 @@ leaveGroup: "Esci dal gruppo"
|
|||
leaveGroupConfirm: "Uscire da「{name}」?"
|
||||
useDrawerReactionPickerForMobile: "Mostra sul drawer da dispositivo mobile"
|
||||
welcomeBackWithName: "Bentornato/a, {name}"
|
||||
clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo
|
||||
email."
|
||||
clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo email."
|
||||
searchByGoogle: "Cerca"
|
||||
indefinitely: "Non scade"
|
||||
tenMinutes: "10 minuti"
|
||||
|
@ -895,8 +830,7 @@ _signup:
|
|||
emailAddressInfo: "Inserisci il tuo indirizzo email. Non verrà reso pubblico."
|
||||
_accountDelete:
|
||||
accountDelete: "Cancellazione account"
|
||||
sendEmail: "Al termine della cancellazione dell'account, verrà inviata una mail
|
||||
all'indirizzo a cui era registrato."
|
||||
sendEmail: "Al termine della cancellazione dell'account, verrà inviata una mail all'indirizzo a cui era registrato."
|
||||
requestAccountDelete: "Richiesta di cancellazione account"
|
||||
started: "Il processo di cancellazione è iniziato."
|
||||
inProgress: "Cancellazione in corso"
|
||||
|
@ -904,13 +838,9 @@ _ad:
|
|||
back: "Indietro"
|
||||
reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso"
|
||||
_forgotPassword:
|
||||
enterEmail: "Inserisci l'indirizzo di posta elettronica che hai registrato nel tuo
|
||||
profilo. Il collegamento necessario per ripristinare la password verrà inviato
|
||||
a questo indirizzo."
|
||||
ifNoEmail: "Se nessun indirizzo e-mail è stato registrato, si prega di contattare
|
||||
l'amministratore·trice dell'istanza."
|
||||
contactAdmin: "Poiché questa istanza non permette l'utilizzo di una mail, si prega
|
||||
di contattare l'amministratore·trice dell'istanza per poter ripristinare la password."
|
||||
enterEmail: "Inserisci l'indirizzo di posta elettronica che hai registrato nel tuo profilo. Il collegamento necessario per ripristinare la password verrà inviato a questo indirizzo."
|
||||
ifNoEmail: "Se nessun indirizzo e-mail è stato registrato, si prega di contattare l'amministratore·trice dell'istanza."
|
||||
contactAdmin: "Poiché questa istanza non permette l'utilizzo di una mail, si prega di contattare l'amministratore·trice dell'istanza per poter ripristinare la password."
|
||||
_gallery:
|
||||
my: "Le mie pubblicazioni"
|
||||
liked: "Pubblicazioni che mi piacciono"
|
||||
|
@ -923,8 +853,7 @@ _email:
|
|||
title: "Hai ricevuto una richiesta di follow"
|
||||
_plugin:
|
||||
install: "Installa estensioni"
|
||||
installWarn: "Si prega di installare soltanto estensioni che provengono da fonti
|
||||
affidabili."
|
||||
installWarn: "Si prega di installare soltanto estensioni che provengono da fonti affidabili."
|
||||
manage: "Gestisci estensioni"
|
||||
_registry:
|
||||
key: "Dati"
|
||||
|
@ -938,8 +867,7 @@ _aboutMisskey:
|
|||
source: "Codice sorgente"
|
||||
translation: "Tradurre Calckey"
|
||||
donate: "Sostieni Calckey"
|
||||
morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie
|
||||
mille! 🥰"
|
||||
morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie mille! 🥰"
|
||||
patrons: "Sostenitori"
|
||||
_nsfw:
|
||||
respect: "Nascondere i media segnati come sensibli"
|
||||
|
@ -947,12 +875,10 @@ _nsfw:
|
|||
force: "Nascondere tutti i media"
|
||||
_mfm:
|
||||
cheatSheet: "Bigliettino MFM"
|
||||
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."
|
||||
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 @."
|
||||
mentionDescription: "Si può menzionare un utente specifico digitando il suo nome utente subito dopo il segno @."
|
||||
hashtag: "Hashtag"
|
||||
url: "URL"
|
||||
link: "Link"
|
||||
|
@ -979,14 +905,11 @@ _mfm:
|
|||
x4: "Estremamente più grande"
|
||||
x4Description: "Mostra il contenuto estremamente più ingrandito."
|
||||
blur: "Sfocatura"
|
||||
blurDescription: "È possibile rendere sfocato il contenuto. Spostando il cursore
|
||||
su di esso tornerà visibile chiaramente."
|
||||
blurDescription: "È possibile rendere sfocato il contenuto. Spostando il cursore su di esso tornerà visibile chiaramente."
|
||||
font: "Tipo di carattere"
|
||||
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ə"
|
||||
|
@ -1009,15 +932,10 @@ _menuDisplay:
|
|||
hide: "Nascondere"
|
||||
_wordMute:
|
||||
muteWords: "Parole da filtrare"
|
||||
muteWordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare
|
||||
con un'interruzzione riga indica la condizione \"O\"."
|
||||
muteWordsDescription2: "Metti le parole chiavi tra slash per usare espressioni regolari
|
||||
(regexp)."
|
||||
softDescription: "Nascondi della timeline note che rispondono alle condizioni impostate
|
||||
qui."
|
||||
hardDescription: "Impedisci alla timeline di caricare le note che rispondono alle
|
||||
condizioni impostate qui. Inoltre, le note scompariranno in modo irreversibile,
|
||||
anche se le condizioni verranno successivamente rimosse."
|
||||
muteWordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare con un'interruzzione riga indica la condizione \"O\"."
|
||||
muteWordsDescription2: "Metti le parole chiavi tra slash per usare espressioni regolari (regexp)."
|
||||
softDescription: "Nascondi della timeline note che rispondono alle condizioni impostate qui."
|
||||
hardDescription: "Impedisci alla timeline di caricare le note che rispondono alle condizioni impostate qui. Inoltre, le note scompariranno in modo irreversibile, anche se le condizioni verranno successivamente rimosse."
|
||||
soft: "Moderato"
|
||||
hard: "Severo"
|
||||
mutedNotes: "Note silenziate"
|
||||
|
@ -1111,35 +1029,24 @@ _tutorial:
|
|||
step1_1: "Benvenuto!"
|
||||
step1_2: "Vediamo di configurarla. Sarete operativi in men che non si dica!"
|
||||
step2_1: "Per prima cosa, compila il tuo profilo"
|
||||
step2_2: "Fornendo alcune informazioni su chi siete, sarà più facile per gli altri
|
||||
capire se vogliono vedere le vostre note o seguirvi"
|
||||
step2_2: "Fornendo alcune informazioni su chi siete, sarà più facile per gli altri capire se vogliono vedere le vostre note o seguirvi"
|
||||
step3_1: "Ora è il momento di seguire alcune persone!"
|
||||
step3_2: "La vostra home e le vostre timeline social si basano su chi seguite, quindi
|
||||
provate a seguire un paio di account per iniziare.\nCliccate sul cerchio più in
|
||||
alto a destra di un profilo per seguirlo"
|
||||
step3_2: "La vostra home e le vostre timeline social si basano su chi seguite, quindi provate a seguire un paio di account per iniziare.\nCliccate sul cerchio più in alto a destra di un profilo per seguirlo"
|
||||
step4_1: "Fatevi conoscere"
|
||||
step4_2: "Per il vostro primo post, alcuni preferiscono fare un post di {introduction}
|
||||
o un semplice \"Ciao mondo!\""
|
||||
step4_2: "Per il vostro primo post, alcuni preferiscono fare un post di {introduction} o un semplice \"Ciao mondo!\""
|
||||
step5_1: "Linee temporali, linee temporali dappertutto!"
|
||||
step5_2: "La tua istanza ha attivato {timelines} diverse timelines"
|
||||
step5_3: "La timeline Home {icon} è quella in cui si possono vedere i post dei propri
|
||||
follower"
|
||||
step5_4: "La timeline Locale {icon} è quella in cui si possono vedere i post di
|
||||
tutti gli altri utenti di questa istanza"
|
||||
step5_5: "La timeline Raccomandati {icon} è quella in cui si possono vedere i post
|
||||
delle istanze raccomandate dagli amministratori"
|
||||
step5_6: "La timeline Social {icon} è quella in cui si possono vedere i post degli
|
||||
amici dei propri follower"
|
||||
step5_7: "La timeline Globale {icon} è quella in cui si possono vedere i post di
|
||||
ogni altra istanza collegata"
|
||||
step5_3: "La timeline Home {icon} è quella in cui si possono vedere i post dei propri follower"
|
||||
step5_4: "La timeline Locale {icon} è quella in cui si possono vedere i post di tutti gli altri utenti di questa istanza"
|
||||
step5_5: "La timeline Raccomandati {icon} è quella in cui si possono vedere i post delle istanze raccomandate dagli amministratori"
|
||||
step5_6: "La timeline Social {icon} è quella in cui si possono vedere i post degli amici dei propri follower"
|
||||
step5_7: "La timeline Globale {icon} è quella in cui si possono vedere i post di ogni altra istanza collegata"
|
||||
step6_1: "Allora, cos'è questo posto?"
|
||||
step6_2: "Beh, non ti sei semplicemente unito a Calckey. Sei entrato in un portale
|
||||
del Fediverse, una rete interconnessa di migliaia di server, chiamata \"istanze\""
|
||||
step6_3: "Ogni server funziona in modo diverso, e non tutti i server eseguono Calckey.
|
||||
Questo però lo fa! È un po' complicato, ma ci riuscirete in poco tempo"
|
||||
step6_2: "Beh, non ti sei semplicemente unito a Calckey. Sei entrato in un portale del Fediverse, una rete interconnessa di migliaia di server, chiamata \"istanze\""
|
||||
step6_3: "Ogni server funziona in modo diverso, e non tutti i server eseguono Calckey. Questo però lo fa! È un po' complicato, ma ci riuscirete in poco tempo"
|
||||
step6_4: "Ora andate, esplorate e divertitevi!"
|
||||
_2fa:
|
||||
registerTOTP: "Aggiungi dispositivo"
|
||||
registerDevice: "Aggiungi dispositivo"
|
||||
_permissions:
|
||||
"read:account": "Visualizzare le informazioni dell'account"
|
||||
"write:account": "Modificare le informazioni dell'account"
|
||||
|
@ -1265,8 +1172,7 @@ _profile:
|
|||
youCanIncludeHashtags: "Puoi anche includere hashtag."
|
||||
metadata: "Informazioni aggiuntive"
|
||||
metadataEdit: "Modifica informazioni aggiuntive"
|
||||
metadataDescription: "Puoi pubblicare fino a quattro informazioni aggiuntive sul
|
||||
profilo."
|
||||
metadataDescription: "Puoi pubblicare fino a quattro informazioni aggiuntive sul profilo."
|
||||
metadataLabel: "Etichetta"
|
||||
metadataContent: "Contenuto"
|
||||
changeAvatar: "Modifica immagine profilo"
|
||||
|
@ -1558,4 +1464,3 @@ _deck:
|
|||
list: "Liste"
|
||||
mentions: "Menzioni"
|
||||
direct: "Diretta"
|
||||
noThankYou: No grazie
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
_lang_: "日本語"
|
||||
headlineMisskey: "ずっと無料でオープンソースの非中央集権型ソーシャルメディアプラットフォーム🚀"
|
||||
introMisskey: "ようこそ!Calckeyは、オープンソースの非中央集権型ソーシャルメディアプラットフォームです。\nいま起こっていることを共有したり、あなたについて皆に発信しましょう📡\n\
|
||||
「リアクション」機能で、皆の投稿に素早く反応を追加できます👍\n新しい世界を探検しよう🚀"
|
||||
headlineMisskey: "ずっと無料でオープンソースの非中央集権型ソーシャルメディアプラットフォーム\U0001F680"
|
||||
introMisskey: "ようこそ!Calckeyは、オープンソースの非中央集権型ソーシャルメディアプラットフォームです。\nいま起こっていることを共有したり、あなたについて皆に発信しましょう\U0001F4E1\
|
||||
\n「リアクション」機能で、皆の投稿に素早く反応を追加できます\U0001F44D\n新しい世界を探検しよう\U0001F680"
|
||||
monthAndDay: "{month}月 {day}日"
|
||||
search: "検索"
|
||||
notifications: "通知"
|
||||
|
@ -17,7 +17,7 @@ enterUsername: "ユーザー名を入力"
|
|||
renotedBy: "{user}がブースト"
|
||||
noNotes: "投稿はありません"
|
||||
noNotifications: "通知はありません"
|
||||
instance: "サーバー"
|
||||
instance: "インスタンス"
|
||||
settings: "設定"
|
||||
basicSettings: "基本設定"
|
||||
otherSettings: "その他の設定"
|
||||
|
@ -33,7 +33,7 @@ uploading: "アップロード中"
|
|||
save: "保存"
|
||||
users: "ユーザー"
|
||||
addUser: "ユーザーを追加"
|
||||
addInstance: "サーバーを追加"
|
||||
addInstance: "インスタンスを追加"
|
||||
favorite: "お気に入り"
|
||||
favorites: "お気に入り"
|
||||
unfavorite: "お気に入り解除"
|
||||
|
@ -133,7 +133,6 @@ unsuspendConfirm: "解凍しますか?"
|
|||
selectList: "リストを選択"
|
||||
selectAntenna: "アンテナを選択"
|
||||
selectWidget: "ウィジェットを選択"
|
||||
selectChannel: "チャンネルを選択"
|
||||
editWidgets: "ウィジェットを編集"
|
||||
editWidgetsExit: "編集を終了"
|
||||
customEmojis: "カスタム絵文字"
|
||||
|
@ -147,7 +146,7 @@ cacheRemoteFiles: "リモートのファイルをキャッシュする"
|
|||
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
|
||||
flagAsBot: "Botとして設定"
|
||||
flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Calckeyのシステム上での扱いがBotに合ったものになります。"
|
||||
flagAsCat: "あなたは…猫?😺"
|
||||
flagAsCat: "あなたは…猫?\U0001F63A"
|
||||
flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。"
|
||||
flagSpeakAsCat: "猫語で話す"
|
||||
flagSpeakAsCatDescription: "猫モードが有効の場合にオンにすると、あなたの投稿の「な」を「にゃ」に変換します。"
|
||||
|
@ -166,14 +165,14 @@ searchWith: "検索: {q}"
|
|||
youHaveNoLists: "リストがありません"
|
||||
followConfirm: "{name}をフォローしますか?"
|
||||
proxyAccount: "プロキシアカウント"
|
||||
proxyAccountDescription: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがサーバーに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||
proxyAccountDescription: "プロキシアカウントは、特定の条件下でユーザーのリモートフォローを代行するアカウントです。例えば、ユーザーがリモートユーザーをリストに入れたとき、リストに入れられたユーザーを誰もフォローしていないとアクティビティがインスタンスに配達されないため、代わりにプロキシアカウントがフォローするようにします。"
|
||||
host: "ホスト"
|
||||
selectUser: "ユーザーを選択"
|
||||
selectInstance: "サーバーを選択"
|
||||
selectInstance: "インスタンスを選択"
|
||||
recipient: "宛先"
|
||||
annotation: "注釈"
|
||||
federation: "連合"
|
||||
instances: "サーバー"
|
||||
instances: "インスタンス"
|
||||
registeredAt: "初観測"
|
||||
latestRequestSentAt: "直近のリクエスト送信"
|
||||
latestRequestReceivedAt: "直近のリクエスト受信"
|
||||
|
@ -183,33 +182,34 @@ charts: "チャート"
|
|||
perHour: "1時間ごと"
|
||||
perDay: "1日ごと"
|
||||
stopActivityDelivery: "アクティビティの配送を停止"
|
||||
blockThisInstance: "このサーバーをブロック"
|
||||
silenceThisInstance: "このサーバーをサイレンス"
|
||||
blockThisInstance: "このインスタンスをブロック"
|
||||
silenceThisInstance: "このインスタンスをサイレンス"
|
||||
operations: "操作"
|
||||
software: "ソフトウェア"
|
||||
version: "バージョン"
|
||||
metadata: "メタデータ"
|
||||
withNFiles: "{n}つのファイル"
|
||||
monitor: "モニター"
|
||||
jobQueue: "ジョブキュー"
|
||||
cpuAndMemory: "CPUとメモリ"
|
||||
network: "ネットワーク"
|
||||
disk: "ディスク"
|
||||
instanceInfo: "サーバー情報"
|
||||
instanceInfo: "インスタンス情報"
|
||||
statistics: "統計"
|
||||
clearQueue: "キューをクリア"
|
||||
clearQueueConfirmTitle: "キューをクリアしますか?"
|
||||
clearQueueConfirmText: "未配達の投稿は配送されなくなります。通常この操作を行う必要はありません。"
|
||||
clearCachedFiles: "キャッシュをクリア"
|
||||
clearCachedFilesConfirm: "キャッシュされたリモートファイルをすべて削除しますか?"
|
||||
blockedInstances: "ブロックしたサーバー"
|
||||
blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定します。ブロックされたサーバーは、このサーバーとやり取りできなくなります。"
|
||||
silencedInstances: "サイレンスしたサーバー"
|
||||
silencedInstancesDescription: "サイレンスしたいサーバーのホストを改行で区切って設定します。サイレンスされたサーバーに所属するアカウントはすべて「サイレンス」として扱われ、フォローがすべてリクエストになり、フォロワーでないローカルアカウントにはメンションできなくなります。ブロックしたサーバーには影響しません。"
|
||||
blockedInstances: "ブロックしたインスタンス"
|
||||
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定します。ブロックされたインスタンスは、このインスタンスとやり取りできなくなります。"
|
||||
silencedInstances: "サイレンスしたインスタンス"
|
||||
silencedInstancesDescription: "サイレンスしたいインスタンスのホストを改行で区切って設定します。サイレンスされたインスタンスに所属するアカウントはすべて「サイレンス」として扱われ、フォローがすべてリクエストになり、フォロワーでないローカルアカウントにはメンションできなくなります。ブロックしたインスタンスには影響しません。"
|
||||
muteAndBlock: "ミュートとブロック"
|
||||
mutedUsers: "ミュートしたユーザー"
|
||||
blockedUsers: "ブロックしたユーザー"
|
||||
noUsers: "ユーザーはいません"
|
||||
noInstances: "サーバーがありません"
|
||||
noInstances: "インスタンスはありません"
|
||||
editProfile: "プロフィールを編集"
|
||||
noteDeleteConfirm: "この投稿を削除しますか?"
|
||||
pinLimitExceeded: "これ以上ピン留めできません"
|
||||
|
@ -229,9 +229,9 @@ all: "全て"
|
|||
subscribing: "購読中"
|
||||
publishing: "配信中"
|
||||
notResponding: "応答なし"
|
||||
instanceFollowing: "サーバーのフォロー"
|
||||
instanceFollowers: "サーバーのフォロワー"
|
||||
instanceUsers: "このサーバーの利用者"
|
||||
instanceFollowing: "インスタンスのフォロー"
|
||||
instanceFollowers: "インスタンスのフォロワー"
|
||||
instanceUsers: "インスタンスのユーザー"
|
||||
changePassword: "パスワードを変更"
|
||||
security: "セキュリティ"
|
||||
retypedNotMatch: "入力が一致しません。"
|
||||
|
@ -322,8 +322,8 @@ unwatch: "ウォッチ解除"
|
|||
accept: "許可"
|
||||
reject: "拒否"
|
||||
normal: "正常"
|
||||
instanceName: "サーバー名"
|
||||
instanceDescription: "サーバーの紹介文"
|
||||
instanceName: "インスタンス名"
|
||||
instanceDescription: "インスタンスの紹介"
|
||||
maintainerName: "管理者の名前"
|
||||
maintainerEmail: "管理者のメールアドレス"
|
||||
tosUrl: "利用規約URL"
|
||||
|
@ -354,7 +354,7 @@ basicInfo: "基本情報"
|
|||
pinnedUsers: "ピン留めユーザー"
|
||||
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
|
||||
pinnedPages: "ピン留めページ"
|
||||
pinnedPagesDescription: "サーバーのトップページにピン留めしたいページのパスを改行で区切って記述します。"
|
||||
pinnedPagesDescription: "インスタンスのトップページにピン留めしたいページのパスを改行で区切って記述します。"
|
||||
pinnedClipId: "ピン留めするクリップのID"
|
||||
pinnedNotes: "ピン留めされた投稿"
|
||||
hcaptcha: "hCaptcha"
|
||||
|
@ -377,7 +377,7 @@ notifyAntenna: "新しい投稿を通知する"
|
|||
withFileAntenna: "ファイルが添付された投稿のみ"
|
||||
enableServiceworker: "ブラウザへのプッシュ通知を有効にする"
|
||||
antennaUsersDescription: "ユーザー名を改行で区切って指定します"
|
||||
antennaInstancesDescription: "サーバーを改行で区切って指定します"
|
||||
antennaInstancesDescription: "インスタンスを改行で区切って指定します"
|
||||
caseSensitive: "大文字小文字を区別する"
|
||||
withReplies: "返信を含む"
|
||||
connectedTo: "次のアカウントに接続されています"
|
||||
|
@ -502,8 +502,8 @@ showFeaturedNotesInTimeline: "タイムラインにおすすめの投稿を表
|
|||
objectStorage: "オブジェクトストレージ"
|
||||
useObjectStorage: "オブジェクトストレージを使用"
|
||||
objectStorageBaseUrl: "Base URL"
|
||||
objectStorageBaseUrlDesc: "参照に使用するURL。CDNやProxyを使用している場合はそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCS等:
|
||||
'https://storage.googleapis.com/<bucket>'。"
|
||||
objectStorageBaseUrlDesc: "参照に使用するURL。CDNやProxyを使用している場合はそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCS等:\
|
||||
\ 'https://storage.googleapis.com/<bucket>'。"
|
||||
objectStorageBucket: "Bucket"
|
||||
objectStorageBucketDesc: "使用サービスのbucket名を指定してください。"
|
||||
objectStoragePrefix: "Prefix"
|
||||
|
@ -551,7 +551,7 @@ updateRemoteUser: "リモートユーザー情報の更新"
|
|||
deleteAllFiles: "すべてのファイルを削除"
|
||||
deleteAllFilesConfirm: "すべてのファイルを削除しますか?"
|
||||
removeAllFollowing: "フォローを全解除"
|
||||
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのサーバーがもう存在しなくなった場合などに実行してください。"
|
||||
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
|
||||
userSuspended: "このユーザーは凍結されています。"
|
||||
userSilenced: "このユーザーはサイレンスされています。"
|
||||
yourAccountSuspendedTitle: "アカウントが凍結されています"
|
||||
|
@ -616,7 +616,7 @@ testEmail: "配信テスト"
|
|||
wordMute: "ワードミュート"
|
||||
regexpError: "正規表現エラー"
|
||||
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが発生しました:"
|
||||
instanceMute: "サーバーミュート"
|
||||
instanceMute: "インスタンスミュート"
|
||||
userSaysSomething: "{name}が何かを言いました"
|
||||
userSaysSomethingReason: "{name}が{reason}と言いました"
|
||||
userSaysSomethingReasonReply: "{name}が{reason}を含む投稿に返信しました"
|
||||
|
@ -651,15 +651,15 @@ abuseReported: "内容が送信されました。ご報告ありがとうござ
|
|||
reporter: "通報者"
|
||||
reporteeOrigin: "通報先"
|
||||
reporterOrigin: "通報元"
|
||||
forwardReport: "リモートサーバーに通報を転送する"
|
||||
forwardReportIsAnonymous: "リモートサーバーからはあなたの情報は見られず、匿名のシステムアカウントとして表示されます。"
|
||||
forwardReport: "リモートインスタンスに通報を転送する"
|
||||
forwardReportIsAnonymous: "リモートインスタンスからはあなたの情報は見れず、匿名のシステムアカウントとして表示されます。"
|
||||
send: "送信"
|
||||
abuseMarkAsResolved: "対応済みにする"
|
||||
openInNewTab: "新しいタブで開く"
|
||||
openInSideView: "サイドビューで開く"
|
||||
defaultNavigationBehaviour: "デフォルトのナビゲーション"
|
||||
editTheseSettingsMayBreakAccount: "これらの設定を編集するとアカウントが破損する可能性があります。"
|
||||
instanceTicker: "投稿のサーバー情報"
|
||||
instanceTicker: "投稿のインスタンス情報"
|
||||
waitingFor: "{x}を待っています"
|
||||
random: "ランダム"
|
||||
system: "システム"
|
||||
|
@ -723,8 +723,7 @@ onlineUsersCount: "{n}人がオンライン"
|
|||
nUsers: "{n}ユーザー"
|
||||
nNotes: "{n}投稿"
|
||||
sendErrorReports: "エラーリポートを送信"
|
||||
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がCalckeyに共有され、ソフトウェアの品質向上に役立てられます。\n\
|
||||
エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。"
|
||||
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がCalckeyに共有され、ソフトウェアの品質向上に役立てられます。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。"
|
||||
myTheme: "マイテーマ"
|
||||
backgroundColor: "背景"
|
||||
accentColor: "アクセント"
|
||||
|
@ -748,7 +747,7 @@ capacity: "容量"
|
|||
inUse: "使用中"
|
||||
editCode: "コードを編集"
|
||||
apply: "適用"
|
||||
receiveAnnouncementFromInstance: "サーバーからのお知らせを受け取る"
|
||||
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る"
|
||||
emailNotification: "メール通知"
|
||||
publish: "公開"
|
||||
inChannelSearch: "チャンネル内検索"
|
||||
|
@ -776,7 +775,7 @@ active: "アクティブ"
|
|||
offline: "オフライン"
|
||||
notRecommended: "非推奨"
|
||||
botProtection: "Botプロテクション"
|
||||
instanceBlocking: "連合の管理"
|
||||
instanceBlocking: "連合ブロック・サイレンス"
|
||||
selectAccount: "アカウントを選択"
|
||||
switchAccount: "アカウントを切り替え"
|
||||
enabled: "有効"
|
||||
|
@ -804,12 +803,12 @@ low: "低"
|
|||
emailNotConfiguredWarning: "メールアドレスの設定がされていません。"
|
||||
ratio: "比率"
|
||||
secureMode: "セキュアモード (Authorized Fetch)"
|
||||
instanceSecurity: "サーバーのセキュリティー"
|
||||
secureModeInfo: "認証情報の無いリモートサーバーからのリクエストに応えません。"
|
||||
instanceSecurity: "インスタンスのセキュリティー"
|
||||
secureModeInfo: "他のインスタンスからリクエストするときに、証明を付けなければ返送しません。他のインスタンスの設定ファイルでsignToActivityPubGetはtrueにしてください。"
|
||||
privateMode: "非公開モード"
|
||||
privateModeInfo: "有効にすると、許可したサーバーのみからリクエストを受け付けます。"
|
||||
allowedInstances: "許可されたサーバー"
|
||||
allowedInstancesDescription: "許可したいサーバーのホストを改行で区切って設定します。非公開モードだけで有効です。"
|
||||
privateModeInfo: "有効にすると、許可したインスタンスのみからリクエストを受け付けます。"
|
||||
allowedInstances: "許可されたインスタンス"
|
||||
allowedInstancesDescription: "許可したいインスタンスのホストを改行で区切って設定します。非公開モードだけで有効です。"
|
||||
previewNoteText: "本文をプレビュー"
|
||||
customCss: "カスタムCSS"
|
||||
customCssWarn: "この設定は必ず知識のある方が行ってください。不適切な設定を行うとクライアントが正常に使用できなくなる恐れがあります。"
|
||||
|
@ -848,7 +847,7 @@ controlPanel: "コントロールパネル"
|
|||
manageAccounts: "アカウントを管理"
|
||||
makeReactionsPublic: "リアクション一覧を公開する"
|
||||
makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。"
|
||||
classic: "中央寄せ"
|
||||
classic: "クラシック"
|
||||
muteThread: "スレッドをミュート"
|
||||
unmuteThread: "スレッドのミュートを解除"
|
||||
ffVisibility: "つながりの公開範囲"
|
||||
|
@ -874,8 +873,8 @@ themeColor: "テーマカラー"
|
|||
size: "サイズ"
|
||||
numberOfColumn: "列の数"
|
||||
searchByGoogle: "検索"
|
||||
instanceDefaultLightTheme: "サーバーの標準ライトテーマ"
|
||||
instanceDefaultDarkTheme: "サーバーの標準ダークテーマ"
|
||||
instanceDefaultLightTheme: "インスタンスデフォルトのライトテーマ"
|
||||
instanceDefaultDarkTheme: "インスタンスデフォルトのダークテーマ"
|
||||
instanceDefaultThemeDescription: "オブジェクト形式のテーマコードを記入します。"
|
||||
mutePeriod: "ミュートする期限"
|
||||
indefinitely: "無期限"
|
||||
|
@ -897,7 +896,7 @@ check: "チェック"
|
|||
driveCapOverrideLabel: "このユーザーのドライブ容量上限を変更"
|
||||
driveCapOverrideCaption: "0以下を指定すると解除されます。"
|
||||
requireAdminForView: "閲覧するには管理者アカウントでログインしている必要があります。"
|
||||
isSystemAccount: "システムにより自動で作成・管理されているアカウントです。モデレーション・編集・削除を行うとサーバーの動作が不正になる可能性があるため、操作しないでください。"
|
||||
isSystemAccount: "システムにより自動で作成・管理されているアカウントです。"
|
||||
typeToConfirm: "この操作を行うには {x} と入力してください"
|
||||
deleteAccount: "アカウント削除"
|
||||
document: "ドキュメント"
|
||||
|
@ -924,7 +923,7 @@ cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いためア
|
|||
cannotUploadBecauseExceedsFileSizeLimit: "ファイルサイズの制限を超えているためアップロードできません。"
|
||||
beta: "ベータ"
|
||||
enableAutoSensitive: "自動NSFW判定"
|
||||
enableAutoSensitiveDescription: "利用可能な場合は、機械学習を利用して自動でメディアにNSFWフラグを設定します。この機能をオフにしても、サーバーによっては自動で設定されることがあります。"
|
||||
enableAutoSensitiveDescription: "利用可能な場合は、機械学習を利用して自動でメディアにNSFWフラグを設定します。この機能をオフにしても、インスタンスによっては自動で設定されることがあります。"
|
||||
activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかなどを判定しより積極的に行います。オフにすると単に文字列として正しいかどうかのみチェックされます。"
|
||||
showAds: "広告を表示する"
|
||||
navbar: "ナビゲーションバー"
|
||||
|
@ -935,18 +934,18 @@ pushNotification: "プッシュ通知"
|
|||
subscribePushNotification: "プッシュ通知を有効化"
|
||||
unsubscribePushNotification: "プッシュ通知を停止する"
|
||||
pushNotificationAlreadySubscribed: "プッシュ通知は有効です"
|
||||
pushNotificationNotSupported: "ブラウザまたはサーバーがプッシュ通知に非対応です"
|
||||
pushNotificationNotSupported: "ブラウザかサーバーがプッシュ通知に非対応"
|
||||
sendPushNotificationReadMessage: "通知やメッセージが既読になったらプッシュ通知を削除する"
|
||||
sendPushNotificationReadMessageCaption: "「{emptyPushNotificationMessage}」という通知が一瞬表示されるようになります。端末の電池消費量が増加する可能性があります。"
|
||||
adminCustomCssWarn: "この設定は、それが何をするものであるかを知っている場合のみ使用してください。不適切な値を入力すると、クライアントが正常に動作しなくなる可能性があります。ユーザー設定でCSSをテストし、正しく動作することを確認してください。"
|
||||
customMOTD: "カスタムMOTD(スプラッシュスクリーンメッセージ)"
|
||||
customMOTDDescription: "ユーザがページをロード/リロードするたびにランダムに表示される、改行で区切られたMOTD(スプラッシュスクリーン)用のカスタムメッセージ"
|
||||
customSplashIcons: "カスタムスプラッシュスクリーンアイコン"
|
||||
customSplashIconsDescription: "ユーザがページをロード/リロードするたびにランダムに表示される、改行で区切られたカスタムスプラッシュスクリーンアイコンの
|
||||
URL。画像は静的なURLで、できればすべて192x192にリサイズしてください。"
|
||||
customSplashIconsDescription: "ユーザがページをロード/リロードするたびにランダムに表示される、改行で区切られたカスタムスプラッシュスクリーンアイコンの\
|
||||
\ URL。画像は静的なURLで、できればすべて192x192にリサイズしてください。"
|
||||
showUpdates: "Calckeyの更新時にポップアップを表示する"
|
||||
recommendedInstances: "おすすめサーバー"
|
||||
recommendedInstancesDescription: "おすすめタイムラインに表示するサーバーを改行区切りで入力してください。`https://`は書かず、ドメインのみを入力してください。"
|
||||
recommendedInstances: "おすすめインスタンス"
|
||||
recommendedInstancesDescription: "おすすめタイムラインに表示するインスタンスを改行区切りで入力してください。`https://`は書かず、ドメインのみを入力してください。"
|
||||
caption: "自動キャプション"
|
||||
splash: "スプラッシュスクリーン"
|
||||
updateAvailable: "アップデートがありますよ!"
|
||||
|
@ -958,22 +957,21 @@ migration: "アカウントの引っ越し"
|
|||
moveTo: "このアカウントを新しいアカウントに引っ越す"
|
||||
moveToLabel: "引っ越し先のアカウント:"
|
||||
moveAccount: "引っ越し実行!"
|
||||
moveAccountDescription: "この操作は取り消せません。まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成したことを確認してください。エイリアス作成後、引っ越し先のアカウントをこのように入力してください:@person@server.com"
|
||||
moveAccountDescription: "この操作は取り消せません。まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成したことを確認してください。エイリアス作成後、引っ越し先のアカウントをこのように入力してください:@person@instance.com"
|
||||
moveFrom: "別のアカウントからこのアカウントに引っ越す"
|
||||
moveFromLabel: "引っ越し元のアカウント:"
|
||||
moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@server.com"
|
||||
moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!引っ越し元のアカウントをこのように入力してください:@person@instance.com"
|
||||
migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用できなくなります。\n\
|
||||
この操作を行う前に引っ越し先のアカウントでエイリアスを作成する必要があります。エイリアスが作成されているか、必ず確認してください。"
|
||||
defaultReaction: "リモートとローカルの投稿に対するデフォルトの絵文字リアクション"
|
||||
license: "ライセンス"
|
||||
indexPosts: "投稿をインデックス"
|
||||
indexFrom: "この投稿ID以降をインデックスする"
|
||||
indexFromDescription: "空白で全ての投稿を指定します"
|
||||
indexFrom: "この投稿ID以降をインデックスする(空白で全ての投稿を指定します)"
|
||||
indexNotice: "インデックスを開始しました。完了まで時間がかかる場合があるため、少なくとも1時間はサーバーを再起動しないでください。"
|
||||
customKaTeXMacro: "カスタムKaTeXマクロ"
|
||||
customKaTeXMacroDescription: "数式入力を楽にするためのマクロを設定しましょう!記法はLaTeXにおけるコマンドの定義と同様に \\newcommand{\\
|
||||
name}{content} または \\newcommand{\\add}[2]{#1 + #2} のように記述します。後者の例では \\add{3}{foo}
|
||||
が 3 + foo に展開されます。また、マクロの名前を囲む波括弧を丸括弧 () および角括弧 [] に変更した場合、マクロの引数に使用する括弧が変更されます。マクロの定義は一行に一つのみで、途中で改行はできません。マクロの定義が無効な行は無視されます。文字列を単純に置換する機能のみに対応していて、条件分岐などの高度な構文は使用できません。"
|
||||
customKaTeXMacroDescription: "数式入力を楽にするためのマクロを設定しましょう!記法はLaTeXにおけるコマンドの定義と同様に \\newcommand{\\\
|
||||
name}{content} または \\newcommand{\\add}[2]{#1 + #2} のように記述します。後者の例では \\add{3}{foo}\
|
||||
\ が 3 + foo に展開されます。また、マクロの名前を囲む波括弧を丸括弧 () および角括弧 [] に変更した場合、マクロの引数に使用する括弧が変更されます。マクロの定義は一行に一つのみで、途中で改行はできません。マクロの定義が無効な行は無視されます。文字列を単純に置換する機能のみに対応していて、条件分岐などの高度な構文は使用できません。"
|
||||
enableCustomKaTeXMacro: "カスタムKaTeXマクロを有効にする"
|
||||
preventAiLearning: "AIによる学習を防止"
|
||||
preventAiLearningDescription: "投稿したノート、添付した画像などのコンテンツを学習の対象にしないようAIに要求します。これはnoaiフラグをHTMLレスポンスに含めることによって実現されます。"
|
||||
|
@ -1014,7 +1012,7 @@ _ad:
|
|||
_forgotPassword:
|
||||
enterEmail: "アカウントに登録したメールアドレスを入力してください。そのアドレス宛てに、パスワードリセット用のリンクが送信されます。"
|
||||
ifNoEmail: "メールアドレスを登録していない場合は、管理者までお問い合わせください。"
|
||||
contactAdmin: "このインスタンスではメールアドレスの登録がサポートされていないため、パスワードリセットを行う場合は管理者までお問い合わせください。"
|
||||
contactAdmin: "このインスタンスではメールがサポートされていないため、パスワードリセットを行う場合は管理者までお問い合わせください。"
|
||||
_gallery:
|
||||
my: "自分の投稿"
|
||||
liked: "いいねした投稿"
|
||||
|
@ -1060,7 +1058,7 @@ _aboutMisskey:
|
|||
source: "ソースコード"
|
||||
translation: "Calckeyを翻訳"
|
||||
donate: "Calckeyに寄付"
|
||||
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます! 🥰"
|
||||
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます! \U0001F970"
|
||||
patrons: "支援者"
|
||||
_nsfw:
|
||||
respect: "閲覧注意のメディアは隠す"
|
||||
|
@ -1075,7 +1073,7 @@ _mfm:
|
|||
hashtag: "ハッシュタグ"
|
||||
hashtagDescription: "ナンバーサイン + タグで、ハッシュタグを示せます。"
|
||||
url: "URL"
|
||||
urlDescription: "URLを表示できます。"
|
||||
urlDescription: "URLを示せます。"
|
||||
link: "リンク"
|
||||
linkDescription: "文章の特定の範囲を、URLに紐づけられます。"
|
||||
bold: "太字"
|
||||
|
@ -1133,9 +1131,9 @@ _mfm:
|
|||
plain: "プレーン"
|
||||
plainDescription: "内側の構文を全て無効にします。"
|
||||
position: 位置
|
||||
stop: MFMを停止
|
||||
stop: MFMアニメーションを停止
|
||||
alwaysPlay: MFMアニメーションを自動再生する
|
||||
play: MFMを再生
|
||||
play: MFMアニメーションを再生
|
||||
warn: MFMアニメーションは激しい動きを含む可能性があります。
|
||||
positionDescription: 位置を指定した値だけずらします。
|
||||
foreground: 文字色
|
||||
|
@ -1144,12 +1142,6 @@ _mfm:
|
|||
scale: 拡大・縮小
|
||||
scaleDescription: 大きさを指定した値に拡大・縮小します。
|
||||
foregroundDescription: 文字の色を変更します。
|
||||
fade: フェード
|
||||
fadeDescription: フェードインとフェードアウトする。
|
||||
crop: 切り抜き
|
||||
cropDescription: 内容を切り抜く。
|
||||
advancedDescription: オフにすると、アニメーション再生中を除いて基本的なMFMだけ表示します。
|
||||
advanced: 高度なMFM
|
||||
_instanceTicker:
|
||||
none: "表示しない"
|
||||
remote: "リモートユーザーに表示"
|
||||
|
@ -1189,10 +1181,10 @@ _wordMute:
|
|||
hard: "ハード"
|
||||
mutedNotes: "ミュートされた投稿"
|
||||
_instanceMute:
|
||||
instanceMuteDescription: "ミュートしたサーバーのユーザーへの返信を含めて、設定したサーバーの全ての投稿とブーストをミュートします。"
|
||||
instanceMuteDescription: "ミュートしたインスタンスのユーザーへの返信を含めて、設定したインスタンスの全ての投稿とブーストをミュートします。"
|
||||
instanceMuteDescription2: "改行で区切って設定します"
|
||||
title: "設定したサーバーの投稿を隠します。"
|
||||
heading: "ミュートするサーバー"
|
||||
title: "設定したインスタンスの投稿を隠します。"
|
||||
heading: "ミュートするインスタンス"
|
||||
_theme:
|
||||
explore: "テーマを探す"
|
||||
install: "テーマのインストール"
|
||||
|
@ -1302,40 +1294,26 @@ _tutorial:
|
|||
step4_1: "投稿してみましょう!"
|
||||
step4_2: "最初は{introduction}に投稿したり、シンプルに「こんにちは、アカウント作ってみました!」などの投稿をする人もいます。"
|
||||
step5_1: "タイムライン、タイムラインだらけ!"
|
||||
step5_2: "あなたのサーバーでは{timelines}種類のタイムラインが有効になっています。"
|
||||
step5_3: "ホーム{icon}タイムラインでは、あなたがフォローしているアカウントの投稿を見られます。"
|
||||
step5_4: "ローカル{icon}タイムラインでは、このサーバーにいるみんなの投稿を見られます。"
|
||||
step5_5: "ソーシャル{icon}タイムラインでは、ホームタイムラインとローカルタイムラインの投稿が両方表示されます。"
|
||||
step5_6: "おすすめ{icon}タイムラインでは、管理人がおすすめするサーバーの投稿を見られます。"
|
||||
step5_7: "グローバル{icon}タイムラインでは、接続している他のすべてのサーバーからの投稿を見られます。"
|
||||
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_2: "実は、あなたはただCalckeyに参加しただけではありません。ここは、何千もの相互接続されたサーバーが構成する Fediverse への入口です。各サーバーは「インスタンス」と呼ばれます。"
|
||||
step6_3: "それぞれのサーバーでは必ずしもCalckeyが使われているわけではなく、異なる動作をするサーバーもあります。しかし、あなたは他のサーバーのアカウントもフォローしたり、返信・ブーストができます。一見難しそうですが大丈夫!すぐ慣れます。"
|
||||
step6_4: "これで完了です。お楽しみください!"
|
||||
_2fa:
|
||||
alreadyRegistered: "既に設定は完了しています。"
|
||||
registerTOTP: "認証アプリの設定を開始"
|
||||
registerDevice: "デバイスを登録"
|
||||
registerKey: "キーを登録"
|
||||
step1: "まず、{a}や{b}などの認証アプリをお使いのデバイスにインストールします。"
|
||||
step2: "次に、表示されているQRコードをアプリでスキャンします。"
|
||||
step2Click: "QRコードをクリックすると、お使いの端末にインストールされている認証アプリやキーリングに登録できます。"
|
||||
step2Url: "デスクトップアプリでは次のURIを入力します:"
|
||||
step3Title: "確認コードを入力"
|
||||
step3: "アプリに表示されている確認コード(トークン)を入力して完了です。"
|
||||
step4: "これからログインするときも、同じように確認コードを入力します。"
|
||||
securityKeyNotSupported: "お使いのブラウザはセキュリティキーに対応していません。"
|
||||
registerTOTPBeforeKey: "セキュリティキー・パスキーを登録するには、まず認証アプリの設定を行なってください。"
|
||||
securityKeyInfo: "FIDO2をサポートするハードウェアセキュリティキー、端末の生体認証やPINロック、パスキーといった、WebAuthn由来の鍵を登録します。"
|
||||
chromePasskeyNotSupported: "Chromeのパスキーは現在サポートしていません。"
|
||||
registerSecurityKey: "セキュリティキー・パスキーを登録する"
|
||||
securityKeyName: "キーの名前を入力"
|
||||
tapSecurityKey: "ブラウザの指示に従い、セキュリティキーやパスキーを登録してください"
|
||||
removeKey: "セキュリティキーを削除"
|
||||
removeKeyConfirm: "{name}を削除しますか?"
|
||||
whyTOTPOnlyRenew: "セキュリティキーが登録されている場合、認証アプリの設定は解除できません。"
|
||||
renewTOTP: "認証アプリを再設定"
|
||||
renewTOTPConfirm: "今までの認証アプリの確認コードは使用できなくなります"
|
||||
renewTOTPOk: "再設定する"
|
||||
renewTOTPCancel: "やめておく"
|
||||
step2Url: "デスクトップアプリでは次のURLを入力します:"
|
||||
step3: "アプリに表示されているトークンを入力して完了です。"
|
||||
step4: "これからログインするときも、同じようにトークンを入力します。"
|
||||
securityKeyInfo: "FIDO2をサポートするハードウェアセキュリティキーもしくは端末の指紋認証やPINを使用してログインするように設定できます。"
|
||||
_permissions:
|
||||
"read:account": "アカウントの情報を見る"
|
||||
"write:account": "アカウントの情報を変更する"
|
||||
|
@ -1383,7 +1361,7 @@ _antennaSources:
|
|||
users: "指定した一人または複数のユーザーの投稿"
|
||||
userList: "指定したリストのユーザーの投稿"
|
||||
userGroup: "指定したグループのユーザーの投稿"
|
||||
instances: "指定したサーバーの全ユーザーの投稿"
|
||||
instances: "指定したインスタンスの全ユーザーの投稿"
|
||||
_weekday:
|
||||
sunday: "日曜日"
|
||||
monday: "月曜日"
|
||||
|
@ -1406,7 +1384,7 @@ _widgets:
|
|||
digitalClock: "デジタル時計"
|
||||
unixClock: "UNIX時計"
|
||||
federation: "連合"
|
||||
instanceCloud: "サーバークラウド"
|
||||
instanceCloud: "インスタンスクラウド"
|
||||
postForm: "投稿フォーム"
|
||||
slideshow: "スライドショー"
|
||||
button: "ボタン"
|
||||
|
@ -1417,10 +1395,6 @@ _widgets:
|
|||
userList: "ユーザーリスト"
|
||||
_userList:
|
||||
chooseList: "リストを選択"
|
||||
meiliStatus: サーバーステータス
|
||||
serverInfo: サーバー情報
|
||||
meiliSize: インデックスサイズ
|
||||
meiliIndexCount: インデックス済みの投稿
|
||||
_cw:
|
||||
hide: "隠す"
|
||||
show: "もっと見る"
|
||||
|
@ -1849,9 +1823,6 @@ _notification:
|
|||
followBack: "フォローバック"
|
||||
reply: "返信"
|
||||
renote: "ブースト"
|
||||
reacted: がリアクションしました
|
||||
renoted: がブーストしました
|
||||
voted: が投票しました
|
||||
_deck:
|
||||
alwaysShowMainColumn: "常にメインカラムを表示"
|
||||
columnAlign: "カラムの寄せ"
|
||||
|
@ -1878,7 +1849,6 @@ _deck:
|
|||
tl: "タイムライン"
|
||||
antenna: "アンテナ"
|
||||
list: "リスト"
|
||||
channel: "チャンネル"
|
||||
mentions: "あなた宛て"
|
||||
direct: "ダイレクト"
|
||||
noteId: 投稿のID
|
||||
|
@ -1888,46 +1858,11 @@ apps: "アプリ"
|
|||
_experiments:
|
||||
enablePostEditing: 投稿の編集機能を有効にする
|
||||
title: 試験的な機能
|
||||
postEditingCaption: 投稿のメニューに既存の投稿を編集するボタンを表示し、他サーバーの編集も受信できるようにします。
|
||||
postImportsCaption:
|
||||
ユーザーが過去の投稿をCalckey・Misskey・Mastodon・Akkoma・Pleromaからインポートすることを許可します。キューが溜まっているときにインポートするとサーバーに負荷がかかる可能性があります。
|
||||
enablePostImports: 投稿のインポートを有効にする
|
||||
sendModMail: モデレーション通知を送る
|
||||
postEditingCaption: 投稿のメニューに既存の投稿を編集するボタンを表示します。
|
||||
sendModMail: モデレーションノートを送る
|
||||
deleted: 削除済み
|
||||
editNote: 投稿を編集
|
||||
edited: '編集済み: {date} {time}'
|
||||
signupsDisabled:
|
||||
edited: 編集済み
|
||||
signupsDisabled:
|
||||
現在、このサーバーでは新規登録が一般開放されていません。招待コードをお持ちの場合には、以下の欄に入力してください。招待コードをお持ちでない場合にも、新規登録を開放している他のサーバーには入れますよ!
|
||||
findOtherInstance: 他のサーバーを探す
|
||||
newer: 新しい投稿
|
||||
older: 古い投稿
|
||||
accessibility: アクセシビリティ
|
||||
jumpToPrevious: 前に戻る
|
||||
cw: 閲覧注意
|
||||
silencedWarning: スパムの可能性があるため、これらのユーザーが所属するサーバーは管理者によりサイレンスされています。
|
||||
searchPlaceholder: Calckeyを検索
|
||||
channelFederationWarn: 現時点では、チャンネルは他のサーバーへ連合しません
|
||||
listsDesc: リストでは指定したユーザーだけのタイムラインを作れます。リストには「タイムライン」のページからアクセスできます。
|
||||
antennasDesc: "アンテナでは指定した条件に合致する投稿が表示されます。\nアンテナには「タイムライン」のページからアクセスできます。"
|
||||
expandOnNoteClickDesc: オフの場合、右クリックメニューか日付をクリックすることで開けます。
|
||||
expandOnNoteClick: クリックで投稿の詳細を開く
|
||||
clipsDesc: クリップは分類と共有ができるブックマークです。各投稿のメニューからクリップを作成できます。
|
||||
_dialog:
|
||||
charactersExceeded: "最大文字数を超えています! 現在 {current} / 制限 {max}"
|
||||
charactersBelow: "最小文字数を下回っています! 現在 {current} / 制限 {min}"
|
||||
_filters:
|
||||
followersOnly: フォロワーのみ
|
||||
fromUser: ユーザーを指定
|
||||
withFile: 添付ファイルあり
|
||||
fromDomain: ドメインを指定
|
||||
notesBefore: 指定の日付以前
|
||||
notesAfter: 指定の日付以降
|
||||
followingOnly: フォロー中のみ
|
||||
isModerator: モデレーター
|
||||
audio: 音声
|
||||
image: 画像
|
||||
video: 動画
|
||||
isBot: このアカウントはBotです
|
||||
isLocked: このアカウントのフォローは承認制です
|
||||
isAdmin: 管理者
|
||||
isPatron: Calckey 後援者
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "操作"
|
|||
software: "ソフトウェア"
|
||||
version: "バージョン"
|
||||
metadata: "メタデータ"
|
||||
withNFiles: "{n}個のファイル"
|
||||
monitor: "モニター"
|
||||
jobQueue: "ジョブキュー"
|
||||
cpuAndMemory: "CPUとメモリ"
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "작업"
|
|||
software: "소프트웨어"
|
||||
version: "버전"
|
||||
metadata: "메타데이터"
|
||||
withNFiles: "{n}개의 파일"
|
||||
monitor: "모니터"
|
||||
jobQueue: "작업 대기열"
|
||||
cpuAndMemory: "CPU와 메모리"
|
||||
|
@ -1179,8 +1180,8 @@ _time:
|
|||
day: "일"
|
||||
_2fa:
|
||||
alreadyRegistered: "이미 설정이 완료되었습니다."
|
||||
registerTOTP: "디바이스 등록"
|
||||
registerSecurityKey: "키를 등록"
|
||||
registerDevice: "디바이스 등록"
|
||||
registerKey: "키를 등록"
|
||||
step1: "먼저, {a}나 {b}등의 인증 앱을 사용 중인 디바이스에 설치합니다."
|
||||
step2: "그 후, 표시되어 있는 QR코드를 앱으로 스캔합니다."
|
||||
step2Url: "데스크톱 앱에서는 다음 URL을 입력하세요:"
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
---
|
||||
_lang_: "Nederlands"
|
||||
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! 🚀"
|
||||
headlineMisskey: "Netwerk verbonden door notities"
|
||||
introMisskey: "Welkom! Calckey 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! 🚀"
|
||||
monthAndDay: "{day} {month}"
|
||||
search: "Zoeken"
|
||||
notifications: "Meldingen"
|
||||
|
@ -13,7 +10,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}"
|
||||
|
@ -47,16 +44,15 @@ copyContent: "Kopiëren inhoud"
|
|||
copyLink: "Kopiëren link"
|
||||
delete: "Verwijderen"
|
||||
deleteAndEdit: "Verwijderen en bewerken"
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze post wilt verwijderen en dan bewerken?
|
||||
Je verliest alle reacties, boosts en antwoorden erop."
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan bewerken? Je verliest alle reacties, herdelingen en antwoorden erop."
|
||||
addToList: "Aan lijst toevoegen"
|
||||
sendMessage: "Verstuur bericht"
|
||||
copyUsername: "Gebruikersnaam kopiëren"
|
||||
searchUser: "Zoek een gebruiker"
|
||||
copyUsername: "Kopiëren gebruikersnaam "
|
||||
searchUser: "Zoeken een gebruiker"
|
||||
reply: "Antwoord"
|
||||
loadMore: "Laad meer"
|
||||
showMore: "Toon meer"
|
||||
youGotNewFollower: "volgt jou"
|
||||
youGotNewFollower: "volgde jou"
|
||||
receiveFollowRequest: "Volgverzoek ontvangen"
|
||||
followRequestAccepted: "Volgverzoek geaccepteerd"
|
||||
mention: "Vermelding"
|
||||
|
@ -67,11 +63,9 @@ import: "Import"
|
|||
export: "Export"
|
||||
files: "Bestanden"
|
||||
download: "Downloaden"
|
||||
driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen?
|
||||
Posts met dit bestand als bijlage worden ook verwijderd."
|
||||
driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen? Notities 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"
|
||||
|
@ -81,14 +75,12 @@ following: "Volgend"
|
|||
followers: "Volgers"
|
||||
followsYou: "Volgt jou"
|
||||
createList: "Creëer lijst"
|
||||
manageLists: "Lijsten beheren"
|
||||
manageLists: "Beheren lijsten"
|
||||
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"
|
||||
|
@ -101,26 +93,25 @@ followRequests: "Volgverzoeken"
|
|||
unfollow: "Ontvolgen"
|
||||
followRequestPending: "Wachten op goedkeuring volgverzoek"
|
||||
enterEmoji: "Voer een emoji in"
|
||||
renote: "Boost"
|
||||
unrenote: "Boost intrekken"
|
||||
renoted: "Boosted."
|
||||
cantRenote: "Dit bericht kan niet worden geboost."
|
||||
cantReRenote: "Een boost kan niet worden geboost."
|
||||
renote: "Herdelen"
|
||||
unrenote: "Stop herdelen"
|
||||
renoted: "Herdeeld"
|
||||
cantRenote: "Dit bericht kan niet worden herdeeld"
|
||||
cantReRenote: "Een herdeling kan niet worden herdeeld"
|
||||
quote: "Quote"
|
||||
pinnedNote: "Vastgemaakte post"
|
||||
pinnedNote: "Vastgemaakte notitie"
|
||||
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: "Onthoud post zichtbaarheidsinstellingen"
|
||||
reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen, Druk op \"+\" om toe te voegen"
|
||||
rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen"
|
||||
attachCancel: "Verwijder bijlage"
|
||||
markAsSensitive: "Markeren als NSFW"
|
||||
unmarkAsSensitive: "Geen NSFW"
|
||||
enterFileName: "Bestandsnaam invoeren"
|
||||
enterFileName: "Invoeren bestandsnaam"
|
||||
mute: "Dempen"
|
||||
unmute: "Stop dempen"
|
||||
block: "Blokkeren"
|
||||
|
@ -131,21 +122,16 @@ 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 Calckey 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 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"
|
||||
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."
|
||||
addAccount: "Account toevoegen"
|
||||
loginFailed: "Aanmelding mislukt."
|
||||
showOnRemote: "Bekijk op de externe server"
|
||||
showOnRemote: "Toon op de externe instantie."
|
||||
general: "Algemeen"
|
||||
wallpaper: "Achtergrond"
|
||||
setWallpaper: "Achtergrond instellen"
|
||||
|
@ -154,17 +140,13 @@ 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(s)"
|
||||
recipient: "Ontvanger"
|
||||
annotation: "Reacties"
|
||||
federation: "Federatie"
|
||||
instances: "Servers"
|
||||
instances: "Server"
|
||||
registeredAt: "Geregistreerd op"
|
||||
latestRequestSentAt: "Laatste aanvraag verstuurd"
|
||||
latestRequestReceivedAt: "Laatste aanvraag ontvangen"
|
||||
|
@ -179,6 +161,7 @@ operations: "Verwerkingen"
|
|||
software: "Software"
|
||||
version: "Versie"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} bestand(en)"
|
||||
monitor: "Monitor"
|
||||
jobQueue: "Job Queue"
|
||||
cpuAndMemory: "CPU en geheugen"
|
||||
|
@ -188,22 +171,18 @@ instanceInfo: "Serverinformatie"
|
|||
statistics: "Statistieken"
|
||||
clearQueue: "Wachtrij wissen"
|
||||
clearQueueConfirmTitle: "Weet je zeker dat je de wachtrji leeg wil maken?"
|
||||
clearQueueConfirmText: "Niet-bezorgde posts die nog in de wachtrij staan, worden niet
|
||||
gefedereerd. Meestal is deze operatie niet nodig."
|
||||
clearQueueConfirmText: "Niet-bezorgde biljetten 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 deze post wil verwijderen?"
|
||||
pinLimitExceeded: "Je kunt geen posts meer vastprikken"
|
||||
noteDeleteConfirm: "Ben je zeker dat je dit bericht wil verwijderen?"
|
||||
pinLimitExceeded: "Je kunt geen berichten meer vastprikken"
|
||||
intro: "Installatie van Calckey geëindigd! Maak nu een beheerder aan."
|
||||
done: "Klaar"
|
||||
processing: "Bezig met verwerken"
|
||||
|
@ -244,11 +223,9 @@ 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"
|
||||
|
@ -262,8 +239,7 @@ 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"
|
||||
|
@ -332,7 +308,7 @@ cropImageAsk: "Bijsnijdengevraagd"
|
|||
file: "Bestanden"
|
||||
_email:
|
||||
_follow:
|
||||
title: "Je hebt een nieuwe volger"
|
||||
title: "volgde jou"
|
||||
_mfm:
|
||||
mention: "Vermelding"
|
||||
quote: "Quote"
|
||||
|
@ -391,7 +367,7 @@ _pages:
|
|||
types:
|
||||
array: "Lijsten"
|
||||
_notification:
|
||||
youWereFollowed: "volgt jou"
|
||||
youWereFollowed: "volgde jou"
|
||||
_types:
|
||||
follow: "Volgend"
|
||||
mention: "Vermelding"
|
||||
|
@ -407,278 +383,3 @@ _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 om {date} {time}'
|
||||
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
|
||||
objectStorageUseSSLDesc: Schakel dit uit als je geen HTTPS voor je API connecties
|
||||
gebruikt
|
||||
objectStorageUseProxy: Verbind over Proxy
|
||||
objectStorageUseProxyDesc: Schakel dit uit als je geen Proxy voor je API connecties
|
||||
gebruikt
|
||||
sounds: Geluiden
|
||||
lastUsedDate: Laatst gebruikt op
|
||||
installedDate: Geautoriseerd op
|
||||
sort: Sorteren
|
||||
output: Uitvoer
|
||||
script: Script
|
||||
popout: Pop-out
|
||||
descendingOrder: Aflopend
|
||||
showInPage: Toon in de pagina
|
||||
chooseEmoji: Kies een emoji
|
||||
ascendingOrder: Oplopend
|
||||
volume: Volume
|
||||
masterVolume: Master volume
|
||||
details: Details
|
||||
unableToProcess: Deze operatie kon niet worden voltooid
|
||||
nothing: Niks te zien hier
|
||||
scratchpad: Kladblok
|
||||
recentUsed: Recentelijk gebruikt
|
||||
install: Installeer
|
||||
uninstall: Verwijderen
|
||||
installedApps: Geautoriseerde Applicaties
|
||||
state: Status
|
||||
updateRemoteUser: Update externe gebruikersinformatie
|
||||
listen: Luister
|
||||
none: Geen
|
||||
scratchpadDescription: Het kladblok is een omgeving voor AiScript experimenten. Je
|
||||
kan hier schrijven, uitvoeren, en de resultaten bekijken van de interactie met Calckey.
|
||||
disablePagesScript: Zet AiScript op Pages uit
|
||||
deleteAllFiles: Verwijder alle bestanden
|
||||
deleteAllFilesConfirm: Weet je zeker dat je alle bestanden wil verwijderen?
|
||||
removeAllFollowing: Ontvolg alle gevolgde gebruikers
|
||||
serverLogs: Server logboek
|
||||
deleteAll: Verwijder alles
|
||||
showFixedPostForm: Toon het post formulier bovenaan de tijdlijn
|
||||
newNoteRecived: Er zijn nieuwe posts
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
_lang_: "Polski"
|
||||
headlineMisskey: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze
|
||||
będzie darmowa! 🚀"
|
||||
introMisskey: "Hej! Calckey to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,
|
||||
która zawsze będzie darmowa! 🚀"
|
||||
headlineMisskey: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze\
|
||||
\ będzie darmowa! \U0001F680"
|
||||
introMisskey: "Hej! Calckey to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa,\
|
||||
\ która zawsze będzie darmowa! \U0001F680"
|
||||
monthAndDay: "{month}-{day}"
|
||||
search: "Szukaj"
|
||||
notifications: "Powiadomienia"
|
||||
|
@ -17,7 +17,7 @@ enterUsername: "Wprowadź nazwę użytkownika"
|
|||
renotedBy: "Podbito przez {user}"
|
||||
noNotes: "Brak wpisów"
|
||||
noNotifications: "Brak powiadomień"
|
||||
instance: "Serwer"
|
||||
instance: "Instancja"
|
||||
settings: "Ustawienia"
|
||||
basicSettings: "Podstawowe ustawienia"
|
||||
otherSettings: "Pozostałe ustawienia"
|
||||
|
@ -45,8 +45,8 @@ copyContent: "Skopiuj zawartość"
|
|||
copyLink: "Skopiuj odnośnik"
|
||||
delete: "Usuń"
|
||||
deleteAndEdit: "Usuń i edytuj"
|
||||
deleteAndEditConfirm: "Czy na pewno chcesz usunąć ten wpis i zedytować go? Utracisz
|
||||
wszystkie reakcje, podbicia i odpowiedzi do tego wpisu."
|
||||
deleteAndEditConfirm: "Czy na pewno chcesz usunąć ten wpis i zedytować go? Utracisz\
|
||||
\ wszystkie reakcje, podbicia i odpowiedzi do tego wpisu."
|
||||
addToList: "Dodaj do listy"
|
||||
sendMessage: "Wyślij wiadomość"
|
||||
copyUsername: "Kopiuj nazwę użytkownika"
|
||||
|
@ -66,11 +66,11 @@ import: "Importuj"
|
|||
export: "Eksportuj"
|
||||
files: "Pliki"
|
||||
download: "Pobierz"
|
||||
driveFileDeleteConfirm: "Czy chcesz usunąć plik \"{name}\"? Wszystkie wpisy zawierające
|
||||
ten plik również zostaną usunięte."
|
||||
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."
|
||||
exportRequested: "Zażądałeś eksportu. Może to zająć chwilę. Po zakończeniu eksportu\
|
||||
\ zostanie on dodany do Twojego dysku."
|
||||
importRequested: "Zażądano importu. Może to zająć chwilę."
|
||||
lists: "Listy"
|
||||
noLists: "Nie masz żadnych list"
|
||||
|
@ -85,8 +85,8 @@ error: "Błąd"
|
|||
somethingHappened: "Coś poszło nie tak"
|
||||
retry: "Spróbuj ponownie"
|
||||
pageLoadError: "Nie udało się załadować strony."
|
||||
pageLoadErrorDescription: "Zwykle jest to spowodowane problemem z siecią lub cache
|
||||
przeglądarki. Spróbuj wyczyścić cache i sprawdź jeszcze raz za chwilę."
|
||||
pageLoadErrorDescription: "Zwykle jest to spowodowane problemem z siecią lub cache\
|
||||
\ przeglądarki. Spróbuj wyczyścić cache i sprawdź jeszcze raz za chwilę."
|
||||
serverIsDead: "Serwer nie odpowiada. Zaczekaj chwilę i spróbuj ponownie."
|
||||
youShouldUpgradeClient: "Aby zobaczyć tą stronę, odśwież ją, by zaaktualizować klienta."
|
||||
enterListName: "Wpisz nazwę listy"
|
||||
|
@ -113,8 +113,8 @@ sensitive: "NSFW"
|
|||
add: "Dodaj"
|
||||
reaction: "Reakcja"
|
||||
reactionSetting: "Reakcje do pokazania w wyborniku reakcji"
|
||||
reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć,
|
||||
naciśnij „+” aby dodać."
|
||||
reactionSettingDescription2: "Przeciągnij aby zmienić kolejność, naciśnij aby usunąć,\
|
||||
\ naciśnij „+” aby dodać."
|
||||
rememberNoteVisibility: "Zapamiętuj ustawienia widoczności wpisu"
|
||||
attachCancel: "Usuń załącznik"
|
||||
markAsSensitive: "Oznacz jako NSFW"
|
||||
|
@ -143,22 +143,22 @@ emojiUrl: "Adres URL emoji"
|
|||
addEmoji: "Dodaj emoji"
|
||||
settingGuide: "Proponowana konfiguracja"
|
||||
cacheRemoteFiles: "Przechowuj zdalne pliki w pamięci podręcznej"
|
||||
cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ładowane
|
||||
bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni
|
||||
dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||
cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ładowane\
|
||||
\ bezpośrednio ze zdalnych instancji. Wyłączenie the opcji zmniejszy użycie powierzchni\
|
||||
\ dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane."
|
||||
flagAsBot: "To konto jest botem"
|
||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw
|
||||
tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów,
|
||||
aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne
|
||||
systemy Calckey, traktując konto jako bota."
|
||||
flagAsCat: "Czy jesteś kotem? 😺"
|
||||
flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw\
|
||||
\ tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów,\
|
||||
\ aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne\
|
||||
\ systemy Calckey, traktując konto jako bota."
|
||||
flagAsCat: "Czy jesteś kotem? \U0001F63A"
|
||||
flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!"
|
||||
flagShowTimelineReplies: "Pokazuj odpowiedzi na osi czasu"
|
||||
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników,
|
||||
których obserwujesz"
|
||||
autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od użytkowników,\
|
||||
\ których obserwujesz"
|
||||
addAccount: "Dodaj konto"
|
||||
loginFailed: "Nie udało się zalogować"
|
||||
showOnRemote: "Zobacz na zdalnym serwerze"
|
||||
showOnRemote: "Zobacz na zdalnej instancji"
|
||||
general: "Ogólne"
|
||||
wallpaper: "Tapeta"
|
||||
setWallpaper: "Ustaw tapetę"
|
||||
|
@ -172,7 +172,7 @@ selectUser: "Wybierz użytkownika"
|
|||
recipient: "Odbiorca(-y)"
|
||||
annotation: "Komentarze"
|
||||
federation: "Federacja"
|
||||
instances: "Serwery"
|
||||
instances: "Instancja"
|
||||
registeredAt: "Zarejestrowano"
|
||||
latestRequestSentAt: "Ostatnie żądanie wysłano o"
|
||||
latestRequestReceivedAt: "Ostatnie żądanie otrzymano o"
|
||||
|
@ -182,28 +182,29 @@ charts: "Wykresy"
|
|||
perHour: "co godzinę"
|
||||
perDay: "co dzień"
|
||||
stopActivityDelivery: "Przestań przesyłać aktywności"
|
||||
blockThisInstance: "Zablokuj ten serwer"
|
||||
blockThisInstance: "Zablokuj tę instancję"
|
||||
operations: "Działania"
|
||||
software: "Oprogramowanie"
|
||||
version: "Wersja"
|
||||
metadata: "Metadane"
|
||||
withNFiles: "{n} plik(i/ów)"
|
||||
monitor: "Monitor"
|
||||
jobQueue: "Kolejka zadań"
|
||||
cpuAndMemory: "CPU i pamięć"
|
||||
network: "Sieć"
|
||||
disk: "Dysk"
|
||||
instanceInfo: "Informacje o serwerze"
|
||||
instanceInfo: "Informacje o instancji"
|
||||
statistics: "Statystyki"
|
||||
clearQueue: "Wyczyść kolejkę"
|
||||
clearQueueConfirmTitle: "Czy na pewno chcesz wyczyścić kolejkę?"
|
||||
clearQueueConfirmText: "Wszystkie niewysłane wpisy z kolejki nie zostaną wysłane.
|
||||
Zwykle to nie jest konieczne."
|
||||
clearQueueConfirmText: "Wszystkie niewysłane wpisy z kolejki nie zostaną wysłane.\
|
||||
\ Zwykle to nie jest konieczne."
|
||||
clearCachedFiles: "Wyczyść pamięć podręczną"
|
||||
clearCachedFilesConfirm: "Czy na pewno chcesz usunąć wszystkie zdalne pliki z pamięci
|
||||
podręcznej?"
|
||||
blockedInstances: "Zablokowane serwery"
|
||||
blockedInstancesDescription: "Wypisz nazwy hostów serwerów, które chcesz zablokować.
|
||||
Wymienione serwery nie będą mogły dłużej komunikować się z tym serwerem."
|
||||
clearCachedFilesConfirm: "Czy na pewno chcesz usunąć wszystkie zdalne pliki z pamięci\
|
||||
\ podręcznej?"
|
||||
blockedInstances: "Zablokowane instancje"
|
||||
blockedInstancesDescription: "Wypisz nazwy hostów instancji, które powinny zostać\
|
||||
\ zablokowane. Wypisane instancje nie będą mogły dłużej komunikować się z tą instancją."
|
||||
muteAndBlock: "Wyciszenia i blokady"
|
||||
mutedUsers: "Wyciszeni użytkownicy"
|
||||
blockedUsers: "Zablokowani użytkownicy"
|
||||
|
@ -213,7 +214,7 @@ noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?"
|
|||
pinLimitExceeded: "Nie możesz przypiąć więcej wpisów"
|
||||
intro: "Zakończono instalację Calckey! Utwórz konto administratora."
|
||||
done: "Gotowe"
|
||||
processing: "Przetwarzanie"
|
||||
processing: "Przetwarzanie..."
|
||||
preview: "Podgląd"
|
||||
default: "Domyślne"
|
||||
defaultValueIs: "Domyślne: {value}"
|
||||
|
@ -226,9 +227,9 @@ all: "Wszystkie"
|
|||
subscribing: "Subskrybowanie"
|
||||
publishing: "Publikowanie"
|
||||
notResponding: "Nie odpowiada"
|
||||
instanceFollowing: "Obserwowani na serwerze"
|
||||
instanceFollowers: "Obserwujący na serwerze"
|
||||
instanceUsers: "Użytkownicy tego serwera"
|
||||
instanceFollowing: "Obserwowani na instancji"
|
||||
instanceFollowers: "Obserwujący na instancji"
|
||||
instanceUsers: "Użytkownicy tej instancji"
|
||||
changePassword: "Zmień hasło"
|
||||
security: "Bezpieczeństwo"
|
||||
retypedNotMatch: "Wejście nie zgadza się."
|
||||
|
@ -267,8 +268,8 @@ agreeTo: "Wyrażam zgodę na {0}"
|
|||
tos: "Regulamin"
|
||||
start: "Rozpocznij"
|
||||
home: "Strona główna"
|
||||
remoteUserCaution: "Te informacje mogą nie być aktualne, ponieważ użytkownik pochodzi
|
||||
ze zdalnej instancji."
|
||||
remoteUserCaution: "Te informacje mogą nie być aktualne, ponieważ użytkownik pochodzi\
|
||||
\ ze zdalnej instancji."
|
||||
activity: "Aktywność"
|
||||
images: "Zdjęcia"
|
||||
birthday: "Data urodzenia"
|
||||
|
@ -301,8 +302,8 @@ unableToDelete: "Nie można usunąć"
|
|||
inputNewFileName: "Wprowadź nową nazwę pliku"
|
||||
inputNewDescription: "Proszę wpisać nowy napis"
|
||||
inputNewFolderName: "Wprowadź nową nazwę katalogu"
|
||||
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz
|
||||
przenieść."
|
||||
circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz\
|
||||
\ przenieść."
|
||||
hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty."
|
||||
copyUrl: "Skopiuj adres URL"
|
||||
rename: "Zmień nazwę"
|
||||
|
@ -319,8 +320,8 @@ unwatch: "Przestań śledzić"
|
|||
accept: "Akceptuj"
|
||||
reject: "Odrzuć"
|
||||
normal: "Normalny"
|
||||
instanceName: "Nazwa serwera"
|
||||
instanceDescription: "Opis serwera"
|
||||
instanceName: "Nazwa instancji"
|
||||
instanceDescription: "Opis instancji"
|
||||
maintainerName: "Administrator"
|
||||
maintainerEmail: "E-mail administratora"
|
||||
tosUrl: "Adres URL regulaminu"
|
||||
|
@ -336,8 +337,8 @@ connectService: "Połącz"
|
|||
disconnectService: "Rozłącz"
|
||||
enableLocalTimeline: "Włącz lokalną oś czasu"
|
||||
enableGlobalTimeline: "Włącz globalną oś czasu"
|
||||
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do
|
||||
wszystkich osi czasu, nawet gdy są one wyłączone."
|
||||
disablingTimelinesInfo: "Administratorzy i moderatorzy będą zawsze mieć dostęp do\
|
||||
\ wszystkich osi czasu, nawet gdy są one wyłączone."
|
||||
registration: "Zarejestruj się"
|
||||
enableRegistration: "Włącz rejestrację nowych użytkowników"
|
||||
invite: "Zaproś"
|
||||
|
@ -349,11 +350,11 @@ bannerUrl: "Adres URL banera"
|
|||
backgroundImageUrl: "Adres URL tła"
|
||||
basicInfo: "Podstawowe informacje"
|
||||
pinnedUsers: "Przypięty użytkownik"
|
||||
pinnedUsersDescription: "Wypisz po jednej nazwie użytkownika w wierszu. Podani użytkownicy
|
||||
zostaną przypięci pod kartą „Eksploruj”."
|
||||
pinnedUsersDescription: "Wypisz po jednej nazwie użytkownika w wierszu. Podani użytkownicy\
|
||||
\ zostaną przypięci pod kartą „Eksploruj”."
|
||||
pinnedPages: "Przypięte strony"
|
||||
pinnedPagesDescription: "Wprowadź ścieżki stron, które chcesz przypiąć do górnej strony
|
||||
tego serwera, oddzielając je znakami końca wiersza."
|
||||
pinnedPagesDescription: "Wprowadź ścieżki stron które chcesz przypiąć na głównej stronie\
|
||||
\ instancji, oddzielone znakiem nowego wiersza."
|
||||
pinnedClipId: "ID przypiętego klipu"
|
||||
pinnedNotes: "Przypięty wpis"
|
||||
hcaptcha: "hCaptcha"
|
||||
|
@ -364,16 +365,16 @@ recaptcha: "reCAPTCHA"
|
|||
enableRecaptcha: "Włącz reCAPTCHA"
|
||||
recaptchaSiteKey: "Klucz strony"
|
||||
recaptchaSecretKey: "Tajny klucz"
|
||||
avoidMultiCaptchaConfirm: "Używanie wielu Captchy może spowodować zakłócenia. Czy
|
||||
chcesz wyłączyć inną Captchę? Możesz zostawić wiele jednocześnie, klikając Anuluj."
|
||||
avoidMultiCaptchaConfirm: "Używanie wielu Captchy może spowodować zakłócenia. Czy\
|
||||
\ chcesz wyłączyć inną Captchę? Możesz zostawić wiele jednocześnie, klikając Anuluj."
|
||||
antennas: "Anteny"
|
||||
manageAntennas: "Zarządzaj antenami"
|
||||
name: "Nazwa"
|
||||
antennaSource: "Źródło anteny"
|
||||
antennaKeywords: "Słowa kluczowe do obserwacji"
|
||||
antennaExcludeKeywords: "Wykluczone słowa kluczowe"
|
||||
antennaKeywordsDescription: "Oddziel spacjami dla warunku AND, albo wymuś koniec linii
|
||||
dla warunku OR."
|
||||
antennaKeywordsDescription: "Oddziel spacjami dla warunku AND, albo wymuś koniec linii\
|
||||
\ dla warunku OR."
|
||||
notifyAntenna: "Powiadamiaj o nowych wpisach"
|
||||
withFileAntenna: "Filtruj tylko wpisy z załączonym plikiem"
|
||||
enableServiceworker: "Włącz powiadomienia push dla twojej przeglądarki"
|
||||
|
@ -461,8 +462,8 @@ strongPassword: "Silne hasło"
|
|||
passwordMatched: "Pasuje"
|
||||
passwordNotMatched: "Hasła nie pasują do siebie"
|
||||
signinWith: "Zaloguj się z {x}"
|
||||
signinFailed: "Nie udało się zalogować. Wprowadzona nazwa użytkownika lub hasło są
|
||||
nieprawidłowe."
|
||||
signinFailed: "Nie udało się zalogować. Wprowadzona nazwa użytkownika lub hasło są\
|
||||
\ nieprawidłowe."
|
||||
tapSecurityKey: "Wybierz swój klucz bezpieczeństwa"
|
||||
or: "Lub"
|
||||
language: "Język"
|
||||
|
@ -508,18 +509,18 @@ objectStorageBucketDesc: "Podaj nazwę „wiadra” używaną przez konfigurowan
|
|||
objectStoragePrefix: "Prefiks"
|
||||
objectStoragePrefixDesc: "Pliki będą przechowywane w katalogu z tym prefiksem."
|
||||
objectStorageEndpoint: "Punkt końcowy"
|
||||
objectStorageEndpointDesc: "Pozostaw puste jeżeli używasz AWS S3, w innym wypadku
|
||||
określ punkt końcowy jako '<host>' lub '<host>:<port>' zgodnie z instrukcjami usługi,
|
||||
której używasz."
|
||||
objectStorageEndpointDesc: "Pozostaw puste jeżeli używasz AWS S3, w innym wypadku\
|
||||
\ określ punkt końcowy jako '<host>' lub '<host>:<port>' zgodnie z instrukcjami\
|
||||
\ usługi, której używasz."
|
||||
objectStorageRegion: "Region"
|
||||
objectStorageRegionDesc: "Określ region, np. 'xx-east-1'. Jeżeli usługa której używasz
|
||||
nie zawiera rozróżnienia regionów, pozostaw to pustym lub wprowadź 'us-east-1'."
|
||||
objectStorageRegionDesc: "Określ region, np. 'xx-east-1'. Jeżeli usługa której używasz\
|
||||
\ nie zawiera rozróżnienia regionów, pozostaw to pustym lub wprowadź 'us-east-1'."
|
||||
objectStorageUseSSL: "Użyj SSL"
|
||||
objectStorageUseSSLDesc: "Wyłącz, jeżeli nie zamierzasz używać HTTPS dla połączenia
|
||||
z API"
|
||||
objectStorageUseSSLDesc: "Wyłącz, jeżeli nie zamierzasz używać HTTPS dla połączenia\
|
||||
\ z API"
|
||||
objectStorageUseProxy: "Połącz przez proxy"
|
||||
objectStorageUseProxyDesc: "Wyłącz, jeżeli nie zamierzasz używać proxy dla połączenia
|
||||
z pamięcią blokową"
|
||||
objectStorageUseProxyDesc: "Wyłącz, jeżeli nie zamierzasz używać proxy dla połączenia\
|
||||
\ z pamięcią blokową"
|
||||
serverLogs: "Dziennik zdarzeń"
|
||||
deleteAll: "Usuń wszystkie"
|
||||
showFixedPostForm: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
|
@ -546,22 +547,22 @@ sort: "Sortuj"
|
|||
ascendingOrder: "Rosnąco"
|
||||
descendingOrder: "Malejąco"
|
||||
scratchpad: "Brudnopis"
|
||||
scratchpadDescription: "Brudnopis to środowisko dla eksperymentów z AiScript. Możesz
|
||||
pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Calckey."
|
||||
scratchpadDescription: "Brudnopis to środowisko dla eksperymentów z AiScript. Możesz\
|
||||
\ pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Calckey."
|
||||
output: "Wyjście"
|
||||
script: "Skrypt"
|
||||
disablePagesScript: "Wyłącz AiScript na Stronach"
|
||||
updateRemoteUser: "Aktualizuj zdalne dane o użytkowniku"
|
||||
deleteAllFiles: "Usuń wszystkie pliki"
|
||||
deleteAllFilesConfirm: "Czy na pewno chcesz usunąć wszystkie pliki?"
|
||||
removeAllFollowingDescription: "Wykonanie tego polecenia spowoduje usunięcie wszystkich
|
||||
kont z {host}. Zrób to, jeśli serwer np. już nie istnieje."
|
||||
removeAllFollowingDescription: "Przestań obserwować wszystkie konta z {host}. Wykonaj\
|
||||
\ to, jeżeli instancja już nie istnieje."
|
||||
userSuspended: "To konto zostało zawieszone."
|
||||
userSilenced: "Ten użytkownik został wyciszony."
|
||||
yourAccountSuspendedTitle: "To konto jest zawieszone"
|
||||
yourAccountSuspendedDescription: "To konto zostało zawieszone z powodu złamania regulaminu
|
||||
serwera lub innych podobnych. Skontaktuj się z administratorem, jeśli chciałbyś
|
||||
poznać bardziej szczegółowy powód. Proszę nie zakładać nowego konta."
|
||||
yourAccountSuspendedDescription: "To konto zostało zawieszone z powodu złamania regulaminu\
|
||||
\ serwera lub innych podobnych. Skontaktuj się z administratorem, jeśli chciałbyś\
|
||||
\ poznać bardziej szczegółowy powód. Proszę nie zakładać nowego konta."
|
||||
menu: "Menu"
|
||||
divider: "Rozdzielacz"
|
||||
addItem: "Dodaj element"
|
||||
|
@ -600,14 +601,14 @@ permission: "Uprawnienia"
|
|||
enableAll: "Włącz wszystko"
|
||||
disableAll: "Wyłącz wszystko"
|
||||
tokenRequested: "Przydziel dostęp do konta"
|
||||
pluginTokenRequestedDescription: "Ta wtyczka będzie mogła korzystać z ustawionych
|
||||
tu uprawnień."
|
||||
pluginTokenRequestedDescription: "Ta wtyczka będzie mogła korzystać z ustawionych\
|
||||
\ tu uprawnień."
|
||||
notificationType: "Rodzaj powiadomień"
|
||||
edit: "Edytuj"
|
||||
emailServer: "Serwer poczty e-mail"
|
||||
enableEmail: "Włącz dostarczanie wiadomości e-mail"
|
||||
emailConfigInfo: "Wykorzystywany do potwierdzenia adresu e-mail w trakcie rejestracji,
|
||||
lub gdy zapomnisz hasła"
|
||||
emailConfigInfo: "Wykorzystywany do potwierdzenia adresu e-mail w trakcie rejestracji,\
|
||||
\ lub gdy zapomnisz hasła"
|
||||
email: "Adres e-mail"
|
||||
emailAddress: "Adres e-mail"
|
||||
smtpConfig: "Konfiguracja serwera SMTP"
|
||||
|
@ -615,12 +616,12 @@ smtpHost: "Host"
|
|||
smtpPort: "Port"
|
||||
smtpUser: "Nazwa użytkownika"
|
||||
smtpPass: "Hasło"
|
||||
emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć weryfikację
|
||||
SMTP"
|
||||
emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć weryfikację\
|
||||
\ SMTP"
|
||||
smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS"
|
||||
testEmail: "Przetestuj dostarczanie wiadomości e-mail"
|
||||
wordMute: "Wyciszenie słowa"
|
||||
instanceMute: "Wyciszenie serwera"
|
||||
instanceMute: "Wyciszone instancje"
|
||||
userSaysSomething: "{name} powiedział* coś"
|
||||
makeActive: "Aktywuj"
|
||||
display: "Wyświetlanie"
|
||||
|
@ -635,12 +636,12 @@ create: "Utwórz"
|
|||
notificationSetting: "Ustawienia powiadomień"
|
||||
notificationSettingDesc: "Wybierz rodzaj powiadomień do wyświetlania."
|
||||
useGlobalSetting: "Użyj globalnych ustawień"
|
||||
useGlobalSettingDesc: "Jeżeli włączone, zostaną wykorzystane ustawienia powiadomień
|
||||
Twojego konta. Jeżeli wyłączone, mogą zostać wykonane oddzielne konfiguracje."
|
||||
useGlobalSettingDesc: "Jeżeli włączone, zostaną wykorzystane ustawienia powiadomień\
|
||||
\ Twojego konta. Jeżeli wyłączone, mogą zostać wykonane oddzielne konfiguracje."
|
||||
other: "Inne"
|
||||
regenerateLoginToken: "Generuj token logowania ponownie"
|
||||
regenerateLoginTokenDescription: "Regeneruje token używany wewnętrznie podczas logowania.
|
||||
Zazwyczaj nie jest to konieczne. Po regeneracji wszystkie urządzenia zostaną wylogowane."
|
||||
regenerateLoginTokenDescription: "Regeneruje token używany wewnętrznie podczas logowania.\
|
||||
\ Zazwyczaj nie jest to konieczne. Po regeneracji wszystkie urządzenia zostaną wylogowane."
|
||||
setMultipleBySeparatingWithSpace: "Możesz ustawić wiele, oddzielając je spacjami."
|
||||
fileIdOrUrl: "ID pliku albo URL"
|
||||
behavior: "Zachowanie"
|
||||
|
@ -648,19 +649,19 @@ sample: "Przykład"
|
|||
abuseReports: "Zgłoszenia"
|
||||
reportAbuse: "Zgłoś"
|
||||
reportAbuseOf: "Zgłoś {name}"
|
||||
fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia. Jeżeli dotyczy ono określonego
|
||||
wpisu, uwzględnij jego adres URL."
|
||||
fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia. Jeżeli dotyczy ono określonego\
|
||||
\ wpisu, uwzględnij jego adres URL."
|
||||
abuseReported: "Twoje zgłoszenie zostało wysłane. Dziękujemy."
|
||||
reporteeOrigin: "Pochodzenie osoby zgłoszonej"
|
||||
reporterOrigin: "Pochodzenie osoby zgłaszającej"
|
||||
forwardReport: "Przekaż zgłoszenie do zdalnego serwera"
|
||||
forwardReport: "Przekaż zgłoszenie do innej instancji"
|
||||
send: "Wyślij"
|
||||
abuseMarkAsResolved: "Oznacz zgłoszenie jako rozwiązane"
|
||||
openInNewTab: "Otwórz w nowej karcie"
|
||||
openInSideView: "Otwórz w bocznym widoku"
|
||||
defaultNavigationBehaviour: "Domyślne zachowanie nawigacji"
|
||||
editTheseSettingsMayBreakAccount: "Edycja tych ustawień może uszkodzić Twoje konto."
|
||||
instanceTicker: "Informacje o wpisach serwera"
|
||||
instanceTicker: "Informacje o wpisach instancji"
|
||||
waitingFor: "Oczekiwanie na {x}"
|
||||
random: "Losowe"
|
||||
system: "System"
|
||||
|
@ -671,11 +672,11 @@ createNew: "Utwórz nowy"
|
|||
optional: "Nieobowiązkowe"
|
||||
createNewClip: "Utwórz nowy klip"
|
||||
unclip: "Odczep"
|
||||
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy
|
||||
chcesz ją usunąć z tego klipu?"
|
||||
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy\
|
||||
\ chcesz ją usunąć z tego klipu?"
|
||||
public: "Publiczny"
|
||||
i18nInfo: "Calckey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc
|
||||
na {link}."
|
||||
i18nInfo: "Calckey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc\
|
||||
\ na {link}."
|
||||
manageAccessTokens: "Zarządzaj tokenami dostępu"
|
||||
accountInfo: "Informacje o koncie"
|
||||
notesCount: "Liczba wpisów"
|
||||
|
@ -694,15 +695,16 @@ no: "Nie"
|
|||
driveFilesCount: "Liczba plików na dysku"
|
||||
driveUsage: "Użycie przestrzeni dyskowej"
|
||||
noCrawle: "Odrzuć indeksowanie przez crawlery"
|
||||
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu,
|
||||
wpisów, stron itd."
|
||||
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje
|
||||
wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących."
|
||||
noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu,\
|
||||
\ wpisów, stron itd."
|
||||
lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje\
|
||||
\ wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie\
|
||||
\ obserwujących."
|
||||
alwaysMarkSensitive: "Oznacz domyślnie jako NSFW"
|
||||
loadRawImages: "Wyświetlaj zdjęcia w załącznikach w całości zamiast miniatur"
|
||||
disableShowingAnimatedImages: "Nie odtwarzaj animowanych obrazów"
|
||||
verificationEmailSent: "Wiadomość weryfikacyjna została wysłana. Odwiedź uwzględniony
|
||||
odnośnik, aby ukończyć weryfikację."
|
||||
verificationEmailSent: "Wiadomość weryfikacyjna została wysłana. Odwiedź uwzględniony\
|
||||
\ odnośnik, aby ukończyć weryfikację."
|
||||
notSet: "Nie ustawiono"
|
||||
emailVerified: "Adres e-mail został potwierdzony"
|
||||
noteFavoritesCount: "Liczba zakładek"
|
||||
|
@ -714,16 +716,16 @@ clips: "Klipy"
|
|||
experimentalFeatures: "Eksperymentalne funkcje"
|
||||
developer: "Programista"
|
||||
makeExplorable: "Pokazuj konto na stronie „Eksploruj”"
|
||||
makeExplorableDescription: "Jeżeli wyłączysz tę opcję, Twoje konto nie będzie wyświetlać
|
||||
się w sekcji „Eksploruj”."
|
||||
makeExplorableDescription: "Jeżeli wyłączysz tę opcję, Twoje konto nie będzie wyświetlać\
|
||||
\ się w sekcji „Eksploruj”."
|
||||
showGapBetweenNotesInTimeline: "Pokazuj odstęp między wpisami na osi czasu"
|
||||
duplicate: "Duplikuj"
|
||||
left: "Lewo"
|
||||
center: "Wyśrodkuj"
|
||||
wide: "Szerokie"
|
||||
narrow: "Wąskie"
|
||||
reloadToApplySetting: "To ustawienie zostanie zastosowane po odświeżeniu strony. Chcesz
|
||||
odświeżyć?"
|
||||
reloadToApplySetting: "To ustawienie zostanie zastosowane po odświeżeniu strony. Chcesz\
|
||||
\ odświeżyć?"
|
||||
needReloadToApply: "To ustawienie zostanie zastosowane po odświeżeniu strony."
|
||||
showTitlebar: "Pokazuj pasek tytułowy"
|
||||
clearCache: "Wyczyść pamięć podręczną"
|
||||
|
@ -754,7 +756,7 @@ capacity: "Pojemność"
|
|||
inUse: "Użyto"
|
||||
editCode: "Edytuj kod"
|
||||
apply: "Zastosuj"
|
||||
receiveAnnouncementFromInstance: "Otrzymuj powiadomienia e-mail z tego serwera"
|
||||
receiveAnnouncementFromInstance: "Otrzymuj powiadomienia e-mail z tej instancji"
|
||||
emailNotification: "Powiadomienia e-mail"
|
||||
publish: "Publikuj"
|
||||
inChannelSearch: "Szukaj na kanale"
|
||||
|
@ -771,21 +773,21 @@ quitFullView: "Opuść pełny widok"
|
|||
addDescription: "Dodaj opis"
|
||||
userPagePinTip: "Możesz wyświetlać wpisy w tym miejscu po wybraniu \"Przypnij do profilu\"\
|
||||
\ z menu pojedynczego wpisu."
|
||||
notSpecifiedMentionWarning: "Ten wpis zawiera wzmianki o użytkownikach niezawartych
|
||||
jako odbiorcy"
|
||||
notSpecifiedMentionWarning: "Ten wpis zawiera wzmianki o użytkownikach niezawartych\
|
||||
\ jako odbiorcy"
|
||||
info: "Informacje"
|
||||
userInfo: "Informacje o użykowniku"
|
||||
unknown: "Nieznane"
|
||||
onlineStatus: "Status online"
|
||||
hideOnlineStatus: "Ukryj status online"
|
||||
hideOnlineStatusDescription: "Ukrywanie statusu online ogranicza wygody niektórych
|
||||
funkcji, takich jak wyszukiwanie."
|
||||
hideOnlineStatusDescription: "Ukrywanie statusu online ogranicza wygody niektórych\
|
||||
\ funkcji, takich jak wyszukiwanie."
|
||||
online: "Online"
|
||||
active: "Aktywny"
|
||||
offline: "Offline"
|
||||
notRecommended: "Nie zalecane"
|
||||
botProtection: "Zabezpieczenie przed botami"
|
||||
instanceBlocking: "Zarządzanie federacją"
|
||||
instanceBlocking: "Zablokowane/wyciszone instancje"
|
||||
selectAccount: "Wybierz konto"
|
||||
switchAccount: "Przełącz konto"
|
||||
enabled: "Właczono"
|
||||
|
@ -814,8 +816,8 @@ emailNotConfiguredWarning: "Nie podano adresu e-mail."
|
|||
ratio: "Stosunek"
|
||||
previewNoteText: "Pokaż podgląd"
|
||||
customCss: "Własny CSS"
|
||||
customCssWarn: "Używaj tego ustawienia tylko wtedy, gdy wiesz co ono robi. Nieprawidłowe
|
||||
wpisy mogą spowodować, że klient przestanie działać poprawnie."
|
||||
customCssWarn: "Używaj tego ustawienia tylko wtedy, gdy wiesz co ono robi. Nieprawidłowe\
|
||||
\ wpisy mogą spowodować, że klient przestanie działać poprawnie."
|
||||
global: "Globalna"
|
||||
squareAvatars: "Wyświetlaj kwadratowe awatary"
|
||||
sent: "Wysłane"
|
||||
|
@ -831,8 +833,8 @@ translate: "Przetłumacz"
|
|||
translatedFrom: "Przetłumaczone z {x}"
|
||||
accountDeletionInProgress: "Trwa usuwanie konta"
|
||||
usernameInfo: "Nazwa, która identyfikuje Twoje konto spośród innych na tym serwerze.\
|
||||
\ Możesz użyć alfabetu (a~z, A~Z), cyfr (0~9) lub podkreślników (_). Nazwy użytkownika
|
||||
nie mogą być później zmieniane."
|
||||
\ Możesz użyć alfabetu (a~z, A~Z), cyfr (0~9) lub podkreślników (_). Nazwy użytkownika\
|
||||
\ nie mogą być później zmieniane."
|
||||
aiChanMode: "Ai-chan w klasycznym interfejsie"
|
||||
keepCw: "Zostaw ostrzeżenia o zawartości"
|
||||
pubSub: "Konta Pub/Sub"
|
||||
|
@ -846,14 +848,14 @@ filter: "Filtr"
|
|||
controlPanel: "Panel sterowania"
|
||||
manageAccounts: "Zarządzaj kontami"
|
||||
makeReactionsPublic: "Ustaw historię reakcji jako publiczną"
|
||||
makeReactionsPublicDescription: "To spowoduje, że lista wszystkich Twoich dotychczasowych
|
||||
reakcji będzie publicznie widoczna."
|
||||
classic: "Wyśrodkowany"
|
||||
makeReactionsPublicDescription: "To spowoduje, że lista wszystkich Twoich dotychczasowych\
|
||||
\ reakcji będzie publicznie widoczna."
|
||||
classic: "Klasyczny"
|
||||
muteThread: "Wycisz wątek"
|
||||
unmuteThread: "Wyłącz wyciszenie wątku"
|
||||
ffVisibility: "Widoczność obserwowanych/obserwujących"
|
||||
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz
|
||||
i kto Cię obserwuje."
|
||||
ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz\
|
||||
\ i kto Cię obserwuje."
|
||||
continueThread: "Kontynuuj wątek"
|
||||
deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?"
|
||||
incorrectPassword: "Nieprawidłowe hasło."
|
||||
|
@ -861,8 +863,8 @@ voteConfirm: "Potwierdzić swój głos na \"{choice}\"?"
|
|||
hide: "Ukryj"
|
||||
leaveGroup: "Opuść grupę"
|
||||
leaveGroupConfirm: "Czy na pewno chcesz opuścić \"{name}\"?"
|
||||
useDrawerReactionPickerForMobile: "Wyświetlaj wybornik reakcji jako szufladę na urządzeniach
|
||||
mobilnych"
|
||||
useDrawerReactionPickerForMobile: "Wyświetlaj wybornik reakcji jako szufladę na urządzeniach\
|
||||
\ mobilnych"
|
||||
welcomeBackWithName: "Witaj z powrotem, {name}"
|
||||
clickToFinishEmailVerification: "Kliknij [{ok}], aby zakończyć weryfikację e-mail."
|
||||
overridedDeviceKind: "Typ urządzenia"
|
||||
|
@ -885,22 +887,22 @@ type: "Typ"
|
|||
speed: "Prędkość"
|
||||
localOnly: "Tylko lokalne"
|
||||
failedToUpload: "Przesyłanie nie powiodło się"
|
||||
cannotUploadBecauseInappropriate: "Nie można przesłać tego pliku, ponieważ jego części
|
||||
zostały wykryte jako potencjalnie nieodpowiednie."
|
||||
cannotUploadBecauseNoFreeSpace: "Przesyłanie nie powiodło się z powodu braku miejsca
|
||||
na dysku."
|
||||
cannotUploadBecauseInappropriate: "Nie można przesłać tego pliku, ponieważ jego części\
|
||||
\ zostały wykryte jako potencjalnie nieodpowiednie."
|
||||
cannotUploadBecauseNoFreeSpace: "Przesyłanie nie powiodło się z powodu braku miejsca\
|
||||
\ na dysku."
|
||||
beta: "Beta"
|
||||
enableAutoSensitive: "Automatyczne oznaczanie NSFW"
|
||||
enableAutoSensitiveDescription: "Umożliwia automatyczne wykrywanie i oznaczanie zawartości
|
||||
NSFW za pomocą uczenia maszynowego tam, gdzie to możliwe. Nawet jeśli ta opcja jest
|
||||
wyłączona, może być włączona na całym serwerze."
|
||||
enableAutoSensitiveDescription: "Umożliwia automatyczne wykrywanie i oznaczanie zawartości\
|
||||
\ NSFW za pomocą uczenia maszynowego. Nawet jeśli ta opcja jest wyłączona, może\
|
||||
\ być włączona na całej instancji."
|
||||
navbar: "Pasek nawigacyjny"
|
||||
account: "Konta"
|
||||
move: "Przenieś"
|
||||
_sensitiveMediaDetection:
|
||||
description: "Zmniejsza wysiłek związany z moderacją serwera dzięki automatycznemu
|
||||
rozpoznawaniu zawartości NSFW za pomocą uczenia maszynowego. To nieznacznie zwiększy
|
||||
obciążenie serwera."
|
||||
description: "Zmniejsza wysiłek związany z moderacją serwera dzięki automatycznemu\
|
||||
\ rozpoznawaniu zawartości NSFW za pomocą uczenia maszynowego. To nieznacznie\
|
||||
\ zwiększy obciążenie serwera."
|
||||
setSensitiveFlagAutomatically: "Oznacz jako NSFW"
|
||||
sensitivity: Czułość wykrywania
|
||||
analyzeVideosDescription: Analizuje filmy, w dodatku do zdjęć. Zwiększy to nieznacznie
|
||||
|
@ -924,15 +926,15 @@ _ffVisibility:
|
|||
_signup:
|
||||
almostThere: "Prawie na miejscu"
|
||||
emailAddressInfo: "Podaj swój adres e-mail. Nie zostanie on upubliczniony."
|
||||
emailSent: "E-mail z potwierdzeniem został wysłany na Twój adres e-mail ({email}).
|
||||
Kliknij dołączony link, aby dokończyć tworzenie konta."
|
||||
emailSent: "E-mail z potwierdzeniem został wysłany na Twój adres e-mail ({email}).\
|
||||
\ Kliknij dołączony link, aby dokończyć tworzenie konta."
|
||||
_accountDelete:
|
||||
accountDelete: "Usuń konto"
|
||||
mayTakeTime: "Ponieważ usuwanie konta jest procesem wymagającym dużej ilości zasobów,
|
||||
jego ukończenie może zająć trochę czasu, w zależności od ilości utworzonej zawartości
|
||||
i liczby przesłanych plików."
|
||||
sendEmail: "Po zakończeniu usuwania konta na adres e-mail zarejestrowany na tym
|
||||
koncie zostanie wysłana wiadomość e-mail."
|
||||
mayTakeTime: "Ponieważ usuwanie konta jest procesem wymagającym dużej ilości zasobów,\
|
||||
\ jego ukończenie może zająć trochę czasu, w zależności od ilości utworzonej zawartości\
|
||||
\ i liczby przesłanych plików."
|
||||
sendEmail: "Po zakończeniu usuwania konta na adres e-mail zarejestrowany na tym\
|
||||
\ koncie zostanie wysłana wiadomość e-mail."
|
||||
requestAccountDelete: "Poproś o usunięcie konta"
|
||||
started: "Usuwanie się rozpoczęło."
|
||||
inProgress: "Usuwanie jest obecnie w toku"
|
||||
|
@ -940,12 +942,12 @@ _ad:
|
|||
back: "Wróć"
|
||||
reduceFrequencyOfThisAd: "Pokazuj tę reklamę rzadziej"
|
||||
_forgotPassword:
|
||||
enterEmail: "Wpisz adres e-mail użyty do rejestracji. Zostanie do niego wysłany
|
||||
link, za pomocą którego możesz zresetować hasło."
|
||||
ifNoEmail: "Jeśli nie użyłeś adresu e-mail podczas rejestracji, skontaktuj się z
|
||||
administratorem serwera."
|
||||
contactAdmin: "Ten serwer nie obsługuje adresów e-mail, zamiast tego skontaktuj
|
||||
się z administratorem serwera, aby zresetować hasło."
|
||||
enterEmail: "Wpisz adres e-mail użyty do rejestracji. Zostanie do niego wysłany\
|
||||
\ link, za pomocą którego możesz zresetować hasło."
|
||||
ifNoEmail: "Jeżeli nie podano adresu e-mail podczas rejestracji, skontaktuj się\
|
||||
\ z administratorem zamiast tego."
|
||||
contactAdmin: "Jeżeli Twoja instancja nie obsługuje adresów e-mail, skontaktuj się\
|
||||
\ zamiast tego z administratorem, aby zresetować hasło."
|
||||
_gallery:
|
||||
my: "Moja galeria"
|
||||
liked: "Polubione wpisy"
|
||||
|
@ -968,10 +970,10 @@ _preferencesBackups:
|
|||
save: "Zapisz zmiany"
|
||||
inputName: "Proszę podać nazwę dla tej kopii zapasowej"
|
||||
cannotSave: "Zapisanie nie powiodło się"
|
||||
nameAlreadyExists: "Kopia zapasowa o nazwie \"{name}\" już istnieje. Proszę podać
|
||||
inną nazwę."
|
||||
applyConfirm: "Czy na pewno chcesz zastosować kopię zapasową \"{name}\" na tym urządzeniu?
|
||||
Istniejące ustawienia tego urządzenia zostaną nadpisane."
|
||||
nameAlreadyExists: "Kopia zapasowa o nazwie \"{name}\" już istnieje. Proszę podać\
|
||||
\ inną nazwę."
|
||||
applyConfirm: "Czy na pewno chcesz zastosować kopię zapasową \"{name}\" na tym urządzeniu?\
|
||||
\ Istniejące ustawienia tego urządzenia zostaną nadpisane."
|
||||
saveConfirm: "Zapisać kopię zapasową jako {name}?"
|
||||
deleteConfirm: "Usunąć kopię zapasową {name}?"
|
||||
renameConfirm: "Zmienić nazwę kopii zapasowej z \"{old}\" na \"{new}\"?"
|
||||
|
@ -988,15 +990,15 @@ _registry:
|
|||
domain: "Domena"
|
||||
createKey: "Utwórz klucz"
|
||||
_aboutMisskey:
|
||||
about: "Calckey jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym
|
||||
od 2022."
|
||||
about: "Calckey jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym\
|
||||
\ od 2022."
|
||||
contributors: "Główni twórcy"
|
||||
allContributors: "Wszyscy twórcy"
|
||||
source: "Kod źródłowy"
|
||||
translation: "Tłumacz Calckey"
|
||||
donate: "Przekaż darowiznę na Calckey"
|
||||
morePatrons: "Naprawdę doceniam wsparcie ze strony wielu niewymienionych tu osób.
|
||||
Dziękuję! 🥰"
|
||||
morePatrons: "Naprawdę doceniam wsparcie ze strony wielu niewymienionych tu osób.\
|
||||
\ Dziękuję! \U0001F970"
|
||||
patrons: "Wspierający"
|
||||
_nsfw:
|
||||
respect: "Ukrywaj media NSFW"
|
||||
|
@ -1004,13 +1006,13 @@ _nsfw:
|
|||
force: "Ukrywaj wszystkie media"
|
||||
_mfm:
|
||||
cheatSheet: "Ściąga MFM"
|
||||
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."
|
||||
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"
|
||||
mention: "Wspomnij"
|
||||
mentionDescription: "Używając znaku @ i nazwy użytkownika, możesz określić danego
|
||||
użytkownika."
|
||||
mentionDescription: "Używając znaku @ i nazwy użytkownika, możesz określić danego\
|
||||
\ użytkownika."
|
||||
hashtag: "Hashtag"
|
||||
hashtagDescription: "Używając kratki i tekstu, możesz określić hashtag."
|
||||
url: "Adres URL"
|
||||
|
@ -1025,14 +1027,14 @@ _mfm:
|
|||
centerDescription: "Wyśrodkowuje zawartość."
|
||||
inlineCode: "Kod (w wierszu)"
|
||||
blockCode: "Kod (blok)"
|
||||
blockCodeDescription: "Wyświetla kod z podświetlaną składnią składający się z wielu
|
||||
linii."
|
||||
blockCodeDescription: "Wyświetla kod z podświetlaną składnią składający się z wielu\
|
||||
\ linii."
|
||||
blockMath: "Matematyka (Blok)"
|
||||
quote: "Cytuj"
|
||||
quoteDescription: "Wyświetla treść jako cytat."
|
||||
emoji: "Niestandardowe emoji"
|
||||
emojiDescription: "Otaczając nazwę niestandardowego emoji dwukropkami, możesz użyć
|
||||
niestandardowego emoji."
|
||||
emojiDescription: "Otaczając nazwę niestandardowego emoji dwukropkami, możesz użyć\
|
||||
\ niestandardowego emoji."
|
||||
search: "Szukaj"
|
||||
searchDescription: "Wyświetla pole wyszukiwania z wcześniej wpisanym tekstem."
|
||||
flip: "Odwróć"
|
||||
|
@ -1076,7 +1078,7 @@ _mfm:
|
|||
background: Kolor tła
|
||||
backgroundDescription: Zmień kolor tła tekstu.
|
||||
foregroundDescription: Zmień kolor pierwszoplanowy tekstu.
|
||||
positionDescription: Przesuń zawartość o określoną wartość.
|
||||
positionDescription: Przesuń treść o określoną odległość.
|
||||
position: Pozycjonuj
|
||||
foreground: Kolor pierwszoplanowy
|
||||
scaleDescription: Skaluj treść o określoną wielkość.
|
||||
|
@ -1153,8 +1155,8 @@ _theme:
|
|||
darken: "Ściemnij"
|
||||
lighten: "Rozjaśnij"
|
||||
inputConstantName: "Wprowadź nazwę stałej"
|
||||
importInfo: "Jeżeli wprowadzisz tu kod motywu, możesz zaimportować go w edytorze
|
||||
motywu"
|
||||
importInfo: "Jeżeli wprowadzisz tu kod motywu, możesz zaimportować go w edytorze\
|
||||
\ motywu"
|
||||
deleteConstantConfirm: "Czy na pewno chcesz usunąć stałą {const}?"
|
||||
keys:
|
||||
accent: "Akcent"
|
||||
|
@ -1228,42 +1230,42 @@ _tutorial:
|
|||
step1_1: "Witamy!"
|
||||
step1_2: "Pozwól, że Cię skonfigurujemy. Będziesz działać w mgnieniu oka!"
|
||||
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ę."
|
||||
step2_2: "Podanie kilku informacji o tym, kim jesteś, ułatwi innym stwierdzenie,\
|
||||
\ czy chcą zobaczyć Twoje wpisy lub śledzić Cię."
|
||||
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ć."
|
||||
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: "W pierwszym wpisie możesz się przedstawić lub wysłać powitanie - \"Witaj,
|
||||
świecie!\""
|
||||
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
|
||||
których obserwujesz, oraz innych użytkowników z tej instancji. Jeśli wolisz, by
|
||||
główna oś czasu pokazywała tylko posty od użytkowników których obserwujesz, możesz
|
||||
łatwo to zmienić w ustawieniach!"
|
||||
step5_4: "Lokalna {icon} oś czasu to miejsce, w którym możesz zobaczyć posty od
|
||||
wszystkich innych osób na tej instancji."
|
||||
step5_5: "Społeczna {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z instancji,
|
||||
które admini polecają."
|
||||
step5_6: "Polecana {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z instancji,
|
||||
które admini polecają."
|
||||
step5_7: "Globalna {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z każdej
|
||||
innej połączonej instancji."
|
||||
step5_3: "Główna {icon} oś czasu to miejsce, w którym możesz zobaczyć posty od użytkowników\
|
||||
\ których obserwujesz, oraz innych użytkowników z tej instancji. Jeśli wolisz,\
|
||||
\ by główna oś czasu pokazywała tylko posty od użytkowników których obserwujesz,\
|
||||
\ możesz łatwo to zmienić w ustawieniach!"
|
||||
step5_4: "Lokalna {icon} oś czasu to miejsce, w którym możesz zobaczyć posty od\
|
||||
\ wszystkich innych osób na tej instancji."
|
||||
step5_5: "Społeczna {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z instancji,\
|
||||
\ które admini polecają."
|
||||
step5_6: "Polecana {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z instancji,\
|
||||
\ które admini polecają."
|
||||
step5_7: "Globalna {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z każdej\
|
||||
\ innej połączonej instancji."
|
||||
step6_1: "Więc, czym to jest to miejsce?"
|
||||
step6_2: "Cóż, nie dołączył*ś po prostu do Calckey. Dołączył*ś do portalu do Fediverse,
|
||||
połączonej sieci tysięcy serwerów, zwanych instancjami."
|
||||
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Calckey.
|
||||
Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz
|
||||
o co chodzi."
|
||||
step6_2: "Cóż, nie dołączył*ś po prostu do Calckey. Dołączył*ś do portalu do Fediverse,\
|
||||
\ połączonej sieci tysięcy serwerów, zwanych instancjami."
|
||||
step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Calckey.\
|
||||
\ Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz\
|
||||
\ o co chodzi."
|
||||
step6_4: "A teraz idź, odkrywaj i baw się dobrze!"
|
||||
_2fa:
|
||||
alreadyRegistered: "Zarejestrowałeś już urządzenie do uwierzytelniania dwuskładnikowego."
|
||||
registerTOTP: "Zarejestruj nowe urządzenie"
|
||||
registerSecurityKey: "Zarejestruj klucz bezpieczeństwa"
|
||||
step1: "Najpierw, zainstaluj aplikację uwierzytelniającą (taką jak {a} lub {b})
|
||||
na swoim urządzeniu."
|
||||
registerDevice: "Zarejestruj nowe urządzenie"
|
||||
registerKey: "Zarejestruj klucz bezpieczeństwa"
|
||||
step1: "Najpierw, zainstaluj aplikację uwierzytelniającą (taką jak {a} lub {b})\
|
||||
\ na swoim urządzeniu."
|
||||
step2: "Następnie, zeskanuje kod QR z ekranu."
|
||||
step3: "Wprowadź token podany w aplikacji, aby ukończyć konfigurację."
|
||||
step4: "Od teraz, przy każdej próbie logowania otrzymasz prośbę o token logowania."
|
||||
|
@ -1403,8 +1405,8 @@ _profile:
|
|||
youCanIncludeHashtags: "Możesz umieścić hashtagi w swoim opisie."
|
||||
metadata: "Dodatkowe informacje"
|
||||
metadataEdit: "Edytuj dodatkowe informacje"
|
||||
metadataDescription: "Możesz wyświetlać do czterech sekcji dodatkowych informacji
|
||||
na swoim profilu."
|
||||
metadataDescription: "Możesz wyświetlać do czterech sekcji dodatkowych informacji\
|
||||
\ na swoim profilu."
|
||||
metadataLabel: "Etykieta"
|
||||
metadataContent: "Treść"
|
||||
changeAvatar: "Zmień awatar"
|
||||
|
@ -1814,12 +1816,12 @@ objectStorageSetPublicRead: Ustaw "public-read" podczas wysyłania
|
|||
removeAllFollowing: Przestań obserwować wszystkich obserwowanych użytkowników
|
||||
smtpSecure: Użyj implicit SSL/TLS dla połączeń SMTP
|
||||
secureMode: Tryb bezpieczny (Authorized Fetch)
|
||||
instanceSecurity: Bezpieczeństwo serwera
|
||||
instanceSecurity: Bezpieczeństwo instancji
|
||||
privateMode: Tryb prywatny
|
||||
allowedInstances: Dopuszczone serwery
|
||||
allowedInstances: Dopuszczone instancje
|
||||
recommended: Polecane
|
||||
allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji,
|
||||
każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego).
|
||||
allowedInstancesDescription: Hosty instancji które mają być dopuszczone do federacji,
|
||||
każdy separowany nową linią (dotyczy tylko trybu prywatnego).
|
||||
seperateRenoteQuote: Oddziel przyciski podbicia i cytowania
|
||||
refreshInterval: 'Częstotliwość aktualizacji '
|
||||
slow: Wolna
|
||||
|
@ -1845,34 +1847,34 @@ moveToLabel: 'Konto na które się przenosisz:'
|
|||
moveAccount: Przenieś konto!
|
||||
moveAccountDescription: Ten proces jest nieodwracalny. Upewnij się, że utworzył*ś
|
||||
alias dla tego konta na nowym koncie, przed rozpoczęciem. Proszę wpisz tag konta
|
||||
w formacie @osoba@serwer.com
|
||||
w formacie @person@instance.com
|
||||
moveFrom: Przejdź ze starego konta na obecne
|
||||
moveFromLabel: 'Konto które przenosisz:'
|
||||
showUpdates: Pokaż pop-up po aktualizacji Calckey
|
||||
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 @osoba@serwer.com
|
||||
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."
|
||||
Proszę wpisz tag konta w formacie @person@instance.com
|
||||
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 serwer
|
||||
addInstance: Dodaj instancję
|
||||
renoteMute: Wycisz podbicia
|
||||
renoteUnmute: Odcisz podbicia
|
||||
flagSpeakAsCat: Mów jak kot
|
||||
flagSpeakAsCatDescription: Twoje posty zostaną znya-izowane, gdy w trybie kota
|
||||
selectInstance: Wybierz serwer
|
||||
noInstances: Brak serwerów
|
||||
selectInstance: Wybierz instancję
|
||||
noInstances: Brak instancji
|
||||
keepOriginalUploadingDescription: Zapisuje oryginalne zdjęcie. Jeśli wyłączone, wersja
|
||||
do wyświetlania w sieci zostanie wygenerowana podczas wysłania.
|
||||
antennaInstancesDescription: Wymień jeden host serwera w każdym wierszu
|
||||
antennaInstancesDescription: Wypisz jednego hosta instancji na linię
|
||||
regexpError: Błąd regularnego wyrażenia
|
||||
regexpErrorDescription: 'Wystąpił błąd w regularnym wyrażeniu znajdującym się w linijce
|
||||
{line} Twoich {tab} wyciszeń słownych:'
|
||||
forwardReportIsAnonymous: Zamiast twojego konta, anonimowe konto systemowe będzie
|
||||
wyświetlane jako zgłaszający na zdalnym serwerze.
|
||||
forwardReportIsAnonymous: Zamiast Twojego konta, anonimowe konto systemowe zostanie
|
||||
wyświetlone na zdalnej instancji jako zgłaszający.
|
||||
breakFollowConfirm: Czy na pewno chcesz usunąć obserwującego?
|
||||
instanceDefaultThemeDescription: Wpisz kod motywu w formacie obiektowym.
|
||||
mutePeriod: Długość wyciszenia
|
||||
|
@ -1886,7 +1888,7 @@ pushNotification: Powiadomienia push
|
|||
subscribePushNotification: Włącz powiadomienia push
|
||||
unsubscribePushNotification: Wyłącz powiadomienia push
|
||||
pushNotificationAlreadySubscribed: Powiadomienia push są już włączone
|
||||
pushNotificationNotSupported: Twoja przeglądarka lub serwer nie obsługuje powiadomień
|
||||
pushNotificationNotSupported: Twoja przeglądarka lub instancja nie obsługuje powiadomień
|
||||
push
|
||||
sendPushNotificationReadMessage: Usuń powiadomienia push, gdy odpowiednie powiadomienia
|
||||
lub wiadomości zostaną odczytane
|
||||
|
@ -1896,8 +1898,7 @@ 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
|
||||
indexFromDescription: Zostaw puste dla indeksowania wszystkich wpisów
|
||||
indexFrom: Indeksuj wpisy od ID (zostaw puste dla indeksowania wszystkich wpisów)
|
||||
indexNotice: Indeksuję. Zapewne zajmie to chwilę, nie restartuj serwera przez co najmniej
|
||||
godzinę.
|
||||
customKaTeXMacro: Niestandardowe makra KaTeX
|
||||
|
@ -1911,20 +1912,21 @@ proxyAccountDescription: Konto proxy jest kontem które w określonych sytuacjac
|
|||
do listy, oraz żaden lokalny użytkownik nie obserwuje tego konta, aktywność owego
|
||||
użytkownika nie zostanie dostarczona na oś czasu. W takim razie, użytkownika zaobserwuje
|
||||
konto proxy.
|
||||
objectStorageBaseUrlDesc: "URL stosowany jako odniesienie. Podaj URL twojego CDN,
|
||||
albo proxy, jeśli używasz któregokolwiek.\nDla S3 użyj 'https://<bucket>.s3.amazonaws.com',
|
||||
a dla GCS i jego odpowiedników użyj 'https://storage.googleapis.com/<bucket>', itd."
|
||||
sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe informacje o
|
||||
błędach będą udostępnianie z Calckey gdy wystąpi problem, pomagając w ulepszaniu
|
||||
Calckey.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki,
|
||||
Twoja aktywność na Calckey itd."
|
||||
privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować
|
||||
się z twoim serwerem. Wszystkie posty będą ukryte publicznie.
|
||||
objectStorageBaseUrlDesc: "URL stosowany jako odniesienie. Podaj URL twojego CDN,\
|
||||
\ albo proxy, jeśli używasz któregokolwiek.\nDla S3 użyj 'https://<bucket>.s3.amazonaws.com',\
|
||||
\ a dla GCS i jego odpowiedników użyj 'https://storage.googleapis.com/<bucket>',\
|
||||
\ itd."
|
||||
sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe informacje o\
|
||||
\ błędach będą udostępnianie z Calckey gdy wystąpi problem, pomagając w ulepszaniu\
|
||||
\ 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ą jedynie widoczne na Twojej instancji.
|
||||
oneHour: Godzina
|
||||
oneDay: Dzień
|
||||
oneWeek: Tydzień
|
||||
recommendedInstances: Polecane serwery
|
||||
recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej
|
||||
recommendedInstances: Polecane instancje
|
||||
recommendedInstancesDescription: Polecane instancje, mające pojawić się w odpowiedniej
|
||||
osi czasu, oddzielane nowymi liniami. NIE dodawaj “https://”, TYLKO samą domenę.
|
||||
rateLimitExceeded: Przekroczono ratelimit
|
||||
cropImage: Kadruj zdjęcie
|
||||
|
@ -1934,9 +1936,7 @@ noEmailServerWarning: Serwer email nie jest skonfigurowany.
|
|||
thereIsUnresolvedAbuseReportWarning: Istnieją nierozwiązane zgłoszenia.
|
||||
check: Sprawdź
|
||||
driveCapOverrideLabel: Zmień pojemność dysku dla tego użytkownika
|
||||
isSystemAccount: To konto jest tworzone i automatycznie obsługiwane przez system.
|
||||
Nie moderuj, nie edytuj, nie usuwaj, ani w żaden inny sposób nie ingeruj w to konto,
|
||||
bowiem może to uszkodzić twój serwer.
|
||||
isSystemAccount: Konto założone i automatycznie zarządzane przez system.
|
||||
typeToConfirm: Wpisz {x} by potwierdzić
|
||||
deleteAccount: Usuń konto
|
||||
document: Dokumentacja
|
||||
|
@ -1982,51 +1982,34 @@ customKaTeXMacroDescription: 'Skonfiguruj makra, aby łatwo pisać wyrażenia ma
|
|||
nie można przerwać linii w środku definicji. Nieprawidłowe linie są po prostu ignorowane.
|
||||
Obsługiwane są tylko proste funkcje podstawiania łańcuchów; nie można tu stosować
|
||||
zaawansowanej składni, takiej jak warunkowe rozgałęzienia.'
|
||||
secureModeInfo: W przypadku żądań z innych serwerów nie odsyłaj bez dowodu.
|
||||
secureModeInfo: Nie odsyłaj bez dowodu przy żądaniu z innych instancji.
|
||||
preferencesBackups: Kopie zapasowe ustawień
|
||||
undeck: Opuść tablicę
|
||||
reporter: Osoba zgłaszająca
|
||||
instanceDefaultDarkTheme: Domyślny ciemny motyw serwera
|
||||
instanceDefaultDarkTheme: Domyślny ciemny motyw instancji
|
||||
lastCommunication: Ostatnie połączenie
|
||||
emailRequiredForSignup: Wymagaj adresu email przy rejestracji
|
||||
themeColor: Kolor znacznika serwera
|
||||
instanceDefaultLightTheme: Domyślny jasny motyw serwera
|
||||
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 ten serwer
|
||||
silencedInstances: Wyciszone serwery
|
||||
silenceThisInstance: Wycisz tę instancję
|
||||
silencedInstances: Wyciszone instancje
|
||||
deleted: Usunięte
|
||||
editNote: Edytuj wpis
|
||||
edited: 'Edytowano o {date} {time}'
|
||||
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
|
||||
zarejestrować się na innym serwerze! Jeśli masz kod zaproszenia na ten serwer, wpisz
|
||||
go poniżej.
|
||||
się zapisać na innym! Jeśli masz kod zaproszeniowy na ten serwer, wpisz go poniżej.
|
||||
userSaysSomethingReasonQuote: '{name} zacytował wpis zawierający {reason}'
|
||||
silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyciszyć.
|
||||
Konta na wymienionych serwerach są traktowane jako "Wyciszone", mogą jedynie wysyłać
|
||||
prośby obserwacji i nie mogą oznaczać we wzmiankach profili lokalnych jeśli nie
|
||||
są obserwowane. To nie będzie miało wpływu na zablokowane serwery.
|
||||
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
|
||||
searchPlaceholder: Szukaj Calckey
|
||||
jumpToPrevious: Przejdź do poprzedniej sekcji
|
||||
listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp
|
||||
do nich można uzyskać na stronie osi czasu.
|
||||
accessibility: Dostępność
|
||||
selectChannel: Wybierz kanał
|
||||
antennasDesc: "Anteny wyświetlają nowe posty spełniające ustawione przez Ciebie kryteria!\n
|
||||
Dostęp do nich można uzyskać ze strony osi czasu."
|
||||
expandOnNoteClick: Otwórz post przy kliknięciu
|
||||
expandOnNoteClickDesc: Jeśli opcja ta jest wyłączona, nadal będzie można otwierać
|
||||
posty w menu po kliknięciu prawym przyciskiem myszy lub klikając znacznik czasowy.
|
||||
channelFederationWarn: Kanały nie są jeszcze federowane z innymi serwerami
|
||||
newer: nowsze
|
||||
older: starsze
|
||||
cw: Ostrzeżenie zawartości
|
||||
removeReaction: Usuń reakcję
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "operar"
|
|||
software: "Programas"
|
||||
version: "versão"
|
||||
metadata: "Metadados"
|
||||
withNFiles: "{n} Um arquivo"
|
||||
monitor: "monitor"
|
||||
jobQueue: "Fila de trabalhos"
|
||||
cpuAndMemory: "CPU e memória"
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
username: Nome de usuário
|
||||
ok: OK
|
||||
_lang_: Inglês
|
||||
headlineMisskey: Uma plataforma de mídia social descentralizada e de código aberto
|
||||
que é gratuita para sempre! 🚀
|
||||
search: Pesquisar
|
||||
gotIt: Entendi!
|
||||
introMisskey: Bem vinde! Calckey é uma plataforma de mídia social descentralizada
|
||||
e de código aberto que é gratuita para sempre! 🚀
|
||||
searchPlaceholder: Pesquise no Calckey
|
||||
notifications: Notificações
|
||||
password: Senha
|
||||
forgotPassword: Esqueci a senha
|
||||
cancel: Cancelar
|
||||
noThankYou: Não, obrigade
|
||||
save: Salvar
|
||||
enterUsername: Insira nome de usuário
|
||||
cw: Aviso de conteúdo
|
||||
driveFileDeleteConfirm: Tem a certeza de que pretende apagar o arquivo "{name}"? O
|
||||
arquivo será removido de todas as mensagens que o contenham como anexo.
|
||||
deleteAndEdit: Deletar e editar
|
||||
import: Importar
|
||||
exportRequested: Você pediu uma exportação. Isso pode demorar um pouco. Será adicionado
|
||||
ao seu Drive quando for completo.
|
||||
note: Postar
|
||||
notes: Postagens
|
||||
deleteAndEditConfirm: Você tem certeza que quer deletar esse post e edita-lo? Você
|
||||
vai perder todas as reações, impulsionamentos e respostas dele.
|
||||
showLess: Fechar
|
||||
importRequested: Você requisitou uma importação. Isso pode demorar um pouco.
|
||||
listsDesc: Listas deixam você criar linhas do tempo com usuários específicos. Elas
|
||||
podem ser acessadas pela página de linhas do tempo.
|
||||
edited: 'Editado às {date} {time}'
|
||||
sendMessage: Enviar uma mensagem
|
||||
older: antigo
|
||||
createList: Criar lista
|
||||
loadMore: Carregar mais
|
||||
mentions: Menções
|
||||
importAndExport: Importar/Exportar Dados
|
||||
files: Arquivos
|
||||
lists: Listas
|
||||
manageLists: Gerenciar listas
|
||||
error: Erro
|
||||
somethingHappened: Ocorreu um erro
|
||||
retry: Tentar novamente
|
||||
renotedBy: Impulsionado por {user}
|
||||
noNotes: Nenhum post
|
||||
noNotifications: Nenhuma notificação
|
||||
instance: Servidor
|
||||
settings: Configurações
|
||||
basicSettings: Configurações Básicas
|
||||
otherSettings: Outras Configurações
|
||||
openInWindow: Abrir em janela
|
||||
profile: Perfil
|
||||
noAccountDescription: Esse usuário ainda não escreveu sua bio.
|
||||
login: Entrar
|
||||
loggingIn: Entrando
|
||||
logout: Sair
|
||||
signup: Criar conta
|
||||
uploading: Enviando...
|
||||
users: Usuários
|
||||
addUser: Adicione um usuário
|
||||
addInstance: Adicionar um servidor
|
||||
cantFavorite: Não foi possível adicionar aos marcadores.
|
||||
pin: Fixar no perfil
|
||||
unpin: Desfixar do perfil
|
||||
copyContent: Copiar conteúdos
|
||||
copyLink: Copiar link
|
||||
delete: Deletar
|
||||
deleted: Deletado
|
||||
editNote: Editar anotação
|
||||
addToList: Adicionar a lista
|
||||
copyUsername: Copiar nome de usuário
|
||||
searchUser: Procurar por um usuário
|
||||
reply: Responder
|
||||
jumpToPrevious: Pular para o anterior
|
||||
showMore: Mostrar mais
|
||||
newer: novo
|
||||
youGotNewFollower: seguiu você
|
||||
mention: Mencionar
|
||||
directNotes: Mensagens diretas
|
||||
export: Exportar
|
||||
unfollowConfirm: Você tem certez que deseja para de seguir {name}?
|
||||
noLists: Você não possui nenhuma lista
|
||||
following: Seguindo
|
||||
followers: Seguidores
|
||||
followsYou: Segue você
|
|
@ -177,6 +177,7 @@ 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"
|
||||
|
|
|
@ -192,6 +192,7 @@ operations: "Операции"
|
|||
software: "Программы"
|
||||
version: "Версия"
|
||||
metadata: "Метаданные"
|
||||
withNFiles: "Файлы, {n} шт"
|
||||
monitor: "Монитор"
|
||||
jobQueue: "Очередь заданий"
|
||||
cpuAndMemory: "Процессор и память"
|
||||
|
@ -1249,8 +1250,8 @@ _tutorial:
|
|||
step6_4: "Теперь идите, изучайте и развлекайтесь!"
|
||||
_2fa:
|
||||
alreadyRegistered: "Двухфакторная аутентификация уже настроена."
|
||||
registerTOTP: "Зарегистрируйте ваше устройство"
|
||||
registerSecurityKey: "Зарегистрировать ключ"
|
||||
registerDevice: "Зарегистрируйте ваше устройство"
|
||||
registerKey: "Зарегистрировать ключ"
|
||||
step1: "Прежде всего, установите на устройство приложение для аутентификации, например,\
|
||||
\ {a} или {b}."
|
||||
step2: "Далее отсканируйте отображаемый QR-код при помощи приложения."
|
||||
|
@ -1908,8 +1909,8 @@ recommendedInstances: Рекомендованные инстансы
|
|||
defaultReaction: Эмодзи реакция по умолчанию для выходящих и исходящих постов
|
||||
license: Лицензия
|
||||
indexPosts: Индексировать посты
|
||||
indexFrom: Индексировать начиная с идентификатора поста и далее
|
||||
indexFromDescription: оставьте пустым для индексации каждого поста
|
||||
indexFrom: Индексировать начиная с идентификатора поста и далее (оставьте пустым для
|
||||
индексации каждого поста)
|
||||
indexNotice: Теперь индексирование. Вероятно, это займет некоторое время, пожалуйста,
|
||||
не перезагружайте свой сервер по крайней мере в течение часа.
|
||||
customKaTeXMacro: Кастомные KaTex макросы
|
||||
|
@ -1987,5 +1988,5 @@ apps: Приложения
|
|||
silenceThisInstance: Заглушить инстанс
|
||||
silencedInstances: Заглушенные инстансы
|
||||
editNote: Редактировать заметку
|
||||
edited: 'Редактировано в {date} {time}'
|
||||
edited: Редактировано
|
||||
deleted: Удалённое
|
||||
|
|
|
@ -177,6 +177,7 @@ 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äť"
|
||||
|
@ -1196,8 +1197,8 @@ _tutorial:
|
|||
step6_4: "Now go, explore, and have fun!"
|
||||
_2fa:
|
||||
alreadyRegistered: "Už ste zaregistrovali 2-faktorové autentifikačné zariadenie."
|
||||
registerTOTP: "Registrovať nové zariadenie"
|
||||
registerSecurityKey: "Registrovať bezpečnostný kľúč"
|
||||
registerDevice: "Registrovať nové zariadenie"
|
||||
registerKey: "Registrovať bezpečnostný kľúč"
|
||||
step1: "Najprv si nainštalujte autentifikačnú aplikáciu (napríklad {a} alebo {b}) na svoje zariadenie."
|
||||
step2: "Potom, naskenujte QR kód zobrazený na obrazovke."
|
||||
step2Url: "Do aplikácie zadajte nasledujúcu URL adresu:"
|
||||
|
|
|
@ -176,6 +176,7 @@ operations: "Operationer"
|
|||
software: "Mjukvara"
|
||||
version: "Version"
|
||||
metadata: "Metadata"
|
||||
withNFiles: "{n} fil(er)"
|
||||
monitor: "Övervakning"
|
||||
jobQueue: "Jobbkö"
|
||||
cpuAndMemory: "CPU och minne"
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "ดำเนินการ"
|
|||
software: "ซอฟต์แวร์"
|
||||
version: "เวอร์ชั่น"
|
||||
metadata: "ข้อมูลเมตา"
|
||||
withNFiles: "{n} ไฟล์(s)"
|
||||
monitor: "มอนิเตอร์"
|
||||
jobQueue: "คิวงาน"
|
||||
cpuAndMemory: "ซีพียู และ หน่วยความจำ"
|
||||
|
|
|
@ -177,6 +177,7 @@ operations: "Операції"
|
|||
software: "Програмне забезпечення"
|
||||
version: "Версія"
|
||||
metadata: "Метадані"
|
||||
withNFiles: "файли: {n}"
|
||||
monitor: "Монітор"
|
||||
jobQueue: "Черга завдань"
|
||||
cpuAndMemory: "ЦП та пам'ять"
|
||||
|
@ -959,7 +960,7 @@ _tutorial:
|
|||
step6_3: "Кожен сервер працює по-своєму, і не на всіх серверах працює Calckey. Але цей працює! Це трохи складно, але ви швидко розберетеся"
|
||||
step6_4: "Тепер ідіть, вивчайте і розважайтеся!"
|
||||
_2fa:
|
||||
registerSecurityKey: "Зареєструвати новий ключ безпеки"
|
||||
registerKey: "Зареєструвати новий ключ безпеки"
|
||||
_permissions:
|
||||
"read:account": "Переглядати дані профілю"
|
||||
"write:account": "Змінити дані акаунту"
|
||||
|
|
|
@ -177,6 +177,7 @@ 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"
|
||||
|
@ -1201,8 +1202,8 @@ _tutorial:
|
|||
step6_4: "Now go, explore, and have fun!"
|
||||
_2fa:
|
||||
alreadyRegistered: "Bạn đã đăng ký thiết bị xác minh 2 bước."
|
||||
registerTOTP: "Đăng ký một thiết bị"
|
||||
registerSecurityKey: "Đăng ký một mã bảo vệ"
|
||||
registerDevice: "Đăng ký một thiết bị"
|
||||
registerKey: "Đăng ký một mã bảo vệ"
|
||||
step1: "Trước tiên, hãy cài đặt một ứng dụng xác minh (chẳng hạn như {a} hoặc {b}) trên thiết bị của bạn."
|
||||
step2: "Sau đó, quét mã QR hiển thị trên màn hình này."
|
||||
step2Url: "Bạn cũng có thể nhập URL này nếu sử dụng một chương trình máy tính:"
|
||||
|
|
|
@ -181,6 +181,7 @@ operations: "操作"
|
|||
software: "软件"
|
||||
version: "版本"
|
||||
metadata: "元数据"
|
||||
withNFiles: "{n}个文件"
|
||||
monitor: "服务器状态"
|
||||
jobQueue: "作业队列"
|
||||
cpuAndMemory: "CPU和内存"
|
||||
|
@ -1210,8 +1211,8 @@ _tutorial:
|
|||
step6_4: "现在去学习并享受乐趣!"
|
||||
_2fa:
|
||||
alreadyRegistered: "此设备已被注册"
|
||||
registerTOTP: "注册设备"
|
||||
registerSecurityKey: "注册密钥"
|
||||
registerDevice: "注册设备"
|
||||
registerKey: "注册密钥"
|
||||
step1: "首先,在您的设备上安装验证应用,例如{a}或{b}。"
|
||||
step2: "然后,扫描屏幕上显示的二维码。"
|
||||
step2Url: "在桌面应用程序中输入以下URL:"
|
||||
|
|
|
@ -180,6 +180,7 @@ operations: "操作"
|
|||
software: "軟體"
|
||||
version: "版本"
|
||||
metadata: "元資料"
|
||||
withNFiles: "{n}個檔案"
|
||||
monitor: "監視器"
|
||||
jobQueue: "佇列"
|
||||
cpuAndMemory: "CPU及記憶體用量"
|
||||
|
@ -1219,8 +1220,8 @@ _tutorial:
|
|||
step6_4: "現在開始探索吧!"
|
||||
_2fa:
|
||||
alreadyRegistered: "你已註冊過一個雙重認證的裝置。"
|
||||
registerTOTP: "註冊裝置"
|
||||
registerSecurityKey: "註冊鍵"
|
||||
registerDevice: "註冊裝置"
|
||||
registerKey: "註冊鍵"
|
||||
step1: "首先,在您的設備上安裝二步驗證程式,例如{a}或{b}。"
|
||||
step2: "然後,掃描螢幕上的QR code。"
|
||||
step2Url: "在桌面版應用中,請輸入以下的URL:"
|
||||
|
@ -1829,7 +1830,7 @@ indexPosts: 索引帖子
|
|||
indexNotice: 現在開始索引。 這可能需要一段時間,請不要在一個小時內重啟你的伺服器。
|
||||
deleted: 已刪除
|
||||
editNote: 編輯筆記
|
||||
edited: '於 {date} {time} 編輯'
|
||||
edited: 已修改
|
||||
userSaysSomethingReason: '{name} 說了 {reason}'
|
||||
allowedInstancesDescription: 要加入聯邦白名單的服務器,每台伺服器用新行分隔(僅適用於私有模式)。
|
||||
defaultReaction: 默認的表情符號反應
|
||||
|
@ -1840,9 +1841,3 @@ subscribePushNotification: 啟用推送通知
|
|||
unsubscribePushNotification: 禁用推送通知
|
||||
pushNotificationAlreadySubscribed: 推送通知已經啟用
|
||||
recommendedInstancesDescription: 以每行分隔的推薦服務器出現在推薦的時間軸中。 不要添加 `https://`,只添加域名。
|
||||
searchPlaceholder: 搜尋 Calckey
|
||||
cw: 內容警告
|
||||
selectChannel: 選擇一個頻道
|
||||
newer: 較新
|
||||
older: 較舊
|
||||
jumpToPrevious: 跳到上一個
|
||||
|
|
16
package.json
16
package.json
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "calckey",
|
||||
"version": "14.0.0-dev51",
|
||||
"version": "14.0.0-dev13",
|
||||
"codename": "aqua",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://codeberg.org/calckey/calckey.git"
|
||||
},
|
||||
"packageManager": "pnpm@8.6.2",
|
||||
"packageManager": "pnpm@8.5.0",
|
||||
"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 -r run format",
|
||||
"format": "pnpm rome format packages/**/* --write && pnpm --filter client run format",
|
||||
"clean": "pnpm node ./scripts/clean.js",
|
||||
"clean-all": "pnpm node ./scripts/clean-all.js",
|
||||
"cleanall": "pnpm run clean-all"
|
||||
|
@ -36,10 +36,12 @@
|
|||
"chokidar": "^3.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bull-board/api": "5.2.0",
|
||||
"@bull-board/ui": "5.2.0",
|
||||
"@napi-rs/cli": "^2.16.1",
|
||||
"@bull-board/api": "^4.10.2",
|
||||
"@bull-board/ui": "^4.10.2",
|
||||
"@napi-rs/cli": "^2.15.0",
|
||||
"@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"
|
||||
},
|
||||
|
@ -55,7 +57,7 @@
|
|||
"gulp-replace": "1.1.4",
|
||||
"gulp-terser": "2.1.0",
|
||||
"install-peers": "^1.0.4",
|
||||
"rome": "^12.1.3",
|
||||
"rome": "^11.0.0",
|
||||
"start-server-and-test": "1.15.2",
|
||||
"typescript": "4.9.4"
|
||||
}
|
||||
|
|
|
@ -4,5 +4,10 @@
|
|||
"module": "commonjs",
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"exclude": ["node_modules", "jspm_packages", "tmp", "temp"]
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"jspm_packages",
|
||||
"tmp",
|
||||
"temp"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -220,7 +220,7 @@ export class Init1000000000000 {
|
|||
`CREATE INDEX "IDX_3c601b70a1066d2c8b517094cb" ON "notification" ("notifieeId") `,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "meta" ("id" character varying(32) NOT NULL, "name" character varying(128), "description" character varying(1024), "maintainerName" character varying(128), "maintainerEmail" character varying(128), "announcements" jsonb NOT NULL DEFAULT '[]', "disableRegistration" boolean NOT NULL DEFAULT false, "disableLocalTimeline" boolean NOT NULL DEFAULT false, "disableGlobalTimeline" boolean NOT NULL DEFAULT false, "enableEmojiReaction" boolean NOT NULL DEFAULT true, "useStarForReactionFallback" boolean NOT NULL DEFAULT false, "langs" character varying(64) array NOT NULL DEFAULT '{}'::varchar[], "hiddenTags" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "blockedHosts" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "mascotImageUrl" character varying(512) DEFAULT '/static-assets/badges/info.png', "bannerUrl" character varying(512), "errorImageUrl" character varying(512) DEFAULT '/static-assets/badges/error.png', "iconUrl" character varying(512), "cacheRemoteFiles" boolean NOT NULL DEFAULT true, "proxyAccount" character varying(128), "enableRecaptcha" boolean NOT NULL DEFAULT false, "recaptchaSiteKey" character varying(64), "recaptchaSecretKey" character varying(64), "localDriveCapacityMb" integer NOT NULL DEFAULT 1024, "remoteDriveCapacityMb" integer NOT NULL DEFAULT 32, "maxNoteTextLength" integer NOT NULL DEFAULT 500, "summalyProxy" character varying(128), "enableEmail" boolean NOT NULL DEFAULT false, "email" character varying(128), "smtpSecure" boolean NOT NULL DEFAULT false, "smtpHost" character varying(128), "smtpPort" integer, "smtpUser" character varying(128), "smtpPass" character varying(128), "enableServiceWorker" boolean NOT NULL DEFAULT false, "swPublicKey" character varying(128), "swPrivateKey" character varying(128), "enableTwitterIntegration" boolean NOT NULL DEFAULT false, "twitterConsumerKey" character varying(128), "twitterConsumerSecret" character varying(128), "enableGithubIntegration" boolean NOT NULL DEFAULT false, "githubClientId" character varying(128), "githubClientSecret" character varying(128), "enableDiscordIntegration" boolean NOT NULL DEFAULT false, "discordClientId" character varying(128), "discordClientSecret" character varying(128), CONSTRAINT "PK_c4c17a6c2bd7651338b60fc590b" PRIMARY KEY ("id"))`,
|
||||
`CREATE TABLE "meta" ("id" character varying(32) NOT NULL, "name" character varying(128), "description" character varying(1024), "maintainerName" character varying(128), "maintainerEmail" character varying(128), "announcements" jsonb NOT NULL DEFAULT '[]', "disableRegistration" boolean NOT NULL DEFAULT false, "disableLocalTimeline" boolean NOT NULL DEFAULT false, "disableGlobalTimeline" boolean NOT NULL DEFAULT false, "enableEmojiReaction" boolean NOT NULL DEFAULT true, "useStarForReactionFallback" boolean NOT NULL DEFAULT false, "langs" character varying(64) array NOT NULL DEFAULT '{}'::varchar[], "hiddenTags" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "blockedHosts" character varying(256) array NOT NULL DEFAULT '{}'::varchar[], "mascotImageUrl" character varying(512) DEFAULT '/assets/ai.png', "bannerUrl" character varying(512), "errorImageUrl" character varying(512) DEFAULT 'https://xn--931a.moe/aiart/yubitun.png', "iconUrl" character varying(512), "cacheRemoteFiles" boolean NOT NULL DEFAULT true, "proxyAccount" character varying(128), "enableRecaptcha" boolean NOT NULL DEFAULT false, "recaptchaSiteKey" character varying(64), "recaptchaSecretKey" character varying(64), "localDriveCapacityMb" integer NOT NULL DEFAULT 1024, "remoteDriveCapacityMb" integer NOT NULL DEFAULT 32, "maxNoteTextLength" integer NOT NULL DEFAULT 500, "summalyProxy" character varying(128), "enableEmail" boolean NOT NULL DEFAULT false, "email" character varying(128), "smtpSecure" boolean NOT NULL DEFAULT false, "smtpHost" character varying(128), "smtpPort" integer, "smtpUser" character varying(128), "smtpPass" character varying(128), "enableServiceWorker" boolean NOT NULL DEFAULT false, "swPublicKey" character varying(128), "swPrivateKey" character varying(128), "enableTwitterIntegration" boolean NOT NULL DEFAULT false, "twitterConsumerKey" character varying(128), "twitterConsumerSecret" character varying(128), "enableGithubIntegration" boolean NOT NULL DEFAULT false, "githubClientId" character varying(128), "githubClientSecret" character varying(128), "enableDiscordIntegration" boolean NOT NULL DEFAULT false, "discordClientId" character varying(128), "discordClientSecret" character varying(128), CONSTRAINT "PK_c4c17a6c2bd7651338b60fc590b" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "following" ("id" character varying(32) NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "followeeId" character varying(32) NOT NULL, "followerId" character varying(32) NOT NULL, "followerHost" character varying(128), "followerInbox" character varying(512), "followerSharedInbox" character varying(512), "followeeHost" character varying(128), "followeeInbox" character varying(512), "followeeSharedInbox" character varying(512), CONSTRAINT "PK_c76c6e044bdf76ecf8bfb82a645" PRIMARY KEY ("id"))`,
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
export class RemoveShowTimelineReplies1684206886988 {
|
||||
name = "RemoveShowTimelineReplies1684206886988";
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "user" DROP COLUMN "showTimelineReplies"`,
|
||||
);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "user" ADD "showTimelineReplies" boolean NOT NULL DEFAULT false`,
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
export class EmojiSize1684494870830 {
|
||||
name = "EmojiSize1684494870830";
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "emoji" ADD "width" integer`);
|
||||
await queryRunner.query(
|
||||
`COMMENT ON COLUMN "emoji"."width" IS 'Image width'`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE "emoji" ADD "height" integer`);
|
||||
await queryRunner.query(
|
||||
`COMMENT ON COLUMN "emoji"."height" IS 'Image height'`,
|
||||
);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "height"`);
|
||||
await queryRunner.query(`ALTER TABLE "emoji" DROP COLUMN "width"`);
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
[*.rs]
|
||||
indent_style = space
|
||||
indent_size = 4
|
1
packages/backend/native-utils/.gitignore
vendored
1
packages/backend/native-utils/.gitignore
vendored
|
@ -187,6 +187,7 @@ built/
|
|||
#Added by cargo
|
||||
|
||||
/target
|
||||
Cargo.lock
|
||||
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
|
|
3332
packages/backend/native-utils/Cargo.lock
generated
3332
packages/backend/native-utils/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -3,42 +3,13 @@ edition = "2021"
|
|||
name = "native-utils"
|
||||
version = "0.0.0"
|
||||
|
||||
[workspace]
|
||||
members = ["migration"]
|
||||
|
||||
[features]
|
||||
default = []
|
||||
noarray = []
|
||||
napi = ["dep:napi", "dep:napi-derive", "dep:radix_fmt"]
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib", "lib"]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
async-trait = "0.1.68"
|
||||
cfg-if = "1.0.0"
|
||||
chrono = "0.4.24"
|
||||
cuid2 = "0.1.0"
|
||||
derive_more = "0.99.17"
|
||||
jsonschema = "0.17.0"
|
||||
once_cell = "1.17.1"
|
||||
parse-display = "0.8.0"
|
||||
rand = "0.8.5"
|
||||
schemars = { version = "0.8.12", features = ["chrono"] }
|
||||
sea-orm = { version = "0.11.3", features = ["sqlx-postgres", "postgres-array", "sqlx-sqlite", "runtime-tokio-rustls"] }
|
||||
serde = { version = "1.0.163", features = ["derive"] }
|
||||
serde_json = "1.0.96"
|
||||
thiserror = "1.0.40"
|
||||
tokio = { version = "1.28.1", features = ["full"] }
|
||||
utoipa = "3.3.0"
|
||||
|
||||
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
||||
napi = { version = "2.13.1", default-features = false, features = ["napi6", "tokio_rt"], optional = true }
|
||||
napi-derive = { version = "2.12.0", optional = true }
|
||||
radix_fmt = { version = "1.0.0", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_assertions = "1.3.0"
|
||||
napi = { version = "2.12.0", default-features = false, features = ["napi4"] }
|
||||
napi-derive = "2.12.0"
|
||||
|
||||
[build-dependencies]
|
||||
napi-build = "2.0.1"
|
||||
|
|
|
@ -1,32 +1,7 @@
|
|||
import test from "ava";
|
||||
|
||||
import {
|
||||
convertId,
|
||||
IdConvertType,
|
||||
nativeInitIdGenerator,
|
||||
nativeCreateId,
|
||||
nativeRandomStr,
|
||||
} from "../built/index.js";
|
||||
import { sum } from "../index.js";
|
||||
|
||||
test("convert to mastodon id", (t) => {
|
||||
t.is(convertId("9gf61ehcxv", IdConvertType.MastodonId), "960365976481219");
|
||||
t.is(
|
||||
convertId("9fbr9z0wbrjqyd3u", IdConvertType.MastodonId),
|
||||
"3954607381600562394",
|
||||
);
|
||||
t.is(
|
||||
convertId("9fbs680oyviiqrol9md73p8g", IdConvertType.MastodonId),
|
||||
"3494513243013053824",
|
||||
);
|
||||
});
|
||||
|
||||
test("create cuid2 with timestamp prefix", (t) => {
|
||||
nativeInitIdGenerator(16, "");
|
||||
t.not(nativeCreateId(BigInt(Date.now())), nativeCreateId(BigInt(Date.now())));
|
||||
t.is(nativeCreateId(BigInt(Date.now())).length, 16);
|
||||
});
|
||||
|
||||
test("create random string", (t) => {
|
||||
t.not(nativeRandomStr(16), nativeRandomStr(16));
|
||||
t.is(nativeRandomStr(24).length, 24);
|
||||
test("sum from native", (t) => {
|
||||
t.is(sum(1, 2), 3);
|
||||
});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
extern crate napi_build;
|
||||
|
||||
fn main() {
|
||||
napi_build::setup();
|
||||
napi_build::setup();
|
||||
}
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
[package]
|
||||
name = "migration"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
|
||||
[lib]
|
||||
name = "migration"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[features]
|
||||
default = []
|
||||
convert = ["dep:native-utils"]
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1.0.96"
|
||||
native-utils = { path = "../", optional = true }
|
||||
indicatif = { version = "0.17.4", features = ["tokio"] }
|
||||
tokio = { version = "1.28.2", features = ["full"] }
|
||||
futures = "0.3.28"
|
||||
serde_yaml = "0.9.21"
|
||||
serde = { version = "1.0.163", features = ["derive"] }
|
||||
urlencoding = "2.1.2"
|
||||
|
||||
[dependencies.sea-orm-migration]
|
||||
version = "0.11.0"
|
||||
features = [
|
||||
# Enable at least one `ASYNC_RUNTIME` and `DATABASE_DRIVER` feature if you want to run migration via CLI.
|
||||
# View the list of supported features at https://www.sea-ql.org/SeaORM/docs/install-and-config/database-and-async-runtime.
|
||||
# e.g.
|
||||
"runtime-tokio-rustls", # `ASYNC_RUNTIME` feature
|
||||
"sqlx-postgres", # `DATABASE_DRIVER` feature
|
||||
"sqlx-sqlite",
|
||||
]
|
|
@ -1,55 +0,0 @@
|
|||
# Making migrations
|
||||
|
||||
For more information, please read https://www.sea-ql.org/SeaORM/docs/migration/setting-up-migration/
|
||||
|
||||
- Install `sea-orm-cli`
|
||||
```sh
|
||||
cargo install sea-orm-cli
|
||||
```
|
||||
|
||||
- Generate
|
||||
```sh
|
||||
sea-orm-cli migrate generate ****
|
||||
```
|
||||
|
||||
# Running Migrator CLI
|
||||
|
||||
- Generate a new migration file
|
||||
```sh
|
||||
cargo run -- migrate generate MIGRATION_NAME
|
||||
```
|
||||
- Apply all pending migrations
|
||||
```sh
|
||||
cargo run
|
||||
```
|
||||
```sh
|
||||
cargo run -- up
|
||||
```
|
||||
- Apply first 10 pending migrations
|
||||
```sh
|
||||
cargo run -- up -n 10
|
||||
```
|
||||
- Rollback last applied migrations
|
||||
```sh
|
||||
cargo run -- down
|
||||
```
|
||||
- Rollback last 10 applied migrations
|
||||
```sh
|
||||
cargo run -- down -n 10
|
||||
```
|
||||
- Drop all tables from the database, then reapply all migrations
|
||||
```sh
|
||||
cargo run -- fresh
|
||||
```
|
||||
- Rollback all applied migrations, then reapply all migrations
|
||||
```sh
|
||||
cargo run -- refresh
|
||||
```
|
||||
- Rollback all applied migrations
|
||||
```sh
|
||||
cargo run -- reset
|
||||
```
|
||||
- Check the status of all migrations
|
||||
```sh
|
||||
cargo run -- status
|
||||
```
|
|
@ -1,12 +0,0 @@
|
|||
pub use sea_orm_migration::prelude::*;
|
||||
|
||||
mod m20230531_180824_drop_reversi;
|
||||
|
||||
pub struct Migrator;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigratorTrait for Migrator {
|
||||
fn migrations() -> Vec<Box<dyn MigrationTrait>> {
|
||||
vec![Box::new(m20230531_180824_drop_reversi::Migration)]
|
||||
}
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
use sea_orm_migration::{
|
||||
prelude::*,
|
||||
sea_orm::{DbBackend, Statement},
|
||||
};
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
if manager.get_database_backend() == DbBackend::Sqlite {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let db = manager.get_connection();
|
||||
db.query_one(Statement::from_string(
|
||||
DbBackend::Postgres,
|
||||
Table::drop()
|
||||
.table(ReversiGame::Table)
|
||||
.if_exists()
|
||||
.to_string(PostgresQueryBuilder),
|
||||
))
|
||||
.await?;
|
||||
db.query_one(Statement::from_string(
|
||||
DbBackend::Postgres,
|
||||
Table::drop()
|
||||
.table(ReversiMatching::Table)
|
||||
.if_exists()
|
||||
.to_string(PostgresQueryBuilder),
|
||||
))
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn down(&self, _manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
// Replace the sample below with your own migration scripts
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
/// Learn more at https://docs.rs/sea-query#iden
|
||||
#[derive(Iden)]
|
||||
enum ReversiGame {
|
||||
Table,
|
||||
}
|
||||
#[derive(Iden)]
|
||||
enum ReversiMatching {
|
||||
Table,
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
use serde::Deserialize;
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use urlencoding::encode;
|
||||
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
#[cfg(feature = "convert")]
|
||||
mod vec_to_json;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let cwd = env::current_dir().unwrap();
|
||||
let yml = fs::File::open(cwd.join("../../.config/default.yml"))
|
||||
.expect("Failed to open '.config/default.yml'");
|
||||
let config: Config = serde_yaml::from_reader(yml).expect("Failed to parse yaml");
|
||||
|
||||
env::set_var(
|
||||
"DATABASE_URL",
|
||||
format!(
|
||||
"postgres://{}:{}@{}:{}/{}",
|
||||
config.db.user,
|
||||
encode(&config.db.pass),
|
||||
config.db.host,
|
||||
config.db.port,
|
||||
config.db.db,
|
||||
),
|
||||
);
|
||||
|
||||
cli::run_cli(migration::Migrator).await;
|
||||
|
||||
#[cfg(feature = "convert")]
|
||||
vec_to_json::convert().await;
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Deserialize)]
|
||||
#[serde(rename = "camelCase")]
|
||||
pub struct Config {
|
||||
pub db: DbConfig,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Deserialize)]
|
||||
#[serde(rename = "camelCase")]
|
||||
pub struct DbConfig {
|
||||
pub host: String,
|
||||
pub port: u32,
|
||||
pub db: String,
|
||||
pub user: String,
|
||||
pub pass: String,
|
||||
}
|
|
@ -1,498 +0,0 @@
|
|||
use indicatif::{MultiProgress, ProgressBar, ProgressStyle};
|
||||
use native_utils::model::entity::newtype::{I32Vec, StringVec};
|
||||
use sea_orm_migration::{
|
||||
prelude::*,
|
||||
sea_orm::{Database, DbBackend, DbConn, Statement, TryGetable},
|
||||
};
|
||||
use serde_json::json;
|
||||
use std::env;
|
||||
use std::time::Duration;
|
||||
|
||||
pub async fn convert() {
|
||||
let uri = env::var("DATABASE_URL").expect("Environment variable 'DATABASE_URL' not set");
|
||||
|
||||
let db = Database::connect(uri).await.expect("Unable to connect");
|
||||
let mp = MultiProgress::new();
|
||||
|
||||
let handlers = vec![
|
||||
tokio::spawn(to_json::<AccessToken, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
AccessToken::Table,
|
||||
AccessToken::Id,
|
||||
AccessToken::Permission,
|
||||
)),
|
||||
tokio::spawn(to_json::<Antenna, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Antenna::Table,
|
||||
Antenna::Id,
|
||||
Antenna::Users,
|
||||
)),
|
||||
tokio::spawn(to_json::<App, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
App::Table,
|
||||
App::Id,
|
||||
App::Permission,
|
||||
)),
|
||||
tokio::spawn(to_json::<Emoji, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Emoji::Table,
|
||||
Emoji::Id,
|
||||
Emoji::Aliases,
|
||||
)),
|
||||
tokio::spawn(to_json::<GalleryPost, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
GalleryPost::Table,
|
||||
GalleryPost::Id,
|
||||
GalleryPost::FileIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<GalleryPost, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
GalleryPost::Table,
|
||||
GalleryPost::Id,
|
||||
GalleryPost::Tags,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::MentionedUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::MentionedLocalUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::MentionedRemoteUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::AttachedUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::AttachedLocalUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Hashtag, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Hashtag::Table,
|
||||
Hashtag::Id,
|
||||
Hashtag::AttachedRemoteUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<MessagingMessage, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
MessagingMessage::Table,
|
||||
MessagingMessage::Id,
|
||||
MessagingMessage::Reads,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::Langs,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::BlockedHosts,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::HiddenTags,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::PinnedUsers,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::PinnedPages,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::RecommendedInstances,
|
||||
)),
|
||||
tokio::spawn(to_json::<Meta, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Meta::Table,
|
||||
Meta::Id,
|
||||
Meta::SilencedHosts,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::FileIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::AttachedFileTypes,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::VisibleUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::Mentions,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::Emojis,
|
||||
)),
|
||||
tokio::spawn(to_json::<Note, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Note::Table,
|
||||
Note::Id,
|
||||
Note::Tags,
|
||||
)),
|
||||
tokio::spawn(to_json::<NoteEdit, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
NoteEdit::Table,
|
||||
NoteEdit::Id,
|
||||
NoteEdit::FileIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<Page, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Page::Table,
|
||||
Page::Id,
|
||||
Page::VisibleUserIds,
|
||||
)),
|
||||
tokio::spawn(to_json::<RegistryItem, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
RegistryItem::Table,
|
||||
RegistryItem::Id,
|
||||
RegistryItem::Scope,
|
||||
)),
|
||||
tokio::spawn(to_json::<User, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
User::Table,
|
||||
User::Id,
|
||||
User::Tags,
|
||||
)),
|
||||
tokio::spawn(to_json::<User, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
User::Table,
|
||||
User::Id,
|
||||
User::Emojis,
|
||||
)),
|
||||
tokio::spawn(to_json::<Webhook, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Webhook::Table,
|
||||
Webhook::Id,
|
||||
Webhook::On,
|
||||
)),
|
||||
tokio::spawn(to_json::<Poll, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Poll::Table,
|
||||
Poll::NoteId,
|
||||
Poll::Choices,
|
||||
)),
|
||||
tokio::spawn(to_json::<Poll, Vec<i32>, I32Vec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
Poll::Table,
|
||||
Poll::NoteId,
|
||||
Poll::Votes,
|
||||
)),
|
||||
tokio::spawn(to_json::<UserProfile, Vec<String>, StringVec>(
|
||||
db.clone(),
|
||||
mp.clone(),
|
||||
UserProfile::Table,
|
||||
UserProfile::UserId,
|
||||
UserProfile::MutingNotificationTypes,
|
||||
)),
|
||||
];
|
||||
|
||||
futures::future::join_all(handlers).await;
|
||||
}
|
||||
|
||||
fn select_query<T: Iden + 'static>(table: T, id: T, col: T) -> String {
|
||||
Query::select()
|
||||
.column(id)
|
||||
.column(col)
|
||||
.from(table)
|
||||
.to_string(PostgresQueryBuilder)
|
||||
}
|
||||
|
||||
async fn get_vec<T: TryGetable>(db: &DbConn, query: String) -> Result<Vec<(String, T)>, DbErr> {
|
||||
let res: Vec<(String, T)> = db
|
||||
.query_all(Statement::from_string(DbBackend::Postgres, query))
|
||||
.await?
|
||||
.iter()
|
||||
.filter_map(|r| r.try_get_many_by_index().ok())
|
||||
.collect();
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
async fn convert_col<T: Iden + Clone + 'static>(
|
||||
db: &DbConn,
|
||||
table: T,
|
||||
col: T,
|
||||
) -> Result<(), DbErr> {
|
||||
let stmt = Table::alter()
|
||||
.table(table)
|
||||
.drop_column(col.to_owned())
|
||||
.add_column(
|
||||
ColumnDef::new(col.to_owned())
|
||||
.json_binary()
|
||||
.not_null()
|
||||
.default(json!([])),
|
||||
)
|
||||
.to_string(PostgresQueryBuilder);
|
||||
db.query_one(Statement::from_string(DbBackend::Postgres, stmt))
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn to_json<T, U, V>(
|
||||
db: DbConn,
|
||||
mp: MultiProgress,
|
||||
table: T,
|
||||
id: T,
|
||||
col: T,
|
||||
) -> Result<(), DbErr>
|
||||
where
|
||||
T: Iden + Clone + 'static,
|
||||
U: TryGetable + IntoIterator + Clone,
|
||||
V: From<U> + Into<SimpleExpr>,
|
||||
{
|
||||
let query = select_query(table.clone(), id.clone(), col.clone());
|
||||
let loading = ProgressBar::new_spinner()
|
||||
.with_style(ProgressStyle::with_template("{prefix} {msg} {spinner}").unwrap())
|
||||
.with_prefix("[-]")
|
||||
.with_message(format!(
|
||||
"Loading data from {}.{}",
|
||||
table.to_string(),
|
||||
col.to_string()
|
||||
));
|
||||
let loading = mp.add(loading);
|
||||
loading.enable_steady_tick(Duration::from_millis(100));
|
||||
let res = get_vec::<U>(&db, query).await?;
|
||||
let models: Vec<(String, V)> = res
|
||||
.iter()
|
||||
.filter(|(_, r)| r.clone().into_iter().count() > 0)
|
||||
.map(|(id, r)| (id.clone(), <V>::from(r.clone())))
|
||||
.collect();
|
||||
loading.finish_and_clear();
|
||||
convert_col(&db, table.clone(), col.clone()).await?;
|
||||
|
||||
let progress = ProgressBar::new(models.len() as u64)
|
||||
.with_style(
|
||||
ProgressStyle::with_template("{prefix} {msg} {wide_bar} {pos}/{len}")
|
||||
.unwrap()
|
||||
.progress_chars("##-"),
|
||||
)
|
||||
.with_prefix("[*]")
|
||||
.with_message(format!("Copying {}.{}", table.to_string(), col.to_string()));
|
||||
let progress = mp.add(progress);
|
||||
|
||||
for model in models {
|
||||
progress.inc(1);
|
||||
let q = Query::update()
|
||||
.table(table.clone())
|
||||
.values([(col.clone(), model.1.into())])
|
||||
.and_where(Expr::col(id.clone()).eq(model.0))
|
||||
.to_string(PostgresQueryBuilder);
|
||||
db.query_one(Statement::from_string(DbBackend::Postgres, q))
|
||||
.await?;
|
||||
}
|
||||
progress.finish_with_message(format!("Done {}.{}", table.to_string(), col.to_string()));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[derive(Iden, Clone)]
|
||||
enum AccessToken {
|
||||
Table,
|
||||
Id,
|
||||
Permission,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Antenna {
|
||||
Table,
|
||||
Id,
|
||||
Users,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum App {
|
||||
Table,
|
||||
Id,
|
||||
Permission,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Emoji {
|
||||
Table,
|
||||
Id,
|
||||
Aliases,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum GalleryPost {
|
||||
Table,
|
||||
Id,
|
||||
#[iden = "fileIds"]
|
||||
FileIds,
|
||||
Tags,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Hashtag {
|
||||
Table,
|
||||
Id,
|
||||
#[iden = "mentionedUserIds"]
|
||||
MentionedUserIds,
|
||||
#[iden = "mentionedLocalUserIds"]
|
||||
MentionedLocalUserIds,
|
||||
#[iden = "mentionedRemoteUserIds"]
|
||||
MentionedRemoteUserIds,
|
||||
#[iden = "attachedUserIds"]
|
||||
AttachedUserIds,
|
||||
#[iden = "attachedLocalUserIds"]
|
||||
AttachedLocalUserIds,
|
||||
#[iden = "attachedRemoteUserIds"]
|
||||
AttachedRemoteUserIds,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum MessagingMessage {
|
||||
Table,
|
||||
Id,
|
||||
Reads,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Meta {
|
||||
Table,
|
||||
Id,
|
||||
Langs,
|
||||
#[iden = "hiddenTags"]
|
||||
HiddenTags,
|
||||
#[iden = "blockedHosts"]
|
||||
BlockedHosts,
|
||||
#[iden = "pinnedUsers"]
|
||||
PinnedUsers,
|
||||
#[iden = "pinnedPages"]
|
||||
PinnedPages,
|
||||
#[iden = "recommendedInstances"]
|
||||
RecommendedInstances,
|
||||
#[iden = "silencedHosts"]
|
||||
SilencedHosts,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Note {
|
||||
Table,
|
||||
Id,
|
||||
#[iden = "fileIds"]
|
||||
FileIds,
|
||||
#[iden = "attachedFileTypes"]
|
||||
AttachedFileTypes,
|
||||
#[iden = "visibleUserIds"]
|
||||
VisibleUserIds,
|
||||
Mentions,
|
||||
Emojis,
|
||||
Tags,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum NoteEdit {
|
||||
Table,
|
||||
Id,
|
||||
#[iden = "fileIds"]
|
||||
FileIds,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Page {
|
||||
Table,
|
||||
Id,
|
||||
#[iden = "visibleUserIds"]
|
||||
VisibleUserIds,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Poll {
|
||||
Table,
|
||||
#[iden = "noteId"]
|
||||
NoteId,
|
||||
Choices,
|
||||
Votes, // I32Vec
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum RegistryItem {
|
||||
Table,
|
||||
Id,
|
||||
Scope,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum User {
|
||||
Table,
|
||||
Id,
|
||||
Tags,
|
||||
Emojis,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum UserProfile {
|
||||
Table,
|
||||
#[iden = "userId"]
|
||||
UserId,
|
||||
#[iden = "mutingNotificationTypes"]
|
||||
MutingNotificationTypes,
|
||||
}
|
||||
#[derive(Iden, Clone)]
|
||||
enum Webhook {
|
||||
Table,
|
||||
Id,
|
||||
On,
|
||||
}
|
|
@ -23,8 +23,8 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@napi-rs/cli": "2.16.1",
|
||||
"ava": "5.1.1"
|
||||
"@napi-rs/cli": "^2.15.0",
|
||||
"ava": "^5.1.1"
|
||||
},
|
||||
"ava": {
|
||||
"timeout": "3m"
|
||||
|
@ -34,15 +34,11 @@
|
|||
},
|
||||
"scripts": {
|
||||
"artifacts": "napi artifacts",
|
||||
"build": "napi build --features napi --platform --release ./built/",
|
||||
"build": "napi build --platform --release ./built/",
|
||||
"build:debug": "napi build --platform",
|
||||
"prepublishOnly": "napi prepublish -t npm",
|
||||
"test": "pnpm run cargo:test && pnpm run build && ava",
|
||||
"test": "ava",
|
||||
"universal": "napi universal",
|
||||
"version": "napi version",
|
||||
"format": "cargo fmt --all",
|
||||
"cargo:test": "pnpm run cargo:unit && pnpm run cargo:integration",
|
||||
"cargo:unit": "cargo test unit_test && cargo test -F napi unit_test",
|
||||
"cargo:integration": "cargo test -F noarray int_test -- --test-threads=1"
|
||||
"version": "napi version"
|
||||
}
|
||||
}
|
||||
|
|
2
packages/backend/native-utils/rustfmt.toml
Normal file
2
packages/backend/native-utils/rustfmt.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
tab_spaces = 2
|
||||
edition = "2021"
|
|
@ -1,13 +0,0 @@
|
|||
use sea_orm::error::DbErr;
|
||||
|
||||
use crate::impl_into_napi_error;
|
||||
|
||||
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
||||
pub enum Error {
|
||||
#[error("The database connections have not been initialized yet")]
|
||||
Uninitialized,
|
||||
#[error("ORM error: {0}")]
|
||||
OrmError(#[from] DbErr),
|
||||
}
|
||||
|
||||
impl_into_napi_error!(Error);
|
|
@ -1,38 +0,0 @@
|
|||
pub mod error;
|
||||
|
||||
use cfg_if::cfg_if;
|
||||
use error::Error;
|
||||
use sea_orm::{Database, DbConn};
|
||||
|
||||
static DB_CONN: once_cell::sync::OnceCell<DbConn> = once_cell::sync::OnceCell::new();
|
||||
|
||||
pub async fn init_database(conn_uri: impl Into<String>) -> Result<(), Error> {
|
||||
let conn = Database::connect(conn_uri.into()).await?;
|
||||
DB_CONN.get_or_init(move || conn);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_database() -> Result<&'static DbConn, Error> {
|
||||
DB_CONN.get().ok_or(Error::Uninitialized)
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
if #[cfg(feature = "napi")] {
|
||||
use napi_derive::napi;
|
||||
|
||||
#[napi]
|
||||
pub async fn native_init_database(conn_uri: String) -> napi::Result<()> {
|
||||
init_database(conn_uri).await.map_err(Into::into)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod unit_test {
|
||||
use super::{error::Error, get_database};
|
||||
|
||||
#[test]
|
||||
fn error_uninitialized() {
|
||||
assert_eq!(get_database().unwrap_err(), Error::Uninitialized);
|
||||
}
|
||||
}
|
|
@ -1,7 +1,2 @@
|
|||
pub mod database;
|
||||
pub mod macros;
|
||||
pub mod model;
|
||||
pub mod util;
|
||||
|
||||
#[cfg(feature = "napi")]
|
||||
pub mod mastodon_api;
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
#[macro_export]
|
||||
macro_rules! impl_into_napi_error {
|
||||
($a:ty) => {
|
||||
#[cfg(feature = "napi")]
|
||||
impl Into<napi::Error> for $a {
|
||||
fn into(self) -> napi::Error {
|
||||
napi::Error::from_reason(self.to_string())
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
|
@ -7,64 +7,64 @@ static CHAR_COLLECTION: &str = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|||
|
||||
#[napi]
|
||||
pub enum IdConvertType {
|
||||
MastodonId,
|
||||
CalckeyId,
|
||||
MastodonId,
|
||||
CalckeyId,
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn convert_id(in_id: String, id_convert_type: IdConvertType) -> napi::Result<String> {
|
||||
use IdConvertType::*;
|
||||
match id_convert_type {
|
||||
MastodonId => {
|
||||
let mut out: i64 = 0;
|
||||
for (i, c) in in_id.to_lowercase().chars().rev().enumerate() {
|
||||
out += num_from_char(c)? as i64 * 36_i64.pow(i as u32);
|
||||
}
|
||||
use IdConvertType::*;
|
||||
match id_convert_type {
|
||||
MastodonId => {
|
||||
let mut out: i64 = 0;
|
||||
for (i, c) in in_id.to_lowercase().chars().rev().enumerate() {
|
||||
out += num_from_char(c)? as i64 * 36_i64.pow(i as u32);
|
||||
}
|
||||
|
||||
Ok(out.to_string())
|
||||
}
|
||||
CalckeyId => {
|
||||
let mut input: i64 = match in_id.parse() {
|
||||
Ok(s) => s,
|
||||
Err(_) => {
|
||||
return Err(Error::new(
|
||||
Status::InvalidArg,
|
||||
"Unable to parse ID as MastodonId",
|
||||
))
|
||||
}
|
||||
};
|
||||
let mut out = String::new();
|
||||
|
||||
while input != 0 {
|
||||
out.insert(0, char_from_num((input % 36) as u8)?);
|
||||
input /= 36;
|
||||
}
|
||||
|
||||
Ok(out)
|
||||
}
|
||||
Ok(out.to_string())
|
||||
}
|
||||
CalckeyId => {
|
||||
let mut input: i64 = match in_id.parse() {
|
||||
Ok(s) => s,
|
||||
Err(_) => {
|
||||
return Err(Error::new(
|
||||
Status::InvalidArg,
|
||||
"Unable to parse ID as MasstodonId",
|
||||
))
|
||||
}
|
||||
};
|
||||
let mut out = String::new();
|
||||
|
||||
while input != 0 {
|
||||
out.insert(0, char_from_num((input % 36) as u8)?);
|
||||
input /= 36;
|
||||
}
|
||||
|
||||
Ok(out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -- end --
|
||||
|
||||
#[inline(always)]
|
||||
fn num_from_char(character: char) -> napi::Result<u8> {
|
||||
for (i, c) in CHAR_COLLECTION.chars().enumerate() {
|
||||
if c == character {
|
||||
return Ok(i as u8);
|
||||
}
|
||||
for (i, c) in CHAR_COLLECTION.chars().enumerate() {
|
||||
if c == character {
|
||||
return Ok(i as u8);
|
||||
}
|
||||
}
|
||||
|
||||
Err(Error::new(
|
||||
Status::InvalidArg,
|
||||
"Invalid character in parsed base36 id",
|
||||
))
|
||||
Err(Error::new(
|
||||
Status::InvalidArg,
|
||||
"Invalid character in parsed base36 id",
|
||||
))
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
fn char_from_num(number: u8) -> napi::Result<char> {
|
||||
CHAR_COLLECTION
|
||||
.chars()
|
||||
.nth(number as usize)
|
||||
.ok_or(Error::from_status(Status::Unknown))
|
||||
CHAR_COLLECTION
|
||||
.chars()
|
||||
.nth(number as usize)
|
||||
.ok_or(Error::from_status(Status::Unknown))
|
||||
}
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
pub mod prelude;
|
||||
|
||||
pub mod abuse_user_report;
|
||||
pub mod access_token;
|
||||
pub mod ad;
|
||||
pub mod announcement;
|
||||
pub mod announcement_read;
|
||||
pub mod antenna;
|
||||
pub mod antenna_note;
|
||||
pub mod app;
|
||||
pub mod attestation_challenge;
|
||||
pub mod auth_session;
|
||||
pub mod blocking;
|
||||
pub mod channel;
|
||||
pub mod channel_following;
|
||||
pub mod channel_note_pining;
|
||||
pub mod clip;
|
||||
pub mod clip_note;
|
||||
pub mod drive_file;
|
||||
pub mod drive_folder;
|
||||
pub mod emoji;
|
||||
pub mod follow_request;
|
||||
pub mod following;
|
||||
pub mod gallery_like;
|
||||
pub mod gallery_post;
|
||||
pub mod hashtag;
|
||||
pub mod instance;
|
||||
pub mod messaging_message;
|
||||
pub mod meta;
|
||||
pub mod migrations;
|
||||
pub mod moderation_log;
|
||||
pub mod muted_note;
|
||||
pub mod muting;
|
||||
pub mod newtype;
|
||||
pub mod note;
|
||||
pub mod note_edit;
|
||||
pub mod note_favorite;
|
||||
pub mod note_reaction;
|
||||
pub mod note_thread_muting;
|
||||
pub mod note_unread;
|
||||
pub mod note_watching;
|
||||
pub mod notification;
|
||||
pub mod page;
|
||||
pub mod page_like;
|
||||
pub mod password_reset_request;
|
||||
pub mod poll;
|
||||
pub mod poll_vote;
|
||||
pub mod promo_note;
|
||||
pub mod promo_read;
|
||||
pub mod registration_ticket;
|
||||
pub mod registry_item;
|
||||
pub mod relay;
|
||||
pub mod renote_muting;
|
||||
pub mod sea_orm_active_enums;
|
||||
pub mod signin;
|
||||
pub mod sw_subscription;
|
||||
pub mod used_username;
|
||||
pub mod user;
|
||||
pub mod user_group;
|
||||
pub mod user_group_invitation;
|
||||
pub mod user_group_invite;
|
||||
pub mod user_group_joining;
|
||||
pub mod user_ip;
|
||||
pub mod user_keypair;
|
||||
pub mod user_list;
|
||||
pub mod user_list_joining;
|
||||
pub mod user_note_pining;
|
||||
pub mod user_pending;
|
||||
pub mod user_profile;
|
||||
pub mod user_publickey;
|
||||
pub mod user_security_key;
|
||||
pub mod webhook;
|
|
@ -1,55 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "abuse_user_report")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "targetUserId")]
|
||||
pub target_user_id: String,
|
||||
#[sea_orm(column_name = "reporterId")]
|
||||
pub reporter_id: String,
|
||||
#[sea_orm(column_name = "assigneeId")]
|
||||
pub assignee_id: Option<String>,
|
||||
pub resolved: bool,
|
||||
pub comment: String,
|
||||
#[sea_orm(column_name = "targetUserHost")]
|
||||
pub target_user_host: Option<String>,
|
||||
#[sea_orm(column_name = "reporterHost")]
|
||||
pub reporter_host: Option<String>,
|
||||
pub forwarded: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::ReporterId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User3,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::AssigneeId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
User2,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::TargetUserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User1,
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,71 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
use super::newtype::StringVec;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "access_token")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub token: String,
|
||||
pub hash: String,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
#[sea_orm(column_name = "appId")]
|
||||
pub app_id: Option<String>,
|
||||
#[sea_orm(column_name = "lastUsedAt")]
|
||||
pub last_used_at: Option<DateTimeWithTimeZone>,
|
||||
pub session: Option<String>,
|
||||
pub name: Option<String>,
|
||||
pub description: Option<String>,
|
||||
#[sea_orm(column_name = "iconUrl")]
|
||||
pub icon_url: Option<String>,
|
||||
pub permission: StringVec,
|
||||
pub fetched: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::app::Entity",
|
||||
from = "Column::AppId",
|
||||
to = "super::app::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
App,
|
||||
#[sea_orm(has_many = "super::notification::Entity")]
|
||||
Notification,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::app::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::App.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::notification::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Notification.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,26 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "ad")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "expiresAt")]
|
||||
pub expires_at: DateTimeWithTimeZone,
|
||||
pub place: String,
|
||||
pub priority: String,
|
||||
pub url: String,
|
||||
#[sea_orm(column_name = "imageUrl")]
|
||||
pub image_url: String,
|
||||
pub memo: String,
|
||||
pub ratio: i32,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,32 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "announcement")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub text: String,
|
||||
pub title: String,
|
||||
#[sea_orm(column_name = "imageUrl")]
|
||||
pub image_url: Option<String>,
|
||||
#[sea_orm(column_name = "updatedAt")]
|
||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::announcement_read::Entity")]
|
||||
AnnouncementRead,
|
||||
}
|
||||
|
||||
impl Related<super::announcement_read::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::AnnouncementRead.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,50 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "announcement_read")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
#[sea_orm(column_name = "announcementId")]
|
||||
pub announcement_id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::announcement::Entity",
|
||||
from = "Column::AnnouncementId",
|
||||
to = "super::announcement::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Announcement,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::announcement::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Announcement.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,92 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use super::{newtype, sea_orm_active_enums::AntennaSrcEnum};
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "antenna")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
pub name: String,
|
||||
pub src: AntennaSrcEnum,
|
||||
#[sea_orm(column_name = "userListId")]
|
||||
pub user_list_id: Option<String>,
|
||||
#[sea_orm(column_type = "JsonBinary")]
|
||||
pub keywords: newtype::JsonKeyword,
|
||||
#[sea_orm(column_name = "withFile")]
|
||||
pub with_file: bool,
|
||||
pub expression: Option<String>,
|
||||
pub notify: bool,
|
||||
#[sea_orm(column_name = "caseSensitive")]
|
||||
pub case_sensitive: bool,
|
||||
#[sea_orm(column_name = "withReplies")]
|
||||
pub with_replies: bool,
|
||||
#[sea_orm(column_name = "userGroupJoiningId")]
|
||||
pub user_group_joining_id: Option<String>,
|
||||
pub users: newtype::StringVec,
|
||||
#[sea_orm(column_name = "excludeKeywords", column_type = "JsonBinary")]
|
||||
pub exclude_keywords: newtype::JsonKeyword,
|
||||
#[sea_orm(column_type = "JsonBinary")]
|
||||
pub instances: newtype::JsonStringVec,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::antenna_note::Entity")]
|
||||
AntennaNote,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user_group_joining::Entity",
|
||||
from = "Column::UserGroupJoiningId",
|
||||
to = "super::user_group_joining::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
UserGroupJoining,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user_list::Entity",
|
||||
from = "Column::UserListId",
|
||||
to = "super::user_list::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
UserList,
|
||||
}
|
||||
|
||||
impl Related<super::antenna_note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::AntennaNote.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user_group_joining::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::UserGroupJoining.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user_list::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::UserList.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,49 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "antenna_note")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "noteId")]
|
||||
pub note_id: String,
|
||||
#[sea_orm(column_name = "antennaId")]
|
||||
pub antenna_id: String,
|
||||
pub read: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::antenna::Entity",
|
||||
from = "Column::AntennaId",
|
||||
to = "super::antenna::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Antenna,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::note::Entity",
|
||||
from = "Column::NoteId",
|
||||
to = "super::note::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Note,
|
||||
}
|
||||
|
||||
impl Related<super::antenna::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Antenna.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Note.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,58 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
use super::newtype::StringVec;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "app")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: Option<String>,
|
||||
pub secret: String,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
pub permission: StringVec,
|
||||
#[sea_orm(column_name = "callbackUrl")]
|
||||
pub callback_url: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::access_token::Entity")]
|
||||
AccessToken,
|
||||
#[sea_orm(has_many = "super::auth_session::Entity")]
|
||||
AuthSession,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::access_token::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::AccessToken.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::auth_session::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::AuthSession.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,37 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "attestation_challenge")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "userId", primary_key, auto_increment = false)]
|
||||
pub user_id: String,
|
||||
pub challenge: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "registrationChallenge")]
|
||||
pub registration_challenge: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,51 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "auth_session")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub token: String,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: Option<String>,
|
||||
#[sea_orm(column_name = "appId")]
|
||||
pub app_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::app::Entity",
|
||||
from = "Column::AppId",
|
||||
to = "super::app::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
App,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::app::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::App.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,38 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "blocking")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "blockeeId")]
|
||||
pub blockee_id: String,
|
||||
#[sea_orm(column_name = "blockerId")]
|
||||
pub blocker_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::BlockerId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User2,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::BlockeeId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User1,
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,82 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "channel")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "lastNotedAt")]
|
||||
pub last_noted_at: Option<DateTimeWithTimeZone>,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: Option<String>,
|
||||
pub name: String,
|
||||
pub description: Option<String>,
|
||||
#[sea_orm(column_name = "bannerId")]
|
||||
pub banner_id: Option<String>,
|
||||
#[sea_orm(column_name = "notesCount")]
|
||||
pub notes_count: i32,
|
||||
#[sea_orm(column_name = "usersCount")]
|
||||
pub users_count: i32,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::channel_following::Entity")]
|
||||
ChannelFollowing,
|
||||
#[sea_orm(has_many = "super::channel_note_pining::Entity")]
|
||||
ChannelNotePining,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::drive_file::Entity",
|
||||
from = "Column::BannerId",
|
||||
to = "super::drive_file::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
DriveFile,
|
||||
#[sea_orm(has_many = "super::note::Entity")]
|
||||
Note,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::channel_following::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::ChannelFollowing.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::channel_note_pining::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::ChannelNotePining.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::drive_file::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::DriveFile.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Note.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,50 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "channel_following")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "followeeId")]
|
||||
pub followee_id: String,
|
||||
#[sea_orm(column_name = "followerId")]
|
||||
pub follower_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::channel::Entity",
|
||||
from = "Column::FolloweeId",
|
||||
to = "super::channel::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Channel,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::FollowerId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::channel::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Channel.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,50 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "channel_note_pining")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "channelId")]
|
||||
pub channel_id: String,
|
||||
#[sea_orm(column_name = "noteId")]
|
||||
pub note_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::channel::Entity",
|
||||
from = "Column::ChannelId",
|
||||
to = "super::channel::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Channel,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::note::Entity",
|
||||
from = "Column::NoteId",
|
||||
to = "super::note::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Note,
|
||||
}
|
||||
|
||||
impl Related<super::channel::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Channel.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Note.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,46 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "clip")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
pub name: String,
|
||||
#[sea_orm(column_name = "isPublic")]
|
||||
pub is_public: bool,
|
||||
pub description: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::clip_note::Entity")]
|
||||
ClipNote,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::clip_note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::ClipNote.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,48 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "clip_note")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "noteId")]
|
||||
pub note_id: String,
|
||||
#[sea_orm(column_name = "clipId")]
|
||||
pub clip_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::clip::Entity",
|
||||
from = "Column::ClipId",
|
||||
to = "super::clip::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Clip,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::note::Entity",
|
||||
from = "Column::NoteId",
|
||||
to = "super::note::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
Note,
|
||||
}
|
||||
|
||||
impl Related<super::clip::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Clip.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::note::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Note.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,113 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "drive_file")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: Option<String>,
|
||||
#[sea_orm(column_name = "userHost")]
|
||||
pub user_host: Option<String>,
|
||||
pub md5: String,
|
||||
pub name: String,
|
||||
pub r#type: String,
|
||||
pub size: i32,
|
||||
pub comment: Option<String>,
|
||||
#[sea_orm(column_type = "JsonBinary")]
|
||||
pub properties: Json,
|
||||
#[sea_orm(column_name = "storedInternal")]
|
||||
pub stored_internal: bool,
|
||||
pub url: String,
|
||||
#[sea_orm(column_name = "thumbnailUrl")]
|
||||
pub thumbnail_url: Option<String>,
|
||||
#[sea_orm(column_name = "webpublicUrl")]
|
||||
pub webpublic_url: Option<String>,
|
||||
#[sea_orm(column_name = "accessKey")]
|
||||
pub access_key: Option<String>,
|
||||
#[sea_orm(column_name = "thumbnailAccessKey")]
|
||||
pub thumbnail_access_key: Option<String>,
|
||||
#[sea_orm(column_name = "webpublicAccessKey")]
|
||||
pub webpublic_access_key: Option<String>,
|
||||
pub uri: Option<String>,
|
||||
pub src: Option<String>,
|
||||
#[sea_orm(column_name = "folderId")]
|
||||
pub folder_id: Option<String>,
|
||||
#[sea_orm(column_name = "isSensitive")]
|
||||
pub is_sensitive: bool,
|
||||
#[sea_orm(column_name = "isLink")]
|
||||
pub is_link: bool,
|
||||
pub blurhash: Option<String>,
|
||||
#[sea_orm(column_name = "webpublicType")]
|
||||
pub webpublic_type: Option<String>,
|
||||
#[sea_orm(column_name = "requestHeaders", column_type = "JsonBinary", nullable)]
|
||||
pub request_headers: Option<Json>,
|
||||
#[sea_orm(column_name = "requestIp")]
|
||||
pub request_ip: Option<String>,
|
||||
#[sea_orm(column_name = "maybeSensitive")]
|
||||
pub maybe_sensitive: bool,
|
||||
#[sea_orm(column_name = "maybePorn")]
|
||||
pub maybe_porn: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::channel::Entity")]
|
||||
Channel,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::drive_folder::Entity",
|
||||
from = "Column::FolderId",
|
||||
to = "super::drive_folder::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
DriveFolder,
|
||||
#[sea_orm(has_many = "super::messaging_message::Entity")]
|
||||
MessagingMessage,
|
||||
#[sea_orm(has_many = "super::page::Entity")]
|
||||
Page,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::channel::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Channel.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::drive_folder::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::DriveFolder.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::messaging_message::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::MessagingMessage.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::page::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Page.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,53 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "drive_folder")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub name: String,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: Option<String>,
|
||||
#[sea_orm(column_name = "parentId")]
|
||||
pub parent_id: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::drive_file::Entity")]
|
||||
DriveFile,
|
||||
#[sea_orm(
|
||||
belongs_to = "Entity",
|
||||
from = "Column::ParentId",
|
||||
to = "Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "SetNull"
|
||||
)]
|
||||
SelfRef,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::drive_file::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::DriveFile.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,32 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
use super::newtype::StringVec;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "emoji")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "updatedAt")]
|
||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
||||
pub name: String,
|
||||
pub host: Option<String>,
|
||||
#[sea_orm(column_name = "originalUrl")]
|
||||
pub original_url: String,
|
||||
pub uri: Option<String>,
|
||||
pub r#type: Option<String>,
|
||||
pub aliases: StringVec,
|
||||
pub category: Option<String>,
|
||||
#[sea_orm(column_name = "publicUrl")]
|
||||
pub public_url: String,
|
||||
pub license: Option<String>,
|
||||
pub width: Option<i32>,
|
||||
pub height: Option<i32>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,60 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "follow_request")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "followeeId")]
|
||||
pub followee_id: String,
|
||||
#[sea_orm(column_name = "followerId")]
|
||||
pub follower_id: String,
|
||||
#[sea_orm(column_name = "requestId")]
|
||||
pub request_id: Option<String>,
|
||||
#[sea_orm(column_name = "followerHost")]
|
||||
pub follower_host: Option<String>,
|
||||
#[sea_orm(column_name = "followerInbox")]
|
||||
pub follower_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followerSharedInbox")]
|
||||
pub follower_shared_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followeeHost")]
|
||||
pub followee_host: Option<String>,
|
||||
#[sea_orm(column_name = "followeeInbox")]
|
||||
pub followee_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followeeSharedInbox")]
|
||||
pub followee_shared_inbox: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::notification::Entity")]
|
||||
Notification,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::FolloweeId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User2,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::FollowerId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User1,
|
||||
}
|
||||
|
||||
impl Related<super::notification::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::Notification.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,50 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "following")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "followeeId")]
|
||||
pub followee_id: String,
|
||||
#[sea_orm(column_name = "followerId")]
|
||||
pub follower_id: String,
|
||||
#[sea_orm(column_name = "followerHost")]
|
||||
pub follower_host: Option<String>,
|
||||
#[sea_orm(column_name = "followerInbox")]
|
||||
pub follower_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followerSharedInbox")]
|
||||
pub follower_shared_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followeeHost")]
|
||||
pub followee_host: Option<String>,
|
||||
#[sea_orm(column_name = "followeeInbox")]
|
||||
pub followee_inbox: Option<String>,
|
||||
#[sea_orm(column_name = "followeeSharedInbox")]
|
||||
pub followee_shared_inbox: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::FolloweeId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User2,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::FollowerId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User1,
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,50 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "gallery_like")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
#[sea_orm(column_name = "postId")]
|
||||
pub post_id: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::gallery_post::Entity",
|
||||
from = "Column::PostId",
|
||||
to = "super::gallery_post::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
GalleryPost,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::gallery_post::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::GalleryPost.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,55 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
use super::newtype::StringVec;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "gallery_post")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "createdAt")]
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "updatedAt")]
|
||||
pub updated_at: DateTimeWithTimeZone,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
#[sea_orm(column_name = "userId")]
|
||||
pub user_id: String,
|
||||
#[sea_orm(column_name = "fileIds")]
|
||||
pub file_ids: StringVec,
|
||||
#[sea_orm(column_name = "isSensitive")]
|
||||
pub is_sensitive: bool,
|
||||
#[sea_orm(column_name = "likedCount")]
|
||||
pub liked_count: i32,
|
||||
pub tags: StringVec,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::gallery_like::Entity")]
|
||||
GalleryLike,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id",
|
||||
on_update = "NoAction",
|
||||
on_delete = "Cascade"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::gallery_like::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::GalleryLike.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,42 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
use super::newtype::StringVec;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "hashtag")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
pub name: String,
|
||||
#[sea_orm(column_name = "mentionedUserIds")]
|
||||
pub mentioned_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "mentionedUsersCount")]
|
||||
pub mentioned_users_count: i32,
|
||||
#[sea_orm(column_name = "mentionedLocalUserIds")]
|
||||
pub mentioned_local_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "mentionedLocalUsersCount")]
|
||||
pub mentioned_local_users_count: i32,
|
||||
#[sea_orm(column_name = "mentionedRemoteUserIds")]
|
||||
pub mentioned_remote_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "mentionedRemoteUsersCount")]
|
||||
pub mentioned_remote_users_count: i32,
|
||||
#[sea_orm(column_name = "attachedUserIds")]
|
||||
pub attached_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "attachedUsersCount")]
|
||||
pub attached_users_count: i32,
|
||||
#[sea_orm(column_name = "attachedLocalUserIds")]
|
||||
pub attached_local_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "attachedLocalUsersCount")]
|
||||
pub attached_local_users_count: i32,
|
||||
#[sea_orm(column_name = "attachedRemoteUserIds")]
|
||||
pub attached_remote_user_ids: StringVec,
|
||||
#[sea_orm(column_name = "attachedRemoteUsersCount")]
|
||||
pub attached_remote_users_count: i32,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,58 +0,0 @@
|
|||
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.11.3
|
||||
|
||||
use sea_orm::entity::prelude::*;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Default)]
|
||||
#[sea_orm(table_name = "instance")]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key, auto_increment = false)]
|
||||
pub id: String,
|
||||
#[sea_orm(column_name = "caughtAt")]
|
||||
pub caught_at: DateTimeWithTimeZone,
|
||||
pub host: String,
|
||||
#[sea_orm(column_name = "usersCount")]
|
||||
pub users_count: i32,
|
||||
#[sea_orm(column_name = "notesCount")]
|
||||
pub notes_count: i32,
|
||||
#[sea_orm(column_name = "followingCount")]
|
||||
pub following_count: i32,
|
||||
#[sea_orm(column_name = "followersCount")]
|
||||
pub followers_count: i32,
|
||||
#[sea_orm(column_name = "latestRequestSentAt")]
|
||||
pub latest_request_sent_at: Option<DateTimeWithTimeZone>,
|
||||
#[sea_orm(column_name = "latestStatus")]
|
||||
pub latest_status: Option<i32>,
|
||||
#[sea_orm(column_name = "latestRequestReceivedAt")]
|
||||
pub latest_request_received_at: Option<DateTimeWithTimeZone>,
|
||||
#[sea_orm(column_name = "lastCommunicatedAt")]
|
||||
pub last_communicated_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(column_name = "isNotResponding")]
|
||||
pub is_not_responding: bool,
|
||||
#[sea_orm(column_name = "softwareName")]
|
||||
pub software_name: Option<String>,
|
||||
#[sea_orm(column_name = "softwareVersion")]
|
||||
pub software_version: Option<String>,
|
||||
#[sea_orm(column_name = "openRegistrations")]
|
||||
pub open_registrations: Option<bool>,
|
||||
pub name: Option<String>,
|
||||
pub description: Option<String>,
|
||||
#[sea_orm(column_name = "maintainerName")]
|
||||
pub maintainer_name: Option<String>,
|
||||
#[sea_orm(column_name = "maintainerEmail")]
|
||||
pub maintainer_email: Option<String>,
|
||||
#[sea_orm(column_name = "infoUpdatedAt")]
|
||||
pub info_updated_at: Option<DateTimeWithTimeZone>,
|
||||
#[sea_orm(column_name = "isSuspended")]
|
||||
pub is_suspended: bool,
|
||||
#[sea_orm(column_name = "iconUrl")]
|
||||
pub icon_url: Option<String>,
|
||||
#[sea_orm(column_name = "themeColor")]
|
||||
pub theme_color: Option<String>,
|
||||
#[sea_orm(column_name = "faviconUrl")]
|
||||
pub favicon_url: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
pub enum Relation {}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue